From e47ff1a4771e6e3b2da93e323af8219e65c62511 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Thu, 1 Feb 2024 17:05:03 +0100 Subject: [PATCH 001/176] Add env variable to use different mmu worker locations --- README.md | 5 ++- machine_interface/build.rs | 40 +++++++++---------- .../src/function_driver/compute_driver/mmu.rs | 5 +-- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index fd3b6e8d..f42ea568 100644 --- a/README.md +++ b/README.md @@ -96,4 +96,7 @@ RUSTFLAGS='-C target-feature=+crt-static -C link-arg=-Wl,-fuse-ld=lld,--image-ba Also make sure that shared memory objects are executable: ``` sudo mount -o remount,exec /dev/shm -``` \ No newline at end of file +``` + +### MMU worker path +To use a `mmu_worker` that is not at the original location it was built in, set the `PROCESS_WORKER_PATH` environment variable to point to the desired binary \ No newline at end of file diff --git a/machine_interface/build.rs b/machine_interface/build.rs index 433a4996..aefff0c2 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -1,25 +1,21 @@ -use cmake::Config; -use std::process::Command; - -fn cmake_libraries() -> () { - // cmake configure and build all - let _all = Config::new("c_machine_libraries") - .define("FORCE_BUILD_CHERI", "") - .build_target("all") - .build(); - // run tests tests - let _test = Config::new("c_machine_libraries") - .build_target("test") - .build(); - // install - let install = Config::new("c_machine_libraries").build(); - // passing cmake information to c - println!("cargo:rustc-link-search=native={}", install.display()); - println!("cargo:rustc-link-lib=static=cheri_lib"); -} - fn main() { // check if cheri is enabled and build library if so #[cfg(features = "cheri")] - cmake_libraries(); -} \ No newline at end of file + { + use cmake::Config; + // cmake configure and build all + let _all = Config::new("c_machine_libraries") + .define("FORCE_BUILD_CHERI", "") + .build_target("all") + .build(); + // run tests tests + let _test = Config::new("c_machine_libraries") + .build_target("test") + .build(); + // install + let install = Config::new("c_machine_libraries").build(); + // passing cmake information to c + println!("cargo:rustc-link-search=native={}", install.display()); + println!("cargo:rustc-link-lib=static=cheri_lib"); + } +} diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index 18010edd..1a75e329 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -165,8 +165,7 @@ fn mmu_run_static( // that will not collide with those used by user's function // this trick gives the desired path of mmu_worker for packages within the workspace - // TODO: replace with a more general solution (e.g. environment variable) - let path = format!( + let path = std::env::var("PROCESS_WORKER_PATH").unwrap_or(format!( "{}/../target/{}-unknown-linux-gnu/{}/mmu_worker", env!("CARGO_MANIFEST_DIR"), std::env::consts::ARCH, @@ -175,7 +174,7 @@ fn mmu_run_static( } else { "release" }, - ); + )); // create a new address space (child process) and pass the shared memory let mut worker = Command::new(path) From 986ca5ab0061a10c129687920edaec09bc88f9b7 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 2 Feb 2024 10:06:01 +0100 Subject: [PATCH 002/176] fix typo --- machine_interface/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machine_interface/build.rs b/machine_interface/build.rs index aefff0c2..e2dbaafd 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -1,6 +1,6 @@ fn main() { // check if cheri is enabled and build library if so - #[cfg(features = "cheri")] + #[cfg(feature = "cheri")] { use cmake::Config; // cmake configure and build all From 4053de84a634bf1d24c5da10cbcf526d25ca8bff Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 7 Feb 2024 13:49:46 +0100 Subject: [PATCH 003/176] Temporarily remove cold starts for testing --- server/src/main.rs | 148 ++++++++++++++++++++++----------------------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 73f8f781..47a010ff 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -470,13 +470,13 @@ fn main() -> () { env_logger::init(); // read argumets from environment - let cold_num: u64 = if let Ok(string_val) = std::env::var("NUM_COLD") { - string_val - .parse() - .expect("NUM_COLD was set but not a parsable number") - } else { - 0x100000 - }; + // let cold_num: u64 = if let Ok(string_val) = std::env::var("NUM_COLD") { + // string_val + // .parse() + // .expect("NUM_COLD was set but not a parsable number") + // } else { + // 0x100000 + // }; // find available resources let num_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); @@ -607,14 +607,14 @@ fn main() -> () { )) .expect("Failed to add_local for mmm hot function"); // add for mmm cold functions - let mmm_cold_dir = runtime.block_on(add_cold_functions( - ®istry, - COMPUTE_ENGINE, - DEFAULT_CONTEXT_SIZE, - &mmm_path, - MMM_COLD_ID_BASE, - cold_num, - )); + // let mmm_cold_dir = runtime.block_on(add_cold_functions( + // ®istry, + // COMPUTE_ENGINE, + // DEFAULT_CONTEXT_SIZE, + // &mmm_path, + // MMM_COLD_ID_BASE, + // cold_num, + // )); // add for busy hot functions let busy_metadata = Metadata { input_sets: vec![(String::from(""), None)], @@ -694,66 +694,66 @@ fn main() -> () { .add_composition(COMPOSITION_ID, composition, output_set_map) .expect("Failed to add composition"); // add compositions using cold busy functions - for i in 0..cold_num { - let composition = Composition { - dependencies: vec![ - FunctionDependencies { - function: HTTP_ID, - input_set_ids: vec![Some((0, ShardingMode::All)), None, None], - output_set_ids: vec![Some(1), Some(2), Some(3)], - }, - FunctionDependencies { - function: BUSY_COLD_ID_BASE + i, - input_set_ids: vec![Some((3, ShardingMode::All))], - output_set_ids: vec![Some(4)], - }, - FunctionDependencies { - function: HTTP_ID, - input_set_ids: vec![ - Some((5, ShardingMode::All)), - None, - Some((4, ShardingMode::All)), - ], - output_set_ids: vec![Some(6)], - }, - ], - }; - let output_set_map = BTreeMap::from([(4, 0), (6, 1)]); - let input_sets = get_system_function_input_sets(SystemFunction::HTTP) - .into_iter() - .map(|name| (name, None)) - .collect(); - let output_sets = get_system_function_output_sets(SystemFunction::HTTP); - let cold_comp_metadata = Metadata { - input_sets, - output_sets, - }; - runtime.block_on( - registry.insert_metadata(COMPOSITION_COLD_ID_BASE + i, cold_comp_metadata), - ); - registry - .add_composition(COMPOSITION_COLD_ID_BASE + i, composition, output_set_map) - .expect("Failed to add cold composition"); - } + // for i in 0..cold_num { + // let composition = Composition { + // dependencies: vec![ + // FunctionDependencies { + // function: HTTP_ID, + // input_set_ids: vec![Some((0, ShardingMode::All)), None, None], + // output_set_ids: vec![Some(1), Some(2), Some(3)], + // }, + // FunctionDependencies { + // function: BUSY_COLD_ID_BASE + i, + // input_set_ids: vec![Some((3, ShardingMode::All))], + // output_set_ids: vec![Some(4)], + // }, + // FunctionDependencies { + // function: HTTP_ID, + // input_set_ids: vec![ + // Some((5, ShardingMode::All)), + // None, + // Some((4, ShardingMode::All)), + // ], + // output_set_ids: vec![Some(6)], + // }, + // ], + // }; + // let output_set_map = BTreeMap::from([(4, 0), (6, 1)]); + // let input_sets = get_system_function_input_sets(SystemFunction::HTTP) + // .into_iter() + // .map(|name| (name, None)) + // .collect(); + // let output_sets = get_system_function_output_sets(SystemFunction::HTTP); + // let cold_comp_metadata = Metadata { + // input_sets, + // output_sets, + // }; + // runtime.block_on( + // registry.insert_metadata(COMPOSITION_COLD_ID_BASE + i, cold_comp_metadata), + // ); + // registry + // .add_composition(COMPOSITION_COLD_ID_BASE + i, composition, output_set_map) + // .expect("Failed to add cold composition"); + // } // drop page caches to ensure cold functions are loaded from disk - loop { - info!("Waiting for page cache to be clean"); - drop_page_caches(); - std::thread::sleep(Duration::from_secs(10)); - // check if page caches are actually dropped - let mut no_page_cache_for_all = true; - for i in (0..cold_num).step_by(1000) { - let mmm_cold_path = mmm_cold_dir.join(i.to_string()); - let busy_cold_path = busy_cold_dir.join(i.to_string()); - if !no_page_cache_for(mmm_cold_path) || !no_page_cache_for(busy_cold_path) { - no_page_cache_for_all = false; - break; - } - } - if no_page_cache_for_all { - break; - } - } + // loop { + // info!("Waiting for page cache to be clean"); + // drop_page_caches(); + // std::thread::sleep(Duration::from_secs(10)); + // // check if page caches are actually dropped + // let mut no_page_cache_for_all = true; + // for i in (0..cold_num).step_by(1000) { + // let mmm_cold_path = mmm_cold_dir.join(i.to_string()); + // let busy_cold_path = busy_cold_dir.join(i.to_string()); + // if !no_page_cache_for(mmm_cold_path) || !no_page_cache_for(busy_cold_path) { + // no_page_cache_for_all = false; + // break; + // } + // } + // if no_page_cache_for_all { + // break; + // } + // } } #[cfg(not(all( any(feature = "cheri", feature = "mmu", feature = "wasm"), From 263f6b7c1b4a9b5a45bceecfc003390bccf8465f Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 7 Feb 2024 14:02:18 +0100 Subject: [PATCH 004/176] Temporarily remove cold starts for testing --- server/src/main.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 47a010ff..826fcb89 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -630,14 +630,14 @@ fn main() -> () { )) .expect("Failed to add_local busy function"); // add for busy cold functions - let busy_cold_dir = runtime.block_on(add_cold_functions( - ®istry, - COMPUTE_ENGINE, - DEFAULT_CONTEXT_SIZE, - &busy_path, - BUSY_COLD_ID_BASE, - cold_num, - )); + // let busy_cold_dir = runtime.block_on(add_cold_functions( + // ®istry, + // COMPUTE_ENGINE, + // DEFAULT_CONTEXT_SIZE, + // &busy_path, + // BUSY_COLD_ID_BASE, + // cold_num, + // )); // add http system function // first try only download and spin, TODO: add upload runtime.block_on( @@ -779,7 +779,7 @@ fn main() -> () { async move { Ok::<_, Infallible>(service_fn(move |req| { let service_dispatcher_ptr = new_dispatcher_ptr.clone(); - service(req, service_dispatcher_ptr, cold_num) + service(req, service_dispatcher_ptr, 0) })) } }); From 0ce5f9178f7bb221bfafed2c98fe37f232350a4d Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Thu, 8 Feb 2024 16:09:10 +0100 Subject: [PATCH 005/176] Fixed bug where interface would not add content for empty output sets, messing up the numbering --- dispatcher/src/dispatcher.rs | 6 +- machine_interface/src/interface.rs | 114 ++++++++++++++--------------- 2 files changed, 59 insertions(+), 61 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 8b4ff5a3..6d7209ae 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -93,7 +93,6 @@ impl Dispatcher { non_caching: bool, ) -> DandelionResult> { // build up ready sets - let mut ready_sets = inputs.keys().cloned().collect::>(); let (mut ready_functions, mut non_ready_functions): (Vec<_>, Vec<_>) = composition.dependencies.into_iter().partition( |FunctionDependencies { @@ -103,7 +102,7 @@ impl Dispatcher { }| { in_ids.iter().all(|index_opt| { index_opt - .and_then(|(index, _)| Some(ready_sets.contains(&index))) + .and_then(|(index, _)| Some(inputs.contains_key(&index))) .unwrap_or(true) }) }, @@ -138,7 +137,6 @@ impl Dispatcher { let new_compositions = new_compositions_result?; for (composition_set_index, composition_set) in new_compositions { inputs.insert(composition_set_index, composition_set); - ready_sets.insert(composition_set_index); } // add newly ready ones (ready_functions, non_ready_functions) = non_ready_functions.into_iter().partition( @@ -150,7 +148,7 @@ impl Dispatcher { in_ids.iter().all(|index_opt| { index_opt .as_ref() - .and_then(|(index, _)| Some(ready_sets.contains(&index))) + .and_then(|(index, _)| Some(inputs.contains_key(&index))) .unwrap_or(true) }) }, diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index 0a291693..1589625d 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -7,7 +7,8 @@ use libc::{c_int, size_t, uintptr_t}; extern crate alloc; pub trait SizedIntTrait -where Self: Sized + Copy + Default +where + Self: Sized + Copy + Default, { fn from_native(ptr: usize) -> DandelionResult; fn to_native(self) -> DandelionResult; @@ -86,11 +87,9 @@ pub mod _native { } } - #[derive(Debug, Clone, Default)] #[repr(C)] -pub struct DandelionSystemData -{ +pub struct DandelionSystemData { exit_code: c_int, heap_begin: PtrT, // uintptr_t, heap_end: PtrT, // uintptr_t, @@ -105,23 +104,22 @@ pub struct DandelionSystemData #[derive(Clone)] #[repr(C)] struct IoSetInfo { - ident: PtrT, // uintptr_t, - ident_len: SizeT, // size_t, - offset: SizeT, // size_t, + ident: PtrT, // uintptr_t, + ident_len: SizeT, // size_t, + offset: SizeT, // size_t, } #[derive(Clone)] #[repr(C)] struct IoBufferDescriptor { - ident: PtrT, // uintptr_t, - ident_len: SizeT, // size_t, - data: PtrT, // uintptr_t, - data_len: SizeT, // size_t, - key: SizeT, // size_t, + ident: PtrT, // uintptr_t, + ident_len: SizeT, // size_t, + data: PtrT, // uintptr_t, + data_len: SizeT, // size_t, + key: SizeT, // size_t, } -pub fn setup_input_structs -( +pub fn setup_input_structs( context: &mut Context, system_data_offset: usize, output_set_names: &Vec, @@ -169,9 +167,9 @@ pub fn setup_input_structs string_offset = context.get_free_space_and_write_slice(name.as_bytes())? as usize; } input_sets.push(IoSetInfo:: { - ident: ptr_t!(string_offset), - ident_len: size_t!(name_length), - offset: size_t!(input_buffers.len()), + ident: ptr_t!(string_offset), + ident_len: size_t!(name_length), + offset: size_t!(input_buffers.len()), }); // find buffers for b in 0..buffer_len { @@ -193,19 +191,19 @@ pub fn setup_input_structs string_offset = context.get_free_space_and_write_slice(name.as_bytes())? as usize; } input_buffers.push(IoBufferDescriptor:: { - ident: ptr_t!(string_offset), - ident_len: size_t!(name_length), - data: ptr_t!(offset), - data_len: size_t!(size), - key: size_t!(key as usize), + ident: ptr_t!(string_offset), + ident_len: size_t!(name_length), + data: ptr_t!(offset), + data_len: size_t!(size), + key: size_t!(key as usize), }); } } // write input sentinel set input_sets.push(IoSetInfo:: { - ident: ptr_t!(0), - ident_len: size_t!(0), - offset: size_t!(input_buffers.len()), + ident: ptr_t!(0), + ident_len: size_t!(0), + offset: size_t!(input_buffers.len()), }); let mut output_sets: Vec> = Vec::new(); @@ -226,23 +224,26 @@ pub fn setup_input_structs context.get_free_space_and_write_slice(out_set_name.as_bytes())? as usize; } output_sets.push(IoSetInfo:: { - ident: ptr_t!(string_offset), - ident_len: size_t!(string_len), - offset: size_t!(0), + ident: ptr_t!(string_offset), + ident_len: size_t!(string_len), + offset: size_t!(0), }); } output_sets.push(IoSetInfo:: { - ident: ptr_t!(0), - ident_len: size_t!(0), - offset: size_t!(0), + ident: ptr_t!(0), + ident_len: size_t!(0), + offset: size_t!(0), }); - let input_sets_offset: PtrT = ptr_t!(context.get_free_space_and_write_slice(&input_sets[..])? as usize); - let output_sets_offset: PtrT = ptr_t!(context.get_free_space_and_write_slice(&output_sets[..])? as usize); - let input_buffers_offset: PtrT = ptr_t!(context.get_free_space_and_write_slice(&input_buffers[..])? as usize); + let input_sets_offset: PtrT = + ptr_t!(context.get_free_space_and_write_slice(&input_sets[..])? as usize); + let output_sets_offset: PtrT = + ptr_t!(context.get_free_space_and_write_slice(&output_sets[..])? as usize); + let input_buffers_offset: PtrT = + ptr_t!(context.get_free_space_and_write_slice(&input_buffers[..])? as usize); - let heap_begin: PtrT = ptr_t!(context.get_last_item_end()); - let heap_end: PtrT = ptr_t!(context.size - 128); + let heap_begin: PtrT = ptr_t!(context.get_last_item_end()); + let heap_end: PtrT = ptr_t!(context.size - 128); // fill in data for input sets // input set number and pointer (offset) @@ -263,10 +264,9 @@ pub fn setup_input_structs Ok(()) } -pub fn read_output_structs -( - context: &mut Context, - base_address: usize +pub fn read_output_structs( + context: &mut Context, + base_address: usize, ) -> DandelionResult<()> { context.clear_metadata(); // read the system buffer @@ -289,9 +289,9 @@ pub fn read_output_structs return Err(DandelionError::OutOfMemory); } let empty_output_set = IoSetInfo:: { - ident: ptr_t!(0), - ident_len: size_t!(0), - offset: size_t!(0), + ident: ptr_t!(0), + ident_len: size_t!(0), + offset: size_t!(0), }; output_set_info.resize_with(output_set_number + 1, || empty_output_set.clone()); context.read(usize_ptr!(system_struct.output_sets), &mut output_set_info)?; @@ -308,11 +308,11 @@ pub fn read_output_structs return Err(DandelionError::OutOfMemory); } let empty_output_buffer = IoBufferDescriptor:: { - ident: ptr_t!(0), - ident_len: size_t!(0), - data: ptr_t!(0), - data_len: size_t!(0), - key: size_t!(0), + ident: ptr_t!(0), + ident_len: size_t!(0), + data: ptr_t!(0), + data_len: size_t!(0), + key: size_t!(0), }; output_buffers.resize_with(output_buffer_number, || empty_output_buffer.clone()); context.read(output_buffers_offset, &mut output_buffers)?; @@ -325,11 +325,11 @@ pub fn read_output_structs assert_eq!(output_buffers.len(), output_buffer_number); for output_set in 0..output_set_number { - let ident_offset = usize_ptr!(output_set_info[output_set].ident); - let ident_length = usize!(output_set_info[output_set].ident_len); + let ident_offset = usize_ptr!(output_set_info[output_set].ident); + let ident_length = usize!(output_set_info[output_set].ident_len); let mut set_ident = vec![0u8; ident_length]; context.read(ident_offset, &mut set_ident)?; - let set_ident_string = String::from_utf8(set_ident).unwrap_or("".to_string()); + let set_ident_string = String::from_utf8(set_ident).unwrap_or("".to_string()); let first_buffer = usize!(output_set_info[output_set].offset); let one_past_last_buffer = usize!(output_set_info[output_set + 1].offset); let buffer_number = one_past_last_buffer - first_buffer; @@ -338,13 +338,13 @@ pub fn read_output_structs return Err(DandelionError::OutOfMemory); } for buffer_index in first_buffer..one_past_last_buffer { - let buffer_ident_offset = usize_ptr!(output_buffers[buffer_index].ident); - let buffer_ident_length = usize!(output_buffers[buffer_index].ident_len); + let buffer_ident_offset = usize_ptr!(output_buffers[buffer_index].ident); + let buffer_ident_length = usize!(output_buffers[buffer_index].ident_len); let mut buffer_ident = vec![0u8; buffer_ident_length]; context.read(buffer_ident_offset, &mut buffer_ident)?; - let data_offset = usize_ptr!(output_buffers[buffer_index].data); - let data_length = usize!(output_buffers[buffer_index].data_len); - let key = usize!(output_buffers[buffer_index].key); + let data_offset = usize_ptr!(output_buffers[buffer_index].data); + let data_length = usize!(output_buffers[buffer_index].data_len); + let key = usize!(output_buffers[buffer_index].key); let ident_string = String::from_utf8(buffer_ident).unwrap_or("".to_string()); buffers.push(DataItem { ident: ident_string, @@ -356,7 +356,7 @@ pub fn read_output_structs }); context.occupy_space(data_offset, data_length)?; } - // only add output set if there are actual buffers for it. + // always need to push the set, to keep the numbering output_sets.push(Some(DataSet { ident: set_ident_string, buffers: buffers, From 66ad4556c1b6162b61ab4d3028f2d8434514ef73 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 9 Feb 2024 10:56:53 +0100 Subject: [PATCH 006/176] Fix overcounting of items in composition sets --- dispatcher/src/composition.rs | 28 +++++++++++++++----------- machine_interface/src/memory_domain.rs | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index 1cd40f99..5405702f 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -124,9 +124,13 @@ impl From<(usize, Vec>)> for CompositionSet { .into_iter() .filter_map(|context| { if context.content.len() > set_index { - context.content[set_index] - .as_ref() - .and_then(|set| Some((context.clone(), 0..set.buffers.len()))) + context.content[set_index].as_ref().and_then(|set| { + if set.buffers.len() > 0 { + Some((context.clone(), 0..set.buffers.len())) + } else { + None + } + }) } else { None } @@ -148,18 +152,18 @@ impl Iterator for CompositionSetTransferIterator { type Item = (usize, usize, Arc); fn next(&mut self) -> Option { - if let Some((context, buffer_range)) = self.set.context_list.last_mut() { - let buffer_index = buffer_range.start; - let ret_context = context.clone(); - if buffer_range.start + 1 == buffer_range.end { - self.set.context_list.pop(); + // if we can guarnatee that there is always an item, we could simplify this to just taking the last one + // would requeire ensuring that property for composition sets + // TOOD: make composition set ranges private so the constructor can guarantee this + while let Some((context, buffer_range)) = self.set.context_list.last_mut() { + if buffer_range.end >= buffer_range.start + 1 { + buffer_range.end = buffer_range.end - 1; + return Some((self.set.set_index, buffer_range.end, context.clone())); } else { - buffer_range.start = buffer_range.start + 1; + self.set.context_list.pop(); } - return Some((self.set.set_index, buffer_index, ret_context)); - } else { - return None; } + return None; } } diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 904f42f2..5b1bcb7f 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -314,7 +314,7 @@ pub fn transer_data_item( ) -> DandelionResult<()> { // check if source has item if source.content.len() <= source_set_index { - return Err(DandelionError::InvalidRead); + return Err(DandelionError::TransferInputNoSetAvailable); } let source_set = source.content[source_set_index] .as_ref() From de6c03daa3d67042c1573ea84bdcab86423d56d4 Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 9 Feb 2024 10:06:48 +0000 Subject: [PATCH 007/176] add a function name registrar to the registry --- dispatcher/Cargo.toml | 1 + dispatcher/src/composition.rs | 15 +++++++++++++ dispatcher/src/dispatcher.rs | 2 +- dispatcher/src/function_registry.rs | 35 ++++++++++++++++++++++++++++- dparser/src/lib.rs | 2 +- server/src/main.rs | 2 +- 6 files changed, 53 insertions(+), 4 deletions(-) diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index 0cb283cb..a73410c3 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -11,6 +11,7 @@ dandelion_commons = {path = "../dandelion_commons"} machine_interface = {path = "../machine_interface"} futures = {version = "0.3.28", default-features = false} itertools = {version = "0.11", default-features = false, features = ["use_alloc"]} +dparser = {path = "../dparser"} [features] cheri = ["machine_interface/cheri"] diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index 1cd40f99..9cc93228 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -23,6 +23,21 @@ pub struct FunctionDependencies { pub output_set_ids: Vec>, } +impl FunctionDependencies { + pub fn from_module(module: &dparser::Module) -> Vec<(FunctionId, Self)> { + for item in module.0.iter() { + match item { + dparser::Item::FunctionDecl(fdecl) => { + // TODO: look them up in some Function -> Id mapping + } + dparser::Item::Composition(comp) => { + + } + } + } + } +} + /// Modes for the composition set iteratior to return sharding #[derive(Clone, Copy, Debug)] pub enum ShardingMode { diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 8b4ff5a3..2f48426d 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -77,7 +77,7 @@ impl Dispatcher { metadata: Metadata, ) -> DandelionResult<()> { self.function_registry - .insert_metadata(function_id, metadata) + .insert_metadata(todo!("funciton name"), metadata) .await; return self .function_registry diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 7a3dd1e6..5d8c1c9e 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -37,6 +37,35 @@ pub struct Metadata { pub output_sets: Vec, } +pub struct FunctionDict { + next_id: FunctionId, + map: BTreeMap, +} + +impl FunctionDict { + pub fn new() -> Self { + Self { next_id: 1, map: BTreeMap::new() } + } + + pub fn insert_or_lookup(&mut self, function_name: String) -> FunctionId { + use std::collections::btree_map::Entry; + match self.map.entry(&function_name) { + Entry::Vacant(v) => { + let new_id = self.next_id; + v.insert(new_id); + self.next_id += 1; + new_id + }, + Entry::Occupied(o) => *o, + } + } + + pub fn lookup(&self, function_name: &str) -> Option { + self.map.get(function_name) + } +} + + pub struct FunctionRegistry { /// List of engines available for each function engine_map: Mutex>>, @@ -51,6 +80,8 @@ pub struct FunctionRegistry { on_disk: Mutex>, /// map with input and output set names for functions metadata: Mutex>>, + /// map name to function id + function_dict: Mutex, } impl FunctionRegistry { @@ -63,6 +94,7 @@ impl FunctionRegistry { in_memory: Mutex::new(BTreeMap::new()), on_disk: Mutex::new(BTreeMap::new()), metadata: Mutex::new(BTreeMap::new()), + function_dict: Mutex::new(FunctionDict::new()), }; } @@ -77,7 +109,8 @@ impl FunctionRegistry { /// function that tries to insert metadata, returns true if metadata was successfully inserted /// or false if there was already metadata present - pub async fn insert_metadata(&self, function_id: FunctionId, metadata: Metadata) -> () { + pub async fn insert_metadata(&self, function_name: String, metadata: Metadata) -> () { + self.function_dict.lock().await.insert_or_lookup(function_name); self.metadata.lock().await.insert(function_id, Arc::new(metadata)); return; } diff --git a/dparser/src/lib.rs b/dparser/src/lib.rs index 240147da..ddaee1d6 100644 --- a/dparser/src/lib.rs +++ b/dparser/src/lib.rs @@ -266,7 +266,7 @@ pub enum Item { } #[derive(Debug)] -pub struct Module(Vec); +pub struct Module(pub Vec); fn parser() -> impl Parser> { let delim = just(Token::ListDelim); diff --git a/server/src/main.rs b/server/src/main.rs index 73f8f781..b6cc15c6 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -452,7 +452,7 @@ async fn add_cold_functions( if !tmp_path.exists() { std::fs::copy(path, &tmp_path).unwrap(); } - registry.insert_metadata(cold_id_base + i, metadata).await; + registry.insert_metadata(todo!("function name: cold_id_base + i"), metadata).await; registry .add_local( cold_id_base + i, From f183945aaab498815edf013c260f1a733621acfc Mon Sep 17 00:00:00 2001 From: Andrea Lattuada Date: Fri, 9 Feb 2024 11:34:33 +0100 Subject: [PATCH 008/176] wip --- dandelion_commons/src/lib.rs | 3 +++ dispatcher/src/composition.rs | 18 ++++++++++++++---- dispatcher/src/function_registry.rs | 14 +++++++++++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 5f6cf734..02af4819 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -106,6 +106,9 @@ pub enum DandelionError { // errors from the functions /// Function indicated it failed FunctionError(i32), + + // TODO: resort this + InvalidComposition, } pub type DandelionResult = std::result::Result; diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index 9cc93228..411cf258 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -1,6 +1,6 @@ use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; use machine_interface::memory_domain::Context; -use std::{collections::BTreeMap, sync::Arc, vec}; +use std::{collections::{BTreeMap, HashMap}, sync::Arc, vec}; /// A composition has a composition wide id space that maps ids of /// the input and output sets to sets of individual functions to a unified @@ -23,18 +23,28 @@ pub struct FunctionDependencies { pub output_set_ids: Vec>, } -impl FunctionDependencies { - pub fn from_module(module: &dparser::Module) -> Vec<(FunctionId, Self)> { +impl Composition { + pub fn from_module(module: &dparser::Module, + function_ids: &mut crate::function_registry::FunctionDict) -> DandelionResult> { + + let mut known_functions = HashMap::new(); + // let mut known_collections = HashMap::new(); + for item in module.0.iter() { match item { dparser::Item::FunctionDecl(fdecl) => { - // TODO: look them up in some Function -> Id mapping + known_functions.insert(fdecl.v.name, ( + function_ids.lookup(&fdecl.v.name).ok_or(DandelionError::InvalidComposition)?, + fdecl.v) + ); } dparser::Item::Composition(comp) => { } } } + + Ok(todo!()) } } diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 5d8c1c9e..dee793d6 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -124,12 +124,24 @@ impl FunctionRegistry { .and_then(|meta| Some(meta.clone())) .ok_or(DandelionError::DispatcherUnavailableFunction); } + + pub fn add_composition_from_module( + &mut self, // maybe? + function_name: FunctionId, + module: &str, + output_set_map: BTreeMap, // TODO necessary? + ) -> DandelionResult<()> { + // TODO actually handle the error in some sensible way + // the error contains the parsing failure + let module = dparser::parse(module).map_err(|_| DandelionError::InvalidComposition)?; + Composition::from_module(&module, self.function_dict.) + } pub fn add_composition( &mut self, function_id: FunctionId, composition: Composition, - output_set_map: BTreeMap, + output_set_map: BTreeMap, // TODO necessary? ) -> DandelionResult<()> { if !self.metadata.get_mut().contains_key(&function_id) { return Err(DandelionError::DispatcherMetaDataUnavailable); From 8bbe302c09de9a2c2d017d82cf61fbec4f1605da Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 14 Feb 2024 18:49:06 +0100 Subject: [PATCH 009/176] removed need for copy on try_send --- .../src/function_driver/thread_utils.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index d5aaaa49..3b435262 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -47,14 +47,15 @@ pub struct ThreadController { /// Try to send a result on the channel /// returns true on success, false on irecoverable error -fn try_send(result: DandelionResult<()>, sender: &mut ResultSender) -> bool { - loop { - match sender.try_send(result.clone()) { - Err(err) if err.is_full() => (), - Err(_) => return false, - Ok(()) => return true, +fn try_send(mut result: DandelionResult<()>, sender: &mut ResultSender) -> bool { + while let Err(try_result) = sender.try_send(result) { + if try_result.is_full() { + result = try_result.into_inner(); + } else { + return false; } } + return true; } fn run_thread( From cdcd6363c988528c613a186a9de1fcec6aa177c2 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 20 Feb 2024 10:34:48 +0100 Subject: [PATCH 010/176] wip promise --- machine_interface/src/function_driver.rs | 38 ++- .../compute_driver/compute_driver_tests.rs | 154 +++++++-- .../function_driver/compute_driver/wasm.rs | 302 ++++++++++-------- .../src/function_driver/thread_utils.rs | 139 +++----- machine_interface/src/lib.rs | 1 + 5 files changed, 372 insertions(+), 262 deletions(-) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 92c93315..6eaf2b57 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -2,10 +2,11 @@ use crate::{ memory_domain::{Context, MemoryDomain}, DataRequirementList, Position, }; -use core::pin::Pin; +extern crate alloc; +use alloc::sync::Arc; use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; -use std::{future::Future, sync::Arc}; +#[cfg(feature = "wasm")] use libloading::Library; pub mod compute_driver; @@ -30,6 +31,7 @@ pub enum SystemFunction { #[derive(Clone)] pub struct WasmConfig { + #[cfg(feature = "wasm")] lib: Arc, wasm_mem_size: usize, sdk_heap_base: usize, @@ -79,24 +81,28 @@ pub enum ComputeResource { GPU(u8), } -pub trait Engine: Send { - fn run( - &mut self, - config: &FunctionConfig, - context: Context, - output_set_names: &Vec, - recorder: Recorder, - ) -> Pin, Context)> + '_ + Send>>; - // TODO make more sensible, as a both functions require self mut, so abort can never be called on a running function - fn abort(&mut self) -> DandelionResult<()>; +pub struct EngineArguments { + config: FunctionConfig, + context: Context, + output_sets: Vec, + recorder: Recorder, } -// TODO figure out if we could / should enforce proper drop behaviour -// we could add a uncallable function with a private token that is not visible outside, -// but not sure if that is necessary + +pub trait WorkQueue { + fn get_engine_args(&self, promise: crate::promise::Promise) -> EngineArguments; +} + +/// Engines need to free up the resource they occupy when dropped +pub trait Engine {} pub trait Driver: Send + Sync { // the resource descirbed by config and make it into an engine of the type - fn start_engine(&self, resource: ComputeResource) -> DandelionResult>; + fn start_engine( + &self, + resource: ComputeResource, + // TODO check out why this can't be impl instead of Box, + ) -> DandelionResult>; // parses an executable, // returns the layout requirements and a context containing static data, diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index ce99da63..b3c409c4 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -1,17 +1,86 @@ #[cfg(all(test, any(feature = "cheri", feature = "mmu", feature = "wasm")))] mod compute_driver_tests { use crate::{ - function_driver::{ComputeResource, Driver, Engine, FunctionConfig}, + function_driver::{ + ComputeResource, Driver, Engine, EngineArguments, FunctionConfig, WorkQueue, + }, memory_domain::{Context, ContextState, ContextTrait, MemoryDomain}, + promise::Promise, DataItem, DataSet, Position, }; use core::panic; use dandelion_commons::{ records::{Archive, RecordPoint, Recorder}, - DandelionError, + DandelionError, DandelionResult, }; use std::sync::{Arc, Mutex}; + struct TestQueueInternal { + args: Option, + promise: Option, + waker: Option, + } + + #[derive(Clone)] + struct TestQueue { + internal: Arc>, + } + + impl TestQueue { + fn enqueu(&self, args: EngineArguments) { + if self + .internal + .lock() + .expect("Test queue failed to lock on enqueuing") + .args + .replace(args) + .is_some() + { + panic!("Tried to enqueu on test queue that already held args"); + } + } + } + + impl WorkQueue for TestQueue { + fn get_engine_args(&self, promise: Promise) -> EngineArguments { + let mut lock_guard = self + .internal + .lock() + .expect("Test queue failed to lock on get_engine_args"); + if lock_guard.promise.replace(promise).is_some() { + panic!("Test queue entered promis when there already was one") + } + let args = lock_guard + .args + .take() + .expect("Test queue tried to take args from empty queue"); + if let Some(waker) = lock_guard.waker.take() { + waker.wake(); + } + return args; + } + } + + impl futures::Future for TestQueue { + type Output = DandelionResult<(Context, Recorder)>; + fn poll( + self: core::pin::Pin<&mut Self>, + cx: &mut core::task::Context<'_>, + ) -> core::task::Poll { + let mut lock_guard = self + .internal + .lock() + .expect("Failed to lock test queue on poll"); + if let Some(promise) = lock_guard.promise { + use futures::future::Future; + return promise.poll(cx); + } else { + lock_guard.waker.replace(cx.waker().clone()); + return core::task::Poll::Pending; + } + } + } + fn loader_empty(dom_init: Vec, driver: Box) { // load elf file let elf_path = String::new(); @@ -27,7 +96,14 @@ mod compute_driver_tests { wrong_init: Vec, ) { for wronge_resource in wrong_init { - let wrong_resource_engine = driver.start_engine(wronge_resource); + let queue_box = Box::new(TestQueue { + internal: Arc::new(Mutex::new(TestQueueInternal { + args: None, + promise: None, + waker: None, + })), + }); + let wrong_resource_engine = driver.start_engine(wronge_resource, queue_box); match wrong_resource_engine { Ok(_) => panic!("Should not be able to get engine"), Err(err) => assert_eq!(DandelionError::EngineResourceError, err), @@ -35,7 +111,14 @@ mod compute_driver_tests { } for resource in init { - let engine = driver.start_engine(resource); + let queue_box = Box::new(TestQueue { + internal: Arc::new(Mutex::new(TestQueueInternal { + args: None, + promise: None, + waker: None, + })), + }); + let engine = driver.start_engine(resource, queue_box); engine.expect("Should be able to get engine"); } } @@ -45,18 +128,25 @@ mod compute_driver_tests { dom_init: Vec, driver: &Box, drv_init: Vec, - ) -> (Box, Context, FunctionConfig) { + ) -> (Box, Context, FunctionConfig, Box) { + let queue = Box::new(TestQueue { + internal: Arc::new(Mutex::new(TestQueueInternal { + args: None, + promise: None, + waker: None, + })), + }); let mut domain = Dom::init(dom_init).expect("Should have initialized domain"); let function = driver .parse_function(filename.to_string(), &mut domain) .expect("Should be able to parse function"); let engine = driver - .start_engine(drv_init[0]) + .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function .load(&mut domain, 0x802_0000) .expect("Should be able to load function"); - return (engine, function_context, function.config); + return (engine, function_context, function.config, queue); } fn engine_minimal( @@ -65,15 +155,21 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, function_context, config) = + let (mut engine, function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let (result, _function_context) = tokio::runtime::Builder::new_current_thread() + queue.enqueu(EngineArguments { + config: config, + context: function_context, + output_sets: Vec::new(), + recorder: recorder.clone(), + }); + let _ = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(engine.run(&config, function_context, &vec![], recorder.clone())); - result.expect("Engine should run ok with basic function"); + .block_on(queue) + .expect("Engine should run ok with basic function"); } fn engine_matmul_single( @@ -82,7 +178,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, mut function_context, config) = + let (mut engine, mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); // add inputs let in_size_offset = function_context @@ -101,17 +197,18 @@ mod compute_driver_tests { })); let archive = Arc::new(Mutex::new(Archive::new())); let mut recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let (result, result_context) = tokio::runtime::Builder::new_current_thread() + queue.enqueu(EngineArguments { + config, + context: function_context, + output_sets: vec![String::from("")], + recorder, + }); + let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(engine.run( - &config, - function_context, - &vec!["".to_string()], - recorder.clone(), - )); - result.expect("Engine should run ok with basic function"); - recorder + .block_on(queue) + .expect("Engine should run ok with basic function"); + result_recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); // check that result is 4 @@ -157,12 +254,13 @@ mod compute_driver_tests { const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { - let (mut engine, mut function_context, config) = prepare_engine_and_function::( - filename, - dom_init.clone(), - &driver, - drv_init.clone(), - ); + let (mut engine, mut function_context, config, queue) = + prepare_engine_and_function::( + filename, + dom_init.clone(), + &driver, + drv_init.clone(), + ); // add inputs let mut mat_vec = Vec::::new(); mat_vec.push(mat_size as i64); @@ -228,7 +326,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, mut function_context, config) = + let (mut engine, mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let stdin_content = "Test line \n line 2\n"; let stdin_offset = function_context diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index a6984fe2..b297c606 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -1,172 +1,214 @@ use crate::{ function_driver::{ - thread_utils::{DefaultState, ThreadCommand, ThreadController, ThreadPayload}, - ComputeResource, Driver, Engine, Function, FunctionConfig, WasmConfig, + thread_utils::{EngineLoop, ThreadController}, + ComputeResource, Driver, Engine, Function, FunctionConfig, WasmConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, memory_domain::{Context, ContextType, MemoryDomain}, DataRequirementList, DataSet, }; -use core::{ - future::{ready, Future}, - pin::Pin, -}; -use dandelion_commons::{ - records::{RecordPoint, Recorder}, - DandelionError, DandelionResult, -}; -use futures::task::Poll; +use dandelion_commons::{DandelionError, DandelionResult}; use libloading::{Library, Symbol}; use log::error; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; type WasmEntryPoint = fn(&mut [u8]) -> Option; -struct WasmCommand { - lib: Arc, - context: Arc>>, -} -unsafe impl Send for WasmCommand {} +// struct WasmCommand { +// lib: Arc, +// context: Arc>>, +// } +// unsafe impl Send for WasmCommand {} -impl ThreadPayload for WasmCommand { - type State = DefaultState; - fn run(self, _state: &mut Self::State) -> DandelionResult<()> { - match unsafe { self.lib.get::(b"run") } { - Ok(entry_point) => { - // TODO handle errors +// impl ThreadPayload for WasmCommand { +// type State = DefaultState; +// fn run(self, _state: &mut Self::State) -> DandelionResult<()> { +// match unsafe { self.lib.get::(b"run") } { +// Ok(entry_point) => { +// // TODO handle errors - let mut guard = self.context.lock().unwrap(); +// let mut guard = self.context.lock().unwrap(); - // take out the context - let mut ctx = guard.take().unwrap(); - let wasm_context = match &mut ctx.context { - ContextType::Wasm(wasm_context) => wasm_context, - _ => panic!("invalid context type"), - }; - - // call entry point - let ret = entry_point(&mut wasm_context.mem); - // put context back - *guard = Some(ctx); +// // take out the context +// let mut ctx = guard.take().unwrap(); +// let wasm_context = match &mut ctx.context { +// ContextType::Wasm(wasm_context) => wasm_context, +// _ => panic!("invalid context type"), +// }; - return match ret { - Some(_) => Ok(()), - None => Err(DandelionError::EngineError), - }; - } - Err(_) => Err(DandelionError::EngineError), - } - } -} +// // call entry point +// let ret = entry_point(&mut wasm_context.mem); +// // put context back +// *guard = Some(ctx); -struct WasmFuture<'a> { - engine: &'a mut WasmEngine, - context: Arc>>, - system_data_offset: usize, -} +// return match ret { +// Some(_) => Ok(()), +// None => Err(DandelionError::EngineError), +// }; +// } +// Err(_) => Err(DandelionError::EngineError), +// } +// } +// } + +// struct WasmFuture<'a> { +// engine: &'a mut WasmEngine, +// context: Arc>>, +// system_data_offset: usize, +// } // exits the function -impl Future for WasmFuture<'_> { - type Output = (DandelionResult<()>, Context); - fn poll( - mut self: Pin<&mut Self>, - cx: &mut futures::task::Context, - ) -> futures::task::Poll { - match self.engine.thread_controller.poll_next(cx) { - Poll::Pending => return Poll::Pending, - Poll::Ready(Some(Ok(()))) => { - // TODO handle errors (we don't have a context if locking fails) - let mut guard = self.context.lock().unwrap(); - if !guard.is_some() { - return Poll::Pending; - }; - let mut context = guard.take().unwrap(); - let res = read_output_structs::(&mut context, self.system_data_offset); - Poll::Ready((res, context)) - } - _ => { - let context = self.context.lock().unwrap().take().unwrap(); - Poll::Ready((Err(DandelionError::EngineError), context)) - } - } - } -} +// impl Future for WasmFuture<'_> { +// type Output = (DandelionResult<()>, Context); +// fn poll( +// mut self: Pin<&mut Self>, +// cx: &mut futures::task::Context, +// ) -> futures::task::Poll { +// match self.engine.thread_controller.poll_next(cx) { +// Poll::Pending => return Poll::Pending, +// Poll::Ready(Some(Ok(()))) => { +// // TODO handle errors (we don't have a context if locking fails) +// let mut guard = self.context.lock().unwrap(); +// if !guard.is_some() { +// return Poll::Pending; +// }; +// let mut context = guard.take().unwrap(); +// let res = read_output_structs::(&mut context, self.system_data_offset); +// Poll::Ready((res, context)) +// } +// _ => { +// let context = self.context.lock().unwrap().take().unwrap(); +// Poll::Ready((Err(DandelionError::EngineError), context)) +// } +// } +// } +// } -pub struct WasmEngine { - thread_controller: ThreadController, -} +struct WasmLoop {} -impl Engine for WasmEngine { +impl EngineLoop for WasmLoop { + fn init(_core_id: u8) -> DandelionResult> { + return Ok(Box::new(WasmLoop {})); + } fn run( &mut self, - config: &FunctionConfig, + config: FunctionConfig, mut context: Context, - output_set_names: &Vec, - mut recorder: Recorder, - ) -> Pin, Context)> + '_ + Send>> { - if let Err(err) = recorder.record(RecordPoint::EngineStart) { - return Box::pin(core::future::ready((Err(err), context))); - } - - // error shorthand - use DandelionError::*; - macro_rules! err { - ($err:expr) => { - return Box::pin(ready((Err($err), context))) - }; - } - - // extract config and context + output_set_names: Vec, + ) -> DandelionResult { let wasm_config = match config { FunctionConfig::WasmConfig(wasm_config) => wasm_config, - _ => err!(ConfigMissmatch), + _ => return Err(DandelionError::ConfigMissmatch), }; - // setup input structs - if let Err(err) = setup_input_structs::( + setup_input_structs::( &mut context, wasm_config.system_data_struct_offset, - output_set_names, - ) { - err!(err) - }; + &output_set_names, + )?; + match unsafe { wasm_config.lib.get::(b"run") } { + Ok(entry_point) => { + // TODO handle errors - // share context with thread - let context_ = Arc::new(Mutex::new(Some(context))); + // take out the context + { + let wasm_context = match context.context { + ContextType::Wasm(ref mut wasm_context) => wasm_context, + _ => panic!("invalid context type"), + }; - // send run command to thread - let cmd = ThreadCommand::Run( - recorder, - WasmCommand { - context: context_.clone(), - lib: wasm_config.lib.clone(), - }, - ); - - // TODO give back context if send fails (moved it into the Arc) - match self.thread_controller.send_command(cmd) { - Ok(()) => (), - Err(err) => { - let err_context = context_.lock().unwrap().take().unwrap(); - return Box::pin(futures::future::ready((Err(err), err_context))); + // call entry point + let _ = + entry_point(&mut wasm_context.mem).ok_or(DandelionError::EngineError)?; + } + // put context back + + read_output_structs::( + &mut context, + wasm_config.system_data_struct_offset, + )?; + return Ok(context); } - }; - Box::::pin(WasmFuture { - engine: self, - context: context_, - system_data_offset: wasm_config.system_data_struct_offset, - }) + Err(_) => Err(DandelionError::EngineError), + } } +} - fn abort(&mut self) -> DandelionResult<()> { - unimplemented!() - } +pub struct WasmEngine { + thread_controller: ThreadController, +} + +impl Engine for WasmEngine { + // fn run( + // &mut self, + // config: &FunctionConfig, + // mut context: Context, + // output_set_names: &Vec, + // mut recorder: Recorder, + // ) -> Pin, Context)> + '_ + Send>> { + // if let Err(err) = recorder.record(RecordPoint::EngineStart) { + // return Box::pin(core::future::ready((Err(err), context))); + // } + + // // error shorthand + // use DandelionError::*; + // macro_rules! err { + // ($err:expr) => { + // return Box::pin(ready((Err($err), context))) + // }; + // } + + // // extract config and context + // let wasm_config = match config { + // FunctionConfig::WasmConfig(wasm_config) => wasm_config, + // _ => err!(ConfigMissmatch), + // }; + + // // setup input structs + // if let Err(err) = setup_input_structs::( + // &mut context, + // wasm_config.system_data_struct_offset, + // output_set_names, + // ) { + // err!(err) + // }; + + // // share context with thread + // let context_ = Arc::new(Mutex::new(Some(context))); + + // // send run command to thread + // let cmd = ThreadCommand::Run( + // recorder, + // WasmCommand { + // context: context_.clone(), + // lib: wasm_config.lib.clone(), + // }, + // ); + + // // TODO give back context if send fails (moved it into the Arc) + // match self.thread_controller.send_command(cmd) { + // Ok(()) => (), + // Err(err) => { + // let err_context = context_.lock().unwrap().take().unwrap(); + // return Box::pin(futures::future::ready((Err(err), err_context))); + // } + // }; + // Box::::pin(WasmFuture { + // engine: self, + // context: context_, + // system_data_offset: wasm_config.system_data_struct_offset, + // }) + // } } pub struct WasmDriver {} impl Driver for WasmDriver { - fn start_engine(&self, resource: ComputeResource) -> DandelionResult> { + fn start_engine( + &self, + resource: ComputeResource, + queue: Box, + ) -> DandelionResult> { // sanity checks; extract core id let cpu_slot = match resource { ComputeResource::CPU(core) => core, @@ -187,7 +229,7 @@ impl Driver for WasmDriver { // create channels and spawn threads return Ok(Box::new(WasmEngine { - thread_controller: ThreadController::new(cpu_slot), + thread_controller: ThreadController::new(cpu_slot, queue), })); } diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 3b435262..578ea8d7 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -1,130 +1,93 @@ +use crate::{ + function_driver::{EngineArguments, FunctionConfig, WorkQueue}, + memory_domain::Context, + promise::Promise, +}; use core::marker::Send; -use dandelion_commons::{ - records::{RecordPoint, Recorder}, - DandelionError, DandelionResult, +use dandelion_commons::{records::RecordPoint, DandelionError, DandelionResult}; +use std::{ + marker::PhantomData, + thread::{spawn, JoinHandle}, }; -use log::info; -use std::thread::{spawn, JoinHandle}; -pub trait ThreadState { - fn init(core_id: u8) -> DandelionResult>; -} +extern crate alloc; -pub struct DefaultState {} -impl ThreadState for DefaultState { - fn init(_core_id: u8) -> DandelionResult> { - return Ok(Box::new(DefaultState {})); - } -} - -pub trait ThreadPayload { - type State: ThreadState; - fn run(self, state: &mut Self::State) -> DandelionResult<()>; -} - -pub enum ThreadCommand { - Abort, - Run(Recorder, P), +pub trait EngineLoop { + fn init(core_id: u8) -> DandelionResult>; + fn run( + &mut self, + config: FunctionConfig, + context: Context, + output_sets: Vec, + ) -> DandelionResult; } /// Need the command receiver to be blocking on the worker thread, /// that is easier if with this type, as it does not need async to block -type CommandSender

= std::sync::mpsc::Sender>; -type CommandReceiver

= std::sync::mpsc::Receiver>; -/// On the result receiver need to not block the thread, as we are inside a runtime, -/// that can use the thread for other things if receive can yield on waiting. -type ResultSender = futures::channel::mpsc::Sender>; -type ResultReceiver = futures::channel::mpsc::Receiver>; +type CommandSender = std::sync::mpsc::Sender<()>; +type CommandReceiver = std::sync::mpsc::Receiver<()>; -pub struct ThreadController { +pub struct ThreadController { + _loop_marker: PhantomData, /// command sender that works accross threads - /// TODO: could this also be futures channel? - command_sender: CommandSender

, - /// receiver for worker thread result - result_receiver: ResultReceiver, + command_sender: CommandSender, thread_handle: Option>, } -/// Try to send a result on the channel -/// returns true on success, false on irecoverable error -fn try_send(mut result: DandelionResult<()>, sender: &mut ResultSender) -> bool { - while let Err(try_result) = sender.try_send(result) { - if try_result.is_full() { - result = try_result.into_inner(); - } else { - return false; - } - } - return true; -} - -fn run_thread( +fn run_thread( core_id: u8, - command_receiver: CommandReceiver

, - mut result_sender: ResultSender, + command_receiver: CommandReceiver, + queue: Box, ) { // set core affinity if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { - try_send(Err(DandelionError::EngineResourceError), &mut result_sender); + log::error!("core received core id that could not be set"); return; } - if let Ok(mut thread_state) = P::State::init(core_id) { - info!("engine running on core {}", core_id); - // TODO would be nice to check, but would require to block on creation path - // try_send(Ok(()), &mut result_sender); - for command in command_receiver.iter() { - let (mut recorder, payload) = match command { - ThreadCommand::Abort => return, - ThreadCommand::Run(rec, pay) => (rec, pay), - }; - let result = payload.run(&mut thread_state); - // ignore recorder errors for now, as we detect on record of engine return - let _ = recorder.record(RecordPoint::EngineEnd); - if !try_send(result, &mut result_sender) { - return; - } + let mut engine_state = E::init(core_id).expect("Failed to initialize thread state"); + loop { + if command_receiver.try_recv().is_ok() { + return; } - } else { - try_send(Err(DandelionError::EngineError), &mut result_sender); + let (promise, debt) = Promise::new(); + let EngineArguments { + config, + context, + output_sets, + mut recorder, + } = queue.get_engine_args(promise); + recorder.record(RecordPoint::EngineStart); + let result = engine_state.run(config, context, output_sets); + recorder.record(RecordPoint::EngineEnd); + let results = Box::new(result.and_then(|context| Ok((context, recorder)))); + debt.fulfill(results); } - return; } -impl ThreadController

{ - pub fn new(cpu_slot: u8) -> Self { +impl ThreadController { + pub fn new(cpu_slot: u8, queue: Box) -> Self { let (command_sender, command_receiver) = std::sync::mpsc::channel(); - let (result_sender, result_receiver) = futures::channel::mpsc::channel(0); - let thread_handle = spawn(move || run_thread(cpu_slot, command_receiver, result_sender)); + let thread_handle = spawn(move || run_thread::(cpu_slot, command_receiver, queue)); return ThreadController { command_sender, - result_receiver, thread_handle: Some(thread_handle), + _loop_marker: PhantomData, }; } - pub fn send_command(&mut self, command: ThreadCommand

) -> DandelionResult<()> { - match self.command_sender.send(command) { + fn send_command(&mut self) -> DandelionResult<()> { + match self.command_sender.send(()) { Err(_) => Err(DandelionError::EngineError), Ok(_) => Ok(()), } } - - pub fn poll_next( - &mut self, - ctx: &mut futures::task::Context, - ) -> futures::task::Poll>> { - use futures::Stream; - return core::pin::Pin::new(&mut self.result_receiver) - .as_mut() - .poll_next(ctx); - } } -impl Drop for ThreadController

{ +impl Drop for ThreadController { fn drop(&mut self) { if let Some(handle) = self.thread_handle.take() { // drop channel - let _res = self.command_sender.send(ThreadCommand::Abort); + let _res = self.command_sender.send(()); handle .join() .expect("Join thread handle in Thread controller should not panic"); diff --git a/machine_interface/src/lib.rs b/machine_interface/src/lib.rs index d2f5e29e..2b5e9aec 100644 --- a/machine_interface/src/lib.rs +++ b/machine_interface/src/lib.rs @@ -1,5 +1,6 @@ pub mod function_driver; pub mod memory_domain; +pub mod promise; #[cfg(any(feature = "cheri", feature = "mmu", feature = "wasm"))] mod interface; From de49c192f7e375e6b37be2b2b95e25989fd8286c Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 20 Feb 2024 17:00:23 +0100 Subject: [PATCH 011/176] Promise working, mmu and wasm pass machine tests --- .../compute_driver/compute_driver_tests.rs | 226 +++++++++--------- .../src/function_driver/compute_driver/mmu.rs | 162 ++++--------- .../function_driver/compute_driver/wasm.rs | 133 +---------- machine_interface/src/promise.rs | 130 ++++++++++ .../tests/data/test_sysld_wasm_basic | Bin 846960 -> 0 bytes .../tests/data/test_sysld_wasm_matmac | Bin 851504 -> 0 bytes .../tests/data/test_sysld_wasm_matmul | Bin 851416 -> 0 bytes 7 files changed, 298 insertions(+), 353 deletions(-) create mode 100644 machine_interface/src/promise.rs delete mode 100755 machine_interface/tests/data/test_sysld_wasm_basic delete mode 100755 machine_interface/tests/data/test_sysld_wasm_matmac delete mode 100755 machine_interface/tests/data/test_sysld_wasm_matmul diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index b3c409c4..a3210e2a 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -11,76 +11,76 @@ mod compute_driver_tests { use core::panic; use dandelion_commons::{ records::{Archive, RecordPoint, Recorder}, - DandelionError, DandelionResult, + DandelionError, }; - use std::sync::{Arc, Mutex}; + use std::sync::{Arc, Condvar, Mutex}; struct TestQueueInternal { args: Option, promise: Option, - waker: Option, } #[derive(Clone)] struct TestQueue { - internal: Arc>, + internal: Arc<(Mutex, Condvar, Condvar)>, } impl TestQueue { - fn enqueu(&self, args: EngineArguments) { - if self - .internal - .lock() - .expect("Test queue failed to lock on enqueuing") - .args - .replace(args) - .is_some() - { - panic!("Tried to enqueu on test queue that already held args"); + fn enqueu(&self, args: EngineArguments) -> Promise { + let (lock, arg_var, promise_var) = self.internal.as_ref(); + let mut lock_guard = lock.lock().expect("Test queue failed to lock on enqueuing"); + if lock_guard.args.is_some() { + lock_guard = arg_var + .wait_while(lock_guard, |guard| guard.args.is_some()) + .expect("Test queue enqueue failed waiting on inserting args"); } + if lock_guard.args.replace(args).is_some() { + panic!("Test queue replace args still present") + }; + arg_var.notify_all(); + if lock_guard.promise.is_none() { + lock_guard = promise_var + .wait_while(lock_guard, |guard| guard.promise.is_none()) + .expect("Test queue failed to lock on taking promise"); + } + let promise = lock_guard + .promise + .take() + .expect("Test queue return promis should be there because of condvar"); + promise_var.notify_all(); + return promise; } } impl WorkQueue for TestQueue { fn get_engine_args(&self, promise: Promise) -> EngineArguments { - let mut lock_guard = self - .internal + let (lock, arg_var, promise_var) = self.internal.as_ref(); + let mut lock_guard = lock .lock() .expect("Test queue failed to lock on get_engine_args"); + if lock_guard.promise.is_some() { + lock_guard = promise_var + .wait_while(lock_guard, |guard| guard.promise.is_some()) + .expect("Test queue failed to wait to place new promise"); + } if lock_guard.promise.replace(promise).is_some() { - panic!("Test queue entered promis when there already was one") + panic!("Test queue no promise should be present") + }; + promise_var.notify_all(); + if lock_guard.args.is_none() { + lock_guard = arg_var + .wait_while(lock_guard, |guard| guard.args.is_none()) + .expect("Test queue failed waiting to take args"); } let args = lock_guard .args .take() .expect("Test queue tried to take args from empty queue"); - if let Some(waker) = lock_guard.waker.take() { - waker.wake(); - } + arg_var.notify_all(); return args; } } - impl futures::Future for TestQueue { - type Output = DandelionResult<(Context, Recorder)>; - fn poll( - self: core::pin::Pin<&mut Self>, - cx: &mut core::task::Context<'_>, - ) -> core::task::Poll { - let mut lock_guard = self - .internal - .lock() - .expect("Failed to lock test queue on poll"); - if let Some(promise) = lock_guard.promise { - use futures::future::Future; - return promise.poll(cx); - } else { - lock_guard.waker.replace(cx.waker().clone()); - return core::task::Poll::Pending; - } - } - } - fn loader_empty(dom_init: Vec, driver: Box) { // load elf file let elf_path = String::new(); @@ -97,11 +97,14 @@ mod compute_driver_tests { ) { for wronge_resource in wrong_init { let queue_box = Box::new(TestQueue { - internal: Arc::new(Mutex::new(TestQueueInternal { - args: None, - promise: None, - waker: None, - })), + internal: Arc::new(( + Mutex::new(TestQueueInternal { + args: None, + promise: None, + }), + Condvar::new(), + Condvar::new(), + )), }); let wrong_resource_engine = driver.start_engine(wronge_resource, queue_box); match wrong_resource_engine { @@ -112,11 +115,14 @@ mod compute_driver_tests { for resource in init { let queue_box = Box::new(TestQueue { - internal: Arc::new(Mutex::new(TestQueueInternal { - args: None, - promise: None, - waker: None, - })), + internal: Arc::new(( + Mutex::new(TestQueueInternal { + args: None, + promise: None, + }), + Condvar::new(), + Condvar::new(), + )), }); let engine = driver.start_engine(resource, queue_box); engine.expect("Should be able to get engine"); @@ -130,11 +136,14 @@ mod compute_driver_tests { drv_init: Vec, ) -> (Box, Context, FunctionConfig, Box) { let queue = Box::new(TestQueue { - internal: Arc::new(Mutex::new(TestQueueInternal { - args: None, - promise: None, - waker: None, - })), + internal: Arc::new(( + Mutex::new(TestQueueInternal { + args: None, + promise: None, + }), + Condvar::new(), + Condvar::new(), + )), }); let mut domain = Dom::init(dom_init).expect("Should have initialized domain"); let function = driver @@ -155,11 +164,11 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, function_context, config, queue) = + let (_engine, function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments { config: config, context: function_context, output_sets: Vec::new(), @@ -168,7 +177,7 @@ mod compute_driver_tests { let _ = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(queue) + .block_on(promise) .expect("Engine should run ok with basic function"); } @@ -178,7 +187,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, mut function_context, config, queue) = + let (_engine, mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); // add inputs let in_size_offset = function_context @@ -196,8 +205,8 @@ mod compute_driver_tests { }], })); let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive, RecordPoint::TransferEnd); - queue.enqueu(EngineArguments { + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments { config, context: function_context, output_sets: vec![String::from("")], @@ -206,7 +215,7 @@ mod compute_driver_tests { let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(queue) + .block_on(promise) .expect("Engine should run ok with basic function"); result_recorder .record(RecordPoint::FutureReturn) @@ -254,13 +263,12 @@ mod compute_driver_tests { const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { - let (mut engine, mut function_context, config, queue) = - prepare_engine_and_function::( - filename, - dom_init.clone(), - &driver, - drv_init.clone(), - ); + let (_engine, mut function_context, config, queue) = prepare_engine_and_function::( + filename, + dom_init.clone(), + &driver, + drv_init.clone(), + ); // add inputs let mut mat_vec = Vec::::new(); mat_vec.push(mat_size as i64); @@ -282,18 +290,20 @@ mod compute_driver_tests { }], })); let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive.clone(), RecordPoint::TransferEnd); - let (result, result_context) = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(engine.run( - &config, - function_context, - &vec!["".to_string()], - recorder.clone(), - )); - result.expect("Engine should run ok with basic function"); - recorder + let recorder = Recorder::new(archive.clone(), RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments { + config, + context: function_context, + output_sets: vec![String::from("")], + recorder, + }); + let (result_context, mut result_recorder) = + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); assert_eq!(1, result_context.content.len()); @@ -326,7 +336,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, mut function_context, config, queue) = + let (_engine, mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let stdin_content = "Test line \n line 2\n"; let stdin_offset = function_context @@ -371,18 +381,19 @@ mod compute_driver_tests { ], })); let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let (result, result_context) = tokio::runtime::Builder::new_current_thread() + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments { + config, + context: function_context, + output_sets: vec![String::from("stdio")], + recorder, + }); + let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(engine.run( - &config, - function_context, - &vec!["stdio".to_string()], - recorder.clone(), - )); - result.expect("Engine should run ok with basic function"); - recorder + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); // check the function exited with exit code 0 @@ -441,7 +452,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (mut engine, mut function_context, config) = + let (_engine, mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let in_file_content = "Test file 0\n line 2\n"; let in_file_offset = function_context @@ -512,22 +523,23 @@ mod compute_driver_tests { ], })); let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let (result, result_context) = tokio::runtime::Builder::new_current_thread() + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments { + config: config, + context: function_context, + output_sets: vec![ + "stdio".to_string(), + "out".to_string(), + "out_nested".to_string(), + ], + recorder, + }); + let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(engine.run( - &config, - function_context, - &vec![ - "stdio".to_string(), - "out".to_string(), - "out_nested".to_string(), - ], - recorder.clone(), - )); - result.expect("Engine should run ok with basic function"); - recorder + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); assert_eq!(3, result_context.content.len()); diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index 1a75e329..28af4f39 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -1,24 +1,16 @@ use crate::{ function_driver::{ load_utils::load_u8_from_file, - thread_utils::{DefaultState, ThreadCommand, ThreadController, ThreadPayload}, - ComputeResource, Driver, ElfConfig, Engine, Function, FunctionConfig, + thread_utils::{EngineLoop, ThreadController}, + ComputeResource, Driver, ElfConfig, Engine, Function, FunctionConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}, util::elf_parser, DataItem, DataRequirement, DataRequirementList, DataSet, Position, }; -use core::{ - future::{ready, Future}, - pin::Pin, -}; use core_affinity; -use dandelion_commons::{ - records::{RecordPoint, Recorder}, - DandelionError, DandelionResult, -}; -use futures::task::Poll; +use dandelion_commons::{DandelionError, DandelionResult}; use log::{debug, warn}; use nix::{ sys::{ @@ -32,66 +24,6 @@ use std::{ sync::Arc, }; -struct MmuCommand { - core_id: u8, - storage_id: String, - protection_flags: Vec<(u32, Position)>, - entry_point: usize, -} -unsafe impl Send for MmuCommand {} - -impl ThreadPayload for MmuCommand { - type State = DefaultState; - fn run(self, _state: &mut Self::State) -> DandelionResult<()> { - return mmu_run_static( - self.core_id, - &self.storage_id, - &self.protection_flags, - self.entry_point, - ); - } -} - -pub struct MmuEngine { - cpu_slot: u8, - thread_controller: ThreadController, -} - -struct MmuFuture<'a> { - engine: &'a mut MmuEngine, - context: Option, - system_data_offset: usize, -} - -// TODO find better way than take unwrap to return context -// or at least a way to ensure that the future is always initialized with a context, -// so this can only happen when poll is called after it has already returned the context once -impl Future for MmuFuture<'_> { - type Output = (DandelionResult<()>, Context); - fn poll( - mut self: Pin<&mut Self>, - cx: &mut futures::task::Context, - ) -> futures::task::Poll { - match self.engine.thread_controller.poll_next(cx) { - Poll::Pending => return Poll::Pending, - Poll::Ready(None) => { - return Poll::Ready(( - Err(DandelionError::EngineError), - self.context.take().unwrap(), - )) - } - Poll::Ready(Some(Err(err))) => { - return Poll::Ready((Err(err), self.context.take().unwrap())) - } - Poll::Ready(Some(Ok(()))) => (), - } - let mut context = self.context.take().unwrap(); - // read outputs - let result = read_output_structs::(&mut context, self.system_data_offset); - Poll::Ready((result, context)) - } -} - fn ptrace_syscall(pid: libc::pid_t) { #[cfg(target_os = "linux")] let res = unsafe { libc::ptrace(libc::PTRACE_SYSCALL, pid, 0, 0) }; @@ -192,7 +124,9 @@ fn mmu_run_static( // intercept worker's syscalls by ptrace let pid = Pid::from_raw(worker.id() as i32); let status = wait::waitpid(pid, None).map_err(|_e| DandelionError::MmuWorkerError)?; - assert_eq!(status, WaitStatus::Stopped(pid, Signal::SIGSTOP)); + if status != WaitStatus::Stopped(pid, Signal::SIGSTOP) { + worker.kill().map_err(|_e| DandelionError::MmuWorkerError)?; + } ptrace_syscall(pid.as_raw()); loop { @@ -233,62 +167,63 @@ fn mmu_run_static( } } -impl Engine for MmuEngine { +struct MmuLoop { + cpu_slot: u8, +} + +impl EngineLoop for MmuLoop { + fn init(core_id: u8) -> DandelionResult> { + return Ok(Box::new(MmuLoop { cpu_slot: core_id })); + } fn run( &mut self, - config: &FunctionConfig, + config: FunctionConfig, mut context: Context, - output_set_names: &Vec, - mut recorder: Recorder, - ) -> Pin, Context)> + '_ + Send>> { - if let Err(err) = recorder.record(RecordPoint::EngineStart) { - return Box::pin(core::future::ready((Err(err), context))); - } + output_sets: Vec, + ) -> DandelionResult { let elf_config = match config { FunctionConfig::ElfConfig(conf) => conf, - _ => return Box::pin(ready((Err(DandelionError::ConfigMissmatch), context))), + _ => return Err(DandelionError::ConfigMissmatch), }; + + setup_input_structs::( + &mut context, + elf_config.system_data_offset, + &output_sets, + )?; + let mmu_context = match &context.context { ContextType::Mmu(mmu_context) => mmu_context, - _ => return Box::pin(ready((Err(DandelionError::ContextMissmatch), context))), + _ => return Err(DandelionError::ContextMissmatch), }; - let command = ThreadCommand::Run( - recorder, - MmuCommand { - core_id: self.cpu_slot, - storage_id: mmu_context.storage.id().to_string(), - protection_flags: elf_config.protection_flags.to_vec(), - entry_point: elf_config.entry_point, - }, - ); - if let Err(err) = setup_input_structs::( - &mut context, - elf_config.system_data_offset, - output_set_names, - ) { - return Box::pin(ready((Err(err), context))); - } - match self.thread_controller.send_command(command) { - Err(err) => return Box::pin(ready((Err(err), context))), - Ok(_) => (), - } - let function_future = Box::::pin(MmuFuture { - engine: self, - context: Some(context), - system_data_offset: elf_config.system_data_offset, - }); - return function_future; - } - fn abort(&mut self) -> DandelionResult<()> { - unimplemented!("Abort currently missimplemented"); + + mmu_run_static( + self.cpu_slot, + mmu_context.storage.id(), + &elf_config.protection_flags, + elf_config.entry_point, + )?; + + read_output_structs::(&mut context, elf_config.system_data_offset)?; + + return Ok(context); } } +pub struct MmuEngine { + thread_controller: ThreadController, +} +impl Engine for MmuEngine {} + pub struct MmuDriver {} impl Driver for MmuDriver { // // take or release one of the available engines - fn start_engine(&self, resource: ComputeResource) -> DandelionResult> { + fn start_engine( + &self, + resource: ComputeResource, + queue: Box, + ) -> DandelionResult> { let cpu_slot = match resource { ComputeResource::CPU(core) => core, _ => return Err(DandelionError::EngineResourceError), @@ -306,8 +241,7 @@ impl Driver for MmuDriver { return Err(DandelionError::EngineResourceError); } return Ok(Box::new(MmuEngine { - cpu_slot, - thread_controller: ThreadController::new(cpu_slot), + thread_controller: ThreadController::new(cpu_slot, queue), })); } diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index b297c606..0e474bc5 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -14,76 +14,6 @@ use std::sync::Arc; type WasmEntryPoint = fn(&mut [u8]) -> Option; -// struct WasmCommand { -// lib: Arc, -// context: Arc>>, -// } -// unsafe impl Send for WasmCommand {} - -// impl ThreadPayload for WasmCommand { -// type State = DefaultState; -// fn run(self, _state: &mut Self::State) -> DandelionResult<()> { -// match unsafe { self.lib.get::(b"run") } { -// Ok(entry_point) => { -// // TODO handle errors - -// let mut guard = self.context.lock().unwrap(); - -// // take out the context -// let mut ctx = guard.take().unwrap(); -// let wasm_context = match &mut ctx.context { -// ContextType::Wasm(wasm_context) => wasm_context, -// _ => panic!("invalid context type"), -// }; - -// // call entry point -// let ret = entry_point(&mut wasm_context.mem); -// // put context back -// *guard = Some(ctx); - -// return match ret { -// Some(_) => Ok(()), -// None => Err(DandelionError::EngineError), -// }; -// } -// Err(_) => Err(DandelionError::EngineError), -// } -// } -// } - -// struct WasmFuture<'a> { -// engine: &'a mut WasmEngine, -// context: Arc>>, -// system_data_offset: usize, -// } - -// exits the function -// impl Future for WasmFuture<'_> { -// type Output = (DandelionResult<()>, Context); -// fn poll( -// mut self: Pin<&mut Self>, -// cx: &mut futures::task::Context, -// ) -> futures::task::Poll { -// match self.engine.thread_controller.poll_next(cx) { -// Poll::Pending => return Poll::Pending, -// Poll::Ready(Some(Ok(()))) => { -// // TODO handle errors (we don't have a context if locking fails) -// let mut guard = self.context.lock().unwrap(); -// if !guard.is_some() { -// return Poll::Pending; -// }; -// let mut context = guard.take().unwrap(); -// let res = read_output_structs::(&mut context, self.system_data_offset); -// Poll::Ready((res, context)) -// } -// _ => { -// let context = self.context.lock().unwrap().take().unwrap(); -// Poll::Ready((Err(DandelionError::EngineError), context)) -// } -// } -// } -// } - struct WasmLoop {} impl EngineLoop for WasmLoop { @@ -138,68 +68,7 @@ pub struct WasmEngine { thread_controller: ThreadController, } -impl Engine for WasmEngine { - // fn run( - // &mut self, - // config: &FunctionConfig, - // mut context: Context, - // output_set_names: &Vec, - // mut recorder: Recorder, - // ) -> Pin, Context)> + '_ + Send>> { - // if let Err(err) = recorder.record(RecordPoint::EngineStart) { - // return Box::pin(core::future::ready((Err(err), context))); - // } - - // // error shorthand - // use DandelionError::*; - // macro_rules! err { - // ($err:expr) => { - // return Box::pin(ready((Err($err), context))) - // }; - // } - - // // extract config and context - // let wasm_config = match config { - // FunctionConfig::WasmConfig(wasm_config) => wasm_config, - // _ => err!(ConfigMissmatch), - // }; - - // // setup input structs - // if let Err(err) = setup_input_structs::( - // &mut context, - // wasm_config.system_data_struct_offset, - // output_set_names, - // ) { - // err!(err) - // }; - - // // share context with thread - // let context_ = Arc::new(Mutex::new(Some(context))); - - // // send run command to thread - // let cmd = ThreadCommand::Run( - // recorder, - // WasmCommand { - // context: context_.clone(), - // lib: wasm_config.lib.clone(), - // }, - // ); - - // // TODO give back context if send fails (moved it into the Arc) - // match self.thread_controller.send_command(cmd) { - // Ok(()) => (), - // Err(err) => { - // let err_context = context_.lock().unwrap().take().unwrap(); - // return Box::pin(futures::future::ready((Err(err), err_context))); - // } - // }; - // Box::::pin(WasmFuture { - // engine: self, - // context: context_, - // system_data_offset: wasm_config.system_data_struct_offset, - // }) - // } -} +impl Engine for WasmEngine {} pub struct WasmDriver {} diff --git a/machine_interface/src/promise.rs b/machine_interface/src/promise.rs new file mode 100644 index 00000000..f1e5daeb --- /dev/null +++ b/machine_interface/src/promise.rs @@ -0,0 +1,130 @@ +use crate::memory_domain::Context; + +use core::{ + pin::Pin, + ptr, + sync::atomic::{AtomicPtr, AtomicU8, Ordering}, + task::Poll, +}; +use dandelion_commons::{records::Recorder, DandelionResult}; + +pub struct Promise { + data: *const PromiseData, +} +unsafe impl Send for Promise {} + +impl Promise { + pub fn new(abort_handle: fn()) -> (Promise, Debt) { + let data = Box::new(PromiseData { + abort_handle: AtomicPtr::new(abort_handle as *mut fn()), + results: AtomicPtr::new(ptr::null_mut()), + waker: AtomicPtr::new(ptr::null_mut()), + references: AtomicU8::new(2), + }); + let data_ptr = Box::into_raw(data); + let promise = Promise { data: data_ptr }; + let debt = Debt { data: data_ptr }; + return (promise, debt); + } + pub fn abort(self) -> () { + let data = unsafe { &*self.data }; + let abort_hanlde = data.abort_handle.swap(ptr::null_mut(), Ordering::SeqCst); + if !abort_hanlde.is_null() { + unsafe { (*abort_hanlde)() } + } + } +} + +impl futures::future::Future for Promise { + type Output = Box>; + // as per documentation calling after it has resolved once is undefined + // handle this by returning pending again + fn poll(self: Pin<&mut Self>, cx: &mut core::task::Context<'_>) -> Poll { + let data = unsafe { &*self.data }; + // update the waker + let old_waker_ptr = data.waker.swap( + Box::into_raw(Box::new(cx.waker().clone())), + Ordering::SeqCst, + ); + if !old_waker_ptr.is_null() { + let _ = unsafe { Box::from_raw(old_waker_ptr) }; + } + // check if the result was put there in the mean time + let results_ptr = data.results.swap(ptr::null_mut(), Ordering::SeqCst); + if !results_ptr.is_null() { + return Poll::Ready(unsafe { Box::from_raw(results_ptr) }); + } else { + return Poll::Pending; + } + } +} + +pub struct Debt { + data: *const PromiseData, +} +unsafe impl Send for Debt {} + +impl Debt { + pub fn fulfill(self, results: Box>) -> () { + // make sure we are not aborted by this promise anymore + let data = unsafe { &*self.data }; + let abort_handle = data.abort_handle.swap(ptr::null_mut(), Ordering::SeqCst); + if abort_handle.is_null() { + return; + } + // make sure we are not aborted by this promise anymore + data.results.store(Box::into_raw(results), Ordering::SeqCst); + let waker_ptr = data.waker.swap(ptr::null_mut(), Ordering::SeqCst); + if !waker_ptr.is_null() { + let waker = unsafe { Box::from_raw(waker_ptr) }; + waker.wake(); + } + } +} + +fn drop_promise_data(data_ptr: *const PromiseData) { + let data = unsafe { &*data_ptr }; + if data.references.fetch_sub(1, Ordering::SeqCst) == 0 { + let _ = unsafe { Box::from_raw(data_ptr as *mut PromiseData) }; + } +} + +impl Drop for Promise { + fn drop(&mut self) { + drop_promise_data(self.data); + } +} +impl Drop for Debt { + fn drop(&mut self) { + drop_promise_data(self.data); + } +} + +struct PromiseData { + /// Abort handle, only to be called once, as long as this value + ///non null that means the function has not been aborted or terminated on it's own + abort_handle: AtomicPtr ()>, + /// Points to raw box of the results the engine has put in there + results: AtomicPtr>, + waker: AtomicPtr, + references: AtomicU8, +} + +impl PromiseData {} + +impl Drop for PromiseData { + fn drop(&mut self) { + // don't do anything for the abort handler, as the function does not need to be dropped, + // and calling it is likely not useful, as the debt was also dropped + // make sure to drop every pointer we still own + let results_ptr = self.results.load(Ordering::Acquire); + if !results_ptr.is_null() { + let _ = unsafe { Box::from_raw(results_ptr) }; + } + let waker_ptr = self.waker.load(Ordering::Acquire); + if !waker_ptr.is_null() { + // don't need to call before dropping, as the promise was dropped anyway + let _ = unsafe { Box::from_raw(waker_ptr) }; + } + } +} diff --git a/machine_interface/tests/data/test_sysld_wasm_basic b/machine_interface/tests/data/test_sysld_wasm_basic deleted file mode 100755 index bcdd68fc3be013245dacfc3992da062cf3d5bf84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 846960 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

A%{W~J6k_{ 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 X^~*8A%VNs^t^aPzf5$7}JvRP7<~o2W diff --git a/machine_interface/tests/data/test_sysld_wasm_matmac b/machine_interface/tests/data/test_sysld_wasm_matmac deleted file mode 100755 index 02e925135796c71de883f06c701dbc40328a8e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851504 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 z 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�SAKAhd;O=NWJ@` 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

n%Q7g{Cq!XkDh!dn zeF_2Rft>4BixRa}-mtjHMpBGbRPLecp!8^uZP30iIt3x0_|O2;CAH98Oy3HcxvhLI zZ4*^eF__{m*0P2?8NC8$Qa?cEPQ63T$`B%~b0LMF4d7eoWZtx^vAHh~J+U+WYw8A=Gpws0bMn z6F@{b z>2fPfxLfgXl!x9c%I_7%m9955ImzuU(-eYMnEGg;h?2f%)z_C*TwgQx+GZq_R0}EF zg-=~77Yhu!9RC@+x~Z)O5@bvLFHna=$G{*kME^q}HY~ilfm#Pi3ntX>LGw+hSV?dP zX$iA+RGlN;iImd~!PNH9WRPn$6TiT{t$Bv-o2n>_JjjcRsI~GiX5(5EpgYPP&qu@$ zd@P?nb;M^QrHTS{Cz(kEEhY(pIVJRF$ja9#xlvca!Jk7oO8~Ha$k7{RyA8?B)?Bg7 zXu255Eix0wBGe!Tfr3{vSS@XNEn#cW`HJzJ7iW+lm0Li(M5tu73}+SQH!Z_W@3zf) zb>Ukoyyw)LO-e7ptbMh4uM<-4-oiu$*1H358rte1DNc=aj68^`Gl(cMMkO`k1I1<8 zVjJUns;EYD$b?h_Ogfap$c+U1pz7s9cX*inhJl??B`)Iyq(ub!ez^F~HOIqiW0Jf< z5fluX@Xi_M-#UJ}CkwxtX9fg>pkN0h#-ph#se7T~C*CfRD7X-?aH;V;zT`oiOA_&i zQ#H+qz#8SiyC)A`JQZlJ$Etfo$A?5NdE&{r5Gv3;5fd6yOxmIPRzR^CEr-_ zUPxa`QmP_SI4b}LsOf<~*XiWK5edDR^vHf7WQ-8m4lZ0dcngzKSDs0eEw*`%VFVEf zx1|4wx1$K>t7kTJPe~HX7?zWVCX-8Tq@6HGM(jIdIvV0Q2*+GEL||ELnITcQ@U7xT zmUr(&mLFy~c+pr(3J2n%B8YKl^~ZUIs{!hROx;FuVTcDbLm;i%LgR%GQ1|WmDDa`{ zy7)F@&_>I9&os48Qwa2(uW4>@`+_nts~hC(mMIQU$d(*xgmo=%*xK<`l3&*pXEIR~muY5_@r?PBk~+EsU2`8s$ggY8noRKX zJHA0pWa=Ul^*L-c8a`;lbJm@ti613kTN6&`TDH`CZXC1=o~iEJwUK$f4Bx3sj)DX{ zl-9CVPzNM5dY+p!)23tc-$=|hs3n`FF%fPv&~bnS&TG80_~*1&kKn+LD{haJQr9RcQ|L=2|EWF zPUTo^$!H=fN1!+yRsq#gSZ%r%v`K#L!-2Vx>_}u(HzcHb8bd9&xx|t5m`Vg3 zcGKvVq3}QmJ1%V99bSj#+PBYZf`K%oQaza`dE`iLYRT?eaUI)JI&E(#8KZH4Umy-4 z6L2!x(;RlG)AtyuEFv=|#}(uR4j>962W!apUGy`=0`Q?s5G$+avX~LQDd4E zPWrC-&2%m_vx48TuZZgw-a4YVAyP_QPSqUd2lTr1aDnsUPe zvH`AQw7N;kVH6Km23zOnZra@3KAp{xjPY8M!@qQsR5f*U#F?nlw@BDfY2#M2i77cS zAaxYZYkZWZ&oVeJ7o4!{7?$5^L4r5+rB723e(t8~uS#MfhbOEWgjEC6h&G9A)$b>H zDk3k0YQ^BuA$Cc=d;NHpF*_3JtO}0Ggd_kM<^wi_YkM&!cN7dM2hwa(_c~^T4)Mo` z3a2c`f@7fRI7vcS6GJPb-Z$z#BrL7^Iy_5wY__b6cIQ!uVKJ0afo- zUnA<7lpub$JXl@Lq-rXTDbOIo$ni);G9>|aq*bez#vq~N{)Yk5Q>!rPG^DG96dwY1ZGM)(<}Nb7g)Agjwo8wo+-ADA~6;u22tui&!C?^nJ`el-^0!LDCbv@kTgBoOh3PRgk+Lc% zEXak3^5wN-mRMRdM|!+ua7OM&0YG7jsZADaX#1fLa%<#P*O^%aHx;~8CN-)7sNt(? z?InZF^_A#6nGDjmOBDNdK<|X#8nZ|cQmU_H2eX#jpfhWtmGig51+I?`MN9I2)TsMsW}wgyqMj7GaE7sOS}g~?@j zU@cby^~nA-T|^!Aq|A=fW+UNzM6Hls%U||TT#w}BtA}c7RaSnTYe+U%Ml7p^?kHGV z*qe14;?8pOFKiS=>HvZ{ie_pVBzO=jh%ErI^8(*LJ#~@o;-dA%$rtB=(a_K)@~7d{ z#hCbH!YVS@s23{NMl*GBc9sF7y`(5VDdu`YLlTyRY%4K<4MU{Q$aeQL9hsZYv2*;Z z;x)&Tss~+=%m}1AIm5G4Q)!tfRYTcHfuPeUo^Ih}I=#N44wL34P0YUIcdG{@4A#o- z<}fGJ6~@?#rkB_@;53pZD6C=MbJ!}-v;e6J?*d`0xlJ%b!^ESHgKp>-f#~gdEB#DC zHb|%(Krkv@N;qU|4UTQQF%<;1-Bg9nRj(%K*deMHol9`P#2%*lnt88E-!j8!*BzE< zze4z^uShrA*oe*tg{ps16R~4G!B>pVDNT~djHqV`JY+<;?Ox33`lHGRTtq3BnlFaa zS7&!`1F=xwHC$m0IZ}(Oz)Z-69FWl*kX9F9Zvj2C6lQrk7jF+%s2tzO(xacC{1z8` z7H^+irsXz>3MdfLU5c|j%wrGHl&Bc!dbrV;L4hsS=#8EL-3T#dsJb8^U%{T64Va>e z?61UA9TjSZ`ukQOe;_CkTc;GH163f%)Q3^0u|q@#w_N#fsRqYpmWzwWB`C95Bv5@@ zP99Jzk*%I5I9E9ch?}QG(p}EZor<^R;#rL^@^H}CYIURFDqkV zN|6}30Q;gDNKx|6mKXkxskm1Xm&WFz14%HxlxwN>L1(m@!zxE}4}6Y006L^|nzl>6 zL}L%GP0z0u74eFo*kT*TKFC+E8}sZ1M_+hj(U%?+sHQ5-c4^EHG-#!kU|=Odj>aq~ zh~6!$uUt()c_jpRd5yo=192w{SSOK+W=d>`ShtI(OS?HF2yo13Ur=69CdS}s^?bDj zBEi=r<>*thGC(BMM>GZw4UkoG;w;>=;+SnWX?0X{4HMhH9Czu71ppNVEtt$q96uaW z%#8KpQr<2+4jLw*$^1ub`wW?4!P39d75K<2uz3ZRpC(xLa?lddP5HjK6r#;!FrZ$m z{Ie`+u#1Z~$=@&L&vIeh!UU*w3SGTswl@>3g5f@JB>p}k9#y~jby}F4^y=5&IHzXu zau%tzj@5>Q)pH;7%EllQ%Z7((BS{GP;as47qHPt=mad)t&hqvf5qD-;s`^@Nkxe~H zS4MK4F$ypziapSUzD@ZJc0)a>XSq|=qW}a0JJ}0~PR4?3=bnHoVi22U=&d(T68E)% zjgTfp40xwYU~uSjGnG86Del|1Vq&RuFVg`DRZKStw;Y%aECYo{2p9(tBonAtq5F1| zSx3Gv_=h2&m4s4biZiU-4U`e30?wR7$2D1aGhVETT&Er&s}_z2JU|VmenA(jUtO#n zH)*+ZV`$dX_aVFGm=v1BVG&|-lPIcs(J5mUhPbQ<>^DCo^&1XRv!aTyRGLn= zmEXfOR{R3MfQ>cDCL-bwS&U2~V4x*fLfOw+jihH+TVAxnq4;KHrBuT9sOjQ0V!IT+ zY8qPd6Mo72Fds$;aVfX4Nv2h0$CStNro913aR7P*7Q*vvFjdLR7tLp;Lz8VL(Ryv} z_Vj1d*Z&r)iM>@|*SttF9;>_(epY(eOb9n5_o}s&S_JY+29@C1G@UqsA&|G>!?4;-s!^4UG*B3Laj7h zVLAARqyhu6z_^MeyLhP0j)pPHk4;OxuE9>ETs2B6C=a$zm>2c{EXyUosm}jYG0!yA z@00Re1U>+}I|zyr?^QouG7a|V#_9&iBLOlgmu~8tnlfsh23h1Ir-FMb(XR~| zwMhh1`>cgjK$S?yAkUUUS3m}F@CqTd+28)y*|CL&VwUhFOOzUl#Zj4o0>+;ILh5TD zk*TXw+-2w+31BzG!X*|Fawr5?-Pp|fuubi0h)O6bMha#~G_4e~5jd65GvWx@y^#tW(CL#&L1IR;r`S$Y7p{&I6DYzoX z)QPB(Me+y{-x0{iSg5L}rLd`^mjQ}yRB6$Bu)~Ged36?0Ca}zsF`R+kWr#Js^4rc0 zy$2L(Xh`_O&okau&+F>%N3%vZF^8n0E!G5M&Jf< zb2J*Xc4fy9*P|~ZnqQ@2CNW4$O)$mQikMC@K{XVmB00q91tFdtfH^_TW|-|J^(2WM z8jr+d4WU{BTotm?>=t0Q#G;N{@d{#8X$#9Shlq7|$>$(iBM-LIueFHn0oC$azoA8_8VO_y;n_#Xl>QCjWi}*E=r}cj|v|y33pa& zHG(X49dI`QOGX?T7M9&|1J7!$Hk(rmQNW2B+S(FF3t3-mGgdai*HlhwUxqpd-pWCvX%sAQMKGx_-uyF6y(&3;d%0pnU4BC0p5+*nxm$N@6e)J;QcM2S$F=kLus^>e>w- z!Y7i!CSeKu7R86FI0Do#r>uj`+pDK@MTqRp)ueS`1A`$dzqKNk)oNS$ISM(<3cY|z z5dcEipj3++UTHM$jdRMeB;zbF&BeveDOHR2nlVeLe$(&keNu~h`+AnBZ*MuRqIpec zlW&%*7R=Le$xfkSEhwo;>PqSBc9VkSnA_rFdv1%1t+_3kZZpb*_q*!V?f8CB3@IYx zk;aBcN4)W~Trb}Cs@(RB7QlKS#fXZ?z)MlrlYZ10VN`PimV4%{sa0{ZQE_fkpeVpx z#2>XP&IXm^-XB$5z*ZvA?`^W3?bIpFhcokov5d1S8i7jAtT;p7#1p2T2AkPQ$zYK) zhD{U7AsdVEM&A`3pnO;@QK#*eBw6J)-8>tuR}xK{ftVSSM`8gaO2i_aRgY)s&R49G zFm=3#AUzTHKq`k#-nkesi)W2~+RQ^u&2*5V2Jo5X)2P_mrtgu-0z@9UV!%H;9MX1^ zR);%e0Eh}C!&2lW0|+dRupbEnutP;(dwui`GPlW~^SO{SRvZ?0p+}zq*C#^U{~bpk zEt-I0cslgUKUilh^=*NM8yM`57)ERI|cRR;->DQT8Pum8#k~{4Wuu6@4;59=a z;F_)LTl0o7w@+~yR7MO7GFV3UDJ{!5xD(Q5<4huAGn>n}*+7V)rOcz@_WKg|iCVPM z@4sSg6*Gsz6;;U#uL|I3n1BJ0dkpLxp%5^v0NJJ; zCQy>Vz7uE1P$f&7I~)T~LM=@geRXkMXk27WMiv4FX!52*gcer^agpVe8&p4q#kwVL zC6k=EJizGCt%Ec|2wInFKpVO!P+MQ|^dnD&NNj}bS$3C-vPEXeL3$+*H%)B8F3&g# z)l=a1qZD3vI&Oqh$;H|3&NLhCrWz`6G=RYe3|^eOCS_yEL`+uJHn%sj=Nb36*JE6c zs*RY$$YUy&`F`#b>IR;apo#JQ(zU8u8UB*;U??p@&%ccFHwZ?oX4!4wDH1NpZW*l~ zAwlGn$w8~p0qCsi)*xCTL#Vz0;*c=4lq3j4qGBWhn5Z~LrG+eQl-ByH4rZUBX4Kfr zMx;(71{&9K0(82XRwtRythKvXLqcagjK#$MV~{}5L|eV9$pqQ_3eTDvRl)*qEy_)) znYg-mCS*LiQ0gYv3oiv3qVyGtlExQ`!5Kx_6v|y0foFr5T2JJnh;AxLA{zLVk&_@3 zCqew4_+D2LJI<}s14$7O3m^D+KJ~dRthf|PlEBNMHm&07qSTI(W8(YQEs zy6xcgFW{t2KX280M`kqJWTx*Tf#8%h0iTN~E+f(`dza`FR?T91uIW*Tglr3f#yK`+ z5_M2uY07!_i*Pj2KMT2bC|0J5S1Znw*k_8UB6WtU3`4E0288P?Yn<#RHzy^AIOn*C z6aakrP&TuG59(l9%~x`K*W{I7D$Gj$U%dd&sKnWlh(r)PmVIKF@KJL^%M0XTQU9z& zDwC;p9LkQv!Fa)@#Ggncd7#Q0D@v#jP}A5`nAH{+OS{?>Ca$_tnln2@&PaKc6lY}; zW$oP-Z$__Y2#Uxr)dPjIf zYx3-So`DPv$e0ydxDcd>v|3qx^((_`d!;Mh(Ln=FyXoX}JNYRibI7*LQ{0PE=r$7M zT-E(%1`Cx4gXtrwnofO}VTOK4JT%q8DD@z!Nl8zN@6NO#9mLqh#V1l`$0-8mj*JZQ zrxNPi1SvyP%g{JQb&=LF0#AG0M$QVme1V6pbAA&is7a*S7};iWr&)X8vM7YDD!R6Z zyUU}SPBqm&PNkX%|1X&`fOH{14B;yk zEy2d>ASv6Lg(NhWs0pfz9)yRKd3=G!?NBOD>$>dD!7ppJOuH@>Y*+KPl)4)vXv8oNJVL`ldPPd)BsN6g={iK-lvSmV zPCA#GE7ol%ACSpUMbxn!fQ&;*kYQ&B4zoT!H4e&O0t6>JY`$5edP$AhFix_rsUb zh0lH#$!&PTOeuB{TXP8~3@|Sm$WxWQW>om;n35o726^gIE)x^Kq=61kNn|_FnnV_B zN~y|$GYgmGLh+POy58w(uIgP?gGocLge%?GR4NBmIUzB@0c;eETREHcx)A9!oZO&Q z4#8hi{w&h3;0ZZ+?UWd{1*Tj*Y4p+I&4PvmIRahUlS)+{_IDe9Q>iT3x-ze6G;JU( z>r6)fN|6ymglI83oKLI|We9#9+9%45BMvx5gX){aK28AK`gqh3aD{>DAxu)3MzkfT z(3B$Jcs+h~wnB*p>-)GXNeCWR3svbwdi)5m@NQNJ;CwTXonW)D}J)C0n?GszdDREbf>{Hq8t z=yB|*$2nv6XRSRyA#Vb_baWP?cDQn8Tk9$v;S%^{DlZ%uq4-0&Dv3yRDC?p4;Xa@F zYB1y-V9=tRr<7X6Gf-brt@FMYP*qeF3M|u=Dq^8cvD0D`ntstTwoho6LKPem0t8jCjQUb;?*iC^AWHmAQDRedjT&G23f5)w^bSF99Zj0Nj-7%ZF+dm5ZqK z$xQLY4H*h{cBlwoM@1wH7sD`R67^NDF1cMeR3JqY|Kd}X3Ek85=)B}>%F9yA`xkw7 zV3E~&k2C5uu+x1L@Dift$U&#Zr{uzts3W-Q>OPsNCt?RRT!j@<GZg(|jKx2T5Ku|pm9t^nbNuo2806=*b(V?t`!h%3C{u_S{H0g{Rx8{RBI0#d%5CMShLe&Wu)K^K)96o|GZsBbHHwHLygtIS|+)bb% zQ{m0C!S|td2BPH7<{n2FA7i|as2F5}!)kYF?p6H5PNvI*jD-ACFhWz;CP+o9EU5vN zmu<1TWi(M&Jt=tLtUf*Mas zZ3uvK3?K`66Wn5;ur+SOCaq8EskjZvOC{|U-Hl*Fg06K>`Zk=Ur%-2GEw4#D8zaI1 z0VuTzz_mh=uAWMSQgNHCuWi)WDx(*ozCxtY)KgD(qyt(lc=Rf}3?Ly>&y$QM0SnWo4Bl$4N2Y~9^d5~FBP=t>+1 zP_~)tO^)L*bkCBz&!nhrEsz}!_H!zoN-}=^c#JA0g4+bSz?8`7dhin{Zrs5yg0t<^ zO#y48kVAkMF=SQ}oIOSa8daGa0+JpvAl#FF+yDnx!syWNC*FK5QklA4F~~J0Kzn3f zky<9{v*pz{ZbkgHjpb}*QxpTD-aXV%N|wP2Rb|WK*_f4?vRe`!+@$jh-!9K^i7NF0 zsVB=7SNg>58ufV(E%)_D$8VSV@yy#bZcW{_yYz)Xb;^Y0Bmu%AgwaCqR8Mxgp0d!d z61rEQHj&K;gG6JDgc+yB&IN7 zWV=TQ-FpNfcp1P+_%|@ZfJ>H@5@JIbT0Y}+F`{y3It(Jt)LSf}qAWQpKy3oGXNi%b zgT~7@bjYN^*7z|CG2w=5oSSmsT}#7~ z14~PoghSnH2Q!~UcXUkN?Q}OQCfpbjp)IvN%-Q)F%z_+)UJl$yATc=&X`*8~?K4QV z8}N!vg1hh?CK9vXeFht&oq6>It$!+0-Xr}1ECx&?M3QnWazJS+{h>io4S7Se@mjze zCowb(z0^?_^BH;B1pQ&+u2tK{E5AYw(jvXmWVdhbnf{+!%Qq>wdk8XMV+vkPL z7C=9gVA6THwK!@!J1>*0-Qg_fMVWWUk!Q7$sJ8^1Wt0s-kRdQ&2OHTv!r_hF9bPxO zcQ95=Sr%ae;Mrj&%_N(&<7MUU5Lk|HyFrw6;0r83o?xybh7It9!VK4F)YW5AG`mYX zZ~U^!s&~$)i5j&@StkPrA=s6&HWQ}SCOkxayg+FPWMvAh{7wn4^K=&Q_`9aAheSYu zHVIPaS;OAebLgpC_$VHIMKX=+DVM3qnK(vF%L#td-C)i|crtYqfROlG%N!d>gQw{4Y1 z-OBnh4=zRm8<7S<=sTdlAYzECNU$-bQsCMKUhcXxyonR*(jnS`$_nNXg^vg|=Ulex z(#;@5%sN>r)6LYII(xpZ!6rWdFsJGHXdjT#xbSJqbJn(Vy2zfD`TV+{m)!U@IV>R5RaBTU#jAFFcT zPWU+m$W+-e;+3d!V8v3iDGl7A>%`m{qMsS3lw1XEFa@to0n`bgmj&9qtep-@-7_pd zn~THA08zuA1#~iZ{)Ga1G2oi9j{)>D0K%~e)5xf)1fy)QNYR&OUAG!;&m`F$zb=IV z6OgaPd{_W_6|1NAbbsLX96zz8E)#{BJR(OJii#&M*!S)LdNpUI7HquJB`AIOkb9JZ z9YL;~?ZzSHeTJ!Zd?)&}xEPh;Vjk<;SpX#BlCEvX68U=SLDN{fdKeegn03j>~dT7XlwL@8vR z0T$6AH~p;ZR-YCd*aFb$bMl5#D$B4B#c3&4Zy!$!N`gb`B}u0ic>XTF?cF~uGOP87 zB1CslGNrm8!s;v2R(~!R5T$Z2cosJcu>C}lakD6g9KSDHEM1EbQ14pZlm4qH83&?K zBtiDbajbR1-K1Z`Z}neuD{Dz4AVhO7FaOXj2CMlR@K3z)R{2Y~e>2NYHR|`vU-$dv z&u6|iIfz~=uv1i-CW}sAo3>6MpwzGGM+*g1u`_?r1AH1txtS4OX&rZu9(VGN)rC=5A6*OE<5rtyFJuFvF~b?%;W4si zOq>@|3z^a}z7j!&6NX9Co@+O^8Ig)EpB#J2d zyIm47Usd6ik)Uz2(7OD;OOg3V>Xrs%f8gTA3X5%D0oJQ0Dy6@A9USqc4a@D`&KFFlSKKky|ajCTv()%8c^zcnH0b(jL%7s6F^%>^M+ z;&AZ1I9BG9W+RGz^;D7Qx*WX?RYak{p%d{P{y$1{d?{gPs(ruzD*cCMUlP3xTKM1` zHvF zA14lo!nP@NoM6l9ih1_LT z{UjqJoJvfLnUX7ktHi-`sz$VKQlR!}Ylx#upof~yG?}X%(D_WoON-8{w~j96PST%z zakLS~XIq$80p%*wpVT_AYx|mlC#653CGzOutv38DBf3ZIIDFsYt}`8qqBk@!iic9c zgVOVcDUkWPx6&*%l7ZPw{4ID-V=t=H@M4ze_AJ`qYMDyVRXb?WG*rnYbty4fjz3V( z0)%c-)6zt!s~=aSHwh-C2^>OE0kAerLgXj`L6&&~IHU&6;38RERFNoHWdvRiJImst z`ZnGktfXYzVS^Jk_dE%o$OqXVY?>G9HAODk^;{Hby_|wl?>#%yhDoStC8IWUE*{EAM zMKu8|C0Kn3`%buD5u^1Ws^5<@pn6nuL{efFwji$rWV*V*P6Ej&0-ikToW0X=QHYQ^Vc@dPnrg)pU95RJPh#Q(@{Ma3&mr zCRqgK=`jsesP~TT^_6T^>Zj%ydOK-2rbUTI#$0z%?cUJJ)-75Ufq-HG-4qK}ijLR< ztC@8HDSVJ&NT7@iAhV9BBD=AGtAou`9aKJb1&c~fQwfI(im(ts-UuU;x>>bgFzdYW zjiwlG$iRpI?RL2-E^giubA;Zraejx>Ru$%5^~tlTMXAX*q{d0 zzRRx4Kd19{m+0^xdxyE8<_2VE08&S(CJDRe?@q#+|-+(wxDKvQT z88Rwgen( z@|V_?#Bg*n+gPTRF2jxk9RsR{^+%!iX45NZadxSf-zuVY8UHu3JhC+RFq9k-iw z?w4g`n_B~vpA56yIT4+gDdJwljq%&8-vYl3UVv^ zqTW)v#)O~wBW-UEb5}hJlvkXcqc4*r8eqeSBNC8qlhrC8 zE|Hb6pHzU{x|gqO5m{$S;sqRWBKxt;Q-d2+8bDK9AzYKrG*WR$KrKmMB(=sK7J>3i zH*@?Xrh9(A*&TnEY4R7p%Fe`Bc45`@2ptD}NvMwp#ey&FRxKJspHqRZKE zQhk&_D$C))BNY}<{p!@0ZR$0deB^BqNzo-Sk_7}oxp1bvKk_5XuxF?J1!L~S4%)B) zkiumV+rCMJYm9z0LK}N}8;&f>n4x>sJ)NCfFX%c7Y!?S}Xyz2mrF>@N;1`Ydn6M{Y zcFjO)fLJlYNC2XLBp#aKXgcnkj)%0z`8OR1p6A1{b zp4MEj_@QYaK?MNYt(+S0Q-ZHd)Etk}Iarp(42lC>!{ zDee|stW`a4S@j+9zWArJty631W`J0@yuAe;jYNKXQbrT2uuVXiII+uz)d*U@B_?-O zv;p<|<&8)Jb9^v!@R25Blb}u($7iTbcUP8Fi z;#maEm21sYDQ3HG<8Y;VJLntOkbzJOSq;7CGL9ljY+u%cvSW@LCHO*#!m~u)tj8ho zH~Y0O>;`!{E@7D#CsIU+dK~*y8Z{=R*6^}4b#qb;Vz#6+Hf+dAF=XH`luk{=iVmyb zj!_$cdOjK)n;M{1fU)6_Dg%0jwk7BbgkRLPtBZg-LEV)9p$JAsMj`x%P1~Egnsx?{ z^3Xm#+y{tzoMFnU)!s3|$avKXRX9$qiI+@~&%Tt~OdX_nOYpSuicmx(xsrBUzqK~Dg7QH?0HQ)6r=Juwj95^pEJ0KiR#HB! ze|~|*8zXR^!pQX~!DA&(!qvnShnJ-slUkA@kW?e2j|<6BA&dV%dvC%U$CagN>!%oK zqfkBYN5sBx1OqPFo))IcWq9cVx-m$^DkV%ZS(&6|6;S{Ed(K@VZfu#66e(HN>X|Yr zX5@{#oO|~3o)zfmbNwml)mVnaVjG0F6kxMwn+_WH=+x99tcuT1-%A2uia*&S8V;PA zxEWWymxP_e_8-lVSln|IPc}ywWmM<^!b%EcO`9!^SoAck1Se@kE-P;J+D8bXBu-h$ z;6&dG9|2Go7+ShxqX-Fj%HU$MN8o+%zrnmd7!#ozASmLr-3aM0jH7Wd*ON@7Tf^gD z7n@en0{Tg9H4YZS%pp!iXtmD^U4ISCc;ZwfKSdO6zX3M9A8(etdpVhlJ9cwRJ`p6| z5;D(HpEUo1T80E=yZf|fQ)pqaW{RkqFakNham+wf#>lX#RW%valxX*1baz_ z(YNzv*cw8Q47H*1lQ1lp3N%YE1u{fF(1~Vte}3iqb!(n=mqv&x)&{=1 zyrAgtA=FR)Z9bteSpo@b3F-bF)7Bi`PjXl|h?my2)f&WYF)k zm*y9<6~rzQY1G^VSsJPa3I94<;fnKNPZZ5jdPbx<*5Qq*9Gf5t!Xr-Mc}y zSO~3?yBY0pimU}86>pV_=PLoShK)Z+^mL~$In;U)09Sxsb7&B#vno2F1p6^qF z4MebyV-ib6N~qLl{a3LB6-GKw12-cGOaKXHL#VWCpz$ubp)&i zN|2t~(68{-6$+*l@Hht6c)BI6M`Az=F_C>q;_0S)dMI}ZB|(mmPUnOl%ZOM_w}i!E zthyvy|3Pk(8(rzs?W5rl6jJy4~gHbY6E=~c&btz|vzilMeBrL-eL#c4Ck zP6Q(%v(KEID+h_f;#UYH5atD=e==92-kKlt`r!xA@vJ%}91v|#93YC=mMjZq>>7qHJ=3YjMd$nWy1@&!|Jja7w_3XtCJ zI1$-m&MBouT}Fp65^{}a5PBwvs-CeglL}9}o|mv#3E-;5Jb{}?mD4dfLcdf*0}4tu zPo9bf1!ZTtWu!0~x|I#xQf8AMrX+W7&0{beYFhdbq@uW|zfVh5G!6(LN^8TB(YrAw z<{-A5)JsaYmp@v82{AaiH^;^_Xn(X+CvhdDFd-?4R1pQYXnzZ1&YZkrLG5-=zL&(` z*<7+1r73sIt-#wapaP?3x|=Z_E>n+U%nle|6aqHV`T#&sdKU{s`}DEFpbPikPlTh2 zcdNv^RTq1?aX!cpr13;PGAE|3quPYQLxZ7>p=rI?9s4t6Bh6q(QEk0^^$V>;~%d@h{LO&(6Q8OJYURDKr>?q_?(@7gpA7DOcm!lWed0l(9 zsJa(vc!}=NXm-!m20mn=C~9!*>^95`tCqe}H5q>tK`YvrKG{ut>CO#$LXbU)$1d>+ zL*p@)=01H-h#}xcjLY<<(Y509_^#>!Jm>P9A}C8(Qh=>GE9x;=OB%Oi-GszZ!Cayu z4ii|u^&GNMo0PcC8j$1l`( z9%)5@>(J!81g8N-C6KNzdPOE1o;8>vQ~?lh3gCqjB!JgNJnB$qjAuXzHyhoN}zVm-WaeddPBUg{|6y|!V-DF!_P z`dU>4rG+%mVVd7`D^lVYr&z=npXp2>v_+>0x2Px=7uH(5xcJ8wFZh3Ll^6Ugyx={e zL7}5Qni(#A?Iq>I;<4(#3dvc~O5F@PQ;`rr1DHg*VIJ$bse@{ET~jyt9{^u*iwJ--q>8<-ifFTe40Rj#gLcO!q9I|u|xG?KN44BwrtfD1~Ce4 z>wpK0(v0PJs^JQJ|7n8eSwR9F38G#KTs0-kDri1`y0U_&jS~t*vU~tv$myfBjd*B+ zH`SG3$T_M9^2qj*9?0rL#iSMAH(ij?Z~=^23iDz>7$n#T^9Z(#STCTx?>=Jzmz!s9Lfy#}s2WE!71m=lu&coYeh7s?U zxl431L^4ncO{y8Kx9u?IiGCQ)>GaltbwpG~Do@%vPTb03t@^CoI&>21UMMZjNcKUx zPquCVJAw3D^ zq}IS@*-*-O06(6cTr%54Luv0yV8X#gZpsGqeWa~M#u`<`L_G=J=Q)TZ8Tbxptp#N@ zM(8f-4K%7+1pSAbwiu;4*4}Bq1+U(OBjJl1vQ2j&V-4 zZ@odT)hL`+6bYp%p&aEZAJ>STr~%`M)ELAe(W-(y>OLK&%*(j38WsyhsdJsV~sIGFG4JC~_K>B{DpR!PeHXz%ha@y?>(w-(y z=|K!^3Q!Yx3X~q`du!~#spAqbZsbNmW-(=+UCS90md{R{$&Yu)PJ{<4Askse(deFBL6fda zC%hDUsseL>oJ7RJGafW=26&DHxXrJ-ZLR3hu==rPz4le4sh3nn&^DIvEQNyHHDROw z7KFWA(YjtjU`swUzApj6Nn4bFOuH|O(?%2#>HGD1!ybl&Y?J8=nT zq~ed_Q^|(KXJS88nTpo$tMoU=nY`*fes&O;yA6xzB0#(nNIX1qK!~AS1%w?$@{AuF zh@e$3>)yp1q_a?pf36~QNP-8OZQpSIxVYxcZUIBsVkM|ZPXeXZ1l?#h0iprIbNtZK z?mekVneQ=`wt}q7Ciu9oW1#3khbN}xF~{yxH976XG0qN6bL5>i*TBsYPqLDrgEldr zj3~_zDq^MkF z$|(dZpP*z0q5~&3eB@bse`w@ozUPMPL}_(>jq((}YyLYl#*TU#`!88vqqgEil@{e? z1C-Y<%n^aajnR0{8(h^!g^qp$lTxT<*X zV(nLOa@kgYuXpz)9z%A&si_!M|N2J$AxgGQ^BXQ7twwsOXP`?0P>A-|UI~t?s+b~* zcEkm29^_>7H(uW9y_4g`J-6g&_*sPRHad@sjk72&}_e%-VM zP?L(4km9m-t00|zlUC-BpMS7`F;O&;&^C&~HqRorDylbhJ$02k>G*RCwVSX=)E(bg zGC2g4TLb0L(g7fKsUX9Z7nLv}{gIj5-0ORmtvqU7>Kd3XiemlL0%g&icVj&RxCC0S z1?dnxdpeupnVCFwCiY-vcTH{E6FMgRsPjEo zo*JbgdmfeM)Iu!k_iYX?d`oXPoP@7%)WO#emo+jmT?pK}qn* z8lfi*_rW-!bfIs(FfBdev{Jj&(Z+KPH0FD5e*|@Qy&Fw&md9tGL?%6ad>hItv$Vk3xxx{3()#Lg36J$r)jaqG5FB7_!E$$(>GB$wo$#*1jiu@mJC~ zWhUCQ?aCClotdisBYw_ncYJ~E@x!#hpXvctp3w)K?dd*!{zuaIJ4p4@cWF7x$@Oj@ z?(u}ZP6Ez^q=~flfDV;LAD!EVP7I~mkaK| ze}>RJ$@a+%O0gsTte{lFPs9yJj?m$L-w4}x&^wpZPvh~X!(|EcL3*H_)Pffz{9}#B zTWK#-)h=?q-XeHb>!x0m(Kb11+r~?!i2Xz8rv8T$nc8&v*wl|QMKvVYm{Q$O??cqv zjt)QIUdokA+=ftEh+bTbgy>WZET;Z}jEV;p#u8Q;O)=47bxz*05}^(>*L+6vRjs@` zUJY%mo#!=JoFOU>r3m1D;xeXsP9%WJgVZzpFgjrF=3X9M{$Eyk0u~of>IH~pDQPx& zl`B)lUHnl!ZlL)XKgLJ_96Zt~M}wYjb7KB0k@;uPSdQN_rz4S1nNZwhSR^L466n~9 zcB_ztLc6Ac!>`!y3);N>c-vH8$*(U|+AMlXmn0iT75NKDV~P)9^9U+;f6V&S50ys_ zw29391?dc5eC9|KoxPdPhR+9QGtd$4;}WIyJ}k8p?7Pk<+f5JDJTd_*lIDO9rOlbr ze^b|f(2AZ_pk5+ahJo_wrVQre?giON^kO7Gg#<#vAEK40i=x+QG+cdS)sEPg8rnGH zO<2wzl3EHIs7DaEA~7-jN4^yLURj@j{A-$ZnbBK8)jXme3D6EbZ^8`dTT%d&D_VbO z?8QgFE^gxxnO|RRXlHwQ`O?f=K9kwdG`py1gCQE@RL$sJQM%U+$^EL=&1~P24p?KT zW*STaTvbF%C$H$fwB`kx*SkK9Gx&k*!NtY;^NR~`CPPVg0G2tG8e)66&g%blw^`>u z$@)x|*c2PV4_q38P^jD`T%1HxIdcgMvL zsDyqCqLi2Llj<#dCqeu9Kq~8$C^b{oRh+V#e+4o1$c7QFbDCk4U?wND#Sl1OtxY}Q z8R{^OD{Y0^&JL3=Du^w}rqZh?4?*Sy_(iL2?=>#(>T3z^JkU%dY4u1CK3x2k8$Rtt z>6xZxgv%USnoh|xo#6QZYvd+DNxdLWV|sR^%Z8WT(| z-MrGSHHd`^Irwn!eSHP`EA>fubz!zOWMWB5Z`((44eXTHEbmJRaCLghP=a)!Dis_H z+y_qvNjzb#7B=+BsRW9X@1pCcw3rB~Xr#bP>RQ}O^&Wh{9e=Hcyxq^B>o6hn4k0RQf+=-8eTD#p;j?G2yt*bf^ z4{Ou7N+>K%^Q0vw+p5{d_FcaBPL9(@vqk4gG8Ihvuzoz7aD4hI2aqytCFpe$gymR1 zYHe=$EcNGWkSjf11H%9jBM4N|m9H(fR~rQt<9Q7*Z`3x* z{sfXmb@UtE;Sb)D>hF+HJo^sPgvpH*WG}^%pkHT3-|cDa<*b3Uqokq` zwk$}y1Q6Mduh%2T3K3fU}_CISm8J4^d5}hL6m5h>*R;HGLy} zCnXh_4u=W}(5jJLRp=>lnVC^VYKITv9c^<%!XIFRJlc$;CUZRLZqwXD2l#Qcwv$&S zR7t{=08y$LkxJd)#djRo3&0%#?})B-AWlZ?N42{plY?w;z4?>c;%-TTlQYB#&S_Mp zp$mKTV5lIdK?!ateg)311oVNr*XeUdhK+lS!#CSn0mgzE7(@}x*{Kl_usDOksSp#@ zGb}@;zxVKXdZSF0Tc`i4f>Y9*OueaFoR0n~`PpDKfw$-vXtB1;TBq8MdUCNFrvE@j zGY17fdf?VM4c0>1JkfiIx|IZA5U$$fv3?Vz26qIj)u9;q!JB0v zDukPoOjybx>L7gTsT8za4auNu47vXb@ThXh1mx z$DB)1i@l#AkTuCQd!ayuNp_T7P17(ZjajNY^hcH%NM~{bBCCI@Zm?RTVW7)PP;Ht$ zt5;^UMjztuA%6}TiTwb>ss-|&x(q+0BN%C){N3O-3?^ltk34!{dx8W}re$gp+1ylA zaJ1-ZYB0zyF2)#S(~V<79SYAkf0ycmp!qvfqqQ+9kD$1anHniLS{kSQw_5K1{w&h4 zkWX5XZl!yW(WtWkk}gRax>J#EuQZF%RP^q4q#b%(tGi-*bJ)mc$Un9>_X~jQ-LtjDGjDnGjS`y zA?Oor-WFfemOwYqF}h7SUr(?OEO`tt`*H;&_UG;4E~T@`eybqbX?a3ES6hIv=96E_ zcg<(2hlw?UnVdx+msH-vmxh~1@juOPF?{`}H@m+TZ+`?Mta{z-`$_O^TDedFzrXRL z;X{6OUHrDarh(ew9)OwOL~_(H$pjFtLR!KGIKaEr92v;8t_3%ef_u-y?L~JL=`m-& z>?$RxPMqx|u0C?*aZ_66QJA`sco5I^ZF@c96Vr*V6F?;%&E)^Am#$lic@J(KYV1>xIwUQs4hG-n+Zt;^kBxYBONCKOk0j-{?S$M@uT77 zPAbaCfE)lRzyo{_R96(kAMf_vEg|>t@b=ly^r=vqPd9~CNMEeQ)-3|+$xcfBBPh7B z&m{tfla;y;^siAm=oHUiP3GdFo6Q58O)7z&9g4Q0KcWEp0W~KH;#CGLdxh$aqG>+t z*1KfF4UoZ!h^1g+VI5GlNn2URRFdQfNBe>RW3?LJ>sO;8fSFH9%0}tYMzo<*dK_u~ z-zgRgAn_OsS35yL7~$im4R8<@`O|8Z2v_M`Vg^i&f4L%UR?wY27JD;|q%Roj1p?j4_EiFNfUh|_{L~V$2A_CU zE-ro)^Y5knE;`moyvqFgGoVFbmNhl~8EAFWI3dF)m+o;~0c-}uWmJc4B<(~`O80KF zC+D)n>k{qwVfX7gr7v*qv;SqOGF|jXqt0?m16df#vXzENMM$4t8as;7DV?BHF_tl2 z`Q2hDDfMum1N0Zxl_Do@>JoDsh^muZjmjcGlmua>DZI$ozXPtex)gKhFsOD{S4{=_ z;Y%D|qS$v3PRau&4~xL60hO2bPB@&UeUThDzCZcY#0zB?2RrxWv%Bqe^X%(;Mx^w= zV-J!1IkSHTA&hQMztAZ`cYdNRQXPVEoHqeI*yWO2wle&l(QoM+*yLb})2uIPOX+@O zA73Jcr1_0%K83DJ+Zp;U*JVNBDJ4JX2I?cTAerXnrJbkZzKIJ-ET4maWtKO+)QTGv z`|aK9i;J)7S}v}ESoe#9NL>!Xeo#;_=73TR*VylkF2An`)(1EQ@HK~Vk)q77*ay$) z$NN&vNsryc1TjF-jcX~ab6LsKoU~u7p&L{Qwi(rh5k;0x1VRA|j0zf2suhEccW9;v zy*Iss3|-Id~`7o2QLr$^ZFvLe0C{q15%QopWk`xmOVO_hBHD zR-2_?6M~U+MtxCCO;Ko5 zp~-;}92T)?>A?iD7G9}85X?L%6m4)di-J8K1^DrbZY(ki`+Y>-m(7(#} zubRVQbN9Nq+0d`*HL_1IZIYOfG^P=noAY@$UDHoy7M4b_w)LKYnfhe)W#-ZVX&uC2 zmEslxBAT0YQjO^Jx-UMNy64-d&r(adDwMoPcb;kTUvOj-~GsF~BJ}=U9p& z@PnFwZv}vNQ4j-C$D;LLMGMxo`BJnyh1cl15-iKkd(4lncUYol%vB@g9|d_FvXy?; zROoT~BN?yTSUc1hgR9s333{`YwNH(4?GgF04h}WUU2*v3*_+~*=GhO$o4@gM|DQh< zV3QIAyxLXIu8OxiP?}_68*#xt`z=eJ9S%+KY;!G<)2r>~u%>M*N=oZ~Nij4m=&I zPgGcu%K6)E_N@5zH#G!4hE1u4;m?dCAH-m{zmae7%kV>p=}B+hzzIPJmo__1o8kip z&I?7uaYBTFmE4F4oR~m;%TF!9MShn+a+62#>JF5ENkG5a5p{2!TE6xfZtDhZaQ!oY?A5c9T`)OuI;ICG#jMFl05SfdgH@61j>O7ZW#$ zFt)C@#{l4x$Y)!$k-|?VV5AQC`n4nFm!X+c=2< zDJfkv=NfFBqe#;Ysocm=zd8{g_AK zz4uF>WsUuVx%|4lxlv9Qg1=2nYqTOv<1|b0sdb;qfY#TmZ_$|W8{Q<^7#Hjt`|BfV z3^>h5petzuL<$R#l7mYyqcLzm>V#rlNiJ-0Lbpuu;zG*|V7h1)_t)Elat#D6|B$2^ z+X`ILD}B0nSKy5jQbcEW9_TlERpJ0m#liG$$tt7e4=DdVjV=??Ob5D%rbCD<$%zD= zQhXI79dAIRr^F+Yf;eAV<#ao%qpScWy`R_Ims9DLg?JTlMT8+1l*E#14x)Lwj~1Wx z8$+6l#-udWEF*sIX2Fo2BP1j0T;FTc;*82)6_*ZPN!}nA9mIXWuE`gp1W|9L@n0yP z^;bG$YjX0&+)(fRQC!`o5f&*pyj#CloZQXd?+eMCl78dl31vx}*AXDwV$JZ0Tsa&O zQ)VEUOr{g~k)`UlsfqqcPgGnyuCQ_!!Dl)*sBO{C=|@SITDssQ?6)LqxHEa5(uuGO z4lgi@$=RSw4)!eZXt)nbSoRx=tI?d^lPOOaoi2S%oq&>;HW0))rhM4*bcf_)wVp(; zC(*oBsJ;s5(MXmaZEnEk)uQG}wd)X*f)}$wQm4`&NN}muq7LwPm1?NXC%9U#P^-CH zy;`DtblebU)QnPXPikrD($-zRdQy{aX?l(d4d5~H;38py4E>}#Gq5`X;>dLY?rBT^ zDvXbT-O+*EAK#_kZg{{(on>~AvR@Y^P+wskRZ$EZw`NDy-5og*Yjxz^$40pz^*^B( zAntPd!RM0t?H=SpgO-WO0aL4Dk_{OlkD=@}qx3dL-Bty;BCrB4%q79Wox*hH-4`30 zn^t+?HC~(NLGH}munVnak67r$^Jl8?dR4m<7mMJ8cqS!N9|UD?l=#Hz93{=qlYndn z!!_hn=Uz=TZN~|yImd_VBuxkwbs&$znz#k9gvYfb_Dg&h)&if=o-)(7Na~RjOqM&aK+K>)@Aq#dilf7KH2uNxNoR)KPa`7rJvq7xR`L>^*-(zk zYM#-tX!{BXGfE$zlECker!x*L`H9jV9g_+bQqvbs`3ij+BPD*bUMID_~R9$8l)6HNNpGUogmDH73f=%qAL>UbiDBZnd+5}Z;>;5_Pjv|Z-=nx5zF z@CW+rPdm~$hkcaqrVmA+}l3V>iO&23%iz zVW^SR(-cpJ+xtxK;N|5D747^kVgw_kb-1-H-qd?{U`Uq>16SBk)UH8Q__K$kQjv>hKHHtmJ_|+?(DAG!`>ff?z z!090K$M>i^@#L=n>!}mw$I%lWg0n$GLW+XRRvP7q|6)i<{Q)TbR*G=;yQ_`l#X$Y~ zUqqhY7@Au3&@90W{)q1R$A9k>(50hyFU}Ds0AfgPKo2OkiojPrG$44(HV1!PcMD!3 zJ~TY7Mn_qToxW<4s~#Fm`W;sC={^_4Wprl47;sqau@&({)axg_Z1ymp@D*~OM;F@G z4Fs;j>E~Zh+qmXJ@_SP#6%#>|j3RO>L+Z(}fV)qRDQNEP9NnL zK0VIlhAc`mx?|><47BOsBP6l zYe`b^iTB~MazPTQ@+k5AQcYR}1xd4-A*d4ZdBfN0G%rrOuBNKdCyue;JbOe7_mex} zJ-ZV=Fvn0?nCJNQPy=$}6m<RImOde}3zo+Q>liz?d8P@8&gaYi3s)#_10E;G* zludW%#0e$;bC)+&9tU#iU!FTGrFVq}^n&IxO+ZOY9+8z4xOsgPf#=`u_SXugF92Q^ zJTZW#_xIJ^rrkDIb-<6C?cp`*PDu-ml0YYkiU2joBMQT+OkjWkjM1e8C>=WI3fQY}~~K2^9qZHxvo0I(}hvnJ)ZS z7z~K0SU_<@kUYR*(@9?MG`b((?%w#`V7n;L38I`_XTNPgJAl?k&luoH5S}$F*T@UA z%fquqQ%(&n^A|u$Bo$C+s%9R*dSOJxC-BQjjmL`o%R#^Q;nt8KbiKQgY{TNv)ZgAt zw^B)q?{)g0i;^oKqtdTY-#B@ms#FP76c@y-}+U7Jb`65Z2W)) z$r~*TGPcLcJsPs0qynZhfLH@yJ_Zd&-0MU2@hl4h#J|+>^Sa-|LP7!vt&^#bfAu)cnusj`s1Me1>n(Fs_@s``fEVE2s7w zFsmj9RE?^I2D}$RN3$=OdAc88xc`lT&I)YRn>14hHGXXi%P)Kkxu8VxbphDr)PS5& zy(#YYv<0aZh;=Q}q6kATZR-kLZo{xqsP!XK6V<(b2^J>a{Q~3{Yid0|p(s75s}P9k z3N1%{;;Ip5_LrA-_MK(K1TQa}{a(Vh=q3lCHt%$!T1(K0(ZG~3y|5l~*(m`T;;4j~)^c1PrI6*&csj}OG z9>uG^QLmEM@jt`*89|K+9pMuL?kNls7?~G)_Hx-Lj5jx#FP>o?D+1PwE6 zq|`SDdQOgV%m`S@mtEnrz*r5G6e|UM%SUD98gU7PsR#{+_)gQ(o=8)P3b>xU19{$t zv7mIrR-#hsfll86Uc6#wK00Co3Xl#D9uUsdab>AJpjE`QW=mG=nH4LU=H5rd3c!gm zC@@$m7)oFWO{i(x)6&a%O0q@tFD)6-q9bATVDo^b5{am?1bCW^yawo5pi~8eT*Y}# zlF`dGL}WHZdNbKy5kmIY;N&*N^rWGXx&rzR*c`!tA6>ewk-i@n-vdjGQ}+bFG6$6f zp{JI$hE!iZ4&O6Oh|xMCQD%bWQWoZw2P`Zc7_UGI3kD?}VG;)x?j&`2s61hbQj$_* zN!(}!lUlP(t1Sg-c#@D3+TRs8sO!9P@4W@FZ{DrEtDTvr14Zt1K8EC3JzVaislzY=S`{}2S3#C_>2cMNQna0>+V!^czaVNln-5RE8o{Yfpadzix|J&kQG`tZTC$$0zbL>APk}<1(PfDV!8#wNzG(mgu3QMIW0|6(^N6?TJKX zO=>i?!QP00ZWiyLmbwGly#c7rOsNz!=%50AJfyjWbmFtRkNdsx-k|m1*`?KR6arBy z{mtBoC`dH3H^(RPb3YNFxsVlNyE3YXHDKzv`C`}euYKboB>qL=#_LAf%8^MB1l+PPs;knIh9Wv>-92M@p{u1Zs_0v> z?t?MPE8#=>VMw4{S?LxCYAb6JLt5sp4%roXR7*D1f^2d0##hsq=_HYYU^wCKtEuoI=eZ1Tl;7Ght`?9Xyu|3M!hH&bW4pKPL}yD`1CiRs@v zothu~p9X}{ZKZr;YLX}kOfr=IP56h=FmY!lIK*Ut!K=cB;2G)1R00Rm&+YohYGf`AfrPQrqBM|Ei#&=DJUZCUz9BJv{ZYwl6 za=*)I_YG$uk}pgKfSg&(PO}g~QnU(|^&EMA@g>Vg35XF$rnJ{42AGkY;EX>w^*)w# zB-Zt~M=9->!Tf5ZJ4jq+#%HZuH2wA+I~_V+q;=`VjTrA*yxYmIIhU+PBcEqo5Xf`2|)Kp8EoF z_5iKS@~9v_oQUjNSV4EK`go>qde)ny2yC(G0l1N~(Zz}jaPa6cmihtGRY%S&Quy3Z z{b7HtMGo;=CDD<|_n^$arngLrk1zLp=_}pBy*uTkC-+(P?-;pjKuJyS7~=GgO{5#I zN8fSDg^-K$Z;=~_Wu8Y5mF!TuY)5pOL!7}Zm-pOKzHE87lvBe4qZ-#?S+&yUAyyIJ zg(G!{@~k(|ADLdxK^Dgafb6Bn`Gq$)RN0eFWVo@FT}L+y|1xAI37~03@(hap(z`kW z?E~a~szb(>K<6?iHc z&?Dc0K$!}$+F+**iCFWMWBTB zX%k4A4>|vIKVHW*T_I&V!am8FWWUXBnZ_9=+Q+R@7<}dQEpVdDk zeNIQus5?4UJst^BK5#|_37D>4O&`0un!PvRwZd+enb9Z<;OUeSBnH` zs6uCyf`%Q~9g?NFM9`LvD08N^C zSDoB-9#T68|#$UNuU7Z>weH5ebn`>c)Hwjx6d zQ_Ho8%o66!e>ML6UJb?vA(7@n4M6mO(@F5w!r=Z- zyr-u(KW``^LG^FI(QoT$=I%a#;>F>FqG%|dKn@)&NWMYSB@+;@#Q0Jjp~(5&AB-RR zehCh|Pq5vmXU3e|Ig>pM=TBl;C@CXSuL+A|e8V2JZEg1-mhyo8r$#sDOyO%}a{H;1 zPX4u==Coy;v)?`f2Ejo+PlY!#kvrc-JQIjg+ zP*TbNMLxg;sfUYBI@+0&&|W@!67Z`BoCFd~MgQs3K^}>0)0j*jauP${8P*L%8ge3Z zh45z7P1TtWkjMX43+T`j*LIQ|AX<#MU4HDG|iX_={E1YthuJ72N}hw z$N>~z*fiZ0Q^1QW?8y`bmF+Q~nPbko6yF?GTpxXI^kmJyb(`z?!`FEaJzI*=y{Ox3 z&{U;8qV`2S|L^&T`{UYEaL?G{7>IgO~S;~z?>SZn`R$;FA12s_QQALz@h=);I~c_p3D&U_)MSY?c_6@7&2JSisQq7M22ad^0_chq~)OZDP{ zwCeBpMRrcL<62nSc;{NyM9_u2FG5I}#7KEhuJ4LIEJ4Qtsh}=y`31~^_DT+pbNiNG z{!-k^8((r-Kl8tZ`W}az`rG9Z83WV@PTi0p=1WkUGn02-UP2(YfxQsM!KQ`Ed0t+A zbEt}2Qa;I2vLC1~C>rWNdqMY&?ah6o4&%KniQcasa0)f~b94=nG@kR8gd?ch)y=}9 z%%^HO)7Dd}$Vh6SbRp#b#hJB|1PHxJ55yFI8lW_uR`4<%Y+FGB(1Ip`Gp;M0vAMBy z$tAfjF*!@-=y$hwTY-#VAv*!OF@K(%eAoSC`iZ(KZZVoNF2HCZ!=X}`B5X1={dFU| zy>^>$S~Q__^@af?u`v!vN>u?u8nKGkI9p1M8>Na~IR z2rjv9?>^5l$83cHO-e7siIzw_6PoI8!u)|{uG4eObFK^Et{h%-4xg!rRnh!Q61}22 zX$DhS;xi+5(%n3*QP8JSnf(SJ!I5ct-hbZSG>5g9PkL#gFhw*-OsU3J{5Kgov*kj7 z_N6Yyx%{1wlV6i8*A@}sSPz}GKM0wv+q8>a7LT+=Ra?0^>gYROtH?;lZ;G3@`Q6*w z1}LLzL5)dE!YD*3!RMiXR2nIDpPEblx;VUs`EQxVkK5ZI`ax3V4r<6jhK)}2zqt7R zHQ+D1>#vKu;@o|SqzN!RUkUJ31&&yEUye*8aj8@YnNID!#94Xfc}V6Aaj_sJwHf4t zZ=T5;pRsP?T#2hG$p;q~d_q`ad;1^!tJw$9%J&q&hmb=QR;6F%pio$2DAxYaM5}%d z`F1MVH`lj!Z@(jVn^M|!7oKctNk%CMIpMc7uHD#ekOvkC>Xzm0!DUo{wXZM(g^{LezHkC&v&On2uI?qch;xFpLQh!W(gxc7ud zotVV@s!}{X0#hL=1U}eS?y9tEIlSC{_=G&BrAs2sQP{+HN`+8+zlTKyLNk} z#NW5-r(NvTw!-|-&;EFOwRIarY<r!%bM1n@xo=y}=XmFH(V zBfzY9vMt)W(^P;_H3Uij2{9SMCiF%El+VhpdMzA=5*vudZToTVT{)TwLv{LhG@A zHovWW1H}S>9)X(bw_xE2M5X9RZuegCzg%31|3%?L{*7Pu|M^oPFd*x67cgvr!2>;# zp48+inSk5*N=6yeV%#IHn$ne2HVt`zs3=9t_fU+ zP%RcPUP&Mz$1!iGu#dcC0j5=8UYJQ#+NN#hvwR8_3Dny9IQ992_-*Qv;y^F?@41Fh zOqy&8o-+ZH5}-Oa(+on%QF{e0_HG}JB4lGvDioN4$SaSsh^F9%U zDmQql8C!=ElVCUPL3LJFspqWq{N;M|IpBzQg6Y$F6 zBmLY`*D=*7ub1_H$qv1|p|)0}&*lt07b~q{2Dn5(q9O@FUvJ-2bo*p>VhNI~;70k{?l=mug=}nsLgG*lZY+W3WzlR>|kR@(g1Dzm)=%hy+q1-2I*EMjxp``YaHX zgp+1+Mn~fVh);MLL=4Ghj{7{qbfySxzHCFiX(8oFC*PZhbxTTBiE)M&T97J_;MBp3 z)IkI37ByR0r(QLm^FcO-V{*XQGIXGdwRr$2Is7;-_WRm43k=7>2Wn7C%4FgQ&k%VXNaK;a^AB>8mzT=lS#5sZ zZEH2!K#6+)XZk4ENM$PPyAP$oe{TePq%^GA(#em_>L5IrO>|+vo)EL0LI=%xw8Z`V z&)wrKqO} zJufeTs)6ZoEQj6x&al#0r^?TI4Nh7+s;L_L0SdfA)``_0L_?&at-!rPf?HkHlJBWL zc`ARc;&Mm5ndm)R;?FPShaB7y_w(YSa+3eaFpWrR5*dh7<4G4~wY0IW@%~~Qg9IIA z{OcQWG+Mm4ePFfXgf2+7qdu4oRNUc_>5j4k42dXgajX@I_^aF_I?n-cRC8|uyTNP6 ze~++%#jU^z;!_$NhU9a!U{I*7$X$oSnDv-L*9mKcG+ykk33TgsOWGQ$#grQ?zMpWZ z^u7`09RHzsVIH(imO{m-7-Y1azK`SeJY*Lsj|xz8$z}3GJnS4c4E&J^iuOf#KWSV- zA~P8Oh){Q@<`+I|gSn6^-bAiGtJ)4BZxS~8BT^p zg6NLZ+yp4x%m-PjwUm|nUYp7jX}-9S24KyE5*3oqCJ*O7n^9&T3MUPkX0%@=_t2N^_6J%FD4RbYwjYR^vuPmhFd5!m>tkU5g~agG*V6wtfcQZg@H+|0sKj3qVarhn?G$o**8WDpd zwF+-JHoQxH<1Kio&)7|BIL^y+*J*Q9HsML?rP5+D^&+K#3`XJ=E%yMmhygkrF5K~J zp~*c)O7*bje!Mc6-de3ufAzTUH&Z>Tc30viZJL{3X#(3hO4p3vp}hs#50<&obFK1xE)@l|#42*1e0^$QN$GZ| zsNV#A;QxC2EfQV~_2a#O{lKLrZXUSF$aZS1!K$sui?MsA$<5q8he{l4=K(Zizp{>m z21^2XM%Sx=N~y|Kg5+EM%Z&E#hjPp`pV3T2Y;YQn7YR+ll8_SY77jCb!Yp*PO=K4` z(Rrs=+s>O?WizqNRm-?(c8cz&$b-ZE9{5mo@66PWzG=;Ve({-;fBEs;f-~6;Gy`^n z6I79v4l=p)A)IGB>Ot1avo`XO%FTH_0u5M}qJm!xF(3&8Af)ubvXs48V8UQU<2 zN-N@o64r($@9Ep5VZ~O8AEYx$WVwS13 zr__n-Lw{*K%cNHUJr^V!iX@0?P{&U4MEr)n+EQ`^`By;g6`)#!-7l^U^~s2>{#9ir zElEx{=>r6>bl-q9U&-iAAmxB`yrLT>5EFQ1&1VlCf2o~ObVnkaypTq&RVbLUG+m>q zA2*s07ALNPGOl#%++D{VYHJR|=Hk%ww4gMHU?ag*!0MzG_-{6AY@&rI{+zqi(oN}f zmgPCqO27n^e!w`+X>%+|lmqoJ(Ug|SkdkMVy|lkr7AeF-#}*Jh0IddEC@8hpO=-`+38Qb`5kR)hZP+++*~!FB&d^m6#3J! z(*t~eq6SQEsXk+!lh9X!=@Zl!M~is5ITUJ}t7EN`kInV)JFo#(Us;;1`ZQ3dWFBZu z5}}{y%6^n~f|4x{3cGSE`|K^0Xi1AY*;}0~t~#Xo9@#t*qF4u)dJeuQVTL{xT-8@s zC*K7qBQ^A(WKhva3X|YV8HTPn^?UHcH5J1A?xK9yn~-G(65p`uZMMr9G%2eGzp z{sIPy${w)cHCw+TkUSP3MHTi_y?S-E;ZF!DI$D!3OUp57`V3+YPHpqy^FJ!1gvEb^ z-cd!Yidx?HhSKK+tToWFQa}^)1f_L$LqA>?(BHv#(V`$dpQZ$U2ncf)0SPDoH6j8# zyVht(W5wo414^#;HGc7jwsu_`{A17(9$@EwcvoRe_9#uSiZaHhQ%mP{Yq0!2$nj%1 zcx#fZF<-Pp(SPI+u3X)V3%yrM#V)Q2Pb`AQNl}r|ee(nq7Px)NgO>8kX6+Od=t+ z^t!owy{iv_z74(iiO(dZ-%oTBukQ6rb6xFC0z@XIhdg-j)K8;Gj~^021X8>cvWI|G z@yi^Gp4JUa++O1Ik^(N7Gq_Evj!QgX{7*Um#K%P+(KPU=Nv4FqlCElM60Xtlj*~FH zw}pAQ{x-_f3y|38X9N^HwO%91+__Xj7>yse67!@NvuL9d4fW3r6gDj-jyoL&}jMrG4!ZAci{N9k0zymSrUHSRJu z=R|9omOw}F@oTH`^dKwM)zufZr1P2|Hf13#R+5s^oPj`kii`SDa7|G^9=R?lpb!UC zf-<1NQj?XVs>vZY)No8PiT7AFl;-rjOBymJ>5NSOxMA_kn9HK~JP0XUFU{Vl#bvvi z-_iT?mv^fe0s**<>6}W>V0yp{2(~INGNFVe%WY=bc106?t3S&DJdRRl^~$W{Lp?dw zr`3e!%H+``X_!nuV$#k6a;=o2IsnL#dG=+O=Z^1#IY9d|I@|+c*OnfF5N_tPRy*vCaQh!9NdBmzCjpLBH_$2Eo z^xPw)zf+I{p5_T0c_iR0o$}BdIsd9V4pZ;r^NYIHFh>Tm4`}?FR27&>K}FZ!u2$<* z-I2QV1LmYR)@DI3(UJYiYMrNF)Vr7%l5{}Zn36(H?C{D54d!W+4m5kVtDR-+W16&@ zoSW7!&X<4l-@(){=hVMz&Bohle>`{P0nXkJpK_43InA%Kl6pU|`K8lX$FE#tucwPA zQ;z;8h@{6?y=%}8d!y<@;uhzDf{mU!Cxc`vWRKL2U-@e;2Kx#!&O*? zK?1aMo#5%A@t1&kKJnG)8RYof9y=`Z2pqX5s`2DLNeV47gC+gr%a0?BPq$$j7~#;5 zBkH9??8kNbo$E^rS`SofnzlC>G;P$Wb{&|*)S_9w1xobrp9h8U--+baEMH)84(!>X zin4qm-Zg~(PE$X{N@ASvub9sQQ(&n<*ngEc6!4_#hq- zr3VU!UCn5Ain-8~;}SED%nCI*z8<>pokY+Q51BVGKk<(hSWO=j|L9||rz@-Tu&DrT z0<)0zKR}!xt*ll=*^jP@X5Ym@w>q?#gP}?zx{TJ91t0|DioKc8;yc}+Pb!=a2k2fZ zmO&}5qPOOh!xw|=A-0S3ngnG~x&_cq3SK#~{});0?>Q4-(I~b1y2d%Hw(~<{E3Lk+ zRgkp6Mb=4}(jQU!KAg$~c!cZvQRsGZD+bLeg``hLRprv1DsZw0A}vV%9<5TT2q@aB zLYL_;tGxYzf#U}ib;nHr)_W!pcl7u2bx^t2t5ycA))jSwy-Z8soF1_SLEU&PA{<3) z&3&_X^BkVnalH3kgIxHfD4BVh!!_yQu~38TYJVTiWqIVpnTF73O>3_V5MeTwM=2Vv ze6byI`%UICg!0;a<8#F_KQ&){g3DU<2twSXCFV2lr* zI1_mE;-+y4&FV=152v9ThjG4u_jc~B8CpAjXuszuW#~U@;!GI)Qz-O!;>;oitx*!( zNI_Q7?1$FgWJk1B)^y;rL<+{f#@~;$c&r^~o6pum@Rb347baCw$7vPB^hvT7%JIY* zb7TWLAJ|cgtFm8Nqq2-Fu6MD^S!t7#7z6+()ud%rEkX9`RrGxQqJ7N0K<>`BgxB@Hha^vBq8W zki?m?B?pc+WN}1|VcIap$oV|AXqIomJ0#A$BgxNOzLxiYx~&GndyNnrZraBn;vaTh zKLGv(ZOVfxkLazGRbf?5lb~l!fU^>3X714^>i-v~etTor+-{{J9!qmE1T=L8J|xX0 zPg;5=W}!gb=6R*N8Xik?S^xI+X)b9_hwnTBEFy1kF^^%QI*-8v(p&&MF9j0YE83(X z1$7khbD}S^H@lalYmUwy^CwxSIpQO3sb-NMiLC1aZl}{+Ji11b-xB0BPQ_9>)xYv zW%ymVH&=5AT24@>Uu0RE6|EQH>3I(v;-e4;Hq8a9kPC7=&1LaoJ}Av41K%s~LK;@r zS(!Dk?R7VFSeLyn&7}xyKd!UPuRZ$PRYw%9HNgt6SXrPIIZ7z>kwA zOVftfTPBzyA5ZUs<^8nXT4MSj|HcSX0)srjoPxF7re;g{|0=Fk-T>a_&y zqM*)_JS&2<4T2C2$NBtu9MTIsO5$Fti4RxXstHETCTzR!n7&2|^{?FC6tub1ui2Du zB@p8=JpYfZuC{FiDR%tO^ZPL9NK0M={HqeB9`W+=!<%24w^MjnHG(sYS^DLry9bw- z&KjpwqZYa0x| zV49X&`mg->T6Hqq@|1x`3=glbSVEa(K8<=yFG})~kOg$|`l@?{&OnHD{e^TAdFX5E zG@zoy3lpE>iZsWa>KxTMqHo8r3jO{p&`oNn;&$J(+uvBz zHCw~oj+zv968KG#geaqvr@9NaFs>`aPF|#le3TMsfHX_exXrMHx|{AU=2>xd`?@Hb zyKQyO>se4m^r(Qh$2l2&w0Rpat>z=?^8j6$T*7{j zSJ8~0j8#uw1pXkP*XaMHWY{FA8smq4Cw#@O`O)}F27C?u*BWpyNNSac;&|nc##g$z zpF;&F`HCOH8vU%!+A1lUW`v$<-`Tx#6^+c>F(;=Iprm?^C4*64LNg+fv82dhUPm*`x3hBwXqxSO#!(+8h3U&3v`sM`I*qSmq4|C5x~8 zSPG(_jFISxKda7FQ?UZ*(31pJQIibbs>otYfhVMbZtmxBfs^dV4_Z`0%ra6#Df1Ww3hX<(SFWOw z2a1!n^l5%UZfZ_`ULqKr9VdJ&HPw)OPxB|lN!qkIp%k)_gP7t5gze*r6T7$lWL9wX zljliV1!S1}Q5_d}{#_@MsHyhOzuFhKubb;e8niSwCk0E0ukg^^^5071%_~OKJTb<#l|s~AJi#roD-lSytJx^uEytK&LkhlYA1S{g=LyIDLsGF0DEgJ z8h$6*wO#Y0u|x24^EwI=+DBIjK-trkKbm&k&HWrIIDLKKg?Wl=u=X1252Pxdiq6CR zzLAbD_MP1;pOPKMpuWO&Qctc}7GkNmQ+W*S+AgQRnJ3s`;!W7$_|7l9a>D*1dMOb{XbWYZ8UWm!z4@G|fN%$zB^dHzSqSWyn}u3i0t2fW(d;M6~CcQ=6TGhMZwNwBad z&#=0_jYWPPqET>Evh6M|`1s=Dulrhs4%*#b{gm0L@CKi93Rw~aT&k$0NIC{yjZk$z z3)wR@iEgJB$kTVel-Vzxyc$jF2St^pqHX1E!)3NHp+u(y`1ubC@Jb>yKhZ<&8<}{1 zfAa?2VYAya{Q_a?6*WAwt*H-Yi0;$p|1C@X-=Bs5ZxUL0+*RP!^g@gd9CM^DVeqe6 zg^8JzVjQFV(#^Ci6A1^o{7m9lUwr1QLuXOG1Nr#>?8!%S0ey04Ig@II_Ku6=$A48nHN{AvEb0hi(_AUWLRN?21+?&T^GjqG{68e%xH*+(=yD9uO zjk%rlqV(Yu!^`{Nn>m`}@tgU0$99r-BB@3Ixd5;qE`@66rrFd0x~t92;QLw62;wqS*`{H%^+r_xq;!&!eVE_>$PLxxX<<1WbYI z3W7W2B2-bD6%uS8JTaP#TJ1W9GJO+CJ5kekL0jSgj1f-@Z|XFF_Wlk_s$&EpS(N#= zyZv=>N1ijxsVVPYZSL-GubNG}ZLaDAKW?@M$v>&Md<27ongr(xR1L`?Sa{kbDW&m0 z&2Kr4hD^Gm*Zt8C`(Gn6rpyCT+Wi`b{jdE9N&mI9e>Ur%&ASHzuNxO=Gdoz|ch3fX zH*O&LsCo`T*gqTf&qn>TasP^>|61BVko6Db{R27UR=4-t8ZC3*Y!2J&`q|;l_80zdR%Cq`8n~0=R>tFI;`RHERN^+Cse=O4n@uo_`2)Ca^@UdV9uYUdq zt(%NXBlJrzFZD}pM>n0?sGpTLKEKagpx-kJmZBOqs*wrOd%BQBUCV(oVqqS>E1b z74!D-vV(B4>a8|g$*2mEn}nz9MEsdjX+3!M`8FGpM=;&Nt)G~6k`#rdRg$#AqV9X!zQwMzX~mGWlj%*P0#yE3kZiuSWG{lPcgTcHc=9R?T%!N?JchegIs zZ}7~bI6;bN-QZ(_Sy+<0h{^uVGxOP+adP!+y?b-RNMTO$FKo7L!;(xfHlh1;%~;v> zw!YnMZ^SWM;~;A?aRUQv=2cF$NyrM87KJV-juP~=yA6+RL^o8XPDvFL-FxXZmc)TV zM;kn`W_G!;%oa?^yeP1w(0{{HvKJY?f5I6)i6(Q`o@wVm$Q~5POhBHp zhT$B`IcyidKR5{DrBR8=nPhEEwI@Q_TCGP$aJN73OWJo}xg%rPIy@gM21p0nPt!)( z{v=|58XN&((U8oBL#0kxk!*kW#G1j!+poXO7z|GZciZ}05x}DG2H|Xy?eCuGhbQS$ zG6;kA>P~)cuZyenYyH#rBqXpoyxyw707g>mr+$Q@%H0S!(QX5d4dU;&uU_|~R85$P zzSh=$l>!(iwiK zBLShJT`ehDY7UBXbDvNoc83kgTGyLji>rIlZz4$Y>_iwd0dRrX^iP)E(Y| zg(rb`cPC=?bw5;W&@LtVg=z>kkz{hLjT${X1(I7*h2;aaDLSO1Re5()2IEW_&;m1! z+d8Zv^O)}IO&TDF-8trHb_5(=p~-r;1r=r+ZVAls25Q~jZGUYx#s1a(b))n@T%e>G zknR%`qeMLyVQ}m#gE!%#5C=6xxY-x=_BZxGBJxDdbAZz5-XNqneB?Q*{80YQ3_>h` zzR|FR%m+oTMTU+BnJMy^8KzFCbxDgVL$6??X67=GoY&2@AH#}o4%hd0MY+A&-n~t} zI#B!2goQd_8ny*tL;X>K-5d#oDu3^Hh5{oA+ZOx`DLOEp^#fr? zM!F=c%d60&qv=7Je`NupdAW5UwVFjb12&8v-akX|4Vti zKKtXp|NCeE-Nf}kN2m}FX%X-s`R_Sthk#TpV?hqon6sHLnY zkC4S&yCgY#izJ{Z+;>}Cee-uYx}f>HT%DX`Zn_bXflDl})r>B2ImfCU>f)8MKPEiM z&eQK50g==8vvz=BG(Ss!X#ReWZV=uyZCo(y`PvfS zvTh2a0@6bjEf7;PYLm1o^ej@h^^+O)$KCxNuh2vt6UWP16os(Dl^LTv5lz6~r0v?+ z?Q*3k=^K$v(>I->1bRDR|D@#Q=51Jre^@ACK+Mh6)y2i1c8ve#fiJ1KCsh>CXRbz# zN#KI=5_bue^Accz9{3)5b|g_u&@}*$-6D>s1F}}mr;hqw@J}PnANWdS4LjI22wCbQ zJhL?S!Ya@uc=0QIWIxD{Z||>k_1=uNF(R}AKTaMI9rH-W4h5WujZ3wEM$_+Pbm4L@ z>)+%uPN`v*=fuFjrxfLrE=!K1I2IM3m0+`CouS@9T#{o8sknK2aq-oSvX0Wbx3|=p zi1vW{3Dq|t5g!Y*h$MEXKQoReC6_NRwRqm%v^!j}A|6O+y1Yc>H~X97YQrHRj_<3x z9S*zicHb9ovDIodBj3}sQ@_1YlhRw!&E`HRjc4_`*dqWa?tFVw@#N&sBpOavHNQ!4 z5JV;#QI_NW)0|`g)llsB1>0fBNtKg6kfuu57GRJK?V|9~*V>bS4&<=s^)KsaT~yZN zB2Y+%|0z|7V+8Fh!jq9jb(j!;a~x{1dc9fwI>Bzs^TSe;<#%0etu?E?B&=&P3z7s6 zl!Q}+3gu)kFIC!+`LWR++^-}PNvQo z6Q{0)WRC{owy4&5f&z4C5iSs(D^O(oT&0;r2? zj=n63*Mzqu{&f=bale|Uu#i-U>jBOomVaMO7J zLSS}HA5(iaP-WDf={FfKpYx`r>pNKr2_zKG=aRVGdR3rZ`X*AZ<()p9^)G57@JpCA@Hm?G2K)|etlGsC4+%{h~ip}M>dqlPPFWD%(x)lC}#K8$^Rc2ayC6Z~h84*$dDC6&`atsZ6Eb0>< z8hh$I26JD12*iyVY+Q7^mhhDEpl1W^crdy|GbdWo8f8BhZEN$I9Tl?kq^vh07t$j~ zCpNmqnQvXVAx)f1E0Bg5LsZZ}MQ!)YihkPt*=El^Y(=)Kn?&Y=vMmzgkaZ|2gK)8@ zc;R3RaX6zlC%8&l(m{-kp1X#hzCC9wv)K;|E0LS1+zm2F-B`qlTAWaBYAx!?Znz|H#Er<(H))p z!tsY5))AO9xTvd4p|FY0F|#k)#d$ujPXYZSq6^4d5ylEx!wN0DMB7+-jRRkF(LcS# ziT}6l-Rtk}uQU@5lUV7P!AMa+&dp-0>_lwYQ$gIsti)~9!!eR_Oa8Jyx!aa-Ci^y;t2x1Z) zwKCd#X$w_HJG%3ZWbQbegmag2>ZFIUVdj(txIU@KRUpL0ZLz-1(StLmt%fBE(+~Rw zYBHlXSZO83XGsANb_IJd^W4&)!Q7xuPMfD}(~Vd@kSUv-5v?WTqG0}l!_a@c^oE2O z3N*yGqfkI$sM!e924g^sW%bd_H_6FW34nYN6r^1L*r*6r;nRt{D5C%`R|VD=g|+G- zK9zwC^45Taf8A}@8o%ft%&?&9EeLS!87GHpsVIW_&*IP9!`({@PBd_DC_jZ{p};!% zud*}cpX>nsaZ$=fmw9lq$w^v+eZlU_A+#Zw!d@my}QSa!U z;O@fiN{E3G^$De9kn3bjPL-2|H-cAOUjBHC2b~nD4jJx_KfXLDi}G);dFF6S@>kcJ zh^@c8RP62L;k(`4H`lj!ZMoDj^3;&ELeBo4e#z zQXBS(GS~KgEC%NW4dr?(iIIW^NH`@T!b&-QNr*+fzN2TJ-%G8S_P($c;;fS)T}Pez z1`$9~F(#>$@^z<#6UAmcsYrc&d;4po=#M!OAgfVGN%tY%Qze5?;PTfK`}K&3YLe8% z+lb;uf_?zSENw~mcJp;#&E^&1@!NxJPfSK$SvF{GO`TPP81iH)x%%#52V~lvn#|@` za{no3OMI3@3=z;l89y4)Z=+=I5hy%C*V-_MY$|Fb zIm(_Nq!npN5Q-9md^oo~nZ96;GaYl|M-!q~Dxgo8QegIh&@z9@k2?>2u}1U2q$`rf zlW>v;exPIQI>c(k=4e0EzB}iQds!X6?Ein7nsIeqx^l^o5UHPrX_=G2Q~dw!olT4^ zOLo_5#x@=sf3q+$AfCY*8PGKKl~q~I$a>#?SG+I1`<@4kOux*mtb3d3k4t~Nckisc zvG|Zc2noc74MM__7d8l?*}(>}Ktf(3fskN@5R0)aM&1p-6A`B>Gb*zxBdfb_*X_KT zdC{2_aU$ZxiO7f(=lsvY?&y8lob4}M8MxlIhJ1#tTWNa#V6-kB0iV# z`|gin-<;RI%RKou;{KikXD~}JPUhsd`Ziip1840ccZ0K!g*b*9=hJ8Q3J?OQ7N!eO zzNVbqbxltvgO+TR)xT6P&qe9mwm6>~jc zmf1Ws>l3zS$r&e0U|U5c!P#m!OSp7nIZRN;a+F;DEG;UDh2gp^4sxv^tP%yi<5gqn zi*g*T7x5gCAhvv7*rv=3VeG!1*uRcgU8IR)92XYR1fN-stNp^>XjNbk+eV#XZYVv| zqUgo?Xq__V)WSd?tY=&DeMQa51XZV83E{9f#O@buvz?M=?OtUbjLS4>@qC7|D+OO! z4o3^w?3S}sR5@e|EnHo8;Oty`;&qgJfYVDCMi7=X!t%b#{^`XU0>7gAR(P*<^~pI(t2I3zpa_Qx&Di>RD`7 zEA|r%a4;zq3Cz%Q!B#I%6`fIX$)TyRqDJ^9atnz{3QK6tDwy3Bb9@sI1Y8q~cJ&3x zUZci78aSVEAHB?+yA#^vQL}gfD-*-Gc(-SIC(~Q5$xSmcu11P*aWo$QSxv+X(wbP5 zlsT0;fti5p02hvJH%cN|O7#F%=)Q%*pu8^YatCH51=AIgS#k0dset z9EQX!p*!Z}#E(Lzr0WoBFwu}Ja^a&xdR|>?W|J2R>yJm|h>B zFcmLlT;^}glV^<0<12L8>($^-m0X`t#@*G)wv!K?c}dr>%3EO7x)@?s#wCNZ4Jewg znE|e*^;=?mEw#*y8Maexf_N=zkZ6X@|F}PON}L<1XVAA5$t?~&0;F~_#(pVV zL=l);Ommezu`Y?VCxd};IOI5uSy5yhdMS(^gn$AG6O+Rr(1dk``=;=x;taejJD*SF zCS}AovA@9TX>-{}BJL69$`_)9i5Dr>tugo1#MT?hVo=%W*tR*pS{7u-G{U};T?=O> zwC~#rPL@8)GyD>`F6Ba=%^+WzjU~C6T2&cg`LxKf!ex0Ll#WeB2HUn$aAc!Sh=)~{ zjuY{W8uJ0(TA%v7%x8i$!Zj$LL@r?qyVcTwF6&!$5wj5%*_4k6p#lkASgtZM&Q0j| zu_e25jtt_{g|*q~>G>JpbJindGG?PNnehq2VxJprX8)!Vo-Y(EXsV_%3>C9(aK^dbfQXy8A8K%&s`{p zPC=EX$Ah8q<97CjqW4BsjB{O*%p>>JU5dHTk0Et*O(_~UiE^<8j5s?-n456)&>u^S zc4R(;-p7g6hFfv`ei*MwDm&)Yx69o&p|LnToZChprPtUKqf>XCc+)(76PWcf3o7eE zZ%vd5%+Mkrf%+0?qD@^uV>YO3IvMl*Vu=P?5jP%WqD@^9zysTPnB##%5R(aq{b*t! zo!iuf6jjybHZ6=OBTWoTaRS701h=0g^S_=*^OOi4*yfZ!k*n--LgVc2;7~Xa;^`sRBP_5WQDC~jgk1pSEQhMKd^JrN z4s1Kusp5+$?w456CvnPrt7{dXgye}dgIxt5_z8zQ)Y&NNWKH6inu^EV7YqMmJW$gi z8#bI$M-y3U~=iU}l6F!g(9p>^XNwVwt!`UvoF7uVV)NVS@0A{SA32x5{cWF)ZnZ`9o?YBMc0r9?Eljuj8N zwnSvSHb%Bd%j-nrpaSTUhI||JuP%;HmshxvK=pt%0n9L{bP;zUtDi*})FsJX6$-wR zb3ak{5MwR0-f3&rWCPWL4iRi*nxM2tlDN;E0XaKD#%ay8=;-0#rAodkHI1o})J41) z;e;sg4OoXeSh`73krP~pC&l1Q4#r}BjsbceFV;pm;uax)KAf0(_{gynVN=B`i3eyD zmJB=q1S}j_wctL*63fxQKKpY1JDITb$F=}AzU$NpK8-6yPAqHCh0MmSE^{^Qq0Mev zeSU!|PutB-GUe7tt|%Bt`8Zc+t)x2|*vv(qXe>ajAZ1OR;XY279&wLna&IY9S<`T4 zORc!$*OQ@o#dMjwhXi|C*%)ptQC*8%8lK~YkEdk8s9`txF|jjd zipGXeO!x%2IK)aZ?awh|jq%jZ``GruRA%XRV??hb+rs5?(1^z;GAL3iiyC5eKo{Tx0Qm zNqfZiG3EkB+>$P>vF`QNLJsO9tRGQrVFEi$MgWP!EwK-lU#m-_O4STUe4B(sMqE$k zc?xC*npyO+r5q(Punk*gkn+yaAo7>-H8fjzt_B&fL?ndP@VzK!5h^8zdwO(m;9PWY zOo{_dJjT(e50EZ8PyB@CwxT6{*8*ERdllbFXiSuF5SJnmgDE#p_H$FTB`J2q7^}$5 zN?30Qtubd4OH}B|V!#J(w@S8k2_^b$Hkx3RkVvEww__>ZznCuBX)GQQ79?u>jTl~i zVh_&6gvfAeKWZhvw*q0aK0I>H&$3R0tPuJ_X|-Kxq9pA_1U*0u5Szi0L#z> z5C*PeIZTgBULjQI7n>fRX~8+J8pDCWx)WBy=3C;%v;N4A zGr$gJSb!6*(1iD90G7P4O&j!=UAlCPKmnP|LE$18<~Ro@%&>5M++2fJ#n(ruyy2H8 zZjQwO-~A=msOmh2{wTqI7gOXpSfUPSWL?S|)LO|49G?)0XpU9Rh}a=)Jd3;-xZSo{ zKXnHHqzka{gkT3Me~g#Wa*HQkr6yCEhVB`cKU;s5VLZ*mhyrT{}; z%us4vJxSv-iwO+^3Q4RIfHX(77Z2GVjO+rr6uvqtV_>~-yoHM1;Ny?Obv4n+2+ht; z$4X=AKz4O}$^rE4YlI7vymcuw{x}KO_D```n9tt;AnwVTVM9Ne<1JvGX>rUtn{&Mt zk1}GX$U3(ASy<4z(#O|nu~I^ouPS9j%@qii30Qf`nTs)9{=DS-Sh`qkKws?K2iGU^ zHMQq*k1LG2;f!7pfxjv&7y(RZx;_}CcEkW^b(h!E;=aHmxAtlA+Tr?3Yg|Q^-vWcU z6@oGX3B(QN}`dG|Rn4AEyjRl8oFjgG4U;9+h z0^IkM12{2;xISW=589*Kzm@m{g@XejA&BX0jGtS@;r4wuJJ19(MVtu35`oY2K9AhvbW6!VA`o3?{ut6Piqlc3S zVZt~-7#7PqTV#!^Hx94kQ+US|LnF=-O(?|qd<5nR11LW%1)!eXMKw7f-=|Zo)3Jq{;YYjL zij*lum$Z!2g|y754la)JXUDO&3cK={z(hpM!=5%4drx>*)xYG6=eB=DO*=|WAE84h zl@hL7=;ra?pR<5Oap4}g+@Kgr%)InV!!7=*qz2R?igl1pN5K7Hx^CL#wBq>6t&1P_ z2blcvO_o#;!#;X;X?H0L9?(?q%`gEz7AQ=)G|kve4Ewo&ZOJNag}n`BS?({ukCa7} z*-6~$7y!D_u!QJMs|eyQjf>wreli+9XZI!h0<=Zuk`;fGMUJ`@%P-7SrkqEYzb*$v zOe}mNvGfbTV1)lE+rkti46tW1QutQ1uo=@7;{u?bd15dBN1&RG3ZM+ z3u6lvphd8fAEBTITRw7|aJy-%=mH?Q1qKd5@xUr}Gz4$R?)FL>Cd#iySvk2b3Pk79lu`hw2G_0U~ivAS4!YNfB-=vou=W2ciwRDq3{sq>dY2K-u7gTUut$b8tx=O7tiA3Lp3+nSy%tKkX1?t_C5P1>*$OyfY@ zNB}F(Mnhv4RFqx}&`lp44(#&c)!mqG^LZ9%ea6PF5FFVV9+s7HpTWVv9DDXs#1GoP zYkk1zd-bv9nGW&rVnO4Q%NaqJy*1lJ81NKSfd8O#iWHN$k(*$R~Ovxc+-mM_FAkPXP&20LxuP!?v4OEP1tJO*}e8ryBj zdM}n$Jr?!D+5x&!mhof7T@q8B1RHi^n~j*24tKT}Vs#-O&4y%gh>##Oz{aM051fXt zbdhez8g1AT<`aee#tpbPw%qfgI*YNjNCwkLEU;<%`i{WWVQxG&%IyQ!8FP(n_Z#bza&5#|pW4-j=QJBeZZ;=;MiWs|fEHGz7!Q5fSZ6Ci!ZRI5f z6pg#J0V*Ftmbjy2gZkRa3jq8CXXOOQW^ihZ=%jx|J8e-7=@cDa3U!P(a1H(;iKb_-j}D37A4?5ynJgeyA};z5RKd7P-Gx{Pn-!lnWO z8RN6XZjb}Nxe+MQu;1ua%aAD6vWjpHMD)UX8)sxya^6D$m5D9TrlI0YU(=pxijsb^0ELlCI>@cTdl?}T3e{zefAbt=}*otUaT)qmHW+vV3ZLtMrq`PI}1;Z z;Q$+#v%cYR#x7gM(@d5{z@ti7XJRUHzAf{!<*CVqn=IDDwaA#*xN^nGr^M}VmQ%HD zJ?p14j1IV87ejrPm9ab7?p%+X@w$|YdX8fT7U>aThOs&5+wbqH9#5W|4v!PFBIAG# zpNOB|ER6*q%p0JVa$u)>u^K*lcr)W^Ml~3qc-6EVAGaJ7>jB9?R5bu*C!7k)AZKW1 zy=AE(-`sLhs)q=t=%w)rA=DGb_%|ZgZaFE|gY(HKn#L&3*x=%_@72>z4s^LGR>XS8 z5`!@+7atOJb5)VCGX)m=@;JL35mZquYR-v-2WGacmJY|_{A7-w@e=xjK>&d)&N)gg z_)f6@ugGWil(q|YBrtb3C#PbFCvNghjHia{8h~(|bh+9`tmj}hnSO8^vbrwU06aN; zssOgGTrIisjDheY5?3a{aooYbczklFTW%GQ1Ap&K3?2nIkj}D z*{*`R;5(Jg#vF*yY%$TWW&%!RrKhAy*H|JSKTR-DKK)p*E1GIU0B0qTSW0kK)^=kz z%eS(muQa9t);8S5ig_gF?IvJML&ktOIAuQLAt~xNz4R^`B%25+pAw7ZQPYNVio$*o z=iCM6Y{b+vGExG+Xda2AlJ62DX2I@)```sWKTeZdyzCT+hu|0lp5BGvNht{R0`;5{ z_0XLOi>&c#5wp9^fq^P}!vzRIfVg`GUT#2ec*Cv|Xp^l6RVbE5Vz{<6Obk&YadyWC z5kIV9LVN;;99=RCv(+f*J;p}{dZM8q;h#F;Iu;8fESI^kw1aLx2zK?cQ{~wJCLd z$%pb?{%faE^C`r~0CWKS(XcQhdY)BKloXdYR~JZo;GPnAh^Uam%%Kk5Qe6O?vBATj zf)5ebkoHq|OLgS{M^9q>dr{eI*4IKsPp zF^DAChuRGk_Z$Y*^_d{YupNA(5fZNVjo`e-M-TixkN}Yidl6A`!Xkn<*3t(DADL7H z?$dxZTVgO^?}Sc_!yLFMc1C?&zN?3aOs>PjH(a>lOS7`wVAUA%VI0O{hG(uPYuUcjGK!fPtW0WNCj80}-_Giv$RWe1i`U-8a~M znQQ~_gyQh_h>w_iU1km&o9t{flSKP`J;2_Z=;8z*2&x`t5oQ}~apo0VI+#MK-+v74s;z#2B++3xw znBs#qo8bTprW-bCR=VoRTLi|c`$Hy$dJFL#aX1XzmV@)t7YzU*1k{;g8~M*FZnrAQ zqhdu-!R1*5#zHKZA9Cg?&W$p2T$9bf|9tXSaB=+UUfBE*>{Qe4hk*v3Yfk` zVEW)~ZQtpq(Hq;o3l?hxY7Oc>31!hTBJ{)Uk?x7-o?JBk%giopFnREW&Md0CGlVZebX+o1=+1 zSrNWEch)+71@$0wCV<{M&#iG*bqym7TLh4kaHou65eQwH;JQ#>gHe)fu7QABghj;O zi^vmLpcgM@S2YAO$=<;@CShn#4S*(PTq&}>S`A{OE>ttAR70Mk+2jI=ofQsmMFf~e zHB>XHRKtLXd$>cL_3v8j-K;#h2|xRSz852*$|7>tN9 zH}sY#;q<0vxw;ly1JGC5TH=R0M5Dqr7n=wJTVPQQ!bwLUE*QeVf^h)=+(L%`IB@uF z+bR*wxMh;wV{VVuK-``ubKsLqL^FOeYjb!@4dIb^1fUs%av%JabU<8NCu%JzPR3B= z3Y6HipoR`XTT9i(Je=axblxCECV&Bp(*%RoBSD@#If^bZPUo*fCG!nor>(b27Pq-Wmbl?a4KccY_ z?Grm0EHCX+)TWUu85+Vu;JSbY2Rmrmw;RybB#jKQ$DXhfA@2m%#$wYfm~BWFWN3tx1~C4q=P&wofPA-p&AzC`)<> zFHI|r4AE)AKX4!ii-K?;Wl0YqS(Kq+E)kyaIUR}q>HNFWk@GyXb3TCsDE?E{VpecW{LffWUw9MoG5%WU?(N#HZeAJ6?nFjMw;Fv zOt-Vp)T6UCnRLfa2^EYw9}6Zv#F%{9;g{pR5_i&7Mf{`eDmgL3SxGx1S{}w^to!){ zi7hyhEA6P#nyj|r$j(aLm<<5en1a$ao)9J7eW8|Gg)MBUXnBeFfDxk{D=|EFL zHkyu!Gdbguw}N`5#iJS13a*!k6Oe&@L7xpFJ|NRc74do%OO>QM>r<6=#DudyO9{1b zH(k;8dU>p9dzm_>K5S$KMqo^YgOabq7SZ=MLRowGv8sPvxlG|YL=C`$lRSIs-8aKD-{wJtS9c2NGiJLfL!%BEhf_J!^*tKEY5Zk7@ zA0;`&5Dxcob{F{h01IC+J6rXmR7VWB3jtWOF-oA>v=p=1O{6w;9G65M1YT~GK@Err z@qtI~&5XJ89dN4+P0u7kC{WNN&&R9SkNWR-<^4iwb^u|IF)e&TnK{qKb=?T8qBJ|^ z7?)3oAU)!)Cn1bdFsG_}QJNinpa5gG^yq8)gn#j_lH`N3WyCA%D9?^QUn`XHvxwUy zT>Qgld1W2PCCQzkuf=?div+yQ2p4xVyi)8ygod>j%j}d`t|*x?9F1y+yneN+?nh~M zU?2(x8TNZ<_=w6IKFcfXD9;W;6oJ#0gQPW?B*a!+=T&SzIPCc3iz6`_Mp(MAe&R8J zpzDuopB!hJTf3+9Z#C6R)6H5iSZDZPaZn%%EfTrjuFwk9)5lf7hB84TiOQ3er=PoP zvErU`Lj{$L^?Hy1-6ZjH#&e*%k@lb-R94{iV8ZR&d`buov2Vdy*i=x0$v{-Gq?2gB zr$p4NQE%7{Rbc~#CY`%26#rxJAzh>f_qh`G92^+3A?^&=jiIMb79-K&VJ2l+VVA>S z`s7_~@TxU0e$)DW!qc#TjPQ&gs3sGFrhN13f8#p-4IB2W1xX+{hYN!LE+lSZ*{%-T z^~1wVA}(QT#%1iAFF-T;7Ko}JUR%6#v7l;QvE1|m#fmi~A3t@1Z_$C2t^aU04q${gi``AQ zPqmgkuvP%O1S~fq?i6=@MGjeS=fgwi?fiCfmAEcEO)j7EX+Fm9>+$ik;rJ8c-pnuC zHzFpC0D1)6K{?CJ+$knp4#zo>7m1M&3-Xz{yju--@zZMHp4-YMN<$(~5ps_^7K;rk zmCRq9y=FfHJjntoZUil-lbmVtNjyo|$`Zne1J|k>WzN6HIOG?@aqF6ZjGd1rz$E4@ z(-LH7Ra1H6_0H+Ds}~>U`TQhrT^TVuF+Ae(A3N~AUNVG_GLlNjh`}6HAaO~=7Gu?D zyAyCxp`5p&gp=6iJ3JY1J2Hv-Y+e$;pEzf(>JtF>!^27d_noSYuy@7v6MuDJ+R748 zH7mbP)G8G}IgwZw*GH$%PFl}N%r-gB<1B@#6JfqeT&`+@75=h#4n{jJ3{$l9a#6}h zfJi+0MME;%${-#@10a;JLKqR{GAf-k8ZFj4>`cv?P`ia-y;wTKwjQ*2K={YW1WR?| zbeLc+D^c~gL*8e{|Cxx$#?AL#le%@^M6)|Qw0TXms_jAON-W$6}b z7Mst`E|W!WvV3~}m_cqk$}y<0z`qP+vFYQxP@J)TKUp!3aTH@OdVE&%fi8_XZe=c; z%FA|dGG&2ZcZqP=G3PFX3Ey|ZIkQ;LIOQvje)xJF$J_~Fkd}epNjwwo^6G`MTI%G; zT$DMx))<*71vOJXyI+=4)>e*Y>}8`Fj-tRsg0; z5Jvg{Nkp8^23hGtrd)G#`|GRopwkGNIoQ5xZgnvo1#^&FHV}C2C_2S=%VTB=v^8e@ z5~i8Eq4EyjP9hH|sr7hc@0${Ma!fq#5vx|~S&tS6bw!Syi71dupV8ce$5Z5(M{Hfq zwEyOy-Gr|wI6SnN9eiKG?AYaCoZ;?^0Vjrd zK$2i)W&4W7NL$$yqsoZbtixzsL+H(EyF9LaUfPda(ig2^!ZZ~4$C6&5LDgGwO6)np>JYAZECwhd>~ihhnj&Tmz!IcH zEyjum#;xy+=UljE=&v)hczDm0Za}KECq{vzC^7a<`HS=8d287M$a_8@ zz6X%SAU95({bcyr4g6m0?C^2p{K8H2rcd7b^jHpdTNzzUu=pFZ?G#tD@--4znTLl4 zCG+sm0A!+wXw5Ayk2vIDphfUG^h})dLRZk8Rp2?`2Vi&hrz5sR1{G17fU9p?v6k(6 z8gpBT0#88XY@dF4wJ!k(l=b-R#cO}bX%1B`ALnQDztFbY1^A1j81Ge4z{G-FEdBW9 z9q7p-H3F!E3nqN?+wL6};{~2}9Gmz?O$~bEYKZ;)W9zAW#A!1Hh_WVuq<+8E9 zX=;NbNbZuB1ruw|C?A7^gDUb(iF1#a(R{QVgv1%L(G!`p&VuX2uK@{JwAQRAD>(|jjM%;GQJVql7QQf=EI4Mm2}H?R*r)MbEZ8wkP!FgT-&hq z1}gx;k1!XA*r8b77YDUS-Gsh+6Em!kDg^#_$YD0a4H{!3hgehs@{$h7a!jth_ z9sq(gWNn8%*rj7vur8LS2bR3K$!JIzBxkJOaPC4y$>3VeSQ%+))oyd96lB7WWkGCM zgT&}wy}wq0+ow0I0CgyS zrMQ0rmWQFY{qSz<0k@lV`3bfY-G_|6_~++O_X3N zlA=U*&M~D3d7(^Nt73@sWcWIQN{|7E=+?Tmad7HmzQ4J|-F|$PHx1+nB3sUx6~w-T zqr7wXSntEK0$J=-J6$&x9%AGGub7BkPnIefI5!)Q31kVy`pcevFV8Vidxbs1%%1tWlO>Db3B#<2<_z`h3nY zIF+~sgiarg26mM-o@vu-i{v~Qx<8KQ*n?r7e)8-o7hRzJPEO9xzkU4-9}sL1=Io{? z3xWvC9ppPb`;*!1%eSV67y*|r^CNr_2$+(d^$pDe43NmU ztMUX1MTIb8LF@yxS9Fc4ZV4WitHQYI6Rco59OQ)C!y<88<%8(SMe^)vewq{F1#^Ky zJLae{BEpa-i-o|L+TF>9e#}nJzqBC`R?QjV+{Gsxtq7I~b{7$`+)?>6 zr-#wjva@Rq!LXu1>?7bT@Yk4(*}=V<3@ixF&%VenmV`{>Ak@bQ7&GZeq8XufuuE;}tgyJgx|RdUC;8>|Y5r-`ZA~)b z0F6Hi%j*nV2)CIpo^a&)``|zf_932pX$%V+PUi($5^x%ZgnGiXX;!gVBqvw}92{`& zJ-=o%|Gr5ZQU@iIDCC4wBmNF%2iADJ^mVAD9vLv6`hJAI=B|={AoW8xL!mHa^Gs2+P?ym-pCrr|vVqvGLfDH*S22k2}DA zIB<*9h*1RJ$Iau4)YL&4`Hp26$#SUV{t59R2(eX2l+Fc}oNvmTIbdMik&gQF4CEGv zd$)!BXxNxHSl%vBCgW|0pF!W*a%~|$89yI16iXD%xatmvQ}jWLp{gae$xTz%18x;f zu=W_TD?#spPFV(atK2kYz1)MdgC31=Fb7q&$;e_&)tL2ssu%e0fB*$>11J0@tq)** zKL&F>UZjLd1#DH}yEifiTdKyb2au33k!IV#Vm5b&vCZTITEDj3Ma>@pCIL9^u$pJFnO{-!cjCJzx zzWIWW&kQj(z##&>F>S;hY%3ctIv7ENDL^L@fMN)7+JO0BX*3pmfw7R`M@mPWfY zw%?7J&o^qEjk&G^5sF{{?rXS_`Lh3R%zWZdaT|+VV!*vX7JC2q0PKfaW%!FY8WY`Z-~* zpq>!a9%wZe@VIpEyS8qMa5kooaulpkP!5Uty1;j~iF7iznhHN-3#Joy&5@4vvmau}C~_ zICn8HMvE3BHX!E_kYQu<3-lY3ALCSqq7mfs875{fgiW376v)pT(x0Q_#}-7Qei_S_ zjk2%whtZ@dd$8MLIR*?P!){9<$m^E20{w=~CoUVxaAJSZ4^+%fZM0={X?|1oaQ!ED zDdIH%^taPaZ(~1Z{!Q640k<_7pw}4_J{uRiM$!ZQhU^*PViQYbpFaO#@-`Y>$Tww= zsJpoIOMnv^j4-XR^o#eTg_TW5m&uhrZP)>D^;)?Y_Q z-|tE?*YUb<{n_{S z>^dI%Uj9`Zzg@>;-}!Oh+P~{~_~o}fhxUIPJ^%Mm`dxm@0iTch-0`R5k8t3w3?fm}u+;)BYPQT+5$W8_GYwf1%~O{FVbgANBd6@kjfu=|k_o@`(>98?QfUga=;%qeST>C(SEK2;cH=7?xU2cD_1sh%D!(^XuhQAK`a|2><+mKr@%Gbw z=a1i?(C6Fk|F-so)_>RZ9(sL#|3k;?w)6Y#^PfZO_sfSq-*tVV?c0`r-`nr^@3#AM z)AT!fmIMAc>T@W6Li1}qn(ljf?MKse*ZwxGNAq>{Sq>;awxu`CuZ~_A|F@0LzW;vH z^04px*w+4zUt#m7<5w8Jw#i@U?;Za;{tE{}<>s#Pck)@5&yF9jHa}jq@$LFkme-qJ zH}4yNyY_4z?_K%Rl`nH(+k7hL-oDSd?fiawL+jhMd}w|9o_|+qmx_P^TmqZ{9D ze1!wL&OJ1F(0*$g+J7ylX=wR}mS6d#=|k&(*I&y49e+O!<AKG~O z{Mz;$%Aeb&w`+Ss%ip*BK7T{o_p-}}wl_5YP4~~I=Rfb-zMH1EYkNY=-?#kx&d*)j zf8WNVYmeoCKd$=R@u%aDa6siDG!2!Xmrehs+q)~hu6&sTcP$^~+S|_qZFeZW(EM7D zrd|0m2b3>$X*u`y@$T|l4(tm*{dR_q-$O4S%CGyDf7kK5Z~f`oV>#fDYuo2geumcb z(CCNux65xiP$yR%e_k$s{Ba2#k6p`$*4O3VEHAr`$4!^_>4iRrj&~^iZTY+U%N*Fo zuU&sH*S7tN86=oX#2FBrlIA#{FVdCKR>;1 z{JHP#yKnq@XzlUk!+*YS{P5f7Ki~KEhPLm%_b;?Rx1HbT*S6=-_S`nTUE32{{=Vh+ z`5W54hh9FEU-vEl%O1b`&JUkI{&Q&i{qp|vt443v{@iu>`(9sY`?~y=1O7bI=iBCw z)}v`?eOgY_(DM79U;C};L+_9BLDPNbN7sJK0Ub|2?fBF2M>wEzaoh5s^=KMepO(`! zw0xJ}azOd#ryYMf{s;$DE;@O*S$R;tHcdnM-;}QAyJ`BN^!7c!^06)r?Oz=oegCrQ zh1TEYw;a&%^V5z$uQq>n9q(Ps@4I~M+W&`MK6LyaI=}Y4|Dogk(DHZVYe(GYgFZhr zdFcAv$%AmrWgE#Kw098muG>3!qRuI=0R^7m~#y7uhX{OQK48!zF2 zu7jOCY?cS*lcu5k(sFfaD7`NKevMb%xa<4S@zipfhL(S5`IS#~X(&JH=;-@h>4lcx z_x#E?O+)*m0&Z_4&`C_3v6fw7%QU@At=l4y}LJ@}c#G=HIn_ zU3trKpAU73ydk+P;0yzir(1y?^`O zet&#I`?K%mL;Jh$`EPo>?mNBP9=G_-wMPSd+CA6nmi%ddQ^OGDdRM@Qdx^ehLI zAE9Z-zy0Q4==j~Y{Jy+~w(n(^@7ilQ;EzMyb11)VJAYj}>)wa9r;d)k-<4iy`Oy5@ zPEGH+{9V_l{nRwH{?PndkEVBBe%Jc6-I|8d3(c?f)TN>Hy8M;{9Y1|Z*vuE@mtRWX z*QKHP>*&DpdD2!Mw4A1vtE>O&`=;rtr2VUDInCFVFLOZo(ljlXUag~b<-7cr108>SN!ZL6 z<(FSd-`AyG{>^;7ZT|S4lcx_xumN|NB0EUHdHud^y(Vjz63EqkPhI-}$Bes7v>~fBW8ke_ZyxKVADR2mEo> z=Z-%wmp?iVb!q7M_;emx`OyA`=J)yQKZnxm@>>r0eAMTC=a2S7)BDyRZCBegv_Ea@ z(Q;jVmIKOM}*M8Kcq3x}s zQ}_O%)8DoKq2=#e{yMp+dmq~VIy(A(S9*6{KD55u&aZsbG_*b~r)g;UF2Ch~@-H+E z<)2S~-^z!!x65xi;E%gL-!^}=p1L%&{yIAP{$e%&-bLg{t+ z%j2QrqG`vUjz7YIyOIa3r!EbZ$2vOt{$e%&-bLg{t+%j2Qr zqG`vUjz7YIyOIa3N7GRG({h^Lb@|Zx9$J1K7fnO^ujMqo>++%XJ+%BfE}Dk+U(0EF z*X2X&>+)L;=y+{QL;2;?d)ei8ZBJqUx_Qv81Km2%tpnXU(5(aAI?$~H-8#^%1Km2%tpnXU(5(aAI?$~H z-8#^%1Km2%tpnXU(5(aAI?$~H-8#^%1Km2%tpnXU(5(aAI?$~H-8#^%1Km2%tpnXU z(5(aAI?$~H-8#^%1Km2%tpnXU(5(Y6cO9^`H~p`S)(`jo;0J#GpWww;dq38D{b$O* z{FHnD%zOWf?)~q1@29-~O7G`-U;CUt_@~nGmihaqdawUY^LqK8zr|lt@Ao`9Uzq$q z*^9mW|AhBd?f>^R@Bg=>|1*DrKlu0OTs>c>VN&nsv3>tf2-V1;J(a+j9U%3AM{0~Wc zc=@^JwCOML{;Rz|*6VrW_!rIlAM5>xU$OcAvMY8~^ZwuPzSsNXz256Cqf7py$^YZM z?>Rd9>wo6`SE%&6NBYL5|C9GWC-UstPs_}|KXmUu_ul^q<0ko^dGCLo_piCK#pLTQ z|8IKvM>Y9BsCj?v=zQ$a`7QTeSS|ksHtGGn8aln~;_CA1da*djdh`4ue{y_zm0uiP zogQT;=V$q4@91cLe)QzzJWWoH=2zzzmq*F<^Imp-`s^gX%I63D>KsRl{os6l zeUeY4uA|Xl`ZVfKvn-yDhxvRw8&0!#dfQ7+P3b|O;)5ig4Tq!IA{(Wn!DJ9nd_eK( zJQ>XML7K;lw4daQCdF;rBT5hR@q94s_eW9E?@wprCZ%25hZG;d}` zWbPtASS0B<&eHy9HknTHX`;jX_Fw<-jSn8ZMUhWGc*_;oK5C=0{7b{M$!s|5Cxc`b z$K&x#YMx)7A3a45Px77-&;~Lvm{N=)`3Vwhr5@sg!62W+vv@Y>k4N))GnO7*UL_Y- zl+NbyWH_29@N)L^v-*ZH}AduNzY8S-qEkV|IwRoynpo3yYD`J=hLH4 z-+1%=caC~b@~fjS5%Qzc{PgJZ_&d3Ib2BZ(;?pD*M#(R$RiyOWvK>RPv+k^p7+et)8z7L?_mDo zjFL9Jy67ET>bE5(>r)}V*hjSEAiyvx(;C*(}dp0J3z$7k0mMOM$pXNzQVY7&@Bf7> zulzRyDtTX*|MYr)+9u2Y`sII*x4!%P{2^x+9bY{^#2?xm zetvz{^q-RLrwirvyz+X(^8bReB0E~Y?zi7_<)1l$)qZQeIt~eCC5x8VeeHKY;wAsy zv&r(mT3*xN;g@3h-sdjs$2Qe`?(K5^>GQwl56PqT>pAXgHRWA*w0Q5|@t3^oFW=Zd zw7j=XH+dz8(vfqV{%uRz|2}c`zaACeuIK$PHRb=+Z`pF6f4fY*{M76HkDBs7`Uf`W zH-1DpW9j+j|4&W%@%QbB|GEmcExy**KdLGJ5C6!P|A8Dh3;)VbtbM$YcRv6B!GE(W z+8_RcN}eU6V86ZTDDYNPqYL ziiV=s`<`R}pW*M<_`k}tuHSN;E{_l|`1jl2v*rI;x%+GUm*ZAd`PcuSE&mO#!QNx< F{{vE9495Tf diff --git a/machine_interface/tests/data/test_sysld_wasm_matmul b/machine_interface/tests/data/test_sysld_wasm_matmul deleted file mode 100755 index 80efc7237970621c62dcd4f73ec0fabc9742ed27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851416 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


X 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 PC@^tlsxb9`w*3DEo8AWo literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..6df4a82ec9901c8c28f99c1f15a0112eeda2b563 GIT binary patch literal 9304 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..add02474e34f15a350f6a37b4eca43628346972b GIT binary patch literal 14384 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f17a8f8f0455836d38b67db7f702355cdbc6a84c GIT binary patch literal 10088 zcmeHNZE#fAd4BJ`=iI$otya6zqHplBk;Ss0i&(y7EI?q)SFuNNoJ>P(ixpaFB~~kW zcOl>zON#`OjETUQq{MY2|8X4EjYEDkO6bqfGgcKkam;{n2TrnaOm5 z`kZ^uSqmX*JB>3;>!Z1P-uu4qb3Wd4?tPE$(b$uR_vxC}sgqj_`Z;M*7SJi>Z$(^T z7ZP_Vm_VHvklT7Dcn|aqx^p9k_j}4#5+csZRZAFN?PyQCll!t$?oF=nci=^ zF5NvR`udXD52?WV-&TN*en<~~VE1Q-PmFZulKn%;OuoBs;8e1=Taf5`&fqc7k};7U z=+9VxdY@jn*L~j}N}THMODFQ(UmngLm({}Z_Zk9`Nem_55y5QR82<}U%;pA$GnX~BM6putFTz-5 zU^U6-@n3?jPZ_{@OQ`2rQiZ>|8X$}187NR#=$ilT{a>E>$JW0zAd5>BVHdW0ii`q% z5RH4xALph{Im>>l+r?Ogn{w?tbO9X^F|46ASC)y(z{t&di(Q_4gKQ zZaD+}EUj;;(VvYj(An#+Hy^ybg0$QE?k_T(rf$a&2>tUcHOtKK1Y;51^Gr(U*9!gT z7VB9`@c(H14?ee^&fV5mYM4`(FSwHo?R#7wx+UftKB!}oTEZdv+ai^79e$BkqTAKR zXPIZRc1EX*x5v?o+9SQuv6~le5VPZ$m}{DDjS7Ao^E7?rxhV6rwF_?TbA8bT=1b8f zq6HR8iPg5ino?k(J-03f-X`!2-8-tYc$|ASx6fMM$kih+L>(Us?Y%G@wTSy#`bBa5#M^8={ko`gO>b>wv2iB+=yq#m8DpNV_5wSSI`ZISu_Nj+=8Dp8euk@0^BQRh;zCX?TScr>o{P;>36$@w-yVRSCzSWzKUh5r+k`}lYH1uc?F$f}#!7?ivEcZr(6~1V&(jN^5 z1JPi0RW!IF6b;taM1%Ep(O_dkG`O-U8hm6`G^i2Q-L0PldUfP?V4sft2oO)1C2$Z= zt-!QSK7kpX`~pXGY?**roqkAHug4K%4Kdy%W4#$D=5q^>0k;AIxf-6`jNLFaFbRN}os4f8hMcVw-aZ{71G zuwj0~Ufc&7=G*oI>Y(3u5WQ}g-*|vXaf#CNalr#_BHANxGtmN^epX$Ch_G4EUJg2j(hp4;!H64#ndVag?=i`Lsf_rR#@pz=?cMz5ha3>KS zkM#U5!tw!j65;Vk&+o?YRX;8CQ}wTG1!UPjvlg=KpQj$O>>q1{Ec?e-LYDp0AAv0U zXROxQH9C8v?hJk=LKhcw8hsai{S~oi>db=qE23vYz*mUAFah}jJNtzY(bEew*|Gq? zwdX>q*i=<&CUo^>8oV+&Q+4&_`h|wcpTia!d~>pZ`U*P3W#Y1Md2#u0`EdnCo5EMF zuchf54J|A>6C&RNV}V=XB106Z+KcRhynyUb%R})xPfhzms4g!47Ae#;KyHdtSjej& zhvU>H;>JsuyI~BU_cxjAvUT}~Xrn~O=Xw0~Iw(E|c#!NcXbtgb$ zdgoUh^b}s{y0e$Y=;pbuJNszN66=<*W>1PW%T~>=W1RAkEgxjVq%7n>2(s=Wv99Zy zAmc4jTCe)Z{CdnMGad9>UI%?Xzk}XDm4jBO#zC{L!9muv%0axA&)weR(Wqhlbo2?0 zQhVq}#l6)U6EPk?JK0>&&yMPdCqq2zr>5hD&F7slV+?yl-0M#5Imr!gPr zM@{Loa_U07(BZ}mV}DZkSkm^0uyvMfdtLqv_!maK(r5M5rFdcQWvBfEG`3Ip_@wPK z!gio!+wbx(fq!|_FMS@Jx)LuO{+h!-L}LeqPXM-mzdLrRl(U;8Q2erB#7La znl-KPglR^MGBag>V~G8dhYboJu@g6pdwm%62K3BhrLbQKPgqu%m0KyXpJCvlp1~Q@ z#Li@)sB3;E_CspVQ|;`R>Wfua?FKa!nFn6zlh~_?dPRGp&PmIPlB4&)2#_jlU=o$39%$u6^`oa@lZI5=uYlkE_N5raz6r<=&Lem4eG38XVOkbFPAK8?YrYv9v0aL*dRw=}1; zF&FVsz$xl`xcqES?@K#A9ykSmgFEFv?=B1r;gqyXpf{D^x|M!wL3-3*%?*E`w$UHd zszm!OxLkKj!}k&Vt)$8>AuKvkI5wEf4INLO+Lp_o&Y#@WyEVNv)%OyPrM4YQzBrKW z+qyNANgPj}-kLsjdN6VPrM`S_$R0UO`RqV`I71uqLn9mV!`Wjg97dfu2B|xd&YsBS zhBpi*DT+QY8bXUq)Bej}K^h9~aB2TDlYY~FiR$@EFO}(Pl*VR_Z#Kic&gPpB@iiTM za|aKYZM?dlSIzRrjj}x7Y~*YnG%8>-a$&xD6AwoDI^z_SQNH6av@bgLF!x2EKN;pb z4E*uqGyC`soBL3)X}oxd`;5x4FheEGJIoGc`~8v)D%V!xJ;=7gG#d5w8Y=vfzFp({ zjg3}^X?%4|e^%p-rtxnS=3(m>e1*}|!NbNXn>ShqdDu}{dEUI5hgS2d)jarnyy_qi zuI7=QtGVAO54Z7VV<-%<8kE<0OpLAeGrT^+eFu1>;X7m+Z;V<0VEi*0*kW2ggGa{Z zPZ(8U-Z;R0>v-cv)3`EbJ3a83i|;YGd+tSuej9d7z`+i_29vnX#M~I|9el+`?#2BR zrcoB=&zm-^#-EMZJhX!cUK4Y>#rQE@;=ABeZ}a#!_^xqY56^L9d~U zK2*=KI{!R8kiqHX_At)Y!-o&=4R36>+iZL%d{A-f(Q%@o{y#xFiZ{i_IbS6^Gn`M7 z-FrHNBV)4rGbij+B9|ihTj=vyva`dziF|_WeDYM@@lFg49D_QU&JK5v;DCQ1(+_>J z=R|*ZqNgXDJgM#mGJV5JcB*on(gPXMtV8I_;^3R?W5Yw@c%8)Ibw1GpOo8A^E~*n; zg*exy?!8}pdiPTY@iqOoQAGSaxJtQ22@=)+MX0uxrZ2%2xlz$nzEp@~0jG$3DcZse zIz{DCd`zcbE-VZyzRH&ho29?9E51}yJp@s=va9^6Ff1LFUG-n#Be3HX1C99J<0 zr>N&c{(sGgRIB}pieEtLalYZqiQY2qsQ3!Ai*$=!%U8O0>(xS$M#WRUqY#$rgspwG>k)OK z^jpPWDPDyj_)GhLRPt+;qeRt~!Yk01*4`rDQ<8sF>cszO2tU=ndj8&oZpjoojCsj_ c&$;{HmugpOz6oJD{$#}UkYQBr_r>bJ0p{iH?f?J) literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ad478129d773c0b3f2f7bc6c74c2a7ff36f8bb69 GIT binary patch literal 10672 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2b80fb4e5bd229889d807875d10cf5fb29d00125 GIT binary patch literal 6368 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9be253cd4c4b0e9e24b53d2c7e3de3310f3ec8e9 GIT binary patch literal 8624 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

#f9zet9wxePUo@bRaqT{P{Pc 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b0ee00ef62b38a4cd6354da8c30761f908065e84 GIT binary patch literal 15776 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 VHOTLv@mcz3Yc+|DFJK$>{~vD#+Cu;U literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f384531d67fcd78e5d293e11d556218582331fe8 GIT binary patch literal 16656 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5e05b8068f7c05c45ab0fdec31212ea299a2809a GIT binary patch literal 11128 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/simple_conv/poi_fused_miopen_batch_norm_0.hsaco b/machine_interface/tests/libs/simple_conv/poi_fused_miopen_batch_norm_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..fae5e2d49f8e18f643bfcfd16890ce3230e941ac GIT binary patch literal 4368 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 literal 0 HcmV?d00001 From 377a3d94b42409c43e1062a38ca88079a6fe4426 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 18 Nov 2024 17:17:59 +0100 Subject: [PATCH 136/176] tests update --- .../gpu/gpu_tests/compiled_tests.rs | 128 ++++-------------- .../gpu/gpu_tests/load_models.rs | 26 +++- .../gpu/gpu_tests/tests_utils.rs | 15 +- .../tests/data/test_gpu_simple_conv.json | 23 +--- .../tests/data/test_gpu_simple_resnet.json | 24 ++++ ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 10672 -> 10672 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 6368 -> 6368 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 8624 -> 8624 bytes .../poi_fused_miopen_batch_norm_0.hsaco | Bin 4368 -> 4456 bytes .../tem_fused_miopen_batch_norm_1.hsaco | Bin 6464 -> 0 bytes ...tem_fused_conv2d_miopen_batch_norm_0.hsaco | Bin 0 -> 14104 bytes 11 files changed, 91 insertions(+), 125 deletions(-) create mode 100644 machine_interface/tests/data/test_gpu_simple_resnet.json delete mode 100644 machine_interface/tests/libs/simple_conv/tem_fused_miopen_batch_norm_1.hsaco create mode 100644 machine_interface/tests/libs/simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs index 9ba9d298..f6d5199e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs @@ -32,8 +32,8 @@ fn full_double_matmul() { let (output_size, output_name, expected, function_context) = load_double_matmul(function_context); let result_context = execute_test(function_context, config, queue, &output_name); - let read_buffer = get_result(result_context, output_size); - compare_result(expected, read_buffer); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); drop(lock); } @@ -47,8 +47,8 @@ fn alexnet() { let (mut function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_alexnet(function_context); let result_context = execute_test(function_context, config, queue, &output_name); - let read_buffer = get_result(result_context, output_size); - compare_result(expected, read_buffer); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); drop(lock); } @@ -62,68 +62,23 @@ fn lenet5() { let (mut function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_lenet5(function_context); let result_context = execute_test(function_context, config, queue, &output_name); - let read_buffer = get_result(result_context, output_size); - compare_result(expected, read_buffer); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); drop(lock); } #[test] fn simple_conv() { - use std::env; - env::set_var("RUST_BACKTRACE", "1"); - let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( "{}/tests/data/test_gpu_simple_conv.json", env!("CARGO_MANIFEST_DIR") ); - let dom_init = MemoryResource::None; - let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; - let (mut function_context, config, queue) = - prepare_engine_and_function::(filename, dom_init, &driver, drv_init); - + let (mut function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_simple_conv(function_context); - - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from(&output_name)]), - recorder: recorder.get_sub_recorder().unwrap(), - }); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - let position = output_item.buffers[0].data; - assert_eq!(output_size, position.size, "Checking for size of output"); - let mut read_buffer = vec![0f32; position.size / 4]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - for (should, is) in expected.iter().zip(read_buffer.iter()) { - //assert_eq!(should, is, "Checking final result"); - println!("{should}\t\t{is}"); - } - println!("Correct result!"); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, false); + compare_result(expected, read_buffer, false); drop(lock); } @@ -134,52 +89,25 @@ fn resnet18() { "{}/tests/data/test_gpu_resnet18.json", env!("CARGO_MANIFEST_DIR") ); - let dom_init = MemoryResource::None; - let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; - let (mut function_context, config, queue) = - prepare_engine_and_function::(filename, dom_init, &driver, drv_init); - + let (mut function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, false); + compare_result(expected, read_buffer, false); + drop(lock); +} - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from(&output_name)]), - recorder: recorder.get_sub_recorder().unwrap(), - }); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - let position = output_item.buffers[0].data; - assert_eq!(output_size, position.size, "Checking for size of output"); - let mut read_buffer = vec![0f32; position.size / 4]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - for (should, is) in expected.iter().zip(read_buffer.iter()) { - //assert_eq!(should, is, "Checking final result"); - println!("{should}\t\t{is}"); - } - println!("Correct result!"); +#[test] +fn simple_resnet() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_simple_resnet.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_simple_resnet(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, false); + compare_result(expected, read_buffer, false); drop(lock); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs index 2790330f..9c837e53 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -142,11 +142,11 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, pub fn load_simple_conv(mut function_context: Context) -> (usize, String, Vec, Context) { let constants_path = "/home/alrusso/pytorch-aot/processed/simple_conv/constants"; - add_buffer("arg7_1", 100, constants_path, &mut function_context); - add_buffer("conv_weight", 36, constants_path, &mut function_context); + add_buffer("arg5_1", 196, constants_path, &mut function_context); + add_number("var_2", 49, &mut function_context); - let output_name: &str = "buf2"; - let output_size: usize = 36; + let output_name: &str = "buf0"; + let output_size: usize = 196; let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) @@ -206,3 +206,21 @@ pub fn load_lenet5(mut function_context: Context) -> (usize, String, Vec, C (output_size, output_name.to_string(), expected, function_context) } + +pub fn load_simple_resnet(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/simple_resnet/constants"; + + add_buffer("arg7_1", 602112, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("conv1_bias", 256, constants_path, &mut function_context); + add_empty_buffer("batch_running_mean", 256, &mut function_context); + add_empty_buffer("batch_running_var", 256, &mut function_context); + add_buffer("batch_weight", 256, constants_path, &mut function_context); + add_buffer("batch_bias", 256, constants_path, &mut function_context); + + let output_name: &str = "buf1"; + let output_size: usize = 3211264; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index 6ec72a14..f98d7965 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -51,12 +51,14 @@ pub fn execute_test( result_context } -pub fn get_result(result_context: Context, output_size: usize) -> Vec { +pub fn get_result(result_context: Context, output_size: usize, asserts: bool) -> Vec { let output_item = result_context.content[0] .as_ref() .expect("Set should be present"); let position = output_item.buffers[0].data; - assert_eq!(output_size, position.size, "Checking for size of output"); + if (asserts) { + assert_eq!(output_size, position.size, "Checking for size of output"); + } let mut read_buffer = vec![0f32; position.size / 4]; result_context .context @@ -65,12 +67,17 @@ pub fn get_result(result_context: Context, output_size: usize) -> Vec { read_buffer } -pub fn compare_result(expected: Vec, read_buffer: Vec) { +pub fn compare_result(expected: Vec, read_buffer: Vec, asserts: bool) { const DELTA: f32 = 0.00001; for (should, is) in expected.iter().zip(read_buffer.iter()) { let diff = should - is; let abs_diff = diff.abs(); - assert!(abs_diff <= DELTA, "Checking final result"); + if (asserts) { + assert!(abs_diff <= DELTA, "Checking final result"); + } else { + let ratio = should / is; + println!("{should}\t\t{is}\t\t{abs_diff}\t\t{ratio}"); + } } println!("Correct result!"); } diff --git a/machine_interface/tests/data/test_gpu_simple_conv.json b/machine_interface/tests/data/test_gpu_simple_conv.json index f86ce135..63ca36d2 100644 --- a/machine_interface/tests/data/test_gpu_simple_conv.json +++ b/machine_interface/tests/data/test_gpu_simple_conv.json @@ -1,18 +1,16 @@ { "modules": [ - {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "path": "simple_conv/poi_fused_miopen_batch_norm_0.hsaco"}, - {"module_name": "tem_fused_miopen_batch_norm_1.hsaco", "path": "simple_conv/tem_fused_miopen_batch_norm_1.hsaco"} + {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "path": "simple_conv/poi_fused_miopen_batch_norm_0.hsaco"} ], "kernels": [ - {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "kernel_name": "kern000"}, - {"module_name": "tem_fused_miopen_batch_norm_1.hsaco", "kernel_name": "kern001"} + {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "kernel_name": "kern000"} ], "blueprint": { - "inputs": ["arg7_1", "conv_weight"], - "buffers": {"buf0": {"Absolute": 4}, "buf2": {"Absolute": 36}}, - "outputs": ["buf2"], + "inputs": ["arg5_1", "var_2"], + "buffers": {"buf0": {"Absolute": 196}}, + "outputs": ["buf0"], "control_flow": [ - {"ExecKernel": ["kern000", [{"Ptr": "buf0"}], { + {"ExecKernel": ["kern000", [{"Ptr": "arg5_1"}, {"Ptr": "buf0"}, {"Ptr": "var_2"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -20,15 +18,6 @@ "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["kern001", [{"Ptr": "arg7_1"}, {"Ptr": "conv_weight"}, {"Ptr": "buf0"}, {"Ptr": "buf2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 128}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 2048} }]} ] } diff --git a/machine_interface/tests/data/test_gpu_simple_resnet.json b/machine_interface/tests/data/test_gpu_simple_resnet.json new file mode 100644 index 00000000..be55e32a --- /dev/null +++ b/machine_interface/tests/data/test_gpu_simple_resnet.json @@ -0,0 +1,24 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_0.hsaco", "path": "simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_0.hsaco", "kernel_name": "kern000"} + ], + "blueprint": { + "inputs": ["arg7_1", "conv1_weight", "conv1_bias", "batch_running_mean", "batch_running_var", "batch_weight", "batch_bias"], + "buffers": {"buf1": {"Absolute": 3211264}}, + "outputs": ["buf1"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg7_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "conv1_bias"}, {"Ptr": "batch_running_mean"}, {"Ptr": "batch_running_var"}, {"Ptr": "batch_weight"}, {"Ptr": "batch_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco index ad478129d773c0b3f2f7bc6c74c2a7ff36f8bb69..4b22f08bed2076668fffecab4ecc7ed5a4227242 100644 GIT binary patch delta 169 zcmdlGydikQPFX2k1_QQ{Ex2SEk~CicmfWveE)$|+l=S1}}~S5>A~6jzz2m?oEG z7FSl}S0tvTm!>6UR+tu)nPr$}RVJDk8|9dkWaU>BmsaLhR2J(MR8C$cXTg+SHTj90 OuQ3@WY)+B);Q|08#W`RA delta 169 zcmdlGydikQPFX2-1_*EmQQ{Ex2SEk~Ci}^kWvk4St8&fKvhynw&9h34%M$Z)3X+ra zjk8ls6HRh5(~C@stBNY}jmt_3iW1Y)^2{o8D$I@a3Mwc2$f+<@4Vs=(qMS8w@zHwe+T7Fe!W?@0Paba4vaiU&9<>W2_3k#rjvh;8M ICGdk23{$~%tu!wH diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco index 9be253cd4c4b0e9e24b53d2c7e3de3310f3ec8e9..4f0b88c87c97d77bccf57b622c297883b2da4453 100644 GIT binary patch delta 169 zcmdnsyuo?HPBAH61_QQ{Ex9WDk2Cicmf#j+-siYr?c<})N0=BH$pl$hmb6;$OE zWSJKh85Nr)RhXIPWM@^HCZ-$Z=b2R&733ymm8MmgnCF_A8s+E}R8F2HZoyQTKlzHd OuQ3@WYz~o#;RFCm0X75x delta 169 zcmdnsyuo?HPBAHV1_*EmQQ{Ex9WDk2Ci}^k#j?zk%aaQ-D@sj_(oBrZ%&Sb&(=##( z%kr}_D$LW9b5e@ajY`w<@)9#L%Zt-ea}vukQcDZ;3Mwbth^sJ_Cr_RwZULgMi2E9o LVbJCfi5N}*lM^?Y diff --git a/machine_interface/tests/libs/simple_conv/poi_fused_miopen_batch_norm_0.hsaco b/machine_interface/tests/libs/simple_conv/poi_fused_miopen_batch_norm_0.hsaco index fae5e2d49f8e18f643bfcfd16890ce3230e941ac..fc21a04ea48a153a8ed69fbeb861873ad57e469e 100644 GIT binary patch delta 900 zcmbVK%}*0S6rY)$S()wEE*~}~K%w{rhb0u!MUAu^H6HXvj0p%Wu(YsSS&=H*MH53J zi8Sxxfy8KHgvi0l-E#3C;N*deHz6_U-2=|jZH(dOOZLrszj^cK_kKGY@t^UH%Xq8Y zYbl7Ky0P+mox8N2xaD^(7i1B;+y{F9UF~{`T+nb-J5>c&@TKlksNdu7*;PE#p^|#5 z#_BUbX9WBk7#YF$JlJ1KyKI+!=^kUXgKj@3*<1GE8FWt{S%#P>Gh0NAu zar`8MC*%fhg>U2z4nR~&Ub zs_Yz>QpmLr5Gjc+tGoS7qmX7nNb@G53Ua&?Z-U8V&11d<4JB4+dG#!O=3V!^`^kwi zUX=1&o97VnMsgmQjU_Ba|UCJfr7wycvH8Yh@W;2DH zwd`2Vypfy9OzL(Ke(`pichDBxQj#SR{BI+K1s4`o5GM_GQY&U{{j4X>+WS~%g7wG_ zJ0}mY=4I9HY<|O7azdcLmIl!8iSE6ShM}`Hc#-P+D9v5bo!0P>L}uMlm6D(Mxx!2h(_|#~zGnm9$_5VvA6W?cznP zjR9Z(gLuRAXkx*5@#x)y@#M+y6FLinrs39??0os&d-LYYx9?B96>k}^+)kG9rmD3& zM$VSWFvdu<5eE)l{@HBA?c`~!j40`$4m0{h7v6%z+(cH)_yeK86pt|qLF63I z9ioS3ppDPzEUwTv{-#Ud!)ww#P;ggD1K=m=85**t8^aldxN>!_+`%Pz4|`Jv^NEUs zKjbuip1O`*&@MaV@I^7^eDRXk$CP+`Zj(dF?q2WUm^hW6oE|;!L}YZBk9H*7XHm%D zM>ab>klbEE#yUfCyLkZzEEb9KEG1WlRdJjjAy3t3Ii2 zW!L973Y*nZWwp@Aj9?iAHOm~q9L%YAz{WS~4fb!*u&-vPyJBU!?tkU6?8Ucg z1QWq9bTJpS*f&wQiu-C5KLo?{FT=0F1$I{%-FQDNB(yO7rQo8r!1t%ASrEfMKOF?! Jf)wWT#0lhCoeKZ} diff --git a/machine_interface/tests/libs/simple_conv/tem_fused_miopen_batch_norm_1.hsaco b/machine_interface/tests/libs/simple_conv/tem_fused_miopen_batch_norm_1.hsaco deleted file mode 100644 index cba4cfedad15a19419d30d838e09dc8a09f17e1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6464 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 diff --git a/machine_interface/tests/libs/simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco b/machine_interface/tests/libs/simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9df0dbe1aa8bd70c646478a1c62b9231a4c4b396 GIT binary patch literal 14104 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 Date: Mon, 18 Nov 2024 17:25:33 +0100 Subject: [PATCH 137/176] update of old JSON test files to new format --- .../tests/data/test_gpu_basic_io.json.old | 20 ---------- .../tests/data/test_gpu_inference.json.old | 40 ------------------- .../data/test_gpu_inference_batched.json | 8 +++- .../tests/data/test_gpu_matmul_loop.json | 4 +- .../tests/data/test_gpu_matmul_para.json | 4 +- 5 files changed, 10 insertions(+), 66 deletions(-) delete mode 100644 machine_interface/tests/data/test_gpu_basic_io.json.old delete mode 100644 machine_interface/tests/data/test_gpu_inference.json.old diff --git a/machine_interface/tests/data/test_gpu_basic_io.json.old b/machine_interface/tests/data/test_gpu_basic_io.json.old deleted file mode 100644 index a633f342..00000000 --- a/machine_interface/tests/data/test_gpu_basic_io.json.old +++ /dev/null @@ -1,20 +0,0 @@ -{ - "module_path": "module.hsaco", - "kernels": ["check_then_write"], - "blueprint": { - "inputs": ["A"], - "buffers": {}, - "outputs": ["A"], - "control_flow": [ - {"ExecKernel": ["check_then_write", [{"Ptr": "A"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]} - ] - } -} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_inference.json.old b/machine_interface/tests/data/test_gpu_inference.json.old deleted file mode 100644 index ee6e8d46..00000000 --- a/machine_interface/tests/data/test_gpu_inference.json.old +++ /dev/null @@ -1,40 +0,0 @@ -{ - "module_path": "mlops.hsaco", - "kernels": ["matmul_f", "convolution_f", "relu_2d_f", "maxpool_f"], - "blueprint": { - "inputs": ["cfg", "A", "B"], - "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, - "outputs": ["D"], - "control_flow": [ - {"Repeat": [{"FromInput": {"bufname": "cfg", "idx": 3}}, [ - {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["relu_2d_f", [{"Ptr": "C"}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["maxpool_f", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}] - ]} - ] - } -} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_inference_batched.json b/machine_interface/tests/data/test_gpu_inference_batched.json index 3ae4a3ef..705a6574 100644 --- a/machine_interface/tests/data/test_gpu_inference_batched.json +++ b/machine_interface/tests/data/test_gpu_inference_batched.json @@ -1,6 +1,10 @@ { - "module_path": "mlops.hsaco", - "kernels": ["convolution_f_batched", "relu_2d_f_batched", "maxpool_f_batched"], + "modules": [ { "module_name": "mlops.hsaco", "path": "mlops.hsaco" } ], + "kernels": [ + { "module_name": "mlops.hsaco", "kernel_name": "convolution_f_batched" }, + { "module_name": "mlops.hsaco", "kernel_name": "relu_2d_f_batched" }, + { "module_name": "mlops.hsaco", "kernel_name": "maxpool_f_batched" } + ], "blueprint": { "inputs": ["cfg", "A", "B"], "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, diff --git a/machine_interface/tests/data/test_gpu_matmul_loop.json b/machine_interface/tests/data/test_gpu_matmul_loop.json index f2d83c8e..80950aee 100644 --- a/machine_interface/tests/data/test_gpu_matmul_loop.json +++ b/machine_interface/tests/data/test_gpu_matmul_loop.json @@ -1,6 +1,6 @@ { - "module_path": "mlops.hsaco", - "kernels": ["matmul_loop"], + "modules": [ { "module_name": "mlops.hsaco", "path": "mlops.hsaco" } ], + "kernels": [ { "module_name": "mlops.hsaco", "kernel_name": "matmul_loop" } ], "blueprint": { "inputs": ["A"], "buffers": {"B": {"Sizeof": "A"}}, diff --git a/machine_interface/tests/data/test_gpu_matmul_para.json b/machine_interface/tests/data/test_gpu_matmul_para.json index 732a5505..eb27a64e 100644 --- a/machine_interface/tests/data/test_gpu_matmul_para.json +++ b/machine_interface/tests/data/test_gpu_matmul_para.json @@ -1,6 +1,6 @@ { - "module_path": "mlops.hsaco", - "kernels": ["matmul_para"], + "modules": [ { "module_name": "mlops.hsaco", "path": "mlops.hsaco" } ], + "kernels": [ { "module_name": "mlops.hsaco", "kernel_name": "matmul_para" } ], "blueprint": { "inputs": ["cfg", "A"], "buffers": {"B": {"Sizeof": "A"}}, From 6478358492bb20fb5d6b087fa9f42a86d1412fc5 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Tue, 19 Nov 2024 20:48:58 +0100 Subject: [PATCH 138/176] BatchNorm now functioning --- .../gpu/gpu_tests/compiled_tests.rs | 26 +--- .../gpu/gpu_tests/load_models.rs | 122 ++++++++---------- .../gpu/gpu_tests/tests_utils.rs | 17 ++- .../tests/data/test_gpu_batch_norm.json | 57 ++++++++ .../tests/data/test_gpu_resnet18.json | 4 +- .../tests/data/test_gpu_simple_conv.json | 24 ---- .../tests/data/test_gpu_simple_resnet.json | 24 ---- .../tests/libs/batch_norm/poi_fused_2.hsaco | Bin 0 -> 4464 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5056 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 8864 bytes .../libs/batch_norm/tem_fused_linear_3.hsaco | Bin 0 -> 8144 bytes ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin 5360 -> 5704 bytes .../poi_fused_miopen_batch_norm_0.hsaco | Bin 4456 -> 0 bytes ...tem_fused_conv2d_miopen_batch_norm_0.hsaco | Bin 14104 -> 0 bytes 14 files changed, 131 insertions(+), 143 deletions(-) create mode 100644 machine_interface/tests/data/test_gpu_batch_norm.json delete mode 100644 machine_interface/tests/data/test_gpu_simple_conv.json delete mode 100644 machine_interface/tests/data/test_gpu_simple_resnet.json create mode 100644 machine_interface/tests/libs/batch_norm/poi_fused_2.hsaco create mode 100644 machine_interface/tests/libs/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/batch_norm/tem_fused_linear_3.hsaco delete mode 100644 machine_interface/tests/libs/simple_conv/poi_fused_miopen_batch_norm_0.hsaco delete mode 100644 machine_interface/tests/libs/simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs index f6d5199e..1ac05fa7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs @@ -19,6 +19,7 @@ fn test_all() { full_double_matmul(); alexnet(); lenet5(); + resnet18(); } #[test] @@ -67,21 +68,6 @@ fn lenet5() { drop(lock); } -#[test] -fn simple_conv() { - let lock = GPU_LOCK.lock().unwrap(); - let filename = &format!( - "{}/tests/data/test_gpu_simple_conv.json", - env!("CARGO_MANIFEST_DIR") - ); - let (mut function_context, config, queue) = setup_test(&filename); - let (output_size, output_name, expected, function_context) = load_simple_conv(function_context); - let result_context = execute_test(function_context, config, queue, &output_name); - let read_buffer = get_result(result_context, output_size, false); - compare_result(expected, read_buffer, false); - drop(lock); -} - #[test] fn resnet18() { let lock = GPU_LOCK.lock().unwrap(); @@ -92,20 +78,20 @@ fn resnet18() { let (mut function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18(function_context); let result_context = execute_test(function_context, config, queue, &output_name); - let read_buffer = get_result(result_context, output_size, false); - compare_result(expected, read_buffer, false); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); drop(lock); } #[test] -fn simple_resnet() { +fn batch_norm() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_simple_resnet.json", + "{}/tests/data/test_gpu_batch_norm.json", env!("CARGO_MANIFEST_DIR") ); let (mut function_context, config, queue) = setup_test(&filename); - let (output_size, output_name, expected, function_context) = load_simple_resnet(function_context); + let (output_size, output_name, expected, function_context) = load_batch_norm(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, false); compare_result(expected, read_buffer, false); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs index 9c837e53..cd7c3fc9 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -24,107 +24,107 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("arg122_1", 602112, constants_path, &mut function_context); add_buffer("conv1_weight", 37632, constants_path, &mut function_context); - add_empty_buffer("bn1_running_mean", 256, &mut function_context); - add_empty_buffer("bn1_running_var", 256, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); add_buffer("bn1_weight", 256, constants_path, &mut function_context); add_buffer("bn1_bias", 256, constants_path, &mut function_context); add_number("var_9", 200704, &mut function_context); add_buffer("layer1_0_conv1_weight", 147456, constants_path, &mut function_context); - add_empty_buffer("layer1_0_bn1_running_mean", 256, &mut function_context); - add_empty_buffer("layer1_0_bn1_running_var", 256, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); - add_empty_buffer("layer1_0_bn2_running_mean", 256, &mut function_context); - add_empty_buffer("layer1_0_bn2_running_var", 256, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); add_buffer("layer1_1_conv1_weight", 147456, constants_path, &mut function_context); - add_empty_buffer("layer1_1_bn1_running_mean", 256, &mut function_context); - add_empty_buffer("layer1_1_bn1_running_var", 256, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); - add_empty_buffer("layer1_1_bn2_running_mean", 256, &mut function_context); - add_empty_buffer("layer1_1_bn2_running_var", 256, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); add_buffer("layer2_0_conv1_weight", 294912, constants_path, &mut function_context); - add_empty_buffer("layer2_0_bn1_running_mean", 512, &mut function_context); - add_empty_buffer("layer2_0_bn1_running_var", 512, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); add_buffer("layer2_0_downsample_0_weight", 32768, constants_path, &mut function_context); - add_empty_buffer("layer2_0_bn2_running_mean", 512, &mut function_context); - add_empty_buffer("layer2_0_bn2_running_var", 512, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); - add_empty_buffer("layer2_0_downsample_1_running_mean", 512, &mut function_context); - add_empty_buffer("layer2_0_downsample_1_running_var", 512, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); - add_empty_buffer("layer2_1_bn1_running_mean", 512, &mut function_context); - add_empty_buffer("layer2_1_bn1_running_var", 512, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); - add_empty_buffer("layer2_1_bn2_running_mean", 512, &mut function_context); - add_empty_buffer("layer2_1_bn2_running_var", 512, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); add_buffer("layer3_0_conv1_weight", 1179648, constants_path, &mut function_context); - add_empty_buffer("layer3_0_bn1_running_mean", 1024, &mut function_context); - add_empty_buffer("layer3_0_bn1_running_var", 1024, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); add_buffer("layer3_0_downsample_0_weight", 131072, constants_path, &mut function_context); - add_empty_buffer("layer3_0_bn2_running_mean", 1024, &mut function_context); - add_empty_buffer("layer3_0_bn2_running_var", 1024, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); - add_empty_buffer("layer3_0_downsample_1_running_mean", 1024, &mut function_context); - add_empty_buffer("layer3_0_downsample_1_running_var", 1024, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_0_downsample_1_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_0_downsample_1_bias", 1024, constants_path, &mut function_context); add_buffer("layer3_1_conv1_weight", 2359296, constants_path, &mut function_context); - add_empty_buffer("layer3_1_bn1_running_mean", 1024, &mut function_context); - add_empty_buffer("layer3_1_bn1_running_var", 1024, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); add_number("var_107", 50176, &mut function_context); add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); - add_empty_buffer("layer3_1_bn2_running_mean", 1024, &mut function_context); - add_empty_buffer("layer3_1_bn2_running_var", 1024, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); add_number("var_117", 50176, &mut function_context); add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); - add_empty_buffer("layer4_0_bn1_running_mean", 2048, &mut function_context); - add_empty_buffer("layer4_0_bn1_running_var", 2048, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); add_buffer("layer4_0_downsample_0_weight", 524288, constants_path, &mut function_context); - add_empty_buffer("layer4_0_bn2_running_mean", 2048, &mut function_context); - add_empty_buffer("layer4_0_bn2_running_var", 2048, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); - add_empty_buffer("layer4_0_downsample_1_running_mean", 2048, &mut function_context); - add_empty_buffer("layer4_0_downsample_1_running_var", 2048, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); add_number("var_141", 25088, &mut function_context); add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); - add_empty_buffer("layer4_1_bn1_running_mean", 2048, &mut function_context); - add_empty_buffer("layer4_1_bn1_running_var", 2048, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); - add_empty_buffer("layer4_1_bn2_running_mean", 2048, &mut function_context); - add_empty_buffer("layer4_1_bn2_running_var", 2048, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); add_number("var_159", 512, &mut function_context); @@ -139,19 +139,6 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } -pub fn load_simple_conv(mut function_context: Context) -> (usize, String, Vec, Context) { - let constants_path = "/home/alrusso/pytorch-aot/processed/simple_conv/constants"; - - add_buffer("arg5_1", 196, constants_path, &mut function_context); - add_number("var_2", 49, &mut function_context); - - let output_name: &str = "buf0"; - let output_size: usize = 196; - let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_alexnet(mut function_context: Context) -> (usize, String, Vec, Context) { let constants_path = "/home/alrusso/pytorch-aot/processed/alexnet/constants"; @@ -207,19 +194,22 @@ pub fn load_lenet5(mut function_context: Context) -> (usize, String, Vec, C (output_size, output_name.to_string(), expected, function_context) } -pub fn load_simple_resnet(mut function_context: Context) -> (usize, String, Vec, Context) { - let constants_path = "/home/alrusso/pytorch-aot/processed/simple_resnet/constants"; - - add_buffer("arg7_1", 602112, constants_path, &mut function_context); - add_buffer("conv1_weight", 37632, constants_path, &mut function_context); - add_buffer("conv1_bias", 256, constants_path, &mut function_context); - add_empty_buffer("batch_running_mean", 256, &mut function_context); - add_empty_buffer("batch_running_var", 256, &mut function_context); - add_buffer("batch_weight", 256, constants_path, &mut function_context); - add_buffer("batch_bias", 256, constants_path, &mut function_context); - - let output_name: &str = "buf1"; - let output_size: usize = 3211264; +pub fn load_batch_norm(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/batch_norm/constants"; + + add_buffer("arg9_1", 6400, constants_path, &mut function_context); + add_buffer("conv_weight", 147456, constants_path, &mut function_context); + add_buffer("conv_bias", 256, constants_path, &mut function_context); + add_buffer("bn_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn_running_var", 256, constants_path, &mut function_context); + add_buffer("bn_weight", 256, constants_path, &mut function_context); + add_buffer("bn_bias", 256, constants_path, &mut function_context); + add_number("var_10", 256, &mut function_context); + add_number("var_12", 3, &mut function_context); + add_buffer("fc_weight", 3072, constants_path, &mut function_context); + + let output_name: &str = "buf5"; + let output_size: usize = 12; let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index f98d7965..fe3b9d0c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -56,8 +56,10 @@ pub fn get_result(result_context: Context, output_size: usize, asserts: bool) -> .as_ref() .expect("Set should be present"); let position = output_item.buffers[0].data; - if (asserts) { + if asserts { assert_eq!(output_size, position.size, "Checking for size of output"); + } else { + println!("Expected output size: {output_size}\t\tActual size: {0}", position.size); } let mut read_buffer = vec![0f32; position.size / 4]; result_context @@ -68,15 +70,16 @@ pub fn get_result(result_context: Context, output_size: usize, asserts: bool) -> } pub fn compare_result(expected: Vec, read_buffer: Vec, asserts: bool) { - const DELTA: f32 = 0.00001; + const DELTA: f32 = 0.003; for (should, is) in expected.iter().zip(read_buffer.iter()) { - let diff = should - is; + let mut ratio = should / is; + if ratio.is_nan() { ratio = 1.0; } + let diff = ratio - 1.0; let abs_diff = diff.abs(); - if (asserts) { - assert!(abs_diff <= DELTA, "Checking final result"); + if asserts { + assert!(abs_diff <= DELTA, "Checking final result: {should} - {is}"); } else { - let ratio = should / is; - println!("{should}\t\t{is}\t\t{abs_diff}\t\t{ratio}"); + println!("{should:10.3}\t{is:10.3}\t{abs_diff:10.3}\t{ratio:10.3}"); } } println!("Correct result!"); diff --git a/machine_interface/tests/data/test_gpu_batch_norm.json b/machine_interface/tests/data/test_gpu_batch_norm.json new file mode 100644 index 00000000..c3ca3ed5 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_batch_norm.json @@ -0,0 +1,57 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_2.hsaco", "path": "batch_norm/poi_fused_2.hsaco"}, + {"module_name": "tem_fused_linear_3.hsaco", "path": "batch_norm/tem_fused_linear_3.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_linear_3.hsaco", "kernel_name": "kern003"} + ], + "blueprint": { + "inputs": ["arg9_1", "conv_weight", "conv_bias", "bn_running_mean", "bn_running_var", "bn_weight", "bn_bias", "var_10", "var_12", "fc_weight"], + "buffers": {"buf1": {"Absolute": 6400}, "buf2": {"Absolute": 1024}, "buf4": {"Absolute": 12}, "buf5": {"Absolute": 12}}, + "outputs": ["buf5"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg9_1"}, {"Ptr": "conv_weight"}, {"Ptr": "conv_bias"}, {"Ptr": "bn_running_mean"}, {"Ptr": "bn_running_var"}, {"Ptr": "bn_weight"}, {"Ptr": "bn_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 2560} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf2"}, {"Ptr": "buf1"}, {"Ptr": "var_10"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf4"}, {"Ptr": "var_12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "buf2"}, {"Ptr": "fc_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18.json b/machine_interface/tests/data/test_gpu_resnet18.json index 4d010250..2b4e9320 100644 --- a/machine_interface/tests/data/test_gpu_resnet18.json +++ b/machine_interface/tests/data/test_gpu_resnet18.json @@ -204,10 +204,10 @@ "shared_mem_bytes": {"Absolute": 8192} }]}, {"ExecKernel": ["kern017", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_117"}], { - "grid_dim_x": {"Absolute": 196}, + "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 256}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} diff --git a/machine_interface/tests/data/test_gpu_simple_conv.json b/machine_interface/tests/data/test_gpu_simple_conv.json deleted file mode 100644 index 63ca36d2..00000000 --- a/machine_interface/tests/data/test_gpu_simple_conv.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "modules": [ - {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "path": "simple_conv/poi_fused_miopen_batch_norm_0.hsaco"} - ], - "kernels": [ - {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "kernel_name": "kern000"} - ], - "blueprint": { - "inputs": ["arg5_1", "var_2"], - "buffers": {"buf0": {"Absolute": 196}}, - "outputs": ["buf0"], - "control_flow": [ - {"ExecKernel": ["kern000", [{"Ptr": "arg5_1"}, {"Ptr": "buf0"}, {"Ptr": "var_2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]} - ] - } -} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_simple_resnet.json b/machine_interface/tests/data/test_gpu_simple_resnet.json deleted file mode 100644 index be55e32a..00000000 --- a/machine_interface/tests/data/test_gpu_simple_resnet.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_0.hsaco", "path": "simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco"} - ], - "kernels": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_0.hsaco", "kernel_name": "kern000"} - ], - "blueprint": { - "inputs": ["arg7_1", "conv1_weight", "conv1_bias", "batch_running_mean", "batch_running_var", "batch_weight", "batch_bias"], - "buffers": {"buf1": {"Absolute": 3211264}}, - "outputs": ["buf1"], - "control_flow": [ - {"ExecKernel": ["kern000", [{"Ptr": "arg7_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "conv1_bias"}, {"Ptr": "batch_running_mean"}, {"Ptr": "batch_running_var"}, {"Ptr": "batch_weight"}, {"Ptr": "batch_bias"}, {"Ptr": "buf1"}], { - "grid_dim_x": {"Absolute": 196}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 256}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 8704} - }]} - ] - } -} \ No newline at end of file diff --git a/machine_interface/tests/libs/batch_norm/poi_fused_2.hsaco b/machine_interface/tests/libs/batch_norm/poi_fused_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..393494bf49c8a515dd44bf4d83fe0ef3fa46f0e3 GIT binary patch literal 4464 zcmeHKO^g&(5U%d|arklFT_6ko#EDt(C)u|vvVg|u5b-ZrjGCBW)U-V_J+saBbhq6- z!z>9f?5ZJwU?d(*Ji(&K-$5gavS;G~x$1$77f)QogNbWZch%Soiy~h4CEZo8s=inC zUcY*;djGQ%&*_?0(jjRXxB?pUL`uw`U70XX=Sa2{3iw_H1CU2?7N1h0zJbp3U_uLQ zM`FU=tj)7hDD)?mgu@W{g>(&durcj0PG}lOv38cl*3fzQdg>=#=#UXL_NOCzD>%W+ z{9gSfs!}Mo>QC1E6~svh6vnMK@)b{=0;bkOFR=rmyi9NhntqMCBGPR;wm<*!YXGyS z%|>-HG}V+9xRw)sc;uuq>waKVyrvt$F=Ynz@aVgzm07I@Ru~$gZ&s}1b;m24&YbdU zwa_B7(B5MePO6saG%aJwcB`in6QkU$)vRDvObdx=Hf?&MJZ;3l^Qs-CPzF`(%1A;H-vs!i*4(@3uZ96QT{k`o2}UOke-dJ$(b(Ao-`mFEKB~N4O5_*_^6_^ova$J)-GU4b(--rC}Lfvx;$_&g4yL2pg_qwh}8uwf4$?Vml~wo4j5H@qB{=`zdA zYArXESGhI$(cExmWifYeCfJ!9+?*TUkXx7EnH!FBS*5?HV{nKCpnGcpTNW$gY_=cd zyU2KQ&raAb-hxjQvBoM+Ol&Vcx>b#-v3Q6@U-3A4pAw;bWm^yLFUX0xYjURlEk3a6lzeWR{UmA|T-sDwTpzte(Kw{`yPXcD(qEtib=H zw0^X!sa}bjFifRB7IkkL5tedPV3M~&Utl2pqmVE8ACP>$3uV_97CgaA-U=ONyyykb zVpxX^jV*e~bD>2x6urbR^nTRSQ6qXeSA=%=FOQS#a_%5`5Fe5WUg}1nCDf%`DcwPS z6d%INxhHud2c3-5h4ln5&R9M!yZIsiS(0z@KO)-7`bk;&6w3sEmHz{;azWYO4J?VE z$35&oaj%Rl1^;jB_r^`|Sw7ewp}|tE*H;~NB$sCn;v5P*|cyG zTPkX0th8x~FRq8uLgZ!rMSKXE#p0i2{E!$j6<Lb>d{v}uR&Z?kZa?Zm(2-^VDI hZ_lPNxx)CzW@js`_=#e literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ad19e418e5f028c09010c9ec4ae7296c676c9c4f GIT binary patch literal 5056 zcmeHL&2t>Z6@NQBJsPc~)!LHdII*pf%77C}v(hS-1;nvjF<*tvR}~eg95%DNvpXxz z&a7u_tBkLsQxjvj!jtau&K*!$^*Z~^CDn9dx zdYil~ow3xV9l^xAZoxQlVOdC;#ET)ucO^JTxh8Rz(8Hs?uH_Q@wVz%q+tN*%ry%}a zc+BVVJ^J^kM&tXg@p#T3K_12XzJ+4N^GO}1l9C14X32Bkho=9+;0DTLCy(Fz@M8ea zUbI>@C$!8(JMe5beEG!-rqyT%<*MKDB6!`jf=2l2Z!elwtrpl}SPt7()qbPl`W4GP zZ~FCmXp>pkeA3o0m`j%1vCE51ul9CgQm%CBbvw9$1O0{$p5<7D#8mB#^=4(I97q1h zYy^I%T@LL=%l4vjy}4}H%G5XbARZx(W=mdR#ZOi2aD1z zYObukZhBVBK2H-iH8uUQ*$$dZR%CDa?Fo9p47cX8@Ltjg+fCP%(|g_wS6UU{eM>qs z7i&1KElTdaq|r-x$2@H<+4aE3;ZaZL-IR}L5baS~|zv*_Nt7#-x6(x6> z{5_+p6Y7AzfZPQIp1Z2dWZ?I@KDe%F2NdZ3SrvJ8Q`II^c(&k`(B0G?q(?~z4KyGlblpW5`!P>)LsIaP&)L^y$IaPNy^<3gdM?2*HPE{S^ zl7B_|A5aF*=2W$$^=a%wBOeN^;>*MsIP?9AdNvq7cd38J#uWT-^Lkb;mhZ}f}e)J#U4;C6;X6#^$8NHa1U~|3L_(6auXhy!rCm~d; zvoozq<8aA6b!x^f9d>4%Wv5dM56zyMo%Mp~bp3Fxy3nbuSThS=sZ@K?_Lt1|3KXMO zyBPUF)xmVEQ^i`@a)VA7`o-!joWYT)a0UCOW-|ZG4?zYC^%Vd9JG1EcExX9BOxLek zZqaR4itUxi@x2*yda4*UBYP4v#YL-Ohe;=jW$s2Xz|^wYvf+Oo8g^3V36AZyF`=RH z(vdHA=kSQ**O48~h+Rj-UAKtQ+lymjk7kHbZCvab6Ql9(-h0I83^fl;i`z9*j2oh4 zi2bIR)sBe$V@Jlu#a;J{qeU@W6#J1pt3815xHxJT#onK(iWttCKNq{EL;=bB(DSY_ zF?^>eOo)Bg)YXjGn|;U-x1pJ8DjNz;Hg^Pf}GaY^`(dKIdI0njVh!P6Kmx z;$8g^daI z0F!MntA2|zdZ2_kvMMMYBqX&&@`_-IxiplIKk?wPllT9UXW;*nG=KEH(?W|2SES_o z7OT_S5^-sJVH)p)Ebo&PnkzT(qpn~}6{(mU>yO}5@$71e)rNe7E}48 ab+H%3I>%-B4Xpep{$C}39~(-U=KmYo4u0kU literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e5a04b1884822b9df393854a9a7df447c9f245ba GIT binary patch literal 8864 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 x{hu~6l(G)d#b)+#oBVvSm*78B@0MVo{mrL{3A ztb1>Q*c29ZJEbC6f<6Ypwh{F~vnyyRsi2#HPeDo_e6INeT+i&@NCm-xncq3T-|Jd}xA0yPUY5osm_K_V52$@@eXxj1fcRN{X&oZJBju=KE^62~E63NeW|ZnP#}j)AvQ*!6ud z)1GM_^Rdl2#pic(IjGZ2@e~&KgWor|IxC!1T0MRpAC)?(SGnF+twVwjLlT;HaxR9Ds0iEG<}J02hh$N`{F9PeyHyRl6> zXj>?*6ky`U@HXsIj)0I|DTE9=N)aiA5D>B15EfL2&{$gkC3b*aihmkEk)E=qtye50 zC*@ka_le8c4%&+@(ZEN*p{OB5rWQ5GFj}f_YP=rd8xgM1@{)h4 zFO%jHo)ypXw8-+-N#6av&}K*YfY3TKoN4xm(2i%gC$zQ^-Z?$nHOjli0`C+Gr+Akb zo#x#y^PcgCx$__&cnw+HJi{LlFK|a+%s)2R%iY`D8{_U_Tt^w@9evvVM;PIrb|Rx( zZT|>*1KQLAXJUkwC=k3T0J4(Es(XAl@hGXvtlibP)OJa{`RbY3)92+)drh86=7_gm zP6h-+QqHJR-FuMaQ77Lqc0eTp7;9 delta 1265 zcmah}-D@0G6hHUl+?}17{hFC%leqcXO-Y)D-MD?&6dLP;zO>dB3bq!6^r0rymsK$! zthW)Ak7L&ORNvcgHJ_@6cnE{|G;|g?yM3hcwx?O&hMP_ zyLawAckV6xb@b+3b}PESz?aY>jQ1ss-B)QQyAa-iAB?;C*0rhd&MUCFW4Mo-A70=**)b6Y@9vXaNehS~z22e{GLZvqF0+jSePG75W% zgWZ`j%KgMxf?_TeoK1KS4W*fySX>jyyq-@C(W8}7(j0)EZNg)rBwsZkf~glnTeRij!u;)i?a>5h9VnPHx~8Y5{Xs zuy7nFN<^H*NwtVG6qr;c!jr_6aE@?HJ&)d199u@u%2$q~|2qcxlH@opjuj=tIdQ3o zQWg1i>MX|e-PE+{%0DFd_bLuN*x^wM&q}m#ES!V3|7td(6dO-p`kwsX4z}H zjX{F=tH#i{%*+%V>Lw5n(Mk4rnCk<8e$vZMzenEVRR4&wv%Lj;7r6L7W%Bk$kWTdl lR{8**{(2~jx5yLi4L`mTg})fAT)}69STgzW6w=wKiM$XZ{6K^=p=U0+N8xavAZDjHVmEveR6XArBiP(c6M2< zX%%1PRo%07%m4h-C9WE-r<9z!9k7dB^$h>ZkC(ZsX`b%;itnl={gPohMb%p1PPy#s z80MSr>6sZML&M4u?*SO(1byx9q zqo&(|QZ}2qreJRD+wckDY1&TJG7UTP%_bbf`@iEgwW*XXHBhDub>&uWImEZAx+_YQ!m5 z`Lx>5%bo*Ihlv)hi1!!3qv^plXc;AY2ozrMVuyx|a`UOYO7FR$d%o$|Ur4kHVKH}F#$GSDCkGu1`$)h z{+@~r?s%hLGzwzh#(iPbRxAug{LLmV1NAv(U?# zRX7E9uiZJ=T?4yoVAC3)Z+%vrpL_A(0l6nqQLO{^dExI8IGuNY{JHKR^rr9&#oi}F z#FLVG*u&j@sYG{n;J)r2sTaq81ge)Uk)O^J((Uyt`oU+2%cIahjQCXVkuJo8!R~Ai1BQG$?`WUU0oS5LAtscL z1fB#Cxl}LG{-FOW`v0QeLYhA+2cH8jV#L2G{{L=@LNMD-41z#9hG&yoU>HaI?dI?8 zJMfd@KtF<=#iVn51AK^e9vxip--&V2BtB^`hQ&kA3I63cxJ4`!zU@Bap`+r1^;jGP zo93V3b6{+h|7pP=pg^H1Z_-}@PHQh7+7$fL0_+uWG(PRW^MKR47onm0Mevv7AlNi6 V!I!|;ivJ0I2tXc)RQuk^{|gzy6RrRN diff --git a/machine_interface/tests/libs/simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco b/machine_interface/tests/libs/simple_resnet/tem_fused_conv2d_miopen_batch_norm_0.hsaco deleted file mode 100644 index 9df0dbe1aa8bd70c646478a1c62b9231a4c4b396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14104 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 Date: Thu, 28 Nov 2024 09:40:39 +0100 Subject: [PATCH 139/176] ResNet18 newly compiled + LeNet5 client tests working --- .../src/function_driver/compute_driver/gpu.rs | 9 +- .../gpu/gpu_tests/load_models.rs | 11 +- .../tests/data/test_gpu_double_matmul.json | 35 ++++++ .../tests/data/test_gpu_resnet18.json | 103 ++++++++++-------- ...ool2d_add_miopen_batch_norm_relu_20.hsaco} | Bin 6336 -> 6336 bytes ...fused_add_miopen_batch_norm_relu_14.hsaco} | Bin 5704 -> 5704 bytes ...fused_add_miopen_batch_norm_relu_18.hsaco} | Bin 5920 -> 5920 bytes ...i_fused_add_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 6240 bytes ...ed_conv2d_miopen_batch_norm_relu_13.hsaco} | Bin 5488 -> 5488 bytes ...dd_conv2d_miopen_batch_norm_relu_12.hsaco} | Bin 20952 -> 20952 bytes ..._add_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 20632 -> 0 bytes ...add_conv2d_miopen_batch_norm_relu_9.hsaco} | Bin 17320 -> 17320 bytes ...v2d_16.hsaco => tem_fused_conv2d_17.hsaco} | Bin 9304 -> 9304 bytes .../libs/resnet18/tem_fused_conv2d_6.hsaco | Bin 0 -> 8968 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 10088 -> 16656 bytes ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 10088 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 10672 -> 0 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 6368 -> 10672 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 6368 bytes ...ed_conv2d_miopen_batch_norm_relu_19.hsaco} | Bin 8624 -> 8624 bytes ...sed_conv2d_miopen_batch_norm_relu_8.hsaco} | Bin 15776 -> 15776 bytes ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 16656 -> 0 bytes ...ear_20.hsaco => tem_fused_linear_21.hsaco} | Bin 11128 -> 11128 bytes server/src/main.rs | 10 +- 24 files changed, 113 insertions(+), 55 deletions(-) create mode 100644 machine_interface/tests/data/test_gpu_double_matmul.json rename machine_interface/tests/libs/resnet18/{per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco => per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco} (88%) rename machine_interface/tests/libs/resnet18/{poi_fused_add_miopen_batch_norm_relu_13.hsaco => poi_fused_add_miopen_batch_norm_relu_14.hsaco} (87%) rename machine_interface/tests/libs/resnet18/{poi_fused_add_miopen_batch_norm_relu_17.hsaco => poi_fused_add_miopen_batch_norm_relu_18.hsaco} (89%) create mode 100644 machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_7.hsaco rename machine_interface/tests/libs/resnet18/{poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco => poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco} (88%) rename machine_interface/tests/libs/resnet18/{tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco => tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco} (96%) delete mode 100644 machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco rename machine_interface/tests/libs/resnet18/{tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco => tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco} (96%) rename machine_interface/tests/libs/resnet18/{tem_fused_conv2d_16.hsaco => tem_fused_conv2d_17.hsaco} (93%) create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco delete mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename machine_interface/tests/libs/resnet18/{tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco => tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco} (93%) rename machine_interface/tests/libs/resnet18/{tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco => tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco} (95%) delete mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco rename machine_interface/tests/libs/resnet18/{tem_fused_linear_20.hsaco => tem_fused_linear_21.hsaco} (95%) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 9c036ef0..6c82aeb1 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -140,9 +140,14 @@ pub fn gpu_run( hip::set_device(gpu_id)?; hip::limit_heap_size(0)?; - let ContextType::Gpu(ref mmu_context) = context.context else { - return Err(DandelionError::ConfigMissmatch); + let mmu_context = match &context.context { + ContextType::Gpu(ref mmu_context) => mmu_context, + _ => return Err(DandelionError::ConfigMissmatch), }; + /*let ContextType::Gpu(ref mmu_context) = context.context else { + return Err(DandelionError::ConfigMissmatch); + };*/ + let base = mmu_context.storage.as_ptr(); let config = config.load(base)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs index cd7c3fc9..b2679125 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -64,6 +64,7 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); + add_number("var_63", 100352, &mut function_context); add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); @@ -94,13 +95,13 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); - add_number("var_107", 50176, &mut function_context); + add_number("var_109", 50176, &mut function_context); add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); - add_number("var_117", 50176, &mut function_context); + add_number("var_119", 50176, &mut function_context); add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); @@ -116,7 +117,7 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); - add_number("var_141", 25088, &mut function_context); + add_number("var_143", 25088, &mut function_context); add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); @@ -127,8 +128,8 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); - add_number("var_159", 512, &mut function_context); - add_number("var_160", 49, &mut function_context); + add_number("var_161", 512, &mut function_context); + add_number("var_162", 49, &mut function_context); add_buffer("fc_bias", 4000, constants_path, &mut function_context); add_buffer("fc_weight", 2048000, constants_path, &mut function_context); diff --git a/machine_interface/tests/data/test_gpu_double_matmul.json b/machine_interface/tests/data/test_gpu_double_matmul.json new file mode 100644 index 00000000..dc10417a --- /dev/null +++ b/machine_interface/tests/data/test_gpu_double_matmul.json @@ -0,0 +1,35 @@ +{ + "modules": [ + {"module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco"}, + {"module_name": "tem_fused_linear_1.hsaco", "path": "double_matmul/tem_fused_linear_1.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "tem_fused_linear_1.hsaco", "kernel_name": "kern001"} + ], + "blueprint": { + "inputs": ["arg2_1", "linear1_weight", "linear2_weight"], + "buffers": {"buf0": {"Absolute": 80}, "buf1": {"Absolute": 48}}, + "outputs": ["buf1"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg2_1"}, {"Ptr": "linear1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 1024} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "linear2_weight"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 1024} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18.json b/machine_interface/tests/data/test_gpu_resnet18.json index 2b4e9320..87b6871e 100644 --- a/machine_interface/tests/data/test_gpu_resnet18.json +++ b/machine_interface/tests/data/test_gpu_resnet18.json @@ -6,21 +6,22 @@ {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet18/tem_fused_conv2d_16.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18/tem_fused_linear_20.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet18/tem_fused_linear_21.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, @@ -29,24 +30,25 @@ {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern006"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern007"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern008"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern008"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern011"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern012"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern013"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern015"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern017"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern014"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern016"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern019"}, - {"module_name": "tem_fused_conv2d_16.hsaco", "kernel_name": "kern020"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern021"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern022"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern024"}, - {"module_name": "tem_fused_linear_20.hsaco", "kernel_name": "kern025"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern020"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern021"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern022"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern023"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern025"}, + {"module_name": "tem_fused_linear_21.hsaco", "kernel_name": "kern026"} ], "blueprint": { - "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_107", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_117", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_141", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_159", "var_160", "fc_bias", "fc_weight"], + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_63", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_109", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_119", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_143", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_161", "var_162", "fc_bias", "fc_weight"], "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf12": {"Absolute": 401408}, "buf13": {"Absolute": 401408}, "buf20": {"Absolute": 401408}, "buf22": {"Absolute": 200704}, "buf23": {"Absolute": 200704}, "buf29": {"Absolute": 200704}, "buf32": {"Absolute": 100352}, "buf33": {"Absolute": 100352}, "buf39": {"Absolute": 100352}, "buf40": {"Absolute": 2048}, "buf42": {"Absolute": 4000}}, "outputs": ["buf42"], "control_flow": [ @@ -122,16 +124,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf12"}], { + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf12"}], { "grid_dim_x": {"Absolute": 13}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 256}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 17408} + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_63"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern009", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf13"}], { + {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf12"}], { "grid_dim_x": {"Absolute": 13}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, @@ -140,7 +151,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "buf20"}], { + {"ExecKernel": ["kern011", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf13"}, {"Ptr": "buf20"}], { "grid_dim_x": {"Absolute": 13}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, @@ -149,7 +160,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern011", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + {"ExecKernel": ["kern012", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -158,7 +169,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + {"ExecKernel": ["kern013", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -167,7 +178,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern013", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { + {"ExecKernel": ["kern014", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -176,7 +187,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { + {"ExecKernel": ["kern013", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -185,7 +196,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern015", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_107"}], { + {"ExecKernel": ["kern016", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_109"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -194,7 +205,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern012", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + {"ExecKernel": ["kern013", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -203,7 +214,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern017", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_117"}], { + {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_119"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -212,7 +223,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + {"ExecKernel": ["kern019", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -221,7 +232,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 16384} }]}, - {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + {"ExecKernel": ["kern020", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -230,7 +241,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 4096} }]}, - {"ExecKernel": ["kern020", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { + {"ExecKernel": ["kern021", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 1}, @@ -239,7 +250,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern021", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_141"}], { + {"ExecKernel": ["kern022", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_143"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -248,7 +259,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern022", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { + {"ExecKernel": ["kern023", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -257,7 +268,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 5120} }]}, - {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + {"ExecKernel": ["kern020", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -266,7 +277,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 4096} }]}, - {"ExecKernel": ["kern024", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_159"}, {"Ptr": "var_160"}], { + {"ExecKernel": ["kern025", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_161"}, {"Ptr": "var_162"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -275,7 +286,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 4} }]}, - {"ExecKernel": ["kern025", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + {"ExecKernel": ["kern026", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { "grid_dim_x": {"Absolute": 32}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco similarity index 88% rename from machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco index 596c3389b332d768d8f2297d975fc95ad4060168..3851459e7a08de2e38bdfedf55960f8630ab9800 100644 GIT binary patch delta 258 zcmX?Lc))POJ{CsP$@^J+7)>|xu(C7qm@;Ii7UdZjnd)VyOm1Y;oLnHvu{nTk3x@&& z5HKZh2GEAk#llcWKK$NFI bzax1DF)%W~+_G6xu#1Tk?!C=xghf~ZrkhKQ delta 258 zcmX?Lc))POJ{Crk$@^J+7)>_wu(C7qm@s6g7UdZjndoJwOm1Y;oLnHvu{nTk3x|RQ z0|NsS5JP}Fh!TgeMVNsy_LEik+uf4QQgU)~%#9P1D~d`|^OF)wa?)~h3QWx_iqlN9 zv&|E8O^g!L3NlK{%u~%v6HU^Ji_G;3Dj7i}DN%EjDjqJ<2Y{&j11LAW96vp2Eby zz{EazGH;YUR4qetQi(}%X>M_qiBVB{etvmDX-2kLURhE~zIjHHNrq`jQI>g9eqwpC zaY|8naz%N%S!%LgLFME(yfRElC6m4QEI?EXpRXf%1~D))z}+pxFUced_l90}3PZe0 Yq@Sa&r}Jb-LHEh}tgM@R1oyB20K~dY9{>OV delta 254 zcmX@1b3$iB1Pi12OV diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_18.hsaco similarity index 89% rename from machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_18.hsaco index 93ba5671be580da0d78f5dd5574183e935ed4083..0c305ae0ac25af1a27a2d04f6d375e6d0fed542a 100644 GIT binary patch delta 211 zcmZ3Ww?J=03@fA22ni-d-CFN(Dnj|MDXJ;4}nUtF37L=zZnI@K|m1Lxu t=9radre`PW6--X%w`3|WpFEG>*O4p(Dj66V;11LgkYqw~ubdii}DPN3^#9KW9Q)HXMh0r$w&A+tqd8G z(<-aVa!gZmO|y)u%5w`!%~Nu6QgbVc5_6Kwax%(Nv$HeP%o7VsQwxkMi;L3Cax;we r3Mv^UH}Xp}rcF-fw`5AIoIH=;*O5$v7#ZLW)De(mLUOO4&?OcCKWRgY diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2cb5c242e1b1f57960c0ae0ff257fd421355443b GIT binary patch literal 6240 zcmeHMZ)_9i8Gr7*JL8;bxY*90hCnWk0}PRKVhFeuWu~K)b}$&D8r>$Di*vC}9NV&; zkRaq3I%(B}I&B|1P1A%lX=5t=udQ0Owt%L6VVy+aw z`|8i(H5rUCDD6m0e*d+tlNv_T=gALK0AP8qF9(TDDQAQhKgzY)>DxE$`>`U!GRkv2l)GAKa z{dKNbo^*Erl;NNLjnZX8o*p@fWEZ` zu+|!2+gbyRtu;VutpU<&4RGk80bb&oJLa2etu^;9d^Ao?fXPt%2bkV72&XlV&GAwHTqF~jRoLToW zJvn1zPyE5IR15P?-CYgb((4tww)#*FyyG*qN}*Vk&)H?Wwm3UkF1{v%*)vl(uvQn3 zX?1zaKI6>0)73JLk5Wy)A)n+r4$iH=k6bQW8bzQBAMw%A-1Nc|V-7#@^KP|PD3^Ys z@Onf`$%7i{!zwPea@{?l`c@qXUASUilZ#l|7X#Vz)sHkSPi7M=lEpv%;Is389sQ6( z$S|IsboVtm5pZupR@EmYm6q%Fs-lIUl>P{B!9_&MlUm@1@Cw2$&=pvL=10G{@Y8Pz z5xzz`1%7aglD;G~>t!Kgimv4^X@OV}est@CCSd8>#jB4A(O7S4NhK0ULG#!rC^dRf z)^oosbO}TZ$PY)>A+$yi`jSHJPenwa5r$w=RgF|gtZx|RKr#^7oZ28d8=a<=6kuFS zV=n6=u~e7X(lE_K5A@QFB|eJF-1Rc__keK=XT_tcN9>*d0ltHCWPmBes`U zCoJ_*eo%Qd;QUAUHrucw ztOnxIg$)<42Gj4}HWUad;g`<=9Jr~N0`6KpU;r%NwFCsy@7xY{i@uJdJ&oYeXybZM zEPp*}<$LzOecSAg?LFVKC4W8|&kHzsv$;b+Kgz=>Cx2tez?nk1Eg*z^Xqfo@H=Da9 zzg6#)j9&j+1ZU>Etv8wUIx^F63_z~7b) zjOp2oV4RV-AIC)5h-Gwn@wdmjMlimlJ>QY1wKF)MpjwT2L`{uhePAq%Uq{}2`rX^+ zxHze(!G@|v8zzmVOY{NCHIxU`Kx3WS)2NVb`t94DL&paIZ2)Zq+6c5U5Di2iy>fg& zpkAQf99}PIZVa*|osPb$5Y6?kp3{i$M%#57@_5$;%0dCr6at#stLK`U2F(Cs0H3Vp zIluPc{8eNgU61DAQ4Kt*frr)r?{zFm;9BpsK8fC559!yX9@luUMJ4|8-z#Mz^HR_I znu{D*+A%0y%1CEKS3Aw#jh$Ue7|nzYYNv%At2S!GfpOgGYMWp@@rIKXV2oZj(4BahJqH5`EWuzx8UN zUM}%>5MJsb1P$NS@uDujk9fv-x5rmpwf(Ig!ns$yH`@yGoOl-GyRy!acn> zak^$#79mlett9H@YBrCXv$-r%8K+pCtJTU0cLF}dk!tWU_Npn$zd9cS1sjb3|NggU zB43_$6CBDema|SVQ7lX*DvOv}X{S9tmZ%l#?kMgXXPlf{^OHzqIE_RVH=2c67yj>| zVUqGIG4B>D_*F~erH@V>KP)-~-ySuh=)FVwz;k*usc-(yQ~Ge=d3`XjQ;!Gs>al>j zXzPPB`sS2AxKAHY7m(XMv~Qoj)hG4%CVg;RA66GFJ-(C3xO#SPBAL+pPwU}Pz5gkF zqiS5x`_*|%4~uwI?|)Jcj|G>HenpR*(!&%bsv6Jh5ftBJcAzk1>k)O%(xYQ)hph>H zlR9W=3Mx)oZ33r7y-l4uscQjSToib>s9x~34J+6*Jh9O<6ZpB|3E=Pc!-W#g*OL~W z0a%9*AF#$#_Lx0J5gy#UI3fsqj>1;d>6h6TfL$urU9hJXOSszsJ6D>s^G+=f@|WcG zD%jQXlv8)WuDc6$&)S(SWKrxEtL01u468Sub)x7>OPrkH(u^X?mjEAHlt+Uh@pI`C%OUvA6D=TI8=XI7bF8x{0 z{!$E&BSEoQ&+9UyB@J26`7;ipo)$sY^Lv1CwVq`hujnOBuoW+ou|Mxi8Plk1ZRu79 z=>%Tnzxq1i^G2FjY^&#tKIE~7Yiy8LL{T7x3Z_m9OtLxTL< z^ACo73oa+N=e`(!i3+Y=wjs2n|0yY?<9V{<{`vWR4P{(A($s^d^#7n$h&1=h;@=|i RApgDc{{frWP-46Pe*lxI>MR^8>W}8b`UD-Kx86bdv@*$o=pvoLx z8LMrkhJxUD-ML86d!Y@*$qWa8ril ztn^ItRP)S&w8He#w4%Jc+@kyxvr6OSe6z~R(h}n;qmqw^gj0|vh2k|j7 LA$cQ4K!gy^>hY$(qr-jHkQpYzI#{zKCV=z delta 277 zcmcbynDNG9#tl1J8I33JV)bD(-ptO%!pLLHkeynTXJBZomz^@Xk=<~!2m5Oa1q%iS z1|}ee0Cx~20b!>Y17++t2Rkq`x+R;G6&j_M<(B1VWEAEVWv8YTmzbufWff;;r&Stf zrW=(Mlw_M%m}FHY=VX_fmlUL#C+ZbcGL#f$mgMKbES@~aQHIH+Z1OHg3lR0i(btho oa~T<6W^QhBvg8s)_8UXIOQfHpuctH6lOB^Nu(52G@!i7$01xI>uK)l5 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco deleted file mode 100644 index ced034dc62bd29e5313d0306ebf2f4c5ba9fa27c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20632 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 OF?j+j%jP$BdsqP7&0RnM delta 297 zcmZ3{&bXqTal=*?MuW-QSbP`_HZ!wwF!C5MWTzJ885kPqWv5JTWHa3C!KSUNAjiPK zz{H>nB;i0D!djyalu_M0+1QvdQNJX&K))ovC^;iDFQqgY$cj(QDJm^4&eu=LVJIoe zEXmJ<8PAZMl2cJ>Zd_SenwFfLmuZ|>W|Wwglbc?en3P;)lv|o!l2cM%k(zB@kyVwF zURYF|RFFPd-PD>XC1-Mqsjnj$+Vu)585kL0F4+9ZbS8%=vVR%kT_XJ)eLbCl9`~3$ Mft6+R8@oL$0EuN@fdBvi diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_17.hsaco similarity index 93% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco rename to machine_interface/tests/libs/resnet18/tem_fused_conv2d_17.hsaco index 6df4a82ec9901c8c28f99c1f15a0112eeda2b563..4a9e7beacf857d80a025117fafed367cfef623d4 100644 GIT binary patch delta 201 zcmccNal>On0W+iFmUhi}DPN4E3^8COfiPZsuU^5Mh^NU|?Wk zP@Ozo(#SE-l%b?3vm`%{Avw>q#Mr33Dy5(>y)?VHtjO5ZG(9!VywofsF+VY_u(&ue vHz~Ko$h4|B-8?@vDWl9dO|PJGGMAKv1<(|-^lz?`VrJ!pyK-}z{3R9u?wLV+ delta 201 zcmccNal>On0W+h)dOgi}DPN4D_;7COfiPZsuU^5Md8vU|?Wk zkefVR(#Wx@k|DXOGA%W?(5xgUJ3A$#D6yz2J1McSB0DiJJ0-2GA}PJRz&O1)%cRmc vuP`S)+c>!(rAn`$lA)w1vm`%nGMAKv1<(|-jM-cz#mveHcje|b`AaMSSyDw$ diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..fc541da107a476da7b7d0982a82c94a16ae9be94 GIT binary patch literal 8968 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 literal 10088 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 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f2e4e62ee0698111a947134d436169e0c78d8114 GIT binary patch literal 10088 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 eqU674*FN}B{VL5jA*{xq4mln&jLQ9ZFk=i4rAC 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 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco index 511b2d6956f0f81c05f704dca2000974ec1a9ae3..d0423775178dc5626591f6c6c84c848d9f8ff278 100644 GIT binary patch literal 10672 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 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..3c022959a004bcddfffb7ecb41f6455b6d536042 GIT binary patch literal 6368 zcmeGgTWnOv_1u{|ch|e?WxeKM8v@s^ft3@kjltligc^l5r7{trYNZNQn`?Vt_P*F% z8@p2M_1ZBcARwdW{2tYwiuntur>3S{c@#*toOqJM)au| z?8#_6ZI_}aa)mKDEOP#!VIZ=0CU%K}+0)zeODkVUP1vPaZQxZ_FI&Z0oWs}LPBEWK zr`^!QC961<8Oo*Kk%L)dBN*SBih0fLtX6r?I$=-5;)NW}k6ayiS1xV|Cl@PyfW5?U zb_W7_aMgG0NW>?<+GDFEn1~gMsa*Dgrcx9$<=#fjFvo0?_4uN!Un)mumr(UARY_hw zZHQBPhRR?Pt@ESnpUwVh$FDfz^iU%{@$PCe3hy_d)#V(#2WQX` zxy{@w^nXS%7L2nDd^gE$#*CY^&1#@6!%QnwVgAPJorf+kIJvChgc;Y97j?s|=z0h9 zc#}leiQcf9t|v+F&B{-|6NHzS*%}Sk&ebQ~d0jV|M^D0#ew7g)^%o#$dg1p=(9pn8 zro%JuIU5F8_K0?!!MWuMzCE3rBQrP8EP}qa7s7B=W9z3$ABP9OXMI2EDOt|irkUQ- zE0C|FK%=LvADy^59}IM!gYdR%?9@vDzx^0CGgt$ETM~0ZUkI^I^mJKkZqu9KUrU z8tY=3-o-WO(*53u=4TP+*CXJE$cOOijb??%=|= zu+}A?V9?4oE%`k@{3su}-2yW#H0MBWE;tZ+UU8sKaRiKEfnum{z7=8|D4yN`;`o)V z#Z%AU!tFx$1{{bv0n>o~yjewm!VqbkYrKH-4mDa<5@2O%gXUx8OF(mdDYw;pf%DbM zVkHDl4nkuacu*e;@+#%&HO6ojr(PO`@&aH^!!QQJtlU_K^R7bKsWqp@kSuEq>r=;A zVtt{kCiGFvL8{$ajWkf~pmoWMQR1*^N%!Dtl=HV4R{b@nBg9AobMFt%!blt+&iPd18Q!{kL^9YFgN zu1*8yq!*xV2QokI8r0PPQTewSu1h|C zF`Ookd&dpwsIxAIf43BN!(WXKs!`)9BbG;G+z zNBi%F|7Vjlym-QgySJJp->r!j!xY=UEkeeiXikXmMe#M>5Er|7(GpF(ai3`ClcwlL zp(bOGc#=;dIU=4J6irWwKnKblKQH>XigkReDW2m2)8IdzVSSp|Xz;&+Da=oiHMCEd ze6vN^dC}P}*0zhL4iP>inz}`Ji+Z<`zxXqX%&aG-QayVUH*(Id^^Q4ls3LB(YVkp_6oyfz_kJh z;8Vq>;|&!3)l+q#)=!-~2UA%*6+Ug^orXC$c+lM0Z}nI`&Jg!~IpZ)dl;ypU5+bXg z=UfX`Hdl&)H8PdOqdHiL?6{S*i%F1gqL&I_6>=kX$p)(wn=Cofb|y89!%sW*voi0WTcD8qQ_tS_A0PpkxmrOrnB| zxlo;)6~y}lh#vg@^9K$edR9f?i$RJX-7#TpyGh=IX1VMj*p3g;l)iiUi3Is!7(jG&8(7^zoYI-})pthKi6YeQNtIrm1AS6g z-NUH*Q1_a7sVCj3#UBr0PTP-fimB4SBkSu9Eetj#=k{D*6;ALlK6NfRY^DFO_#JzI zKAjS&b-AGSuD6vy4$*pQ5-ws%{U6lPmA--nsQo?6E~$ zPOY|bC9K!~H^-8W0RR91 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 93% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco index 4f0b88c87c97d77bccf57b622c297883b2da4453..e3d0ec397e9639dbbbac28564a266808d3f78a8a 100644 GIT binary patch delta 224 zcmdnsyuo=x2@9j~kSib{)%^Y!!77?ShT3KGjQ%L|e-ObZGsGD?fnGP5gkt4j0I zjSGuQvlB~AO7pT)6H`jkb1GAF($Wgd^CwRiw`R&un|wvw*O3hEdIgmXj0`Z>ZcdUg OWZ{H6e)Aj|5mo@q9Zz8Z delta 224 zcmdnsyuo=x2@9jqkSib{)%^Ysh!8IlY0Q?g1*%<{7es&Wdl%nOT*ip`QL%uI8# zvnov!(~a`;%qoita+9)3(<)5NbInYRawbm~w`MBLpL|8!*O3hEdIgmXj0`Z>ZcdUg OWZ{H6e)Aj|5mo?l3QJD_ diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 95% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco index b0ee00ef62b38a4cd6354da8c30761f908065e84..4d97092d1f9c450a724f366fefb8051f6ab2c015 100644 GIT binary patch delta 245 zcmZ2by`XwSF$e!5DO!(p#ej7YEhnnp@Cj@%4A12%gr2YhMJuG3=rTx z*-8IF1W-|OdV#4)Qc;pwX+?%nWr2CRab-zCxlw9Keny#TRc?|=nXy?xv00W$W?n{4 zwy{}xMOw06K_!EJNp69DNq$jsMrK}0X)=%%pO{lrT3np3pI$Jz%D{pNNNq9jbtKb# WMh2MsH#-?RuyY~&v$@AYgcSg4(NA9h delta 222 zcmZ2by`XwSF$XQpZy>e!5DO!(fh9wBYEhnnfu&w{%4A12%gr2YhMJtZ3=qIS z*-8HaNK1@?j8&2;LvoU-aam$jZklmvMY2h5QGt1WRa#n#acXI0RdIQ4g>hnPdUlmb zPHA>_a$aR|URI8=sa`?l|6+kZ|<=WVFdt9 Cnn!*B diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco deleted file mode 100644 index f384531d67fcd78e5d293e11d556218582331fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16656 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 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_linear_21.hsaco similarity index 95% rename from machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco rename to machine_interface/tests/libs/resnet18/tem_fused_linear_21.hsaco index 5e05b8068f7c05c45ab0fdec31212ea299a2809a..6120b4bb30e267bfb7ab19ce66b7cb946aa59bfd 100644 GIT binary patch delta 216 zcmewn_9JY=24+UH$s3t{7|k~SV`gRKF=NP1Ey^=6GSkaWncT=~x!HsDgtROJ5HK;Q zf+!$h2N7Z*f`P$9jA3%BqOw)GF+*~?aeiWDQhG*lMP_MsSxQ-=ai*DBVp?92d09be zNshU3rioE*T7g+vaz+kNL1|^Sxn4o#|-V`gRKF=fb3Ey^=6GS$mYncT=~x!HsDgmkC{0|NsS z5JP}Hh!TUaJ%Ds_PHu8)UTSitnMtBqd1-QSa#m77dQm}zQGQxMX-Pq4Ze@~DZly^{ xs(F!FwpnswMS6i=LFHs!MP;U(+{s;v78W_V serve_request(true, req, dispatcher).await, + | "/cold/inference-batched" + | "/cold/double_matmul" + | "/cold/lenet5" => serve_request(true, req, dispatcher).await, "/cold/chain_scaling" | "/cold/middleware_app" | "/cold/python_app" => { serve_request(true, req, dispatcher).await } @@ -350,7 +352,9 @@ async fn service( | "/hot/compute" | "/hot/io" | "/hot/inference" - | "/hot/inference-batched" => serve_request(false, req, dispatcher).await, + | "/hot/inference-batched" + | "/hot/double_matmul" + | "/hot/lenet5" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), @@ -467,6 +471,8 @@ async fn service_loop(request_sender: mpsc::Sender, port: u16 } fn main() -> () { + std::env::set_var("RUST_BACKTRACE", "1"); // TODO : remove + // check if there is a configuration file let config = dandelion_server::config::DandelionConfig::get_config(); From f5edb3c03ce1740f8dbc6bea039b8b9a46f4f6b1 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Thu, 28 Nov 2024 10:56:31 +0100 Subject: [PATCH 140/176] debug env var removed --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 1 + server/src/main.rs | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 9fcf4a46..1808112e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -205,6 +205,7 @@ struct Worker { impl Worker { fn new(core_id: u8, gpu_id: u8, worker_count: u8) -> Self { // this trick gives the desired path of mmu_worker for packages within the workspace + // Note: the gpu_worker binary required is assumed to be present (look at README.md) let path = std::env::var("PROCESS_WORKER_PATH").unwrap_or(format!( "{}/../target/{}-unknown-linux-gnu/{}/gpu_worker", env!("CARGO_MANIFEST_DIR"), diff --git a/server/src/main.rs b/server/src/main.rs index 36caab5e..daaffce6 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -471,8 +471,6 @@ async fn service_loop(request_sender: mpsc::Sender, port: u16 } fn main() -> () { - std::env::set_var("RUST_BACKTRACE", "1"); // TODO : remove - // check if there is a configuration file let config = dandelion_server::config::DandelionConfig::get_config(); From a528afc3cd903b489627540a624188e1984ed609 Mon Sep 17 00:00:00 2001 From: alrusso Date: Fri, 6 Dec 2024 07:58:15 +0100 Subject: [PATCH 141/176] ResNet34 and ResNet152 work as tests. ResNet18 and ResNet34 to be measured --- .../gpu/gpu_tests/compiled_tests.rs | 30 + .../gpu/gpu_tests/load_models.rs | 1047 +++++++++- .../gpu/gpu_tests/tests_utils.rs | 7 +- .../tests/data/test_gpu_resnet152.json | 1812 +++++++++++++++++ .../tests/data/test_gpu_resnet18.json | 103 +- .../tests/data/test_gpu_resnet34.json | 516 +++++ ...pool2d_add_miopen_batch_norm_relu_29.hsaco | Bin 0 -> 6872 bytes ..._fused_add_miopen_batch_norm_relu_25.hsaco | Bin 0 -> 6576 bytes ..._fused_add_miopen_batch_norm_relu_28.hsaco | Bin 0 -> 5688 bytes ...ed_conv2d_miopen_batch_norm_relu_17.hsaco} | Bin 5488 -> 5488 bytes ...sed_conv2d_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_26.hsaco | Bin 0 -> 5280 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 7504 bytes ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 20432 bytes ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 16136 bytes ...add_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 21616 bytes ...add_conv2d_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 16848 bytes ..._add_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 20608 bytes ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 16648 bytes .../libs/resnet152/tem_fused_conv2d_24.hsaco | Bin 0 -> 9304 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 14384 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 8144 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 14968 bytes ...ed_conv2d_miopen_batch_norm_relu_13.hsaco} | Bin 15776 -> 15776 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 14968 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 10376 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 8616 bytes ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 14952 bytes ...ed_conv2d_miopen_batch_norm_relu_20.hsaco} | Bin 10088 -> 10088 bytes ...sed_conv2d_miopen_batch_norm_relu_23.hsaco | Bin 0 -> 10688 bytes ...ed_conv2d_miopen_batch_norm_relu_27.hsaco} | Bin 8624 -> 8624 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 10680 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 8192 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 10296 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 14696 bytes ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 16072 bytes .../libs/resnet152/tem_fused_linear_30.hsaco | Bin 0 -> 11128 bytes ...pool2d_add_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 6336 bytes ...fused_add_miopen_batch_norm_relu_13.hsaco} | Bin 5704 -> 5704 bytes ...fused_add_miopen_batch_norm_relu_17.hsaco} | Bin 5920 -> 5920 bytes ...i_fused_add_miopen_batch_norm_relu_7.hsaco | Bin 6240 -> 0 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 5488 bytes ...dd_conv2d_miopen_batch_norm_relu_11.hsaco} | Bin 20952 -> 20952 bytes ..._add_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 20632 bytes ...add_conv2d_miopen_batch_norm_relu_8.hsaco} | Bin 17320 -> 17320 bytes ...v2d_17.hsaco => tem_fused_conv2d_16.hsaco} | Bin 9304 -> 9304 bytes .../libs/resnet18/tem_fused_conv2d_6.hsaco | Bin 8968 -> 0 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 16656 -> 10088 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 10672 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 10672 -> 6368 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 8624 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 15776 bytes ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 16656 bytes .../libs/resnet18/tem_fused_linear_20.hsaco | Bin 0 -> 11128 bytes ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin 6336 -> 6336 bytes ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 5704 bytes ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 5920 bytes ..._fused_add_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 5360 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 5488 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 7504 bytes ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 20952 bytes ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 11592 bytes ..._add_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 20632 bytes ..._add_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 17320 bytes .../libs/resnet34/tem_fused_conv2d_16.hsaco | Bin 0 -> 9304 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 14384 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 10088 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 10672 bytes ...ed_conv2d_miopen_batch_norm_relu_15.hsaco} | Bin 6368 -> 6368 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 8624 bytes ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 10680 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 16072 bytes ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 9592 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 15776 bytes ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 16656 bytes .../tem_fused_linear_21.hsaco | Bin 11128 -> 11128 bytes server/src/main.rs | 14 +- 77 files changed, 3457 insertions(+), 72 deletions(-) create mode 100644 machine_interface/tests/data/test_gpu_resnet152.json create mode 100644 machine_interface/tests/data/test_gpu_resnet34.json create mode 100644 machine_interface/tests/libs/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco create mode 100644 machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco create mode 100644 machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco rename machine_interface/tests/libs/{resnet18/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco => resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco} (88%) create mode 100644 machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco create mode 100644 machine_interface/tests/libs/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_24.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename machine_interface/tests/libs/{resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco => resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco} (95%) create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename machine_interface/tests/libs/{resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco => resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco} (94%) create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco rename machine_interface/tests/libs/{resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco => resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco} (92%) create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet152/tem_fused_linear_30.hsaco create mode 100644 machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco rename machine_interface/tests/libs/resnet18/{poi_fused_add_miopen_batch_norm_relu_14.hsaco => poi_fused_add_miopen_batch_norm_relu_13.hsaco} (87%) rename machine_interface/tests/libs/resnet18/{poi_fused_add_miopen_batch_norm_relu_18.hsaco => poi_fused_add_miopen_batch_norm_relu_17.hsaco} (89%) delete mode 100644 machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename machine_interface/tests/libs/resnet18/{tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco => tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco} (96%) create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco rename machine_interface/tests/libs/resnet18/{tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco => tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco} (96%) rename machine_interface/tests/libs/resnet18/{tem_fused_conv2d_17.hsaco => tem_fused_conv2d_16.hsaco} (93%) delete mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco rename machine_interface/tests/libs/{resnet18 => resnet34}/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco (88%) create mode 100644 machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_16.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco rename machine_interface/tests/libs/{resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco => resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco} (90%) create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco rename machine_interface/tests/libs/{resnet18 => resnet34}/tem_fused_linear_21.hsaco (94%) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs index 1ac05fa7..afa2a2f0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs @@ -83,6 +83,36 @@ fn resnet18() { drop(lock); } +#[test] +fn resnet34() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet34.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet34(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); + drop(lock); +} + +#[test] +fn resnet152() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet152.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet152(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, false); + drop(lock); +} + #[test] fn batch_norm() { let lock = GPU_LOCK.lock().unwrap(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs index b2679125..c44c9d40 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -64,7 +64,6 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); - add_number("var_63", 100352, &mut function_context); add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); @@ -95,13 +94,13 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); - add_number("var_109", 50176, &mut function_context); + add_number("var_107", 50176, &mut function_context); add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); - add_number("var_119", 50176, &mut function_context); + add_number("var_117", 50176, &mut function_context); add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); @@ -117,7 +116,7 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); - add_number("var_143", 25088, &mut function_context); + add_number("var_141", 25088, &mut function_context); add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); @@ -128,8 +127,8 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); - add_number("var_161", 512, &mut function_context); - add_number("var_162", 49, &mut function_context); + add_number("var_159", 512, &mut function_context); + add_number("var_160", 49, &mut function_context); add_buffer("fc_bias", 4000, constants_path, &mut function_context); add_buffer("fc_weight", 2048000, constants_path, &mut function_context); @@ -140,6 +139,1042 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet34/constants"; + + add_buffer("arg218_1", 602112, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_9", 200704, &mut function_context); + add_buffer("layer1_0_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_2_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_2_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 294912, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 32768, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_2_conv1_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_2_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_3_conv1_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_3_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 1179648, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 131072, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_152", 50176, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_162", 50176, &mut function_context); + add_buffer("layer3_2_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_171", 50176, &mut function_context); + add_buffer("layer3_2_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_181", 50176, &mut function_context); + add_buffer("layer3_3_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_190", 50176, &mut function_context); + add_buffer("layer3_3_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_200", 50176, &mut function_context); + add_buffer("layer3_4_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_209", 50176, &mut function_context); + add_buffer("layer3_4_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_219", 50176, &mut function_context); + add_buffer("layer3_5_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_228", 50176, &mut function_context); + add_buffer("layer3_5_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_238", 50176, &mut function_context); + add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_number("var_262", 25088, &mut function_context); + add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_number("var_279", 25088, &mut function_context); + add_buffer("layer4_2_conv1_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_bias", 2048, constants_path, &mut function_context); + add_number("var_297", 512, &mut function_context); + add_number("var_298", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 2048000, constants_path, &mut function_context); + + let output_name: &str = "buf74"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet152/constants"; + + add_buffer("arg932_1", 602112, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_9", 200704, &mut function_context); + add_buffer("layer1_0_conv1_weight", 16384, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv3_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_0_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_bias", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv3_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_bias", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_conv1_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_2_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_2_conv3_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_bias", 1024, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 131072, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_2_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_2_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_3_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_3_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_4_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_4_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_4_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_4_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_4_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_4_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_4_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_4_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_4_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_4_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_4_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_4_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_4_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_4_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_4_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_5_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_5_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_5_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_5_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_5_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_5_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_5_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_5_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_5_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_5_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_5_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_5_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_5_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_5_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_5_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_6_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_6_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_6_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_6_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_6_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_6_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_6_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_6_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_6_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_6_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_6_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_6_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_6_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_6_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_6_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_7_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_7_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_7_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_7_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_7_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_7_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_7_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_7_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_7_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_7_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_7_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_7_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_7_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_7_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_7_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 524288, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_281", 50176, &mut function_context); + add_buffer("layer3_0_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 2097152, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_302", 50176, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_311", 50176, &mut function_context); + add_buffer("layer3_1_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_325", 50176, &mut function_context); + add_buffer("layer3_2_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_334", 50176, &mut function_context); + add_buffer("layer3_2_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_348", 50176, &mut function_context); + add_buffer("layer3_3_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_357", 50176, &mut function_context); + add_buffer("layer3_3_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_371", 50176, &mut function_context); + add_buffer("layer3_4_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_380", 50176, &mut function_context); + add_buffer("layer3_4_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_394", 50176, &mut function_context); + add_buffer("layer3_5_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_403", 50176, &mut function_context); + add_buffer("layer3_5_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_6_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_6_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_6_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_6_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_417", 50176, &mut function_context); + add_buffer("layer3_6_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_6_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_6_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_6_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_6_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_426", 50176, &mut function_context); + add_buffer("layer3_6_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_6_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_6_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_6_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_6_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_7_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_7_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_7_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_7_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_440", 50176, &mut function_context); + add_buffer("layer3_7_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_7_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_7_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_7_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_7_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_449", 50176, &mut function_context); + add_buffer("layer3_7_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_7_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_7_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_7_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_7_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_8_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_8_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_8_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_8_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_463", 50176, &mut function_context); + add_buffer("layer3_8_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_8_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_8_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_8_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_8_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_472", 50176, &mut function_context); + add_buffer("layer3_8_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_8_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_8_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_8_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_8_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_9_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_9_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_9_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_9_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_486", 50176, &mut function_context); + add_buffer("layer3_9_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_9_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_9_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_9_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_9_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_495", 50176, &mut function_context); + add_buffer("layer3_9_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_9_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_9_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_9_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_9_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_10_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_10_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_10_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_10_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_509", 50176, &mut function_context); + add_buffer("layer3_10_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_10_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_10_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_10_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_10_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_518", 50176, &mut function_context); + add_buffer("layer3_10_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_10_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_10_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_10_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_10_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_11_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_11_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_11_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_11_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_532", 50176, &mut function_context); + add_buffer("layer3_11_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_11_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_11_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_11_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_11_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_541", 50176, &mut function_context); + add_buffer("layer3_11_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_11_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_11_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_11_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_11_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_12_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_12_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_12_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_12_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_555", 50176, &mut function_context); + add_buffer("layer3_12_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_12_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_12_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_12_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_12_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_564", 50176, &mut function_context); + add_buffer("layer3_12_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_12_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_12_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_12_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_12_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_13_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_13_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_13_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_13_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_578", 50176, &mut function_context); + add_buffer("layer3_13_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_13_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_13_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_13_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_13_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_587", 50176, &mut function_context); + add_buffer("layer3_13_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_13_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_13_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_13_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_13_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_14_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_14_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_14_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_14_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_601", 50176, &mut function_context); + add_buffer("layer3_14_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_14_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_14_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_14_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_14_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_610", 50176, &mut function_context); + add_buffer("layer3_14_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_14_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_14_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_14_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_14_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_15_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_15_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_15_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_15_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_624", 50176, &mut function_context); + add_buffer("layer3_15_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_15_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_15_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_15_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_15_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_633", 50176, &mut function_context); + add_buffer("layer3_15_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_15_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_15_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_15_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_15_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_16_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_16_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_16_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_16_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_647", 50176, &mut function_context); + add_buffer("layer3_16_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_16_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_16_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_16_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_16_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_656", 50176, &mut function_context); + add_buffer("layer3_16_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_16_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_16_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_16_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_16_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_17_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_17_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_17_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_17_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_670", 50176, &mut function_context); + add_buffer("layer3_17_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_17_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_17_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_17_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_17_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_679", 50176, &mut function_context); + add_buffer("layer3_17_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_17_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_17_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_17_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_17_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_18_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_18_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_18_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_18_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_693", 50176, &mut function_context); + add_buffer("layer3_18_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_18_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_18_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_18_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_18_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_702", 50176, &mut function_context); + add_buffer("layer3_18_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_18_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_18_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_18_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_18_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_19_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_19_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_19_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_19_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_716", 50176, &mut function_context); + add_buffer("layer3_19_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_19_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_19_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_19_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_19_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_725", 50176, &mut function_context); + add_buffer("layer3_19_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_19_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_19_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_19_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_19_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_20_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_20_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_20_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_20_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_739", 50176, &mut function_context); + add_buffer("layer3_20_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_20_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_20_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_20_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_20_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_748", 50176, &mut function_context); + add_buffer("layer3_20_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_20_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_20_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_20_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_20_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_21_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_21_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_21_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_21_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_762", 50176, &mut function_context); + add_buffer("layer3_21_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_21_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_21_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_21_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_21_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_771", 50176, &mut function_context); + add_buffer("layer3_21_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_21_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_21_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_21_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_21_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_22_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_22_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_22_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_22_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_785", 50176, &mut function_context); + add_buffer("layer3_22_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_22_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_22_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_22_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_22_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_794", 50176, &mut function_context); + add_buffer("layer3_22_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_22_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_22_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_22_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_22_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_23_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_23_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_23_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_23_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_808", 50176, &mut function_context); + add_buffer("layer3_23_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_23_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_23_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_23_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_23_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_817", 50176, &mut function_context); + add_buffer("layer3_23_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_23_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_23_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_23_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_23_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_24_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_24_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_24_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_24_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_831", 50176, &mut function_context); + add_buffer("layer3_24_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_24_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_24_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_24_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_24_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_840", 50176, &mut function_context); + add_buffer("layer3_24_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_24_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_24_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_24_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_24_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_25_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_25_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_25_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_25_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_854", 50176, &mut function_context); + add_buffer("layer3_25_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_25_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_25_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_25_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_25_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_863", 50176, &mut function_context); + add_buffer("layer3_25_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_25_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_25_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_25_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_25_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_26_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_26_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_26_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_26_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_877", 50176, &mut function_context); + add_buffer("layer3_26_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_26_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_26_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_26_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_26_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_886", 50176, &mut function_context); + add_buffer("layer3_26_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_26_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_26_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_26_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_26_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_27_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_27_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_27_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_27_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_900", 50176, &mut function_context); + add_buffer("layer3_27_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_27_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_27_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_27_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_27_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_909", 50176, &mut function_context); + add_buffer("layer3_27_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_27_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_27_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_27_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_27_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_28_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_28_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_28_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_28_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_923", 50176, &mut function_context); + add_buffer("layer3_28_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_28_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_28_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_28_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_28_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_932", 50176, &mut function_context); + add_buffer("layer3_28_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_28_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_28_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_28_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_28_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_29_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_29_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_29_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_29_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_946", 50176, &mut function_context); + add_buffer("layer3_29_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_29_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_29_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_29_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_29_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_955", 50176, &mut function_context); + add_buffer("layer3_29_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_29_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_29_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_29_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_29_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_30_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_30_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_30_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_30_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_969", 50176, &mut function_context); + add_buffer("layer3_30_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_30_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_30_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_30_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_30_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_978", 50176, &mut function_context); + add_buffer("layer3_30_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_30_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_30_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_30_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_30_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_31_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_31_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_31_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_31_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_992", 50176, &mut function_context); + add_buffer("layer3_31_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_31_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_31_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_31_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_31_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_1001", 50176, &mut function_context); + add_buffer("layer3_31_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_31_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_31_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_31_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_31_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_32_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_32_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_32_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_32_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_1015", 50176, &mut function_context); + add_buffer("layer3_32_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_32_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_32_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_32_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_32_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_1024", 50176, &mut function_context); + add_buffer("layer3_32_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_32_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_32_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_32_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_32_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_33_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_33_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_33_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_33_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_1038", 50176, &mut function_context); + add_buffer("layer3_33_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_33_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_33_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_33_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_33_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_1047", 50176, &mut function_context); + add_buffer("layer3_33_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_33_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_33_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_33_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_33_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_34_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_34_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_34_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_34_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_1061", 50176, &mut function_context); + add_buffer("layer3_34_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_34_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_34_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_34_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_34_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_1070", 50176, &mut function_context); + add_buffer("layer3_34_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_34_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_34_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_34_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_34_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_35_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_35_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_35_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_35_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_1084", 50176, &mut function_context); + add_buffer("layer3_35_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_35_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_35_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_35_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_35_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_1093", 50176, &mut function_context); + add_buffer("layer3_35_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_35_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_35_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_35_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_35_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_1107", 100352, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 8388608, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_bias", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 8192, constants_path, &mut function_context); + add_number("var_1128", 100352, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_1134", 25088, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_bias", 8192, constants_path, &mut function_context); + add_number("var_1148", 100352, &mut function_context); + add_buffer("layer4_2_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_1154", 25088, &mut function_context); + add_buffer("layer4_2_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_bias", 8192, constants_path, &mut function_context); + add_number("var_1169", 2048, &mut function_context); + add_number("var_1170", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 8192000, constants_path, &mut function_context); + + let output_name: &str = "buf312"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_alexnet(mut function_context: Context) -> (usize, String, Vec, Context) { let constants_path = "/home/alrusso/pytorch-aot/processed/alexnet/constants"; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index fe3b9d0c..b07e1e43 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -72,12 +72,13 @@ pub fn get_result(result_context: Context, output_size: usize, asserts: bool) -> pub fn compare_result(expected: Vec, read_buffer: Vec, asserts: bool) { const DELTA: f32 = 0.003; for (should, is) in expected.iter().zip(read_buffer.iter()) { + let abs_diff = (should - is).abs(); let mut ratio = should / is; if ratio.is_nan() { ratio = 1.0; } - let diff = ratio - 1.0; - let abs_diff = diff.abs(); + let diff_ratio = ratio - 1.0; + let abs_diff_ratio = diff_ratio.abs(); if asserts { - assert!(abs_diff <= DELTA, "Checking final result: {should} - {is}"); + assert!(abs_diff_ratio <= DELTA, "Checking final result: {should} - {is}"); } else { println!("{should:10.3}\t{is:10.3}\t{abs_diff:10.3}\t{ratio:10.3}"); } diff --git a/machine_interface/tests/data/test_gpu_resnet152.json b/machine_interface/tests/data/test_gpu_resnet152.json new file mode 100644 index 00000000..55b68c6f --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet152.json @@ -0,0 +1,1812 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_conv2d_24.hsaco", "path": "resnet152/tem_fused_conv2d_24.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "path": "resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "path": "resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "path": "resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "path": "resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco"}, + {"module_name": "tem_fused_linear_30.hsaco", "path": "resnet152/tem_fused_linear_30.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern005"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern014"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern015"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern016"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern037"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern038"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern039"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern040"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern041"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern043"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern045"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "kernel_name": "kern182"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "kernel_name": "kern183"}, + {"module_name": "tem_fused_conv2d_24.hsaco", "kernel_name": "kern184"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "kernel_name": "kern185"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "kernel_name": "kern186"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "kernel_name": "kern187"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "kernel_name": "kern188"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "kernel_name": "kern191"}, + {"module_name": "tem_fused_linear_30.hsaco", "kernel_name": "kern192"} + ], + "blueprint": { + "inputs": ["arg932_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_0_conv3_weight", "layer1_0_downsample_0_weight", "layer1_0_bn3_running_mean", "layer1_0_bn3_running_var", "layer1_0_bn3_weight", "layer1_0_bn3_bias", "layer1_0_downsample_1_running_mean", "layer1_0_downsample_1_running_var", "layer1_0_downsample_1_weight", "layer1_0_downsample_1_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer1_1_conv3_weight", "layer1_1_bn3_running_mean", "layer1_1_bn3_running_var", "layer1_1_bn3_weight", "layer1_1_bn3_bias", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "layer1_2_conv3_weight", "layer1_2_bn3_running_mean", "layer1_2_bn3_running_var", "layer1_2_bn3_weight", "layer1_2_bn3_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_conv3_weight", "layer2_0_downsample_0_weight", "layer2_0_bn3_running_mean", "layer2_0_bn3_running_var", "layer2_0_bn3_weight", "layer2_0_bn3_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer2_1_conv3_weight", "layer2_1_bn3_running_mean", "layer2_1_bn3_running_var", "layer2_1_bn3_weight", "layer2_1_bn3_bias", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "layer2_2_conv3_weight", "layer2_2_bn3_running_mean", "layer2_2_bn3_running_var", "layer2_2_bn3_weight", "layer2_2_bn3_bias", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "layer2_3_conv3_weight", "layer2_3_bn3_running_mean", "layer2_3_bn3_running_var", "layer2_3_bn3_weight", "layer2_3_bn3_bias", "layer2_4_conv1_weight", "layer2_4_bn1_running_mean", "layer2_4_bn1_running_var", "layer2_4_bn1_weight", "layer2_4_bn1_bias", "layer2_4_conv2_weight", "layer2_4_bn2_running_mean", "layer2_4_bn2_running_var", "layer2_4_bn2_weight", "layer2_4_bn2_bias", "layer2_4_conv3_weight", "layer2_4_bn3_running_mean", "layer2_4_bn3_running_var", "layer2_4_bn3_weight", "layer2_4_bn3_bias", "layer2_5_conv1_weight", "layer2_5_bn1_running_mean", "layer2_5_bn1_running_var", "layer2_5_bn1_weight", "layer2_5_bn1_bias", "layer2_5_conv2_weight", "layer2_5_bn2_running_mean", "layer2_5_bn2_running_var", "layer2_5_bn2_weight", "layer2_5_bn2_bias", "layer2_5_conv3_weight", "layer2_5_bn3_running_mean", "layer2_5_bn3_running_var", "layer2_5_bn3_weight", "layer2_5_bn3_bias", "layer2_6_conv1_weight", "layer2_6_bn1_running_mean", "layer2_6_bn1_running_var", "layer2_6_bn1_weight", "layer2_6_bn1_bias", "layer2_6_conv2_weight", "layer2_6_bn2_running_mean", "layer2_6_bn2_running_var", "layer2_6_bn2_weight", "layer2_6_bn2_bias", "layer2_6_conv3_weight", "layer2_6_bn3_running_mean", "layer2_6_bn3_running_var", "layer2_6_bn3_weight", "layer2_6_bn3_bias", "layer2_7_conv1_weight", "layer2_7_bn1_running_mean", "layer2_7_bn1_running_var", "layer2_7_bn1_weight", "layer2_7_bn1_bias", "layer2_7_conv2_weight", "layer2_7_bn2_running_mean", "layer2_7_bn2_running_var", "layer2_7_bn2_weight", "layer2_7_bn2_bias", "layer2_7_conv3_weight", "layer2_7_bn3_running_mean", "layer2_7_bn3_running_var", "layer2_7_bn3_weight", "layer2_7_bn3_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "var_281", "layer3_0_conv3_weight", "layer3_0_downsample_0_weight", "layer3_0_bn3_running_mean", "layer3_0_bn3_running_var", "layer3_0_bn3_weight", "layer3_0_bn3_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_302", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_311", "layer3_1_conv3_weight", "layer3_1_bn3_running_mean", "layer3_1_bn3_running_var", "layer3_1_bn3_weight", "layer3_1_bn3_bias", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "var_325", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_334", "layer3_2_conv3_weight", "layer3_2_bn3_running_mean", "layer3_2_bn3_running_var", "layer3_2_bn3_weight", "layer3_2_bn3_bias", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "var_348", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_357", "layer3_3_conv3_weight", "layer3_3_bn3_running_mean", "layer3_3_bn3_running_var", "layer3_3_bn3_weight", "layer3_3_bn3_bias", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "var_371", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_380", "layer3_4_conv3_weight", "layer3_4_bn3_running_mean", "layer3_4_bn3_running_var", "layer3_4_bn3_weight", "layer3_4_bn3_bias", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "var_394", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_403", "layer3_5_conv3_weight", "layer3_5_bn3_running_mean", "layer3_5_bn3_running_var", "layer3_5_bn3_weight", "layer3_5_bn3_bias", "layer3_6_bn1_running_mean", "layer3_6_bn1_running_var", "layer3_6_bn1_weight", "layer3_6_bn1_bias", "var_417", "layer3_6_conv2_weight", "layer3_6_bn2_running_mean", "layer3_6_bn2_running_var", "layer3_6_bn2_weight", "layer3_6_bn2_bias", "var_426", "layer3_6_conv3_weight", "layer3_6_bn3_running_mean", "layer3_6_bn3_running_var", "layer3_6_bn3_weight", "layer3_6_bn3_bias", "layer3_7_bn1_running_mean", "layer3_7_bn1_running_var", "layer3_7_bn1_weight", "layer3_7_bn1_bias", "var_440", "layer3_7_conv2_weight", "layer3_7_bn2_running_mean", "layer3_7_bn2_running_var", "layer3_7_bn2_weight", "layer3_7_bn2_bias", "var_449", "layer3_7_conv3_weight", "layer3_7_bn3_running_mean", "layer3_7_bn3_running_var", "layer3_7_bn3_weight", "layer3_7_bn3_bias", "layer3_8_bn1_running_mean", "layer3_8_bn1_running_var", "layer3_8_bn1_weight", "layer3_8_bn1_bias", "var_463", "layer3_8_conv2_weight", "layer3_8_bn2_running_mean", "layer3_8_bn2_running_var", "layer3_8_bn2_weight", "layer3_8_bn2_bias", "var_472", "layer3_8_conv3_weight", "layer3_8_bn3_running_mean", "layer3_8_bn3_running_var", "layer3_8_bn3_weight", "layer3_8_bn3_bias", "layer3_9_bn1_running_mean", "layer3_9_bn1_running_var", "layer3_9_bn1_weight", "layer3_9_bn1_bias", "var_486", "layer3_9_conv2_weight", "layer3_9_bn2_running_mean", "layer3_9_bn2_running_var", "layer3_9_bn2_weight", "layer3_9_bn2_bias", "var_495", "layer3_9_conv3_weight", "layer3_9_bn3_running_mean", "layer3_9_bn3_running_var", "layer3_9_bn3_weight", "layer3_9_bn3_bias", "layer3_10_bn1_running_mean", "layer3_10_bn1_running_var", "layer3_10_bn1_weight", "layer3_10_bn1_bias", "var_509", "layer3_10_conv2_weight", "layer3_10_bn2_running_mean", "layer3_10_bn2_running_var", "layer3_10_bn2_weight", "layer3_10_bn2_bias", "var_518", "layer3_10_conv3_weight", "layer3_10_bn3_running_mean", "layer3_10_bn3_running_var", "layer3_10_bn3_weight", "layer3_10_bn3_bias", "layer3_11_bn1_running_mean", "layer3_11_bn1_running_var", "layer3_11_bn1_weight", "layer3_11_bn1_bias", "var_532", "layer3_11_conv2_weight", "layer3_11_bn2_running_mean", "layer3_11_bn2_running_var", "layer3_11_bn2_weight", "layer3_11_bn2_bias", "var_541", "layer3_11_conv3_weight", "layer3_11_bn3_running_mean", "layer3_11_bn3_running_var", "layer3_11_bn3_weight", "layer3_11_bn3_bias", "layer3_12_bn1_running_mean", "layer3_12_bn1_running_var", "layer3_12_bn1_weight", "layer3_12_bn1_bias", "var_555", "layer3_12_conv2_weight", "layer3_12_bn2_running_mean", "layer3_12_bn2_running_var", "layer3_12_bn2_weight", "layer3_12_bn2_bias", "var_564", "layer3_12_conv3_weight", "layer3_12_bn3_running_mean", "layer3_12_bn3_running_var", "layer3_12_bn3_weight", "layer3_12_bn3_bias", "layer3_13_bn1_running_mean", "layer3_13_bn1_running_var", "layer3_13_bn1_weight", "layer3_13_bn1_bias", "var_578", "layer3_13_conv2_weight", "layer3_13_bn2_running_mean", "layer3_13_bn2_running_var", "layer3_13_bn2_weight", "layer3_13_bn2_bias", "var_587", "layer3_13_conv3_weight", "layer3_13_bn3_running_mean", "layer3_13_bn3_running_var", "layer3_13_bn3_weight", "layer3_13_bn3_bias", "layer3_14_bn1_running_mean", "layer3_14_bn1_running_var", "layer3_14_bn1_weight", "layer3_14_bn1_bias", "var_601", "layer3_14_conv2_weight", "layer3_14_bn2_running_mean", "layer3_14_bn2_running_var", "layer3_14_bn2_weight", "layer3_14_bn2_bias", "var_610", "layer3_14_conv3_weight", "layer3_14_bn3_running_mean", "layer3_14_bn3_running_var", "layer3_14_bn3_weight", "layer3_14_bn3_bias", "layer3_15_bn1_running_mean", "layer3_15_bn1_running_var", "layer3_15_bn1_weight", "layer3_15_bn1_bias", "var_624", "layer3_15_conv2_weight", "layer3_15_bn2_running_mean", "layer3_15_bn2_running_var", "layer3_15_bn2_weight", "layer3_15_bn2_bias", "var_633", "layer3_15_conv3_weight", "layer3_15_bn3_running_mean", "layer3_15_bn3_running_var", "layer3_15_bn3_weight", "layer3_15_bn3_bias", "layer3_16_bn1_running_mean", "layer3_16_bn1_running_var", "layer3_16_bn1_weight", "layer3_16_bn1_bias", "var_647", "layer3_16_conv2_weight", "layer3_16_bn2_running_mean", "layer3_16_bn2_running_var", "layer3_16_bn2_weight", "layer3_16_bn2_bias", "var_656", "layer3_16_conv3_weight", "layer3_16_bn3_running_mean", "layer3_16_bn3_running_var", "layer3_16_bn3_weight", "layer3_16_bn3_bias", "layer3_17_bn1_running_mean", "layer3_17_bn1_running_var", "layer3_17_bn1_weight", "layer3_17_bn1_bias", "var_670", "layer3_17_conv2_weight", "layer3_17_bn2_running_mean", "layer3_17_bn2_running_var", "layer3_17_bn2_weight", "layer3_17_bn2_bias", "var_679", "layer3_17_conv3_weight", "layer3_17_bn3_running_mean", "layer3_17_bn3_running_var", "layer3_17_bn3_weight", "layer3_17_bn3_bias", "layer3_18_bn1_running_mean", "layer3_18_bn1_running_var", "layer3_18_bn1_weight", "layer3_18_bn1_bias", "var_693", "layer3_18_conv2_weight", "layer3_18_bn2_running_mean", "layer3_18_bn2_running_var", "layer3_18_bn2_weight", "layer3_18_bn2_bias", "var_702", "layer3_18_conv3_weight", "layer3_18_bn3_running_mean", "layer3_18_bn3_running_var", "layer3_18_bn3_weight", "layer3_18_bn3_bias", "layer3_19_bn1_running_mean", "layer3_19_bn1_running_var", "layer3_19_bn1_weight", "layer3_19_bn1_bias", "var_716", "layer3_19_conv2_weight", "layer3_19_bn2_running_mean", "layer3_19_bn2_running_var", "layer3_19_bn2_weight", "layer3_19_bn2_bias", "var_725", "layer3_19_conv3_weight", "layer3_19_bn3_running_mean", "layer3_19_bn3_running_var", "layer3_19_bn3_weight", "layer3_19_bn3_bias", "layer3_20_bn1_running_mean", "layer3_20_bn1_running_var", "layer3_20_bn1_weight", "layer3_20_bn1_bias", "var_739", "layer3_20_conv2_weight", "layer3_20_bn2_running_mean", "layer3_20_bn2_running_var", "layer3_20_bn2_weight", "layer3_20_bn2_bias", "var_748", "layer3_20_conv3_weight", "layer3_20_bn3_running_mean", "layer3_20_bn3_running_var", "layer3_20_bn3_weight", "layer3_20_bn3_bias", "layer3_21_bn1_running_mean", "layer3_21_bn1_running_var", "layer3_21_bn1_weight", "layer3_21_bn1_bias", "var_762", "layer3_21_conv2_weight", "layer3_21_bn2_running_mean", "layer3_21_bn2_running_var", "layer3_21_bn2_weight", "layer3_21_bn2_bias", "var_771", "layer3_21_conv3_weight", "layer3_21_bn3_running_mean", "layer3_21_bn3_running_var", "layer3_21_bn3_weight", "layer3_21_bn3_bias", "layer3_22_bn1_running_mean", "layer3_22_bn1_running_var", "layer3_22_bn1_weight", "layer3_22_bn1_bias", "var_785", "layer3_22_conv2_weight", "layer3_22_bn2_running_mean", "layer3_22_bn2_running_var", "layer3_22_bn2_weight", "layer3_22_bn2_bias", "var_794", "layer3_22_conv3_weight", "layer3_22_bn3_running_mean", "layer3_22_bn3_running_var", "layer3_22_bn3_weight", "layer3_22_bn3_bias", "layer3_23_bn1_running_mean", "layer3_23_bn1_running_var", "layer3_23_bn1_weight", "layer3_23_bn1_bias", "var_808", "layer3_23_conv2_weight", "layer3_23_bn2_running_mean", "layer3_23_bn2_running_var", "layer3_23_bn2_weight", "layer3_23_bn2_bias", "var_817", "layer3_23_conv3_weight", "layer3_23_bn3_running_mean", "layer3_23_bn3_running_var", "layer3_23_bn3_weight", "layer3_23_bn3_bias", "layer3_24_bn1_running_mean", "layer3_24_bn1_running_var", "layer3_24_bn1_weight", "layer3_24_bn1_bias", "var_831", "layer3_24_conv2_weight", "layer3_24_bn2_running_mean", "layer3_24_bn2_running_var", "layer3_24_bn2_weight", "layer3_24_bn2_bias", "var_840", "layer3_24_conv3_weight", "layer3_24_bn3_running_mean", "layer3_24_bn3_running_var", "layer3_24_bn3_weight", "layer3_24_bn3_bias", "layer3_25_bn1_running_mean", "layer3_25_bn1_running_var", "layer3_25_bn1_weight", "layer3_25_bn1_bias", "var_854", "layer3_25_conv2_weight", "layer3_25_bn2_running_mean", "layer3_25_bn2_running_var", "layer3_25_bn2_weight", "layer3_25_bn2_bias", "var_863", "layer3_25_conv3_weight", "layer3_25_bn3_running_mean", "layer3_25_bn3_running_var", "layer3_25_bn3_weight", "layer3_25_bn3_bias", "layer3_26_bn1_running_mean", "layer3_26_bn1_running_var", "layer3_26_bn1_weight", "layer3_26_bn1_bias", "var_877", "layer3_26_conv2_weight", "layer3_26_bn2_running_mean", "layer3_26_bn2_running_var", "layer3_26_bn2_weight", "layer3_26_bn2_bias", "var_886", "layer3_26_conv3_weight", "layer3_26_bn3_running_mean", "layer3_26_bn3_running_var", "layer3_26_bn3_weight", "layer3_26_bn3_bias", "layer3_27_bn1_running_mean", "layer3_27_bn1_running_var", "layer3_27_bn1_weight", "layer3_27_bn1_bias", "var_900", "layer3_27_conv2_weight", "layer3_27_bn2_running_mean", "layer3_27_bn2_running_var", "layer3_27_bn2_weight", "layer3_27_bn2_bias", "var_909", "layer3_27_conv3_weight", "layer3_27_bn3_running_mean", "layer3_27_bn3_running_var", "layer3_27_bn3_weight", "layer3_27_bn3_bias", "layer3_28_bn1_running_mean", "layer3_28_bn1_running_var", "layer3_28_bn1_weight", "layer3_28_bn1_bias", "var_923", "layer3_28_conv2_weight", "layer3_28_bn2_running_mean", "layer3_28_bn2_running_var", "layer3_28_bn2_weight", "layer3_28_bn2_bias", "var_932", "layer3_28_conv3_weight", "layer3_28_bn3_running_mean", "layer3_28_bn3_running_var", "layer3_28_bn3_weight", "layer3_28_bn3_bias", "layer3_29_bn1_running_mean", "layer3_29_bn1_running_var", "layer3_29_bn1_weight", "layer3_29_bn1_bias", "var_946", "layer3_29_conv2_weight", "layer3_29_bn2_running_mean", "layer3_29_bn2_running_var", "layer3_29_bn2_weight", "layer3_29_bn2_bias", "var_955", "layer3_29_conv3_weight", "layer3_29_bn3_running_mean", "layer3_29_bn3_running_var", "layer3_29_bn3_weight", "layer3_29_bn3_bias", "layer3_30_bn1_running_mean", "layer3_30_bn1_running_var", "layer3_30_bn1_weight", "layer3_30_bn1_bias", "var_969", "layer3_30_conv2_weight", "layer3_30_bn2_running_mean", "layer3_30_bn2_running_var", "layer3_30_bn2_weight", "layer3_30_bn2_bias", "var_978", "layer3_30_conv3_weight", "layer3_30_bn3_running_mean", "layer3_30_bn3_running_var", "layer3_30_bn3_weight", "layer3_30_bn3_bias", "layer3_31_bn1_running_mean", "layer3_31_bn1_running_var", "layer3_31_bn1_weight", "layer3_31_bn1_bias", "var_992", "layer3_31_conv2_weight", "layer3_31_bn2_running_mean", "layer3_31_bn2_running_var", "layer3_31_bn2_weight", "layer3_31_bn2_bias", "var_1001", "layer3_31_conv3_weight", "layer3_31_bn3_running_mean", "layer3_31_bn3_running_var", "layer3_31_bn3_weight", "layer3_31_bn3_bias", "layer3_32_bn1_running_mean", "layer3_32_bn1_running_var", "layer3_32_bn1_weight", "layer3_32_bn1_bias", "var_1015", "layer3_32_conv2_weight", "layer3_32_bn2_running_mean", "layer3_32_bn2_running_var", "layer3_32_bn2_weight", "layer3_32_bn2_bias", "var_1024", "layer3_32_conv3_weight", "layer3_32_bn3_running_mean", "layer3_32_bn3_running_var", "layer3_32_bn3_weight", "layer3_32_bn3_bias", "layer3_33_bn1_running_mean", "layer3_33_bn1_running_var", "layer3_33_bn1_weight", "layer3_33_bn1_bias", "var_1038", "layer3_33_conv2_weight", "layer3_33_bn2_running_mean", "layer3_33_bn2_running_var", "layer3_33_bn2_weight", "layer3_33_bn2_bias", "var_1047", "layer3_33_conv3_weight", "layer3_33_bn3_running_mean", "layer3_33_bn3_running_var", "layer3_33_bn3_weight", "layer3_33_bn3_bias", "layer3_34_bn1_running_mean", "layer3_34_bn1_running_var", "layer3_34_bn1_weight", "layer3_34_bn1_bias", "var_1061", "layer3_34_conv2_weight", "layer3_34_bn2_running_mean", "layer3_34_bn2_running_var", "layer3_34_bn2_weight", "layer3_34_bn2_bias", "var_1070", "layer3_34_conv3_weight", "layer3_34_bn3_running_mean", "layer3_34_bn3_running_var", "layer3_34_bn3_weight", "layer3_34_bn3_bias", "layer3_35_bn1_running_mean", "layer3_35_bn1_running_var", "layer3_35_bn1_weight", "layer3_35_bn1_bias", "var_1084", "layer3_35_conv2_weight", "layer3_35_bn2_running_mean", "layer3_35_bn2_running_var", "layer3_35_bn2_weight", "layer3_35_bn2_bias", "var_1093", "layer3_35_conv3_weight", "layer3_35_bn3_running_mean", "layer3_35_bn3_running_var", "layer3_35_bn3_weight", "layer3_35_bn3_bias", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "var_1107", "layer4_0_conv2_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_0_weight", "layer4_0_bn3_running_mean", "layer4_0_bn3_running_var", "layer4_0_bn3_weight", "layer4_0_bn3_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_1128", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_1134", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "layer4_1_bn3_running_mean", "layer4_1_bn3_running_var", "layer4_1_bn3_weight", "layer4_1_bn3_bias", "var_1148", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "var_1154", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "layer4_2_bn3_running_mean", "layer4_2_bn3_running_var", "layer4_2_bn3_weight", "layer4_2_bn3_bias", "var_1169", "var_1170", "fc_bias", "fc_weight"], + "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf10": {"Absolute": 3211264}, "buf24": {"Absolute": 1605632}, "buf26": {"Absolute": 401408}, "buf30": {"Absolute": 1605632}, "buf34": {"Absolute": 401408}, "buf75": {"Absolute": 200704}, "buf83": {"Absolute": 200704}, "buf294": {"Absolute": 100352}, "buf302": {"Absolute": 100352}, "buf310": {"Absolute": 8192}, "buf312": {"Absolute": 4000}}, + "outputs": ["buf312"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg932_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_9"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf6"}, {"Ptr": "layer1_0_conv3_weight"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_downsample_0_weight"}, {"Ptr": "buf1"}, {"Ptr": "layer1_0_bn3_running_mean"}, {"Ptr": "layer1_0_bn3_running_var"}, {"Ptr": "layer1_0_bn3_weight"}, {"Ptr": "layer1_0_bn3_bias"}, {"Ptr": "layer1_0_downsample_1_running_mean"}, {"Ptr": "layer1_0_downsample_1_running_var"}, {"Ptr": "layer1_0_downsample_1_weight"}, {"Ptr": "layer1_0_downsample_1_bias"}, {"Ptr": "buf10"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf10"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv3_weight"}, {"Ptr": "layer1_1_bn3_running_mean"}, {"Ptr": "layer1_1_bn3_running_var"}, {"Ptr": "layer1_1_bn3_weight"}, {"Ptr": "layer1_1_bn3_bias"}, {"Ptr": "buf10"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf1"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf6"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv3_weight"}, {"Ptr": "layer1_2_bn3_running_mean"}, {"Ptr": "layer1_2_bn3_running_var"}, {"Ptr": "layer1_2_bn3_weight"}, {"Ptr": "layer1_2_bn3_bias"}, {"Ptr": "buf1"}, {"Ptr": "buf10"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf10"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf24"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf26"}, {"Ptr": "layer2_0_conv3_weight"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf10"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf24"}, {"Ptr": "layer2_0_bn3_running_mean"}, {"Ptr": "layer2_0_bn3_running_var"}, {"Ptr": "layer2_0_bn3_weight"}, {"Ptr": "layer2_0_bn3_bias"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf30"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf26"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer2_1_conv3_weight"}, {"Ptr": "layer2_1_bn3_running_mean"}, {"Ptr": "layer2_1_bn3_running_var"}, {"Ptr": "layer2_1_bn3_weight"}, {"Ptr": "layer2_1_bn3_bias"}, {"Ptr": "buf30"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf24"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf34"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf26"}, {"Ptr": "layer2_2_conv3_weight"}, {"Ptr": "layer2_2_bn3_running_mean"}, {"Ptr": "layer2_2_bn3_running_var"}, {"Ptr": "layer2_2_bn3_weight"}, {"Ptr": "layer2_2_bn3_bias"}, {"Ptr": "buf24"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf30"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf26"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer2_3_conv3_weight"}, {"Ptr": "layer2_3_bn3_running_mean"}, {"Ptr": "layer2_3_bn3_running_var"}, {"Ptr": "layer2_3_bn3_weight"}, {"Ptr": "layer2_3_bn3_bias"}, {"Ptr": "buf30"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf24"}, {"Ptr": "layer2_4_conv1_weight"}, {"Ptr": "layer2_4_bn1_running_mean"}, {"Ptr": "layer2_4_bn1_running_var"}, {"Ptr": "layer2_4_bn1_weight"}, {"Ptr": "layer2_4_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf34"}, {"Ptr": "layer2_4_conv2_weight"}, {"Ptr": "layer2_4_bn2_running_mean"}, {"Ptr": "layer2_4_bn2_running_var"}, {"Ptr": "layer2_4_bn2_weight"}, {"Ptr": "layer2_4_bn2_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf26"}, {"Ptr": "layer2_4_conv3_weight"}, {"Ptr": "layer2_4_bn3_running_mean"}, {"Ptr": "layer2_4_bn3_running_var"}, {"Ptr": "layer2_4_bn3_weight"}, {"Ptr": "layer2_4_bn3_bias"}, {"Ptr": "buf24"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf30"}, {"Ptr": "layer2_5_conv1_weight"}, {"Ptr": "layer2_5_bn1_running_mean"}, {"Ptr": "layer2_5_bn1_running_var"}, {"Ptr": "layer2_5_bn1_weight"}, {"Ptr": "layer2_5_bn1_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf26"}, {"Ptr": "layer2_5_conv2_weight"}, {"Ptr": "layer2_5_bn2_running_mean"}, {"Ptr": "layer2_5_bn2_running_var"}, {"Ptr": "layer2_5_bn2_weight"}, {"Ptr": "layer2_5_bn2_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer2_5_conv3_weight"}, {"Ptr": "layer2_5_bn3_running_mean"}, {"Ptr": "layer2_5_bn3_running_var"}, {"Ptr": "layer2_5_bn3_weight"}, {"Ptr": "layer2_5_bn3_bias"}, {"Ptr": "buf30"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf24"}, {"Ptr": "layer2_6_conv1_weight"}, {"Ptr": "layer2_6_bn1_running_mean"}, {"Ptr": "layer2_6_bn1_running_var"}, {"Ptr": "layer2_6_bn1_weight"}, {"Ptr": "layer2_6_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf34"}, {"Ptr": "layer2_6_conv2_weight"}, {"Ptr": "layer2_6_bn2_running_mean"}, {"Ptr": "layer2_6_bn2_running_var"}, {"Ptr": "layer2_6_bn2_weight"}, {"Ptr": "layer2_6_bn2_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf26"}, {"Ptr": "layer2_6_conv3_weight"}, {"Ptr": "layer2_6_bn3_running_mean"}, {"Ptr": "layer2_6_bn3_running_var"}, {"Ptr": "layer2_6_bn3_weight"}, {"Ptr": "layer2_6_bn3_bias"}, {"Ptr": "buf24"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf30"}, {"Ptr": "layer2_7_conv1_weight"}, {"Ptr": "layer2_7_bn1_running_mean"}, {"Ptr": "layer2_7_bn1_running_var"}, {"Ptr": "layer2_7_bn1_weight"}, {"Ptr": "layer2_7_bn1_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf26"}, {"Ptr": "layer2_7_conv2_weight"}, {"Ptr": "layer2_7_bn2_running_mean"}, {"Ptr": "layer2_7_bn2_running_var"}, {"Ptr": "layer2_7_bn2_weight"}, {"Ptr": "layer2_7_bn2_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer2_7_conv3_weight"}, {"Ptr": "layer2_7_bn3_running_mean"}, {"Ptr": "layer2_7_bn3_running_var"}, {"Ptr": "layer2_7_bn3_weight"}, {"Ptr": "layer2_7_bn3_bias"}, {"Ptr": "buf30"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern037", [{"Ptr": "buf24"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern038", [{"Ptr": "buf2"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "var_281"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern040", [{"Ptr": "buf75"}, {"Ptr": "layer3_0_conv3_weight"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern041", [{"Ptr": "buf24"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf2"}, {"Ptr": "layer3_0_bn3_running_mean"}, {"Ptr": "layer3_0_bn3_running_var"}, {"Ptr": "layer3_0_bn3_weight"}, {"Ptr": "layer3_0_bn3_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_302"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_311"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_1_conv3_weight"}, {"Ptr": "layer3_1_bn3_running_mean"}, {"Ptr": "layer3_1_bn3_running_var"}, {"Ptr": "layer3_1_bn3_weight"}, {"Ptr": "layer3_1_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "var_325"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_334"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_2_conv3_weight"}, {"Ptr": "layer3_2_bn3_running_mean"}, {"Ptr": "layer3_2_bn3_running_var"}, {"Ptr": "layer3_2_bn3_weight"}, {"Ptr": "layer3_2_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "var_348"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_357"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_3_conv3_weight"}, {"Ptr": "layer3_3_bn3_running_mean"}, {"Ptr": "layer3_3_bn3_running_var"}, {"Ptr": "layer3_3_bn3_weight"}, {"Ptr": "layer3_3_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "var_371"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_380"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_4_conv3_weight"}, {"Ptr": "layer3_4_bn3_running_mean"}, {"Ptr": "layer3_4_bn3_running_var"}, {"Ptr": "layer3_4_bn3_weight"}, {"Ptr": "layer3_4_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "var_394"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_403"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_5_conv3_weight"}, {"Ptr": "layer3_5_bn3_running_mean"}, {"Ptr": "layer3_5_bn3_running_var"}, {"Ptr": "layer3_5_bn3_weight"}, {"Ptr": "layer3_5_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_6_bn1_running_mean"}, {"Ptr": "layer3_6_bn1_running_var"}, {"Ptr": "layer3_6_bn1_weight"}, {"Ptr": "layer3_6_bn1_bias"}, {"Ptr": "var_417"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_6_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_6_bn2_running_mean"}, {"Ptr": "layer3_6_bn2_running_var"}, {"Ptr": "layer3_6_bn2_weight"}, {"Ptr": "layer3_6_bn2_bias"}, {"Ptr": "var_426"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_6_conv3_weight"}, {"Ptr": "layer3_6_bn3_running_mean"}, {"Ptr": "layer3_6_bn3_running_var"}, {"Ptr": "layer3_6_bn3_weight"}, {"Ptr": "layer3_6_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_7_bn1_running_mean"}, {"Ptr": "layer3_7_bn1_running_var"}, {"Ptr": "layer3_7_bn1_weight"}, {"Ptr": "layer3_7_bn1_bias"}, {"Ptr": "var_440"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_7_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_7_bn2_running_mean"}, {"Ptr": "layer3_7_bn2_running_var"}, {"Ptr": "layer3_7_bn2_weight"}, {"Ptr": "layer3_7_bn2_bias"}, {"Ptr": "var_449"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_7_conv3_weight"}, {"Ptr": "layer3_7_bn3_running_mean"}, {"Ptr": "layer3_7_bn3_running_var"}, {"Ptr": "layer3_7_bn3_weight"}, {"Ptr": "layer3_7_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_8_bn1_running_mean"}, {"Ptr": "layer3_8_bn1_running_var"}, {"Ptr": "layer3_8_bn1_weight"}, {"Ptr": "layer3_8_bn1_bias"}, {"Ptr": "var_463"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_8_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_8_bn2_running_mean"}, {"Ptr": "layer3_8_bn2_running_var"}, {"Ptr": "layer3_8_bn2_weight"}, {"Ptr": "layer3_8_bn2_bias"}, {"Ptr": "var_472"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_8_conv3_weight"}, {"Ptr": "layer3_8_bn3_running_mean"}, {"Ptr": "layer3_8_bn3_running_var"}, {"Ptr": "layer3_8_bn3_weight"}, {"Ptr": "layer3_8_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_9_bn1_running_mean"}, {"Ptr": "layer3_9_bn1_running_var"}, {"Ptr": "layer3_9_bn1_weight"}, {"Ptr": "layer3_9_bn1_bias"}, {"Ptr": "var_486"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_9_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_9_bn2_running_mean"}, {"Ptr": "layer3_9_bn2_running_var"}, {"Ptr": "layer3_9_bn2_weight"}, {"Ptr": "layer3_9_bn2_bias"}, {"Ptr": "var_495"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_9_conv3_weight"}, {"Ptr": "layer3_9_bn3_running_mean"}, {"Ptr": "layer3_9_bn3_running_var"}, {"Ptr": "layer3_9_bn3_weight"}, {"Ptr": "layer3_9_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_10_bn1_running_mean"}, {"Ptr": "layer3_10_bn1_running_var"}, {"Ptr": "layer3_10_bn1_weight"}, {"Ptr": "layer3_10_bn1_bias"}, {"Ptr": "var_509"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_10_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_10_bn2_running_mean"}, {"Ptr": "layer3_10_bn2_running_var"}, {"Ptr": "layer3_10_bn2_weight"}, {"Ptr": "layer3_10_bn2_bias"}, {"Ptr": "var_518"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_10_conv3_weight"}, {"Ptr": "layer3_10_bn3_running_mean"}, {"Ptr": "layer3_10_bn3_running_var"}, {"Ptr": "layer3_10_bn3_weight"}, {"Ptr": "layer3_10_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_11_bn1_running_mean"}, {"Ptr": "layer3_11_bn1_running_var"}, {"Ptr": "layer3_11_bn1_weight"}, {"Ptr": "layer3_11_bn1_bias"}, {"Ptr": "var_532"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_11_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_11_bn2_running_mean"}, {"Ptr": "layer3_11_bn2_running_var"}, {"Ptr": "layer3_11_bn2_weight"}, {"Ptr": "layer3_11_bn2_bias"}, {"Ptr": "var_541"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_11_conv3_weight"}, {"Ptr": "layer3_11_bn3_running_mean"}, {"Ptr": "layer3_11_bn3_running_var"}, {"Ptr": "layer3_11_bn3_weight"}, {"Ptr": "layer3_11_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_12_bn1_running_mean"}, {"Ptr": "layer3_12_bn1_running_var"}, {"Ptr": "layer3_12_bn1_weight"}, {"Ptr": "layer3_12_bn1_bias"}, {"Ptr": "var_555"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_12_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_12_bn2_running_mean"}, {"Ptr": "layer3_12_bn2_running_var"}, {"Ptr": "layer3_12_bn2_weight"}, {"Ptr": "layer3_12_bn2_bias"}, {"Ptr": "var_564"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_12_conv3_weight"}, {"Ptr": "layer3_12_bn3_running_mean"}, {"Ptr": "layer3_12_bn3_running_var"}, {"Ptr": "layer3_12_bn3_weight"}, {"Ptr": "layer3_12_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_13_bn1_running_mean"}, {"Ptr": "layer3_13_bn1_running_var"}, {"Ptr": "layer3_13_bn1_weight"}, {"Ptr": "layer3_13_bn1_bias"}, {"Ptr": "var_578"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_13_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_13_bn2_running_mean"}, {"Ptr": "layer3_13_bn2_running_var"}, {"Ptr": "layer3_13_bn2_weight"}, {"Ptr": "layer3_13_bn2_bias"}, {"Ptr": "var_587"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_13_conv3_weight"}, {"Ptr": "layer3_13_bn3_running_mean"}, {"Ptr": "layer3_13_bn3_running_var"}, {"Ptr": "layer3_13_bn3_weight"}, {"Ptr": "layer3_13_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_14_bn1_running_mean"}, {"Ptr": "layer3_14_bn1_running_var"}, {"Ptr": "layer3_14_bn1_weight"}, {"Ptr": "layer3_14_bn1_bias"}, {"Ptr": "var_601"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_14_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_14_bn2_running_mean"}, {"Ptr": "layer3_14_bn2_running_var"}, {"Ptr": "layer3_14_bn2_weight"}, {"Ptr": "layer3_14_bn2_bias"}, {"Ptr": "var_610"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_14_conv3_weight"}, {"Ptr": "layer3_14_bn3_running_mean"}, {"Ptr": "layer3_14_bn3_running_var"}, {"Ptr": "layer3_14_bn3_weight"}, {"Ptr": "layer3_14_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_15_bn1_running_mean"}, {"Ptr": "layer3_15_bn1_running_var"}, {"Ptr": "layer3_15_bn1_weight"}, {"Ptr": "layer3_15_bn1_bias"}, {"Ptr": "var_624"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_15_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_15_bn2_running_mean"}, {"Ptr": "layer3_15_bn2_running_var"}, {"Ptr": "layer3_15_bn2_weight"}, {"Ptr": "layer3_15_bn2_bias"}, {"Ptr": "var_633"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_15_conv3_weight"}, {"Ptr": "layer3_15_bn3_running_mean"}, {"Ptr": "layer3_15_bn3_running_var"}, {"Ptr": "layer3_15_bn3_weight"}, {"Ptr": "layer3_15_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_16_bn1_running_mean"}, {"Ptr": "layer3_16_bn1_running_var"}, {"Ptr": "layer3_16_bn1_weight"}, {"Ptr": "layer3_16_bn1_bias"}, {"Ptr": "var_647"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_16_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_16_bn2_running_mean"}, {"Ptr": "layer3_16_bn2_running_var"}, {"Ptr": "layer3_16_bn2_weight"}, {"Ptr": "layer3_16_bn2_bias"}, {"Ptr": "var_656"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_16_conv3_weight"}, {"Ptr": "layer3_16_bn3_running_mean"}, {"Ptr": "layer3_16_bn3_running_var"}, {"Ptr": "layer3_16_bn3_weight"}, {"Ptr": "layer3_16_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_17_bn1_running_mean"}, {"Ptr": "layer3_17_bn1_running_var"}, {"Ptr": "layer3_17_bn1_weight"}, {"Ptr": "layer3_17_bn1_bias"}, {"Ptr": "var_670"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_17_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_17_bn2_running_mean"}, {"Ptr": "layer3_17_bn2_running_var"}, {"Ptr": "layer3_17_bn2_weight"}, {"Ptr": "layer3_17_bn2_bias"}, {"Ptr": "var_679"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_17_conv3_weight"}, {"Ptr": "layer3_17_bn3_running_mean"}, {"Ptr": "layer3_17_bn3_running_var"}, {"Ptr": "layer3_17_bn3_weight"}, {"Ptr": "layer3_17_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_18_bn1_running_mean"}, {"Ptr": "layer3_18_bn1_running_var"}, {"Ptr": "layer3_18_bn1_weight"}, {"Ptr": "layer3_18_bn1_bias"}, {"Ptr": "var_693"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_18_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_18_bn2_running_mean"}, {"Ptr": "layer3_18_bn2_running_var"}, {"Ptr": "layer3_18_bn2_weight"}, {"Ptr": "layer3_18_bn2_bias"}, {"Ptr": "var_702"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_18_conv3_weight"}, {"Ptr": "layer3_18_bn3_running_mean"}, {"Ptr": "layer3_18_bn3_running_var"}, {"Ptr": "layer3_18_bn3_weight"}, {"Ptr": "layer3_18_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_19_bn1_running_mean"}, {"Ptr": "layer3_19_bn1_running_var"}, {"Ptr": "layer3_19_bn1_weight"}, {"Ptr": "layer3_19_bn1_bias"}, {"Ptr": "var_716"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_19_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_19_bn2_running_mean"}, {"Ptr": "layer3_19_bn2_running_var"}, {"Ptr": "layer3_19_bn2_weight"}, {"Ptr": "layer3_19_bn2_bias"}, {"Ptr": "var_725"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_19_conv3_weight"}, {"Ptr": "layer3_19_bn3_running_mean"}, {"Ptr": "layer3_19_bn3_running_var"}, {"Ptr": "layer3_19_bn3_weight"}, {"Ptr": "layer3_19_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_20_bn1_running_mean"}, {"Ptr": "layer3_20_bn1_running_var"}, {"Ptr": "layer3_20_bn1_weight"}, {"Ptr": "layer3_20_bn1_bias"}, {"Ptr": "var_739"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_20_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_20_bn2_running_mean"}, {"Ptr": "layer3_20_bn2_running_var"}, {"Ptr": "layer3_20_bn2_weight"}, {"Ptr": "layer3_20_bn2_bias"}, {"Ptr": "var_748"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_20_conv3_weight"}, {"Ptr": "layer3_20_bn3_running_mean"}, {"Ptr": "layer3_20_bn3_running_var"}, {"Ptr": "layer3_20_bn3_weight"}, {"Ptr": "layer3_20_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_21_bn1_running_mean"}, {"Ptr": "layer3_21_bn1_running_var"}, {"Ptr": "layer3_21_bn1_weight"}, {"Ptr": "layer3_21_bn1_bias"}, {"Ptr": "var_762"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_21_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_21_bn2_running_mean"}, {"Ptr": "layer3_21_bn2_running_var"}, {"Ptr": "layer3_21_bn2_weight"}, {"Ptr": "layer3_21_bn2_bias"}, {"Ptr": "var_771"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_21_conv3_weight"}, {"Ptr": "layer3_21_bn3_running_mean"}, {"Ptr": "layer3_21_bn3_running_var"}, {"Ptr": "layer3_21_bn3_weight"}, {"Ptr": "layer3_21_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_22_bn1_running_mean"}, {"Ptr": "layer3_22_bn1_running_var"}, {"Ptr": "layer3_22_bn1_weight"}, {"Ptr": "layer3_22_bn1_bias"}, {"Ptr": "var_785"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_22_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_22_bn2_running_mean"}, {"Ptr": "layer3_22_bn2_running_var"}, {"Ptr": "layer3_22_bn2_weight"}, {"Ptr": "layer3_22_bn2_bias"}, {"Ptr": "var_794"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_22_conv3_weight"}, {"Ptr": "layer3_22_bn3_running_mean"}, {"Ptr": "layer3_22_bn3_running_var"}, {"Ptr": "layer3_22_bn3_weight"}, {"Ptr": "layer3_22_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_23_bn1_running_mean"}, {"Ptr": "layer3_23_bn1_running_var"}, {"Ptr": "layer3_23_bn1_weight"}, {"Ptr": "layer3_23_bn1_bias"}, {"Ptr": "var_808"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_23_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_23_bn2_running_mean"}, {"Ptr": "layer3_23_bn2_running_var"}, {"Ptr": "layer3_23_bn2_weight"}, {"Ptr": "layer3_23_bn2_bias"}, {"Ptr": "var_817"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_23_conv3_weight"}, {"Ptr": "layer3_23_bn3_running_mean"}, {"Ptr": "layer3_23_bn3_running_var"}, {"Ptr": "layer3_23_bn3_weight"}, {"Ptr": "layer3_23_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_24_bn1_running_mean"}, {"Ptr": "layer3_24_bn1_running_var"}, {"Ptr": "layer3_24_bn1_weight"}, {"Ptr": "layer3_24_bn1_bias"}, {"Ptr": "var_831"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_24_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_24_bn2_running_mean"}, {"Ptr": "layer3_24_bn2_running_var"}, {"Ptr": "layer3_24_bn2_weight"}, {"Ptr": "layer3_24_bn2_bias"}, {"Ptr": "var_840"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_24_conv3_weight"}, {"Ptr": "layer3_24_bn3_running_mean"}, {"Ptr": "layer3_24_bn3_running_var"}, {"Ptr": "layer3_24_bn3_weight"}, {"Ptr": "layer3_24_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_25_bn1_running_mean"}, {"Ptr": "layer3_25_bn1_running_var"}, {"Ptr": "layer3_25_bn1_weight"}, {"Ptr": "layer3_25_bn1_bias"}, {"Ptr": "var_854"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_25_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_25_bn2_running_mean"}, {"Ptr": "layer3_25_bn2_running_var"}, {"Ptr": "layer3_25_bn2_weight"}, {"Ptr": "layer3_25_bn2_bias"}, {"Ptr": "var_863"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_25_conv3_weight"}, {"Ptr": "layer3_25_bn3_running_mean"}, {"Ptr": "layer3_25_bn3_running_var"}, {"Ptr": "layer3_25_bn3_weight"}, {"Ptr": "layer3_25_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_26_bn1_running_mean"}, {"Ptr": "layer3_26_bn1_running_var"}, {"Ptr": "layer3_26_bn1_weight"}, {"Ptr": "layer3_26_bn1_bias"}, {"Ptr": "var_877"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_26_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_26_bn2_running_mean"}, {"Ptr": "layer3_26_bn2_running_var"}, {"Ptr": "layer3_26_bn2_weight"}, {"Ptr": "layer3_26_bn2_bias"}, {"Ptr": "var_886"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_26_conv3_weight"}, {"Ptr": "layer3_26_bn3_running_mean"}, {"Ptr": "layer3_26_bn3_running_var"}, {"Ptr": "layer3_26_bn3_weight"}, {"Ptr": "layer3_26_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_27_bn1_running_mean"}, {"Ptr": "layer3_27_bn1_running_var"}, {"Ptr": "layer3_27_bn1_weight"}, {"Ptr": "layer3_27_bn1_bias"}, {"Ptr": "var_900"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_27_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_27_bn2_running_mean"}, {"Ptr": "layer3_27_bn2_running_var"}, {"Ptr": "layer3_27_bn2_weight"}, {"Ptr": "layer3_27_bn2_bias"}, {"Ptr": "var_909"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_27_conv3_weight"}, {"Ptr": "layer3_27_bn3_running_mean"}, {"Ptr": "layer3_27_bn3_running_var"}, {"Ptr": "layer3_27_bn3_weight"}, {"Ptr": "layer3_27_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_28_bn1_running_mean"}, {"Ptr": "layer3_28_bn1_running_var"}, {"Ptr": "layer3_28_bn1_weight"}, {"Ptr": "layer3_28_bn1_bias"}, {"Ptr": "var_923"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_28_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_28_bn2_running_mean"}, {"Ptr": "layer3_28_bn2_running_var"}, {"Ptr": "layer3_28_bn2_weight"}, {"Ptr": "layer3_28_bn2_bias"}, {"Ptr": "var_932"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_28_conv3_weight"}, {"Ptr": "layer3_28_bn3_running_mean"}, {"Ptr": "layer3_28_bn3_running_var"}, {"Ptr": "layer3_28_bn3_weight"}, {"Ptr": "layer3_28_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_29_bn1_running_mean"}, {"Ptr": "layer3_29_bn1_running_var"}, {"Ptr": "layer3_29_bn1_weight"}, {"Ptr": "layer3_29_bn1_bias"}, {"Ptr": "var_946"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_29_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_29_bn2_running_mean"}, {"Ptr": "layer3_29_bn2_running_var"}, {"Ptr": "layer3_29_bn2_weight"}, {"Ptr": "layer3_29_bn2_bias"}, {"Ptr": "var_955"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_29_conv3_weight"}, {"Ptr": "layer3_29_bn3_running_mean"}, {"Ptr": "layer3_29_bn3_running_var"}, {"Ptr": "layer3_29_bn3_weight"}, {"Ptr": "layer3_29_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_30_bn1_running_mean"}, {"Ptr": "layer3_30_bn1_running_var"}, {"Ptr": "layer3_30_bn1_weight"}, {"Ptr": "layer3_30_bn1_bias"}, {"Ptr": "var_969"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_30_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_30_bn2_running_mean"}, {"Ptr": "layer3_30_bn2_running_var"}, {"Ptr": "layer3_30_bn2_weight"}, {"Ptr": "layer3_30_bn2_bias"}, {"Ptr": "var_978"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_30_conv3_weight"}, {"Ptr": "layer3_30_bn3_running_mean"}, {"Ptr": "layer3_30_bn3_running_var"}, {"Ptr": "layer3_30_bn3_weight"}, {"Ptr": "layer3_30_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_31_bn1_running_mean"}, {"Ptr": "layer3_31_bn1_running_var"}, {"Ptr": "layer3_31_bn1_weight"}, {"Ptr": "layer3_31_bn1_bias"}, {"Ptr": "var_992"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_31_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_31_bn2_running_mean"}, {"Ptr": "layer3_31_bn2_running_var"}, {"Ptr": "layer3_31_bn2_weight"}, {"Ptr": "layer3_31_bn2_bias"}, {"Ptr": "var_1001"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_31_conv3_weight"}, {"Ptr": "layer3_31_bn3_running_mean"}, {"Ptr": "layer3_31_bn3_running_var"}, {"Ptr": "layer3_31_bn3_weight"}, {"Ptr": "layer3_31_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_32_bn1_running_mean"}, {"Ptr": "layer3_32_bn1_running_var"}, {"Ptr": "layer3_32_bn1_weight"}, {"Ptr": "layer3_32_bn1_bias"}, {"Ptr": "var_1015"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_32_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_32_bn2_running_mean"}, {"Ptr": "layer3_32_bn2_running_var"}, {"Ptr": "layer3_32_bn2_weight"}, {"Ptr": "layer3_32_bn2_bias"}, {"Ptr": "var_1024"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_32_conv3_weight"}, {"Ptr": "layer3_32_bn3_running_mean"}, {"Ptr": "layer3_32_bn3_running_var"}, {"Ptr": "layer3_32_bn3_weight"}, {"Ptr": "layer3_32_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_33_bn1_running_mean"}, {"Ptr": "layer3_33_bn1_running_var"}, {"Ptr": "layer3_33_bn1_weight"}, {"Ptr": "layer3_33_bn1_bias"}, {"Ptr": "var_1038"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_33_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_33_bn2_running_mean"}, {"Ptr": "layer3_33_bn2_running_var"}, {"Ptr": "layer3_33_bn2_weight"}, {"Ptr": "layer3_33_bn2_bias"}, {"Ptr": "var_1047"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_33_conv3_weight"}, {"Ptr": "layer3_33_bn3_running_mean"}, {"Ptr": "layer3_33_bn3_running_var"}, {"Ptr": "layer3_33_bn3_weight"}, {"Ptr": "layer3_33_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_34_bn1_running_mean"}, {"Ptr": "layer3_34_bn1_running_var"}, {"Ptr": "layer3_34_bn1_weight"}, {"Ptr": "layer3_34_bn1_bias"}, {"Ptr": "var_1061"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf83"}, {"Ptr": "layer3_34_conv2_weight"}, {"Ptr": "buf75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_34_bn2_running_mean"}, {"Ptr": "layer3_34_bn2_running_var"}, {"Ptr": "layer3_34_bn2_weight"}, {"Ptr": "layer3_34_bn2_bias"}, {"Ptr": "var_1070"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf75"}, {"Ptr": "layer3_34_conv3_weight"}, {"Ptr": "layer3_34_bn3_running_mean"}, {"Ptr": "layer3_34_bn3_running_var"}, {"Ptr": "layer3_34_bn3_weight"}, {"Ptr": "layer3_34_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf75"}, {"Ptr": "layer3_35_bn1_running_mean"}, {"Ptr": "layer3_35_bn1_running_var"}, {"Ptr": "layer3_35_bn1_weight"}, {"Ptr": "layer3_35_bn1_bias"}, {"Ptr": "var_1084"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf75"}, {"Ptr": "layer3_35_conv2_weight"}, {"Ptr": "buf83"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern039", [{"Ptr": "buf83"}, {"Ptr": "layer3_35_bn2_running_mean"}, {"Ptr": "layer3_35_bn2_running_var"}, {"Ptr": "layer3_35_bn2_weight"}, {"Ptr": "layer3_35_bn2_bias"}, {"Ptr": "var_1093"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf83"}, {"Ptr": "layer3_35_conv3_weight"}, {"Ptr": "layer3_35_bn3_running_mean"}, {"Ptr": "layer3_35_bn3_running_var"}, {"Ptr": "layer3_35_bn3_weight"}, {"Ptr": "layer3_35_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern182", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "var_1107"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern183", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf294"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern184", [{"Ptr": "buf2"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern185", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_bn3_running_mean"}, {"Ptr": "layer4_0_bn3_running_var"}, {"Ptr": "layer4_0_bn3_weight"}, {"Ptr": "layer4_0_bn3_bias"}, {"Ptr": "buf26"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_1128"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern186", [{"Ptr": "buf294"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_1134"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern187", [{"Ptr": "buf294"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf302"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern188", [{"Ptr": "buf34"}, {"Ptr": "buf26"}, {"Ptr": "layer4_1_bn3_running_mean"}, {"Ptr": "layer4_1_bn3_running_var"}, {"Ptr": "layer4_1_bn3_weight"}, {"Ptr": "layer4_1_bn3_bias"}, {"Ptr": "var_1148"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern186", [{"Ptr": "buf302"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "var_1154"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern187", [{"Ptr": "buf302"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf294"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern191", [{"Ptr": "buf310"}, {"Ptr": "buf26"}, {"Ptr": "layer4_2_bn3_running_mean"}, {"Ptr": "layer4_2_bn3_running_var"}, {"Ptr": "layer4_2_bn3_weight"}, {"Ptr": "layer4_2_bn3_bias"}, {"Ptr": "buf34"}, {"Ptr": "var_1169"}, {"Ptr": "var_1170"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern192", [{"Ptr": "fc_bias"}, {"Ptr": "buf310"}, {"Ptr": "fc_weight"}, {"Ptr": "buf312"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18.json b/machine_interface/tests/data/test_gpu_resnet18.json index 87b6871e..2b4e9320 100644 --- a/machine_interface/tests/data/test_gpu_resnet18.json +++ b/machine_interface/tests/data/test_gpu_resnet18.json @@ -6,22 +6,21 @@ {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18/tem_fused_conv2d_6.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18/tem_fused_conv2d_17.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet18/tem_fused_linear_21.hsaco"} + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet18/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18/tem_fused_linear_20.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, @@ -30,25 +29,24 @@ {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern006"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern007"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern008"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern011"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern012"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern013"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern014"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern016"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern013"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern019"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern020"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern021"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern022"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern023"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern025"}, - {"module_name": "tem_fused_linear_21.hsaco", "kernel_name": "kern026"} + {"module_name": "tem_fused_conv2d_16.hsaco", "kernel_name": "kern020"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern022"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern024"}, + {"module_name": "tem_fused_linear_20.hsaco", "kernel_name": "kern025"} ], "blueprint": { - "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_63", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_109", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_119", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_143", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_161", "var_162", "fc_bias", "fc_weight"], + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_107", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_117", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_141", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_159", "var_160", "fc_bias", "fc_weight"], "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf12": {"Absolute": 401408}, "buf13": {"Absolute": 401408}, "buf20": {"Absolute": 401408}, "buf22": {"Absolute": 200704}, "buf23": {"Absolute": 200704}, "buf29": {"Absolute": 200704}, "buf32": {"Absolute": 100352}, "buf33": {"Absolute": 100352}, "buf39": {"Absolute": 100352}, "buf40": {"Absolute": 2048}, "buf42": {"Absolute": 4000}}, "outputs": ["buf42"], "control_flow": [ @@ -124,25 +122,16 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf12"}], { + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf12"}], { "grid_dim_x": {"Absolute": 13}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 256}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 8192} - }]}, - {"ExecKernel": ["kern009", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_63"}], { - "grid_dim_x": {"Absolute": 98}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 256}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} + "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf12"}], { + {"ExecKernel": ["kern009", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf13"}], { "grid_dim_x": {"Absolute": 13}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, @@ -151,7 +140,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern011", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf13"}, {"Ptr": "buf20"}], { + {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "buf20"}], { "grid_dim_x": {"Absolute": 13}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, @@ -160,7 +149,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern012", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + {"ExecKernel": ["kern011", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -169,7 +158,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern013", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -178,7 +167,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern014", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { + {"ExecKernel": ["kern013", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -187,7 +176,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 17408} }]}, - {"ExecKernel": ["kern013", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { + {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -196,7 +185,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern016", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_109"}], { + {"ExecKernel": ["kern015", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_107"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -205,7 +194,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern013", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + {"ExecKernel": ["kern012", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 1}, @@ -214,7 +203,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_119"}], { + {"ExecKernel": ["kern017", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_117"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -223,7 +212,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern019", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -232,7 +221,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 16384} }]}, - {"ExecKernel": ["kern020", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -241,7 +230,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 4096} }]}, - {"ExecKernel": ["kern021", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { + {"ExecKernel": ["kern020", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 1}, @@ -250,7 +239,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 8192} }]}, - {"ExecKernel": ["kern022", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_143"}], { + {"ExecKernel": ["kern021", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_141"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -259,7 +248,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["kern023", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { + {"ExecKernel": ["kern022", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -268,7 +257,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 5120} }]}, - {"ExecKernel": ["kern020", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 32}, "grid_dim_z": {"Absolute": 1}, @@ -277,7 +266,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 4096} }]}, - {"ExecKernel": ["kern025", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_161"}, {"Ptr": "var_162"}], { + {"ExecKernel": ["kern024", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_159"}, {"Ptr": "var_160"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -286,7 +275,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 4} }]}, - {"ExecKernel": ["kern026", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + {"ExecKernel": ["kern025", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { "grid_dim_x": {"Absolute": 32}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/data/test_gpu_resnet34.json b/machine_interface/tests/data/test_gpu_resnet34.json new file mode 100644 index 00000000..ad53f49c --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet34.json @@ -0,0 +1,516 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet34/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet34/tem_fused_linear_21.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern019"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern021"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern023"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern040"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern041"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "kernel_name": "kern042"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern043"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern044"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern046"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern049"}, + {"module_name": "tem_fused_linear_21.hsaco", "kernel_name": "kern050"} + ], + "blueprint": { + "inputs": ["arg218_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_152", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_162", "layer3_2_conv1_weight", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "var_171", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_181", "layer3_3_conv1_weight", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "var_190", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_200", "layer3_4_conv1_weight", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "var_209", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_219", "layer3_5_conv1_weight", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "var_228", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_238", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_262", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_279", "layer4_2_conv1_weight", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "var_297", "var_298", "fc_bias", "fc_weight"], + "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf16": {"Absolute": 401408}, "buf17": {"Absolute": 401408}, "buf24": {"Absolute": 401408}, "buf34": {"Absolute": 200704}, "buf35": {"Absolute": 200704}, "buf41": {"Absolute": 200704}, "buf60": {"Absolute": 100352}, "buf61": {"Absolute": 100352}, "buf67": {"Absolute": 100352}, "buf72": {"Absolute": 2048}, "buf74": {"Absolute": 4000}}, + "outputs": ["buf74"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg218_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_9"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf6"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf16"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf6"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf17"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf16"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf17"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf24"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf17"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "buf24"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf16"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf17"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf24"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf24"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf35"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_152"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_162"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer3_2_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "var_171"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_181"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer3_3_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "var_190"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_200"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer3_4_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "var_209"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_219"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer3_5_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "var_228"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_238"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern040", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern041", [{"Ptr": "buf60"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern042", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf61"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf60"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_262"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern044", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern041", [{"Ptr": "buf60"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern046", [{"Ptr": "buf61"}, {"Ptr": "buf67"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "var_279"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern044", [{"Ptr": "buf61"}, {"Ptr": "layer4_2_conv1_weight"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern041", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern049", [{"Ptr": "buf72"}, {"Ptr": "buf60"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf61"}, {"Ptr": "var_297"}, {"Ptr": "var_298"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4} + }]}, + {"ExecKernel": ["kern050", [{"Ptr": "fc_bias"}, {"Ptr": "buf72"}, {"Ptr": "fc_weight"}, {"Ptr": "buf74"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco b/machine_interface/tests/libs/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a2707a4bb2fd3bc0f4cd5315ffb9805571fb792b GIT binary patch literal 6872 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco b/machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..6294e18ee69ee3717849e07d3b45e101174dd8b7 GIT binary patch literal 6576 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 LgzS$P0TEUJlq^n6 delta 215 zcmeyM^+9Wc7z>l3*<=Y8Zy>cfm4%g&%g~G=JGCg!0LU+4b!F$&Wq<(w$%l9fK#FsC zWvtT87?RV?3X;-_lPc4Tj4~?9jEjrRs!UBQGt-LGlG04G%X72JD-uo3O-j>E%G1*d r@+wQRs`LsfCwK8$Fr}MKKEmtkNS+A{j0`XrE)L>jLUwSBfCwu9ZZJb! diff --git a/machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..94ca4f791fd9f068c770f822eb0e7c4f4252e514 GIT binary patch literal 5480 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 Sc@rzQ;$Ig0?W`!UpZ_nmdFX=x literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..28fe90624a7452eeb511cc4c46fbaf5eac8ef606 GIT binary patch literal 7504 zcmeHLU2GiH6+Uz4&Sd>>@2>L$aWdXG#QB@G9U4d!fq}Gum9!}pBB7O*v3K^zS?_Lk z*CDQ8?HI?VYD669L;GZ@e?cHZsM@NuY2rv#pJk^ZcIrdnxYC?{oT7X@YN}p68F_`J9w|dHyJ1YAa}1^_g<+*CF&%bZ#Mi z)_Nw<)7GsTOqylFehd?7ZH8_$;DXSP#F7GImWY&-FI!7UbJ z#k@1({ydq<4Lg}jb}o@9x&$kxzv~9xv`;&kaW{4{osGZcLt?|@iG*AD3k!Lf)kfn%9jivYZ~sum+JN#7d{Y)x zVGSy6!t-?x@>GWHQ(%#-=e?^RpZ)9J-|NWJMUBR3tgfjFdt=67VF*O?? zdl*PXG?xLUDit9-3f9cER(SdPg$i5|P`MRo6M#M<0xm2~O97LM=dU*)R=}oP0qpCr z`Ifd0GdFeY102=L^7hF8I-*u=WXC{S!@S-{M! zfKP9A=-pCUv)5YCe?1>b@CEEQl$(`(idoLgO0>tZ&aV}#P_YV%wUJ|O zBwH1+QN_2uF20Kuq2g;?J-*d#HhJ;YaCNNA+?8>t$5TVE#6%`0nv2J)0(c zHh%6*eYM;L0)YXX=Yv!a_)J>JCe@Gk46F5HmI)_dc9yWFHFZs(-Ty3jI;~~6J=fN4 z_TDh3U#tjA#bA1L)SC8USl7{$TIjhi5~SMb5zrvaa*%2g`4HBmzQeD{AWZ6If%dj- z>7{z3xdGZBe=5dy8n1|m^0P(xIq&%iw5{~Br5vRElOKGhZ95u4;#|>B8|9yElMLtI z;oELhwgVpJy2*jK67=d2pL5+@0(Cwl`k+|Rha?{+zN5|FJJOTN;X7Zi+gPV-EbAKd zZdSy7DwZBK&l#_V^B7B*W9i)$2~%EsDX%@{FwGbFPMmLWw;xLwCWB;;z88Khy(wCU zEY#`VSEn0V)(!cw^r~2PsaX7HdkVi(>-qiMV@K9gEPE)H)^cFao`H2y+pDkjFxg4@ zrJOf<`Ph>>MKRRrNKZ#B>x4-s-**0bW6R4g06cNCu@mbZKAJN-B{Unpta+0!6PqNo zDp_lnl66UFSF-kQCF_>Zp=2G~lx&*>L&=OLC2NupQnC=%DESrmj2d*`Z$rqJX-J!t ztZ9RiA#G8zmV1>9sjg%?euv2(eUICetZl23A(cud8H?on=>rgx_%zO5$Kt(v z-Oa(>8n{~nbv3|y&5df^&f8|S-S_v}_yzf?8pm&o*Lc1CuiF*+{lRl;ToIUI#)nt$ zT8Fm1HDu_m?HlfG?a+egU)Z3xTIg7}aWrW5hj1&~1^uC?Hym#|(ew<3w1AgyG2rbE z1ngBN+lba|Mg;9>HN94}3nh|n)U@a>kMAS?0iS=4_=kOdp7_Unev$aceg2=sf5Yc# z_o98v=Z_Kp3|fCdok;vZ(Pouei&KmSY8&HTS9r$VzXqOhR~4RdPppAw+)agN+;`T% zGwyE+&$#>=c*cFA@Qj;T1J5|l3*&yc2A<_t)%c>Ke^B&2MQbg>)&GdW`)MTNLfPRj^xBkX*?v6Enkv6m5@roPiMLjA^}XHESn(zjV3d&{E{ zV*oXM!%x|!zW=zX4-tGn!-s6*tG00vwGUWExZgPVtkLIdA1vvQq8a@ml$&v5Ys5Hc zTKc0y*wYumGWMl#@q_^6ruA!+c2)k6iQOUN0aO1Y95*`jQL?h$Lcz5D+esUx7SbW( zfT{l(Ft%TyZWLKBx&zbH_j*xp628FHmk4^hBZu4G;Rhf+nbs z168Oekiuvq%a+mEXSCyFy3B5)t;^_){2%w)%q=vXuBg5o^z)ohz?UYkYfx45tQ~i#sI;?2>z?n?$)gJf4g>!@~vlH22ckM2`7_lf^Fw_dLVCN+zA9AUyR%0Z%T$ z9?6Z-`6$roW62ptnnDGi^C^EVnBu`C#15bM`Xfi5e5^hzU%p5Aq(3-)hP=j%qI`bM z!z-5=q)Q71R^xRI(s*R;Rj z5i2#zsAwF{hBzk3Ik&c;{Mzq#I5=v8`5`1x`FN63)=%J@G~ z`WqOiDEngiW0Z64)V%b3@2bBW{eHTZ$;fSq8EugAt1kYhVU#tss;Lmc0XF&H_ck}&wb5&T>i@T%rUDE0 z#?GBB^;_G!nx7XU^-VilTU&bmf&%N!DuAIkXMyWx6?kq|f$wG&6x^(WvYS;ibwH>+UdUsUjFpsi>7&hGl&mbPszU48Yf?Yml<>&g4r%RGt@F%!(j&i1x0>py;_ zoWvVm32bZJRo~j#*jIng_MWX$EjaH+Afmb&x3xS&QCUzp@3la8PkVo3U(1BzNv)m= z^iBk<=LJFZcDHwSiWp|k1bV-8){nfrw$@z>3L4Gjq`#%7w|#rpkqC3K!g1vDD*GYZ4+E$_|35sIy=eyzvF_|4rgXOE_3D3O|>qFh0_s#}a>mN?HIizP#ix1jv~ zadkliQzGL!6yz1;N#{QdefJKFZbzBar#LRq7?93kP4ke>u%^YZiWn-(P}rgIA+$bl zVgLCkB{^u-nu_+aO`iLh;wfMk$5>R95*^uGHpDF6!^-CD2r7$=Rqoql^*(Az&c>d6 zI%H`z_BL3&nridKz?MkZYggH6l_}%uj&oY%-qeGGcFoIThQA$|5aTOhe;QNu2xTzY z;yYxsXQ$d6zWZ%9uQk%*XKdv1NQ}aUl4E>ow8d8{Wv#K`Daz^llH+*!afj2_!S?QD z?9I!HLt)kwhkw2)8*lL+udSLB746`%!wojy{k3UceTU6|f8|{70x7qr!QzXJ_V|*b zZN3K>%T{+-{FUJ8ux$^sc`+N~5%cU?Y-GAGDbnH_hPyA7b;Fx1b_^jq#*_>f3y-NY zY#2q1CA?pWR(xT`e9Xg`O(`iN8HMb0Dr_F=M?wGoh8W-BhB)7M8tlG@8yvnz8=Ssq zMGG>iqhLp}-?AgdAGssWZ{1<{N9}O<4cN<^CczNeMyN9Us96OXJchW3(u!6BtRs)rLz-iZG8XR9aeQJ8l~cmz8mv+R&(t84fL6P++j(2o_q1xo5VQ zttg*8J41^hoKd8aE#6E;8+cpP@uoR6lF7;xGFfRtCOZoG$tUSNC9>nwCWzTztPw>Y5i zldIBCu5v$#MmhPV4JiEUs`Rg`+`l4GPX1>Bl0WJ|@=py&eysw@ZxtZdBwqD2-g3eFJL1($1-f{uO*1heu`r){c3Tdll38QjX~a##CnjoJCRRFW)$l#H}dur7B(=Rh(dE6V4kk4 z2y8Derw_G)&gL|tRMI|9Lr~IwP9x$aoy%!D%Zd6KoOTPk1f{Y(UCjH`xn`Ja1#`_p zn?6p(SWw?4`-TGk=`RJ}jWKxs%c1i_-5K7r42C^UoHtG|HeR5=j-~H`aTdWC)|As& z0nW$5-^h zlYta3P9WMrkN2IoN2FeT604p^0bAYmFMs|NW4SDW zqt7hocH&&k?ZjMjJL!N*c3Ko+Cl1iuPWTA76JNrZ^_kFHBJ~zT%yb*6Ud3luBTqBM zaysnRVsPfdcMZeerZbU6!6{s49bq<#SyObaOtac)JjA;loY1(|2) zTnzj`VPA|z#8+sO&xWyz5>(iXu^60iROTLwh=gwV3r>w%Q2FwK!`^IPYPQ|S+qEma ztq|&jaGnV%7Op!My6H^Fpx+t+{WueuXPsDn?ty-sog$!LQH6f=o{|3JUY{@3=MegF z)}y|J6gzagkW!J{Na<7Bv7wzPYR8$JVWYJRXRlbr5wuZ1kdHF%}(m>_tPB)dq57suLJR+9+lLI?E`I7@Xyr%%=F;;e& z^uhl=p?WsPeouVF2}4{s5f==0FxX+*ApLK(^uOgqL%5b`U;TH$K2x>F&5_% z^BIw*u#oaB#_%-Ki%2gaz0AkcTzfFr8~IpeYhsMxYjnO3DJLQO9MTW4FNG%7D#)+p z@;(h?YlUCEdD+VAJd8T8K>h;K8%S>=y&ZH-t=qus`bAr!9{JQ6$eu+y2Vc6rE~2eX zv@Rx~Uv?KOLVwCa%4Nu1MfwQoW29fAKU3;-inVkcy!VklS&LYj4Yrj*ZWw7F(tf0aQ*6`NK&8;R5WI4v zMN@18-!1sGPI!>6pA{zC206Qsn;h%cZ3mwbKM8A%(`7Hx(j2gDIrLpb8b!K<^xhQP z5Hrm}XAO9@NUNsU2EJGDt>F2P{7AV-fhpq#Ik}hFz>7hmHSW4?;A^BO1@WB>+oHH_ zYyj&bk_{;aDQ;l$oTAPi(Y6AfhGZF_vywTd;D-d?4xS4s70Hd1J}`OQAh%!0Ilyxw zB@axqZJ79q5_h2j!4+nE&OP^5&it@aFd(o@;zEuTqfzLGRrVvSluQ01j?@S23w)19 z+b&v99;XJslBjLBJCS^wcF^*yqlPoiI9uEYRG8jI=r zj!J#snW8U4*7Hit=15~TslJu^a|HEl=*MB8RrV(udxXv9F0!Vj!|%G`1HVVQhV1| z-%9*g>{&6cisHDmB@05zF39~4q(374FQhN0*mj%^>=ruj1#dS}5Vj3X*am(%?O$R) ztN?!rQYBI~Y?~tIA-QmMT|4bN;p*Glaij;{(O!T(1OAFSZX~gnntl!ae1A0kkjA?U zzTqJN|nCVo>3D@|DcLvZ@O9)^9uYqPG0|r?the z4QUmxhP0*U_i9UC-=l3peFOD313Q4LfqlR=z<%IzU^lP^*aLKYG`w3QTdpe1U-80~ zu62s5?#GX5tKNE4%a8xD7KnXIo1>o6d=cN*ic{*fqNKaEYfWqLMGo2HVE(%1;M}^_ zpbvFBZ&zHty34^ib>qR>k%zV1s1dCo;ZAL&xxpA|{mck|_9?o-Lg9u_IF4NY+!z`E z!sxCzeWknQq}P`iyZ1SE zp?=rc6Yc`oRMhClITrGtDlGilkA&QBu5#>vTnE}If?V-GOF7IzC(1ifzZm7luVp#r z$N=5`pNL+3IrNdj+KK;PB#rSRe(`^n^oI)D3c4s_u8@Bp?JLbR=kq&IUhrT2pc{e> z@U88juQjK#E{+-OTJuM&ljj|*gXZ7^#pQ4G?Cw~%mKijzV~T4I==M9-uww0#u{n2) zs>M~~!MP~gx?w%@0gc;N!=87>im!}j8dt{qjgC*ouB{nWjVtflwo>^APh@Sq@_v7@ z%p1_-yB++h4}-<*Q`9@D&tbnDD~4|Fql;8Vvc}IwGmC%rVSh2{Ta9*qHg4;n@+_Qv+{KEftH>40AH^_Sr5e$2i9z#}v9-42g4eAmO{%(3u6 z5f^1DtA^}j2jJU~^*wlG=C!7M^m&f^e|6o(;Ig{WU?pT8eNb^#)?Er#)x8%Sx!7uq zjDBK-KasxNDtvk5(x=AAd!HHHXMd79GyIwK(NBesa^Hnd4qp1)7<}&wWAGw;e)P8n z_tAG9Gs#Dr+pha)__yQI$1e-~;zNO-%h-T?%dez7e3r)m^cd)if%cohZ~c#w4N#D{BUA{6uk8fo^$dAFGBhRXsGSR#%M%m!Yif&_PxSY<_SU?Y}ct{my7+ z^E;#c&E!M-M%CtbF4@|s{M{p2ZSP#_ua@~{=&5`V{HphY)$sA^cOKEJF#pxi&3zoZ z1<5x5bTqU2r|Kn$`N#QLc~jq;J_F(sxPd`{_}=lJubsn*RpO zKiBsz^t}r^NZ&!|dv}!EM>^WxovN?6ZIXTO9@UqTKD1GZ`KkPG*JggjzSbMt$NLDI zs!0d*lHWGLZ>yoJ`VW7c>BpMy2OU~}bhi(AAM6dSU(Z5okM0hwUCTmifNR#^E1jde zdCZ>0XOz{end6MyBVJM1^f;Lk3utdM^wU^uqOquZ1+j4^SXp-#F>x+9@(N<&%w;2d z`90yIt(Q2CoE6XJiA|szUKKHM_mr48!(*ae#>6JX#3u6h*G4lpy>_O5lZ=T?ubs8k zQ~B#XS@o}-6)}PQCK(f(s?G@?e(m0=F;R;34)r#jhYz1WcReP~pRsMG^4C(cHlIJk z^--SmQA}*AIxF;@@1KYX?n5O~-|Nu#I_xlG;`KA!KGISD`c!=s6BG8m-ajcOUbwPR z#@H15C?;-TACC#xG&v^jf{&(SuB&f-#GOOqkMmVF#|-8ulIuPWf7zIWM^-8>H)Jap z9C2T3s$pI(=U~}&!@-=oeL*i|9==U+dF%EEv+528M~30!`z{#a3+IH-wVvfTvi}WZ zm4lFwC*kPqT4gt)y6dhUXrjlhj)zY_fFA4&chg;jxG_LlV7 zmjzw*6G^|M@cpjx$C7?gtOJ|hmGo&^N8#h|_}Mps#%tND@l@IOfuOuI;!5aC{ ze%mrCKj6q(_RxNDwn4rUKIy#;{HlZEEb>sQo`p5B7`pko|Fpu-HkF5P7CCfKoJE$S z-9!6q#g)9)P|Bu!HPd1$_th zar;QevIA4~Wv`rM-+^R3hxDNhFXqR);~M50`X<{~dt>|f*#}V zN#Cn5yo(&GeqPeM6oz+{W5uWZ>>EIeiA5YKChlc;Ux_jYTZp+@v{S^yLc~NF=<*#R zCKgPIi5?ykx5$_%Lrj#B@Ar;omi6}Zm&uqY>+Q4MLghO@_1@CkCt?EmG8q$PRsF(; zdw-)%iHU$XpO@VOAHJvmdQ9BYV_OJ)Wxelt7v9su^--SmQB0Io^$C6Ve2&WuA}08{ zpDXq4gub1y!;FcYJ={Lham&uB`Y0wQ?A!Udc0DFuxKb-)Y>Isp6F0Dr#{_Je922YH zuMUcdth?NJ9m3arydDwfeZO4yeJV@F930J4Tz1HMXRpD!?`L?m#LxT5b<2Y(bu~dJ zWWF;;aXIU1gGqI(f+Ne}<2A!Zcv$*etMIvz+I_~zs{ID{wcGA;hxbb#-6wpM`yza4 zu=b!axawhJaQP#~V9lcj_sNxO_`2^keH=a*ezZsU^dsE@AMO`;u#Y48Sk{B&gYa?k zLG)oE^ppY1&_3;7*$+uRd^QVo&H?GO{esT=o}~K}zTbHdNxDa2v@R_A2T6Bh9ROYY zZ~ff&$;Zj(uQij8_we{2AE)(bA;vx#Yk78FE~7QG4D*=;I%}?TxFy6F{|!~w|M2MelCMN>2b~>J*`16 z&ime#k7-HpNiTHIpS2zSi8^i2)z&I>`Jk(<)|SKDIO5G|LmM(rx>E8<*D9f_?GepM zx}d*w<~E_L4!Y{lKG_w3uDV)b*Gkw`H&s`1-Xy!~9??=r7xd3d+xk_za&K%G?-y)I zruxuHzFG=jEt%1-C1Z}0=k0ToZf8-oQs z#$ZvO!S~8}Yux06E;B|}Ax8R^i26Mh0=ugPc2#mDAD+=pK8zSyuCNS@PX_dOfF87u zm#AZ@TP42+Z}~u{ZIeDcCVjh0x3o^ zI8ux(VIH1$uvE-h#yk-tsfZC5XiuStkr{}Q88Sv@RF&`;Ns}?+LX5cJvoq$6X1eB; z^t)t?xaO7GJXAiv$?KU{+RtT>Cp{D+GpZ_rF2smyUKfuM7h;6_K(;FMEr!0u6+$24 z#I?A@md4v@@}@0DJ2FrDC{AWn;X7Z_x447Hi3@G;eZVXA&4<4EutUa*YkrBaZyxNM zKUE*a%7lIMJ9wgo^)(Rixz6f6$%xy9T1FgoO&oBo49R~NwJcpZn z#(5k06nqvw815(%K5Y~TY%LYoRKk&bEop_6Cm%!~QlZBMbfJCP&yrV4K71C}1;$e9 zq|cTLI*G>=KJ%6+jO3kLB)>>uv@T@w7y-Wk>j3Bs#1#2H`8fH!*awQ>Pn37?wIUT` zZ^7E092>)EK3$kk9W?G6vLyJD9zCiiRpkaFQI--P$26cb%8K^i8B59=&2;AF_B+Xk zZ19J?fQ@`1DSwUEl^5veGRTu2EsFFM1fB3nXWnKlt!C*Q9X{ZMelAxynmM>+#T>e? zL3d7_g#|*dbyPitI~ynPF2GrsYdf`KLwgEudyV(l`a5UuS-&AOr7*Yu)SVmJg-xQp z$oNt9z9sACoWfntQ@D4UR22xG*sx{m3FtZrT_@J9Xg^l7VfLPy6`9K>ZV_@61PksGo78>d6&%ay^feP5HUD6H8aL^M2>SrkZtJrz=0VpW2vg zlO+~)WnXA4POezjerzplSi5fa$qnlui?PYSOFO<~@tl)r_awhBJIL?LMv`6VlQ~u= z)_s%Pa9pKvkz*Azs#5#I)F+G;wLgS0Fvp9=k^0WZYu)wnI=239K91%%oVt5MyM@|= zz2^8)>;({eCpX-^mHKcTdMxl=OVUF3$;Ip1DeiI+cMA411#+@qnHprYgd%sya&$NK zk%7-37qVDbNISaQv?-)%c((%@cHv$I3$dfSkFBpKyJm;*(&1G727KL5cMZ?|{3#y_ z5`efrH1X~q_llmRUjqT3p{p~%XXzdx@cXzwI3Y*%>7EkR2TYWU`nY_+>npOpChJ?w zaX7hQ1MmOi824jq>t_$IU6*;XzP>%RwsDSKwd0;k0zQ4edD*@M0>Fd@m4!F2jHP=o z3fsT;@s%r4|BbQd7rbRj;P|S=!SMx)9dmwqHr{n@&Vk()7K3+knRq9fINNU|WtAAm zN=h@5G7F4Uy2F4qAZg_sBWYcp5s&xFak%$Lcgd3GmzKGRk2N5!prGhjZXhG6xTq|d z%5YyKE;qL*DL+tl%;(Q=QkhR-@pu;>=kpc0=lXFcr2Av1bpWqPx<5{~33SB>OpU|4 za=aHzt(@sga1Vd`(e+6&;hGuzPLCC~$H8``V`wkEv-FeQ32q|}Hd0%0u+wZW4tw6685=wwH9Osiht2UbJVtyP#y81F_GiS=xVUMaGlFq+=Y{gP zTa+*h<2UKvWIXO!+KKN`aEaGFmY6BV*Bn>!GY9c$Y{5^;0e^}gvv03S5=AElJ zr?ZHqBy-=lMqIZuM!jxloPOO-TO@o3;|<69Tl(7={LKgc<^$*Pd4)f_WF}hDIBW9< z%RhfKe88axyApqJj_1!Gz6|3U0%I3seSEIr&u6A$Nt+On5Rny^sH<`Il(e{n2)b^m z1ehA!7?OBc;&F-3N_<7)S&0p~qJFc)Zi%}jh9nM4+%NGv5+9X#T;fv_J?1D1^%H;l zdfNN8cbUH@WchvDy7T+C_iQonBj}x5kgIR(?Ah7dyFI^Y9^2A1uXIOm+s>k<&gSl( z(r-2HXx!G;QM#+GZ+^!;9Ua@6?%j!Bf|hn}+19_MZEHtSX?J5wp!-|wp(vWuOK4P! zi1?pzu`B`)D5Qu#-(tS8eOpVuX+ofL`fIalI5o4Ja*t8Yqc0;~iCWjHXQ(sIfOJ{=kTnkL zex)?oqW)mOdQBZ?9zD&XCRsnzJ=WLsv|Aw2c1`!FsZ_1CoN_gkQkdm16y=wbqK%{y z{ZvX{awzBFGi z?A6or^`({}_5J}qe)Bx~+$;=DnFnG4aMY+83uhKu)IXxbe^J~+;(hvGEB-awTX}mq z7L|-CCbK>IQZ=R=X59mmXliWgJyeEVx)Mm#m!JcC1`cD$NH#%T2#G>{iE4xPJp(n@ z%LB3;M*cbZbc^~Y^mU1)T)hu-@+VdUtf8{Wv_8wCehIOq5F3Knmk=9*7|JHoBo>xp zgAfZtY!G5715VH+7K#wsLMRSJ)Tkkdp$s@d>+lmk9+%)Kvn;Lp(jnbxQRC6m-v>9+ zgbhaY>CUMI9xC|o1`=p@NVfZB@G$b|K@dGbyOU@gLv|m;D$&_LLF_(={Rv_ylk{Um z!(G+A5#{UEXpf$%?t=Gisa2x_GQVt(p8A^ZSf@twl2+Yu;JTo4hf_~os5@%)G^-C@ zi^>z3L~Ew*n5!rLT6Y%cX@$D;0R2r=HYQToC9Z(}omP*YNQ#}-3_URy;MEiTy7Tjb zd`;13s^aG*oLog*P#)c(H2%Laq-KgC0YTMVH|y@3Fw0?`sV8C# zr-1Ww-7!aZ=HwRU@y5>IXo#d`(w6_bmX)Ya4qU^`{S!hY2YIaS$d_ZLo*F1e{$qwI zMV@B&W5`fG@HOS4u5{O)0Pb63sq=#$c~g{SVyU z$3Z$tWg!ec&IvFk&81y!qUxVa@%cn`i;$T~K7XC^Ora!C1j|gxvwo;MZq?`BNsBVp z<3el_HF~n86f112UKY@+EUG7fT?yj9ORq{9JnTIg?ry5ORotVVAnrR7|y1=837Eb28( z0&hjb9+zn$`%H6d$h6N$Xye5xmcZ~o*Bg(nJ*Vu!Z;AM^n*V^Ah4EbD8^nJZ} zCY`6LptijW=bwch{LdXvZEdBeuq;pzz{TksJzS4sWfiytH~FDv|26+Fg9W;__qDJ< z^S8S2A3#{3t!rn%XzVqZ{7dD1JuJ|(y}7Zkkp=o%cJ*=T#%=9eP~6hlv%S6>|M;i9 zs}1EXO*`A_8=IPXTKY|@y{mP*neS=r!s*eZxMESIv%QOq;MH4u@Lx?>V9WMx^uJRW z{b!QC#wMVF3L+=aJTaPxe_F!oEAL#jc;#(NCy&X^{}K*wH|v|93r+M&d6RF}m&Nps6hE!J-oE)c z(nOCGH0zu8n@AtH)JgTt&#fj-__Nd_-Ck0R?j`Vknffc_=iUjNkQAAUX>>kl(mC<* z*Bltx(TV@-W!9T!z&u%(`aq8vFXsRK>K4U(j3{f4AH5o&2lqC3nOXm|jJMObayDCS zc1)1mR+;6n5`U+e#LLb4^Ct^`jV$i%eQo_;%l7O3LjATI)Gwuu;qgo}ZW_sULWatw zFGcIWLA4p(L!a`P^-T;G@ZB9Q?A literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..31c1c0bf61b9040f2fe1e7fa1756503fa5c77156 GIT binary patch literal 16136 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..dad0b154e422cf6e742171be761f3bcb45089f68 GIT binary patch literal 16848 zcmeHudsI|cy65IRilQirq9_p&@lX_SD4-}xG{lfJA{awZ@D<-;0R;!-6~KzgHARUA zZLin1?Tj~_$pmBPVVkr~jIk4wHk!7xGEBTnNNz59thCAW%w)~nHLI8FPOn)#w`G3c zKIbTy$IaaQGi%*GYn}S-y}$4K?eE*?+q=%$r)sdKZkZ4lS1B<45ZN^rXOsyljq=qB zz3>B>+RB*~pKj)27BovZD|PW#@S;IxqSer&X0rRHBSyqHOk_^IPIhpCv3R}CX3xY} zfnGOpx*bu*0*1U{Cid!87E3k?Mt=gT-^I?fH{)CVUj|wzzVF(fIp(WiXM}Dz^4);? z;^RpU({URPh7|b`Ln8^N0G{`k&Z$+8=6Z=?nMwH}?02n#0exb@nucI$!Yjw6^w#2iSA|{`N=0 z)))PeQ0LBY7=XeGoTW$(No$YPi)>psMPU@Af`MW~98e2O< z1C0;$^zATcA-NKVZ0Zhmg&=>$T}Nzw|#8iiBJHdJrJ@^%uqz89;R5f!9%M zYwj)v(22QIT-?^W>&`&PoJx^!Uw?Z~_t7|WqU+P~E1x8GiI|nfy0$x4S4jY*U?r+F z7Kci`nXlDkLuUp~n)c2ZQ>gBJ@6A8%`K0*QH1&nCq!D|`LK72uVH}6O6y}ThNDcSGtQ>R$$!cV;S9c^ZD z6GHY+Wr6LVsDj_ZW0E!^S(Lq!qZc2TxyBNm6U*JAOA$riLfHX+W7V?w;6 zLqJ(TnK=K$(BH19lAUNX_!3+fX&i`im~#$mq{lAPwR~)1DYzl?2<%4_Lz2J-FCKa; zS4fL`rKaF8+oJ4cf?{Fsjw0+~roElB7I=UA`*0 z1mux0Azpb~`jO3*SH}K4F3NGj9?7B(Ne*?d{GH1x*&NztQ_GF^ecL4Uz&4Be*gNT7`HIc=*k#o#T#3>}B-3kJ-E!#fi9fr-b1gtuc6)0m<*FEt2y9#&^nY zaYD`xV9Hb*V=l0%@haINjWEF@{4jv)h4JUJ=kisyPhdi#fE-~eQ()LJJe((#1xZ(; zadHdn$To-i_%^5d#5R}u)Hb)8FGx{laFkq0^Tl6r_^el)zJx0-pY4jtrn-|IsyoH0x>H@MdzM?xW97j+5l0f@SPXOk?*b+R zD}YYm-M|#!JwO-m2f$QdCD0CB0!#!h2gU>M16qN#zy#p^KpRjH7nfg~vW<$BAH5%A zEL|`#&Ol~hynz-2WdkJx6AiQ(m|&pQz+?j*1|}J3H}DxY^j6e*V?WIS#ty#Kn+$Yj zO)hj}(E%=+mBR6kG#AJ6*{OWKkS=4LlXs$(a0$b$D>&_OES-F_0?D^{Ao(ByDYhga z#p(c3?8!iiDFH|^+JF>uB9M4%7;cM!%lPuvIe9N*HmWaYxU#_e7@I{{%UBxW{aEE` zEG)36v5)phby zp>tW+QRnG8>MUKSV4kj1Fbg`r(RFhAg(_(+neq>0>TI z{>cqpo{3l|Zw$TFhVRl6`I1!4gi#rJV&;LFFRAP|<8AUG*^28(^E?Si^IN0uX!+OD z(0g8QD%M?Er_EfrJ%`Mkv%{8APGDS}aT$}TSPc{bh}9q<0_j;+$(&5JTiFqk>jqGY_rCcY&FAW*(Y(Y38k&$JtjsYMED2Z(cuk<0D))FH7O5 znC;w8Jiv25kz?G?c*9Rzf9@x~lewR`ndN@s2F0{zI&YD|t6pZ7QMxywJ0!YqpJ9Dwa&D! zxMhEl_o>?s!L|?j12`j5K{+_x&+@44#{NRY=u=oQE=MSj2`8ZUJkDovp2B$&u^qe+ zZ{#v!6KL)U;`32ad^ReHr=qfWGDIh<#4 zp2ztb;`%zgRK>(4W}KagU4#lTNfLY^tc4bB%Br=*EBiP2haOqH7WWPdU!T zI4f}81K(!oW$JoC$jWdof^ReA=_D^38&YYGRQ)j4Aq^dPbczjKU`|Xf+`n!Yz8qgF zGdU*2V80LNFwgBoi}^bi3ScF2rmEYgPg0H4OSD^eVhwHkdH@A zACJJl$8jE;;bSd)ypMc*{FtYfcpoR;qtU?Qj|cDj+hd%!mJQYtZyo17E=W(9J|3On z<8t^|M?M}o>RC=)M~Lf*XyC|^VBJrSa<1iUa5-_U;9M7VAD=XRd;Ve5~yK-~&&`Cm(1Xct-2M^K|>)f7;OwolfYqe>9;TpL|;#nfO52J2ByD|N9B( z?Vkvd{cmR4cNx50?|-a~eEgZR_v4S1uHSvEb%D2wct80)=j|X~@Qh5L?}-UzioM96 z-`hX=SmXV!$9>hrXUZ`3_q+e9U1mk2JHgSv5zmxt--VZcn}5g9PX})eGDLoMO*jz#Vw961pyBH~*95 z3I9>bY5U*&KDOxLT~hI1JtFxZ-7S?2M)`fK`rx0Wg8qM&d^-oE!iOS~3ZAv#DFQYC z{lEu+KHw&x2e<*K0Jj0B@Ew8v>OHLbs&}QpvIy&tE`+rL?h}B^aqX~$bN%E&7U1{@ zTgB1E8aR5Gh4hvQct8PG3v3N<&tR)L2AQ|=<@deM2G|{8rDtE$oK$~6z=IBOEuPNLpZ4LdAvX2eOB@$+{yv6#I{4Rt znxy(+xPAY6}u>Kf#ngN zhTmrlzejby73e8H7t-&nKNT&nKN&Uqq;XsG#*?sHqTAs+8R6bRbK3xBmCmB+2{QBvGY~u^h+w}4yeC$`hd=%Hzd3Dtc?5o*(8qW5ILAFF&uV*4ozogHCJjITA~OiTi^4*B7R7a3z>PHU1pGN? z*qznw{Lu4v3F!;!yQ9JS&ZucmW47*)WOH)zdFb^^LYB$<`+-d z^m2!;`|2ae5$DxADW1-=+UB31v|Z{xr*XUf4lXN)jPpL&0l)h6c+U3f@pQhX?dd+R zl_Q?=uCdGv^1oMLnS_0mUxxl`x_(K0N7P@hMNNImfjfTH2YvVpeaeMJuTsCLgNMuC z=wn;C|4nRbPq$4kZ_;&N??7%kuPz|}wb!(*U7fZ|9p^P}*S3kvf{=0E@Fw`vs{8+1 zi|)UM9PK!x1>t|N{d{H``Q0KQ?}4q9XNLZ$u3uQ+6!q0_kDB@m;n%`9nxGGVp-=Os z>~-oFb?|WcD@{f|t!5i{bQt+mtLwhJ33JJLwS@fNj(lp@Y?qqOXxy%`mdpH*ao(-9 z@MoLu|L7Lo|Lw=MJxwPxKm7NHPG!2tZ_GkKsl{62yjn>9Z-D>L9JgKC zbVeh)RqGdXnGdo(8<6*#koRbBShpB)JYdAJR>yOOpJ#PHeTc`m@n~jF{pzTvzCrgF zbtlEe*DoN}uR`vZixmTlU#Y@6tH%M-@uHWhe?1N^|CNgsaeWUf-28xzbbPNahK=)T zF8SYZM!U57oVE?^h4({uU9F8|Uh==8SKG6?Pb2%>`&^g@wYuMDmh0Hpq+{=Pj$Zih zU3D-s01N;n@*C@acKynzQePLv>xl6J_{05e5||(L>!&jqwdeM`nE!sg?;P}b-m*Ig`6x;DP%g)uR&W@YsH=~|Wx4&@ihZts#x==`Vgy!x>mZ~e-Mx8vIQ z_2c2-iWGcve40JPlDV`(oT%e+--OpN)ILy%U_dWV324CwEmt zB$v3J9TRg`t+W;JK8|?{R;`S1o%&;(Yu$^)wHnvzi}Bo5PfNMr$_0M}*CwBA){N!k zuUQ?*C$3XtV*Z*2`=Hkt>nyfr7JJaFZK|DhFiJeK@* zV>#-&wGoxLPL7G{y4AKq*ypb~;VoQ;K8&&ot~+`luX!Mv53c-m&rA8>$_M|hdOa3( z{a8-H`UfHf#MM0}7OY=uD~7$g?s;$Vdh}tG3&6Fg3-X#xQ59V3`csk$E*1O_uhL^F z*gTfw+q@~_Bd*Rd(T92Chke2NQ(pgO^kI~J;99r?@|rEt0&o>H=p*FY(*bNxe#1s?U2`Oi~7Lj+j>s&fy)Q}N7k(7 zu@p9r!oX zx0c6J92(2tu<0gTpPy3(zX^`8SDe$cf4h7=))+Nf-C1<$ZND{09>$>iog{B z|2>V{xL>91@T*Zm=Hv3=O5Wb+t1dIIgPEOv<6=VQMxfO=*+yG-&qjJ->Ic;WpX z$>-up0RD#)j>xocN&ZebB~8Hw0LvmETPP>hj?uFl6Z>{69g8MAj3O` zWeHXxCQ10+(y`rBPPcYkrM}a(i+Es~a%O7R@W63zqD_cd@D{;(Y&Z3XZCNX!joudl zvAu04#5S&j-jP%%*@c+Z%3`)-yK9miLd=H!OFR05Z?!2-A!fI;nB&;)`%_&)%;8`$ zr|#$SS#BZb#1_2k*zWsgrwK6^w&&f)cGI)#4%{e{zbogY3o*Bw#nRCJ4-;A}4O{o= z$9B_mEj>ra(iJ%KoAH*V|4wfI-Dmu{cROtB=Vl0Qj5WPSY`-+2(YV&l%M@Z6hzZww zAIq3@V;`4UGbh~`-hxt~C^Kg|P_nS!lbrT_!QHm>Z{(4QYrMY|^RvL=VX;i&(XVCu z=M!2leC|QNu}m+EWnpZYpwZjB-rrr*Vp(~&u4{JpBuE`q%^dB@lI}^kVQJdSQGdr{ z`iFt%{#k9he~Br&e@>U~AM){LzUaI*gV$>C3I;D5x%P#!_u4h3_dj2Qua8aiVjrRG zoiEj%&p+!R-)SEM*)`hx{udg;lrPOW=~;nkN3@c zU3P+J05`BM+Ec*ZzKT6P7xv>^*?C%OPLVcJEGi0)s6J0> ziND-U?bvw;s%kK`(1*R2-cQ|*K@4K=r)kN9jP?W_*uQC8Y8R5>qXRxB&&$$AvhtL@ zSy`Us{46aQeJ3Lp$Na1g2j$Ir?0ID7DZ`nW9!Gwj=72mEKGJ*dq7Mc3;O9QgjW*gx z*)cD(qi24WmP$JCpGgOXt;+C)RK$>)?bl|{E7E4q5AZl{#Sr8%%z^*(t|^^j2vBTg z(O@7D%vccQairPxIMS04hvmlpj)IJivdb!eA7Dp+Zr-0|)S@1EbQbEf;E#a)DFOY@ zrZJr3)m$IxW9Z5WOdCT_G!5?xf*4Qge>UD1q?Fk3oTU4aPBQp2huRm|`1-)d(`NXS zsQW{6v%N5_<8X%CF7bZ%@qSb1WN1nAGPR`nUTq{Z%i|#4Oo}ff>L6~EN4$BSWbh}= zx8d4D?!~?Z$$+WUo{xU{JI~%v9ag$sol!2={{kK{gCgYCE&VQk;@4wE^Wk> zq3m_JJPC7MS^~x;0pl{o4)T31YpScm3f<5wTw`a3GVFAEtaCH4uVo#zLN_S|YZ&`$ zp0l){Wqn&#226B&_*1H&*AXI&vj_=@FyPeS&|(c z7U*oJxa^3_ZueLam&J&Qa@TrMVB3@I9f`>fEzyiaiVZWwk-&cV7Uh`GLG_^v^Qn%# zPsym?fjVP*-b$oclZ;rCm6@?JBUZehN@f(RfaMEgfm!b)88C&~bMS41`RS1KSe>#S ztJ(MGQy9}ZHcd{kYI3Sm8?oB(n-lO@DTiE9iMUXf!IhARTynZRR+2kOj@PgxM>zp< zTPl7}#NUheekuuie^wFwO^fY6qCe6}oP*yqCE@o@$yWOPlgIo$(gM792})8>j<=N0 z^u-avvLt3;Z|N>kU(-jKL4aXq+~1&7l%-b!29_IGX<)U1bq20AaEpPv42&6g(!fyz&l>oqftL+@&%mn& zP8xX4z%LE_M+5)KKxw}2uiZeWf$0V+1{N7uVPLg^4F(=C@Nom5HE`6xiw0gcaJi!Q zd;8}=U;98$xA}Wz*1WSh)Y%>B?&@9CyR&)WL%|1kl=ZdT(bM(N!tSPy)~@c*&Zd?~ z-$R|j&VfgILl1|W%DVl%53`biuHKS?p1x)ce@@uhj8bE$vu|gAe^1HIW>$#jLy5hI zzNNUh|KmtvaX3)J8Taj$C0b8cxWuILclN-&lFs&~lHP|0w4Uw-{?b56fBQhV82_8t z5o!zf>rRw3nr@Wz;g1&WU19dG4h>EkzvkA$oxS++ImL@x3nrJ@Sb|`tr&tyz&$B3U znIh*`$Ym9Bs-;wRS?`w9eX=Vk-z6q&kW(yvxy&N=x5_DEQmyO|=R#lHprE9-Qpqo8 zFOdr^74m$Gn6Ai$qE;)m6p!qPa| z=Y>|XP!K2EsiV2*^N2+p85|NnXNpD0Pq&Ca9Xta1T8e7r1{g0OS6Zo*fl$R2#5ITW zlV`0@lK_68SgY&giz}X%3vv=g#v{xX&hZK|&6xk*|Uw&``c7Jr7? zQmE~P_|H(=J6KC?)9a*m!%!Q7+6|};K@Dxdn{`}Waj}B%%Hbp~bdE)ps~1?rJ%bzM zQj7Q}Fw9>dS6f=q;=iSgNReCB7BR_By8ds|C1PC{@&DW7MJggY@-YN%%iXf`$8!E+ z+3Ar}e~j6fD(64R6Gu#`kX@VPlor`FDQCPPyM!yETh3T4yXxdrYmV%i_pRWz=E|UL$EN;OwTTU&K-S-GfQYAs2C)QR-ak5)nr06xjUi0fUWkyYxE%did7cTVg{jQda zzJ+zV%qcec;nD}p(5HT>jrWs9KHaJrvI?$Wam%rr9Mj@L+lSM64W?Q-HJcmGBeGPn zxmK@{7&WY9g`4EmEX;*T+>uw?!TYgsu=Z5DAC_{2K;2wNk6+)<@41S;*ts{#u3wU~Ps?dy z;wRgAnnB~4uH|}oC z8Yk9GI@`O+32xrnhky1le{)Y4{eO_rzw-t{O+XC>dPzs~j>bg%agQ}tZ(O-##eGX> zj>^BjM&n6$@N}!h53^vP`Tto{Y(8(8b+V-g2Gh)Zt}$`Bp-7J>)EDkC`C&fq&|}3P zr>1&Ld-J)*M6aQ5%1wKtnO==x@8?$k=5vsVilJ!QoBo?fH{N&|bkl$Hxy!_x`E2kQ zX>ZgR%SVaYO#Vvax$P$2)YJ==x7G1pp4*$xh3335|L=YCf8D0tZ4N9%JK0hUbeQwS z{2z9&-pt2{isty?RRTZmG1^S~KN$1v4*^~7G@twQD)-eWa#(@S+g#%9ragY&Gvl~j z7r$}(TKoJ`-K>6w^;dPLyJd(^fOnVb!kecP` zigOp}wGwl{4dLy&hrYqS;V#`kHSA2djgI})u)p2^U535!q;8tu^wsp^1SDqe-c&;2 zh+)6oXv7`?*E9P!=kF=Bo4I4Ca`=N`|K{{Yl+Aw4=Cde#o&8G{x&~g2&Nyzj|G(IN BiM0R# literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..61e76d26eb684d053f56d02437e0d773a6763090 GIT binary patch literal 20608 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

rN+B`6CbYy&+_&>3i6 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 KfU&<5<^MM^%*c%Z literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..616da2713f4e2f4b9d7e0eb82822ab29ef81bef9 GIT binary patch literal 16648 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_24.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_24.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2dc718f44de3ca983d7f1a1fe534490b74a4afb4 GIT binary patch literal 9304 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..add02474e34f15a350f6a37b4eca43628346972b GIT binary patch literal 14384 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c9c438bf9db2868d0b3343c824fd9dec775f4466 GIT binary patch literal 8144 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 ZkI}C|`5q1)q<@GK8yjA&Y}oGC|G#<^*?a&1 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 95% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco index 4d97092d1f9c450a724f366fefb8051f6ab2c015..a15f21bd7f9b353c9e37c6eaa98e7d05fc3ee084 100644 GIT binary patch delta 218 zcmZ2by`XwS2@9k7wSQr_3%o(y%i}DN%&GoWVCOfiOZsuS!)a2AdOgi}DN%4fL{8COfiOZsuS!)a2x6fB^T& zPWlhS4H%Ns3rtOtijvGqD>95K3(V7vD@zK>jZ#bUGs;Y>a+6HTjLiy)&9Y1~^D=U> zjm^p{(vtNGDjD=katriJ@{5u)GV@YOlYy-G#GIni;^KV$^n%G%1{O>}YKwudBbnwi VGQga_*~!q6ofGbx%{>+(tN?7-PI>?U diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5b655c86ca5d7c3df1faa7dbfe1988093f872f92 GIT binary patch literal 14968 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 ZOwh7l$$ksOQu=SLb|l0yNb!60{|7hpA0Ge! literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..00fb6c336c73505d5f776e03d593fa5e29b8b095 GIT binary patch literal 8616 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 94% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco index f2e4e62ee0698111a947134d436169e0c78d8114..8ba2182db6cddc43e73698195dbed6d4b96045f7 100644 GIT binary patch delta 224 zcmaFi_rh;OJ~N}qwGL@+SC5M*E|DatI#&tph7smRGoDo(8`%s0L974( diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..1f4b8cc3ab069cd1c823fd20cda74be40424db36 GIT binary patch literal 10688 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 I`bX^l7YyR>NB{r; literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco similarity index 92% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco index e3d0ec397e9639dbbbac28564a266808d3f78a8a..eae0583e0c791b600ba58c1c57bbadf7d4ccbfb9 100644 GIT binary patch delta 271 zcmdnsyuo=x5eu`Sh56)C7B4V;h~+;Ykk62vT9gN*^|DhYJF;1B=3v_>AjQrA0q!75 z9KycC#lXO1Kl!p)R%~*4azSQAsfkgViIJIkl}UPfMn+*-epW_>d3thAN^!bTXAf?Ly0sJ6J z9KycC#lXPCKKZg(7CThSS(&Dtt?26o~(!6xz z!s62G#8Q*eyzJD(l#=wE%G8{+v;y;dy@JZgv&1c!^3x_?5%+Z@&jbcW2AK0VCrRkD Na3lF=^BfrwRsdg$PYD13 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b68512f6890b315eb6f4e5f3cb36ced3afc4695b GIT binary patch literal 10680 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..210a8bdd63690e513e4da3f53606d0e0e607c302 GIT binary patch literal 10296 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 Yu1)w$RQ@OZK%*&PO@l37_TMJ_H(NxTx&QzG literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5b2d8a3b8de8f0bc557a3dd4265e945cafecc6e5 GIT binary patch literal 14696 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d2d871afbda8a1a311f9de43ec0c7b73e64e958c GIT binary patch literal 16072 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

FZzOU90wWEB4jFuF9iJ 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 { zqq2{O+!R!rU0lma!A9?8)qEU)?}(Sai!i}YLgB{mB1F*X1(BF*mKV$xY0hkx#C)@C zB!2i$#F&UQCKjtSZ?Vv~6eGq0v;5+sWz~Na8`zU$x%nGoBNwu{kTn+BN4^VwiV5P& z%Xi5OF0V9)c*rYp$^UxMfwl{G@`$(CGD3XV17vy5HNI;mt0ikTss1#Z6@QYfE@#R$ zjfftzjMy6yb4{>6yDaAW1ruSBA3g*+{Q`aeqPzN*$-4O^^5B5$=7mskr8cJ$9h8E=))F&{;%-B^ol z522LR7Cm0vm3J)fD4BEsr>YtsXyD-J#fWm`(0|-i=%9~Yxh*Id`1K@ukQL}39fnIN zy?`$0xTfKC4d2!2F13A8!`C!?U#H_qf{yDNzNz5{8ea3M?TZ?|reQ;=N`K$4;(ydo zt*!k}O$?{TMp;ej^mt8bY@$!b$LnYNP&%1NPMn>b9IKf)rGItH`X)}*4^NyrJ25mg zuswBZXj>|EZcIMg_taEk>)G-8`ZFVw{X?Vj_Q8SVQ0iQK>eTjBZ*=@A_CCg5U>~Aa z!C?5G)_i8bff`Q3Ki_kWJa&4ZMmHsz9P3LYYm&pgHRDgE+K0UzxuZ@S1+E>T&Kyn~n z|9pPGkg25Eg= z1lx?pmQ7zqxrNWBTZjgv`YhGOLRf3qDS8izg^!Eg3u58FqW|@X#e1Sx2}V12&>?zv zi1tTCZblc$amFM!X^jO_)U<5zC)j>y~tz>`F(HSc{4TrS=q*n*I)AFR5Cg?%;z} zDYlpYloXPxmo{i3^I(f+4K@$(@T9U46wl@pUP)BY1ZHNm12WBrL#f<;pU=TZuH z;`DGI$OFlVv6JKY!Q1fY5aGI zt{i$nL;ZJydb7UH)axWm3q@T_U(f2;tTEEEl=`Aq({$+TThik%I&MNcUf-_TudlatT#aW<4_(9hqZ}2Y>H6^| zT|G2x)T%n%U#~#}$?IbJ0!ncT=&QeHMOiuSGhi!-Bum#ohn_F`?@z~7vNA?g)W^@J z(I3@ly8N%TeET&ShC}C5YpSh!nGoN{EB3FaQCXMYeqY0V=Cdczem{*w%C)&cGiO!H z{k%h;BR{3dFRn_eh5O~tYVsQUDz^(CQqX~=@`gi~*D-@uy}X|B4>b7?RvoLh-p~8& z=g2oVsQlseN>SGRr<1>n0_nWp{&7uSn}&7vRahG~(0y r*Yo#v(Dc~RSQYrMn*7h#6H(Ut)yY3b;X(4(A5uBA2REJlGxGljAZZIm literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet152/tem_fused_linear_30.hsaco b/machine_interface/tests/libs/resnet152/tem_fused_linear_30.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..876a8e373245facc803b973e5a93670c54ae9908 GIT binary patch literal 11128 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 K$xvdi|9=4IgT_Mu literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco similarity index 87% rename from machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco index 2f013c11c64bffd67a80a767a6d1611aa3b88ee3..d687380f2cff5d8eb8ea3e35feeae4cc093cd43c 100644 GIT binary patch delta 254 zcmX@1b3$iB1Pi12OV delta 254 zcmX@1b3$iB1Pi0Zi}DN%EjDjqJ<2Y{&j11LAW96vp2Eby zz{EazGH;YUR4qetQi(}%X>M_qiBVB{etvmDX-2kLURhE~zIjHHNrq`jQI>g9eqwpC zaY|8naz%N%S!%LgLFME(yfRElC6m4QEI?EXpRXf%1~D))z}+pxFUced_l90}3PZe0 Yq@Sa&r}Jb-LHEh}tgM@R1oyB20K~dY9{>OV diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco similarity index 89% rename from machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco index 0c305ae0ac25af1a27a2d04f6d375e6d0fed542a..93ba5671be580da0d78f5dd5574183e935ed4083 100644 GIT binary patch delta 211 zcmZ3Ww?J=03@fAIdii}DPN3^#9KW9Q)HXMh0r$w&A+tqd8G z(<-aVa!gZmO|y)u%5w`!%~Nu6QgbVc5_6Kwax%(Nv$HeP%o7VsQwxkMi;L3Cax;we r3Mv^UH}Xp}rcF-fw`5AIoIH=;*O5$v7#ZLW)De(mLUOO4&?OcCKWRgY delta 211 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 RApgDc{{frWP-46Pe*lxI>mMaHk=nWo zSqB;#9&_cH@7#0Fcka)gd*@!SKfd^cEJ+J81SJGlK@u{-f{>f3KzLLo-8@9_oq;rj zQLW&!5SX{&rU=Fu5q_j5-hV2a*bWs&5bYDsH&Me>h6Csz>lwRvzA7gCANqG}ifX4* zf+wT?R(Qa8F}ve&~*cCS;WT< z?tk)`BLFYFtv5vSm+QKlKW5oWA}m@id9P`v-Z0M6Z$34>=T}P;r{IdR=75S zC-$8M!6h?4qbSodN_mha-NdB}*H8Ru^4B4h>7hb)5z?>wFEI^pV>)iwgv8sCC-$9f z4yd3tdlKG((}>jH|3?YG2rprrE1*iS1>Sq`TZ($>8%ML=dk&o1kmbZCX!T%p0PZ=T-hm*usH5}A?uqVwpR{WicjgksfKV~O!F@nSLz$mz9c zEH%@gOwY&V;k8&SGc%AJo(J!%A1bg8;63wU6xQQ}5m-;i5Z=sU+ezdl1drO19uRA6xe7FjfE9?Oi_N59<8284_8z0{^j`4=tL560MW~yUhTgt4ccXu9(x7yIVn_`oQX_XI2BkE%FKZA= zWU=9phSqd=dI&#tV=z5*WaP^O&ka0FU3vR0~D6MW4^?I&eE99DOw`!TQ+VoV;skz1^p3|4~ zis1yE$mO{kIU5i5wT1zocxc#3ak{A*^(LOhXuNb7QtyjGzsx^JXh>2=?o&VYl)7uD zdiQ74@mV$VtU8`kGY8ar9;v9i_NhCkCe^z`$2Ildy$`Ds2XgA@(`wpKM;}(xN7T_r z)%3-~_p3witLe~+re;FXtU9z$k=3zKPE#aQ9M1Z+NviD*eaTgouqJ;?#@VFbldfZ1 zSQNa$DoP6Pu%dLO5NQ@`CXQ!c7Vkva#l`*E>3MBRn_}nf=*PiNHSj@BxKN}2%Xt$t z({c^aN^KL*(4bY!mR8lBDu_4fT^lq^INjAjbBz_(_tqP=BC3tLZRMMIF{_ys)Ek9X zC9f9>wz15$npw73wsjM;fop!?fKsoS)Cr$nw((v7TG49IUwkGM`;+EAFr`yS)xg(GcW)E3|8 zc|W9W=la%`#eClP7$*du?aUWy_%sR>o9(<$GG>J%+qwUY_oAKd8f@o%nX!}4B95Q* zLMGUS59yfiiG7-J0d3u7p}T@|4jQ^RGQTO-TT}2~W&;Jo($hQ~yorwdm_J9AuF}i@3fg*g4Z5kTk7d`1r~EO(qx_^#mVJ;t7@fA{RwQJjwwLA2cg zbl$!B|3kD8zqkK8#P@up!wdv&i}A;(=G^Ueof7=#g%ZyYz8|;G>-SC6_oRr=cvY17++t2Rkq`x+R;G6&j_M<(B1VWEAEVWv8YTmzbufWff;;r&Stf zrW=(Mlw_M%m}FHY=VX_fmlUL#C+ZbcGL#f$mgMKbES@~aQHIH+Z1OHg3lR0i(btho oa~T<6W^QhBvg8s)_8UXIOQfHpuctH6lOB^Nu(52G@!i7$01xI>uK)l5 delta 277 zcmcbynDNG9#tl1J8BHedV)bD(+04$y!pLL7keynTXJBZemz^@Xk=<~!2m5Oa1qL8s zV&Df+K;RA{BtQfMLy9p_hJACe12dyrNl|7=ejdyKhGer!lf06m^xU-UvSc&k#FVtO z?85TI?BrDAy^>hY$(qr-jHkQpYzI#{zKCV=z diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ced034dc62bd29e5313d0306ebf2f4c5ba9fa27c GIT binary patch literal 20632 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 Mft6+R8@oL$0EuN@fdBvi delta 297 zcmZ3{&bXqTal=*?M#IV5SbP`_H#4(xF!C5OWTzJ885kPsWv5JTWHa3C!KSUNzyJhH z47wl+2>3ySIEY|iSfdVnrK{}Y?PH~oKuvQT$-7kYLZrNmQ$9Mm7iE%mX(&2 zl5SRIQdyW-RxnxJ)S9WFa&n5PuOk`S^?=qgGQixo`IG5P4pC(PGQ_(?`Z@Y~Is-lK OF?j+j%jP$BdsqP7&0RnM diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco similarity index 93% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco index 4a9e7beacf857d80a025117fafed367cfef623d4..6df4a82ec9901c8c28f99c1f15a0112eeda2b563 100644 GIT binary patch delta 201 zcmccNal>On0W+h)dOgi}DPN4D_;7COfiPZsuU^5Md8vU|?Wk zkefVR(#Wx@k|DXOGA%W?(5xgUJ3A$#D6yz2J1McSB0DiJJ0-2GA}PJRz&O1)%cRmc vuP`S)+c>!(rAn`$lA)w1vm`%nGMAKv1<(|-jM-cz#mveHcje|b`AaMSSyDw$ delta 201 zcmccNal>On0W+iFmUhi}DPN4E3^8COfiPZsuU^5Mh^NU|?Wk zP@Ozo(#SE-l%b?3vm`%{Avw>q#Mr33Dy5(>y)?VHtjO5ZG(9!VywofsF+VY_u(&ue vHz~Ko$h4|B-8?@vDWl9dO|PJGGMAKv1<(|-^lz?`VrJ!pyK-}z{3R9u?wLV+ diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_6.hsaco deleted file mode 100644 index fc541da107a476da7b7d0982a82c94a16ae9be94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8968 zcmeHNZ)_aLb)TJ`+1p$09q%ZLBK3z}F*J2KNh|6^%9Jcwbgd?~KnHG%qHbD)Igv*m zsUwfMJIQo_@+g|3X~nS|ImjPZ4gDoC7$=TWphXj>`cpe?fwq880Rk5FhxS8JpdVW# zUy7Rjz1{xy$Nr4tmbi^zPLLVTYPVmI&`jFJO^jYHcBCywMWg zYpmBJl^gAfKd>2R!do^NQG~L`ar+>8T3^raxBs;=O7nYAdwR`(3wnBL%995IvK6c+ zIZUkq_o;i0dhKbt?cjO9$Dcm=>1TeIu@~RTPL1ZvS^rF~G@UDyzx?Xkes+AOG(1u~ zJ6%b9%g>g^%daoK<7Y=lOSy7+xIB{`$$fjgP&}P2yyX|i#>%-0`<7px_(INp+dr2r zoXriNnV25^UMMnr`s~Kr{bzUdlX&}I_*2>0;ju!tGW>k8bVdye&OaDfi0SN9?k!r(-rj+C z{h89lxojo3F>syLxBc?QI=B8HyeZF26bj+ev$y>63sa|yh3}}r{4=9i-wl;#eh}W& zt9;*oK6@@VRw`nCMV+?+4I@sPErDJ~n%#H>)?nxm>9{QJlVP z=q-w!a%UrEi;3N&&g0d1C=&$)Swf#@rAqSp+76nwXJVdt)Ytv@KmNt}f7<_-CTO~- z5ubRQnpy>Rdo?z(f0Y}R7RcFqwq|f%X5VM8z!93)|A)4~gl8?euU==oXNev4-V_5p zoc(Q$MPi&Y=LXG@bL$4BL*%7fyCP9>9y%*5-sAE_YMm`!d%gRq%MUT*7Jqz~;OwPa zHWr5`MSewC-l7m)JRLU;dnIGvJf7PwJwCq5+;i*#a=~!SIlioadzp}0<2eWymH;(_8b#~nWZ+-Eh4`$ zKr(N(wQtBQwcFh$cjmY_nURrC4XoHsSD#Eu~1a z#PT08cJqUq7H11XR*J_&YOm6j5s`jz$PW7C)A95^-5(X{Nw&B&&-m3yEFSPz_+^aq z{s+7b-Vh>*ry(DK5BrrK+^Ws-w1J0#QQ#v$2RHz10v-Xnz@xwz@KInKcnsJKJPu^Qo5s?$dEPSDJot}4 zokz)yD~u_06*eh!6h;-=3L^?Fg;JqVXe#6i4TVhMpc}tB!WOR2IUl`5XN9qg*Jql6 ziO#h&Jrn@}UQ*8Nq^HG*!?7bS>bw#W*k!QbWFv@K@_j$546ZH2OYGc&U(wO|d(YZs6_9tT5iSJK`f0$lC~q zXY^)vo0$PN|ICN&tZEXrv8o_!WmQht!m5%m!KwyfoK-DCmsJ^|!>SS5*R)U1(ViBa zYbjH(3TWE}%_S>=PPBqX)}wvjz7sTy+}_`OX6=(WpTY{T&2|E8b>jiHBw7MYw6+Bp zZ{HrEyR$Pur+FxmqIhnnc_rX>Lo69$DGkHQxje@)0y-CYr=+f>h^ zBCl(;Da9n!c6vHA&CRu)Y>=*qY}oL~h8`dFe{zA_DG50NIT>~GD^A>7bet~P?BuUl zahJ388aFzHgijJa(SFAm@GGqMQL5vtqh_P_3&;w{nrvrHMmVFoE=Ue_-2%@7FUk{h zg5=S+;>NoqWbG#6Lk`v~;sGPn-wf+mui#lk&2c5s;w>iNULL#$B>S)JlOvI}`zv=j54Qn!pqRE-ue3l_YXE|nL4a0L)7k`i9uj5Lwzs%j#U1Hc(A445KiscnM?rM80 zHeyJ&lIl$3EFd=o@uOHZ#_vJncKfXUAH~mB@r$bXIVyflVf?;+m-u}S@q42#es{@j zcbvg*+>zUE$M26hN8StLO!`PR1W44pNj$r;e+ z&34_4(HtM3+OO+Ao|BHUmvf*$9v%8JrL{x z{jR*1{&q#fJBpy`_j&5IBm1%9<6TD3S{45MqxB+@vx={PUD1S+(_kdo!|^TBj3>73 zh$oE}vfqO%6t|I`Q3Kh-1Zebjz5b18r8H3~PO}4*shIFO7T)g&HU*2qF#anZV+I=Ta2dbc;;(IzhL?Q~i*h|nv(J#bEKl}%vi(`v zcS`O#CHs!aE!IKVVjq`}n$c(FZgbX`$&}n{&U%E$KP!`+((OXWIZwK#B&obYr@=JyxcUb1XF;9B-yRyq1 z87-IF`)r=<6v)L~aF^G~bjvCMyA3o>nf-j^K@%Q%^{_R08=bn*MyU-rAhbiZqv zE7kwN2%b#CL;GiPhq)EreM#;(Xqn%r`tact2HcB#*=K&{nB0RU*=rq=Nwfc$+;YruSIpkE*_GJudg;Wb1C3cvo&2mwUcMbier%HYQI%zST0{g;WPRAPd?H zXb;S1Wrr_M1izV|$rB5*0|PIZ7pe<1c0X3xJnBj3pnQ%@?%A+*i7eFH>^I+I-<26y zJMo(AI3`aVlO3nzbM}w!Kh|A6S7X7Ua4dKU+Q*2e?myxk-em&s`mNXG3CtZM;uj-g zO=v`4iUodwW7}g_;vFShM-%u`DMW(l^RD-){ys4@F^#VWM?HM|@`i>^dItymULP;C z?$v^ExXo_h%|(49o4?BU59Uu7D>>$mzA%kXI?NxRKI`YRH}R03Q>Py(TML(Z208wf9CP0pL(Kx6@Go1){n9!{z?v; zCKT%LmYUs|o=KN-zgE-rK;x52k?H~2!ZT;kbe+JvYxaxv^`h3-^+02{lGl8#uew)eEQa<`MO?d+}OWr9GXLY+k+eG)B52@a&)KyI0&-74c6a) z#=G1=U)NK8PVhn`XdB256 zv($QNVbMO=a4fuUod474ZtNpTt$)Au`-6MvpH%kKG+140v^5SM^);rBX{G;Moi34D zUt_7RuU_=;l)j@EMlrRXmYutY{@Tt^BBcctHtydqD*ZIn_u1oP(ixpaFB~~kW zcOl>zON#`OjETUQq{MY2|8X4EjYEDkO6bqfGgcKkam;{n2TrnaOm5 z`kZ^uSqmX*JB>3;>!Z1P-uu4qb3Wd4?tPE$(b$uR_vxC}sgqj_`Z;M*7SJi>Z$(^T z7ZP_Vm_VHvklT7Dcn|aqx^p9k_j}4#5+csZRZAFN?PyQCll!t$?oF=nci=^ zF5NvR`udXD52?WV-&TN*en<~~VE1Q-PmFZulKn%;OuoBs;8e1=Taf5`&fqc7k};7U z=+9VxdY@jn*L~j}N}THMODFQ(UmngLm({}Z_Zk9`Nem_55y5QR82<}U%;pA$GnX~BM6putFTz-5 zU^U6-@n3?jPZ_{@OQ`2rQiZ>|8X$}187NR#=$ilT{a>E>$JW0zAd5>BVHdW0ii`q% z5RH4xALph{Im>>l+r?Ogn{w?tbO9X^F|46ASC)y(z{t&di(Q_4gKQ zZaD+}EUj;;(VvYj(An#+Hy^ybg0$QE?k_T(rf$a&2>tUcHOtKK1Y;51^Gr(U*9!gT z7VB9`@c(H14?ee^&fV5mYM4`(FSwHo?R#7wx+UftKB!}oTEZdv+ai^79e$BkqTAKR zXPIZRc1EX*x5v?o+9SQuv6~le5VPZ$m}{DDjS7Ao^E7?rxhV6rwF_?TbA8bT=1b8f zq6HR8iPg5ino?k(J-03f-X`!2-8-tYc$|ASx6fMM$kih+L>(Us?Y%G@wTSy#`bBa5#M^8={ko`gO>b>wv2iB+=yq#m8DpNV_5wSSI`ZISu_Nj+=8Dp8euk@0^BQRh;zCX?TScr>o{P;>36$@w-yVRSCzSWzKUh5r+k`}lYH1uc?F$f}#!7?ivEcZr(6~1V&(jN^5 z1JPi0RW!IF6b;taM1%Ep(O_dkG`O-U8hm6`G^i2Q-L0PldUfP?V4sft2oO)1C2$Z= zt-!QSK7kpX`~pXGY?**roqkAHug4K%4Kdy%W4#$D=5q^>0k;AIxf-6`jNLFaFbRN}os4f8hMcVw-aZ{71G zuwj0~Ufc&7=G*oI>Y(3u5WQ}g-*|vXaf#CNalr#_BHANxGtmN^epX$Ch_G4EUJg2j(hp4;!H64#ndVag?=i`Lsf_rR#@pz=?cMz5ha3>KS zkM#U5!tw!j65;Vk&+o?YRX;8CQ}wTG1!UPjvlg=KpQj$O>>q1{Ec?e-LYDp0AAv0U zXROxQH9C8v?hJk=LKhcw8hsai{S~oi>db=qE23vYz*mUAFah}jJNtzY(bEew*|Gq? zwdX>q*i=<&CUo^>8oV+&Q+4&_`h|wcpTia!d~>pZ`U*P3W#Y1Md2#u0`EdnCo5EMF zuchf54J|A>6C&RNV}V=XB106Z+KcRhynyUb%R})xPfhzms4g!47Ae#;KyHdtSjej& zhvU>H;>JsuyI~BU_cxjAvUT}~Xrn~O=Xw0~Iw(E|c#!NcXbtgb$ zdgoUh^b}s{y0e$Y=;pbuJNszN66=<*W>1PW%T~>=W1RAkEgxjVq%7n>2(s=Wv99Zy zAmc4jTCe)Z{CdnMGad9>UI%?Xzk}XDm4jBO#zC{L!9muv%0axA&)weR(Wqhlbo2?0 zQhVq}#l6)U6EPk?JK0>&&yMPdCqq2zr>5hD&F7slV+?yl-0M#5Imr!gPr zM@{Loa_U07(BZ}mV}DZkSkm^0uyvMfdtLqv_!maK(r5M5rFdcQWvBfEG`3Ip_@wPK z!gio!+wbx(fq!|_FMS@Jx)LuO{+h!-L}LeqPXM-mzdLrRl(U;8Q2erB#7La znl-KPglR^MGBag>V~G8dhYboJu@g6pdwm%62K3BhrLbQKPgqu%m0KyXpJCvlp1~Q@ z#Li@)sB3;E_CspVQ|;`R>Wfua?FKa!nFn6zlh~_?dPRGp&PmIPlB4&)2#_jlU=o$39%$u6^`oa@lZI5=uYlkE_N5raz6r<=&Lem4eG38XVOkbFPAK8?YrYv9v0aL*dRw=}1; zF&FVsz$xl`xcqES?@K#A9ykSmgFEFv?=B1r;gqyXpf{D^x|M!wL3-3*%?*E`w$UHd zszm!OxLkKj!}k&Vt)$8>AuKvkI5wEf4INLO+Lp_o&Y#@WyEVNv)%OyPrM4YQzBrKW z+qyNANgPj}-kLsjdN6VPrM`S_$R0UO`RqV`I71uqLn9mV!`Wjg97dfu2B|xd&YsBS zhBpi*DT+QY8bXUq)Bej}K^h9~aB2TDlYY~FiR$@EFO}(Pl*VR_Z#Kic&gPpB@iiTM za|aKYZM?dlSIzRrjj}x7Y~*YnG%8>-a$&xD6AwoDI^z_SQNH6av@bgLF!x2EKN;pb z4E*uqGyC`soBL3)X}oxd`;5x4FheEGJIoGc`~8v)D%V!xJ;=7gG#d5w8Y=vfzFp({ zjg3}^X?%4|e^%p-rtxnS=3(m>e1*}|!NbNXn>ShqdDu}{dEUI5hgS2d)jarnyy_qi zuI7=QtGVAO54Z7VV<-%<8kE<0OpLAeGrT^+eFu1>;X7m+Z;V<0VEi*0*kW2ggGa{Z zPZ(8U-Z;R0>v-cv)3`EbJ3a83i|;YGd+tSuej9d7z`+i_29vnX#M~I|9el+`?#2BR zrcoB=&zm-^#-EMZJhX!cUK4Y>#rQE@;=ABeZ}a#!_^xqY56^L9d~U zK2*=KI{!R8kiqHX_At)Y!-o&=4R36>+iZL%d{A-f(Q%@o{y#xFiZ{i_IbS6^Gn`M7 z-FrHNBV)4rGbij+B9|ihTj=vyva`dziF|_WeDYM@@lFg49D_QU&JK5v;DCQ1(+_>J z=R|*ZqNgXDJgM#mGJV5JcB*on(gPXMtV8I_;^3R?W5Yw@c%8)Ibw1GpOo8A^E~*n; zg*exy?!8}pdiPTY@iqOoQAGSaxJtQ22@=)+MX0uxrZ2%2xlz$nzEp@~0jG$3DcZse zIz{DCd`zcbE-VZyzRH&ho29?9E51}yJp@s=va9^6Ff1LFUG-n#Be3HX1C99J<0 zr>N&c{(sGgRIB}pieEtLalYZqiQY2qsQ3!Ai*$=!%U8O0>(xS$M#WRUqY#$rgspwG>k)OK z^jpPWDPDyj_)GhLRPt+;qeRt~!Yk01*4`rDQ<8sF>cszO2tU=ndj8&oZpjoojCsj_ c&$;{HmugpOz6oJD{$#}UkYQBr_r>bJ0p{iH?f?J) literal 16656 zcmeHuZBSg-nda&HMbk7*)9P-zn+9DqZPc`&`4Ey2LK5gJvMdXPB#e-32?XeZT7Uqx zkSsS1lCZ|n%8JILI9|tS6@O$M$5Fi5l;ibUX2-LeFrFM2&=RNn{ronccjOWMJRxWjT&UwGid*1t=bI<+g@tu2j2^LGE!1P08zhV}nPS9x7 zoeg?rt4y>yX2pLub1?;E38hhIe-7U_jG1UPpbjHv296QxF(EUSQ^H5oWHRk83sB}_q;|4RaIT{?_xv4eTmM|p0weNUVji9N#|PCkM+jL zP+vT*ryqMQHgf)S*I@j0!&vN8H*zekGW27;k*V^d*tyO`Pw(&`#z(F;{?JJ9Q4FqU z^k-wy~5tTAmlpLk0SBLZwO5=+>BOry>e z&NnNcM;h9rmLIWeaD>M7|HC0p2(sgS6*$QRb^QHn_mru?^?R(e^tQ04bON+# zwy*RMv)s2deOC&U3XuhtdhffF-##F)r|(l%OiPM7B}uA~C27QCS1oLc?N&?K&*xZ< zEC}q%eF1WA#_os3??_owh1a1IDvX390(DkmcXOfO0reMSk+5bYe>qmf_~+` z1P4W+02H#N{tp9Nu%}sx3Ry~IGtpt^*>a^+ z1WlBc$QF|pTcm9@X;mgoia6OXKAJ8SSR;7k3;Lf+2~D&X%uOmybe*5OY-^%@(A<=x ziI$eRtF9*663sp1ZNlD+&0PyL(Hxz-UfjfNz#E|^mIJ(5+QjU@=b}w47kDey#IWU= zd%mWLwL)M$QLDC&`=hzGIpWLqPi99zVb zYma#H91%~xGvZm{ig-Nkh^N3C@%ViaPhlY9DGEkBD~ltZRcgdj5<>nW=EwwzuvWmh zf$If~7l^E}5!MSBAFx5dxPV&(Hp5A24({v2HJpofH}ZNfOg~d|--w_r1KvUw)io%;zvL z*Fd|0IR@Gc%r?+!V3vW3fwF;;fuezefffUqfmhh%y`<~2r>Tv3<0HNZBzXx)`ZAF0 zDL}HH1*HD0KBxDwRpavwG9}U-*OObXJCG7JHQ9}V;zWEV7~D%W2P=+@%bjkpc$Xv##k%icE%16 z?qCcS;`2KhgTeUxF2)`s{03vN7@x;7dU*Ulq3_fOABVmtU|PlJALf_h`1~Gz>5b1n z!nf7&`MvzMBR>Bqzmmu2_whTB_z8IV!`k2<|D3-!O!>%MH% zKhW#`9Mu0(uX}S*{||b-AP@B!z3$FOo#KzNdsYaN$8z~zZ~}jm&Sw{dNb&~={Xa&c ztwANF{9`22>ID8-B+_XFF4g~*-K1;~6e`f{7=dv%)Sm3l3>DT1|Y=A#+RRFS3b z#v9^?TjFC0M1lUyL>jU7mNlmn!^vH>a2vVoL$Rv_hJ7Lf8%0aBjIK+0PQ zNO>#*aVj9<*s3p(31!H5H87_Ak)AnNYI#Wg?} zn%~4&NK!beRvX7+yMtrU>Eal0dpY`i0gm2aF-LbR&UY&kt$5$7k^QgS(OTJG&K+2> zQ%(tYl9MmL8cqo>CmHfXL4Httqpt}(uBkSC>=rdNj*X_Lpdp}9qGwiK5?G2>ub&#wBGN(VgdXMs<4lw!?E9Yrt=YOhHbBeQCKv77Wm$Tc38jsfA#2OgWx-g! zt`!O_villj?76xO=Ai{+by+0ITnmrC489{z=i>(OAjWLLn6)=RcjhnVHv8>I0o5Tj_yFXH1YwH?lOyTcbW+y+Lub$I|}UTQxeTr)cV=vRGAWk801nYlPH%_rZBc8I*p{05-xyu5haOnEa5lk{2SmskMaV_ zizqL_-z9Q;b-A11J%@5@xo^9P?-5wiZME0190z<;A=i%5fpQe(i6y=%Y`k2z83Hei zQo6)9@SQrJf#*bVp}0}JOMHWzRhJXMlTef;zJbq(Um)0%UhC}|CFc%&tAgBBlxI+` zpBl zjczznxNl9tpOoN$uS?`5F3%?4d*iQGZx|A<-FxW7Po;3@Px$_(f{h zODaCQgYR!Vr?yD$z6QzN_}0gbGP5qQYww|#ywxY)l1h8-N~;d^O6vY@sc2-M6g;z6 zDj2Mnyr=6VFXXpDz7E&`tOsrZMu2;PQQ$tH3fv701NQ(IkfX5QY>!^OD6kzL*>Sym z&_BS|<6i1Pzl}*mi_yIc5c>yr1iHFdcpUe7ku94 zv1CE>h2%_J(`E*q(-xkaq$k~}1&u%HPR)$n(q=9^uQfK_{kZXTYj7g|k~T5$wzlwm zQkT1Rk)xIE`Y4qW*u>Zi+QfwywJng}a=s(D@b;80_tIsKweVwoUkFPnerQ}9{=$&MhGU-tcXMo)q}FHh+iOO&_Ih3XI0v@Li*QL+5Y! zmqvR^U|XsGpBe4T=pXYQ!`-k2^xEkV+FJ5B^5#K&ifse!LEOf09{_Z*Mveit1+m-q zl;CsssTa4D4X_5Z8xhL_v^Q5qSb^}XId|EtSg`X#(gWJoH5Zu|=wW|7SMcO)Nkc_B z^E`PW;pzX?+=Ixh=y`I?wv~A2+rnF)97}LH)X9#wg6t%d9`@@w&yx=%5BqO(9@ysR zJAv~|dgHSt?(t;8P4>!XMfdoaZ8Nvm8s0oUmf$kyTe-b0Pw9TSVb4AOKyt&L8+}l| zw3i_t3?IGl&r9|$&Whf&e;wSvt?+BZ;HydH_pqxd6^*e} zUyP)Ur zGh-ZiZX;(WMz3oVi5uF)&`oV(_&KcsV`w=04$tAbLCQhQ0pxIc&fV1K+`{_DW6|E9seAh3;SZ~7NTjw9!(z42Q{8#zz%b5Wb!a!7L2S|9 zc&wdOB1g&(&x(~hhm#ecZ8|c_V!#UIMdiqBN!{Z|S;fe3qJna)eO9a(8M196-kG0< zH;oJ>xE$(aC-ykmNhB+fV-+L6mMV}Z6|l|cKpW00>7AP`DLul}s=S2^sJpZm2`4twS3gYu&a`4KaGjKRMc*&Ce|V`=~1;r?wh z=D?<%V@WQ5=ACd1_G0j_682)~gXo*i&z8i_kLh+W2V&=SzcxXBxl;a6e~@yr20583y>-zET5MHUFjZR0QeotLILuNZU?{{=Do|CKz15flEi?ye z7`BLubKs!Be6Sa(7JP-A?xJ@D{JP+4Zb|x^Tay9sqw54;p!s03u(>Tc(}FqBI;1TO zJ)!6Lz)_Af2ZyzpwoxrcKJD)cE{tL#(sg6FeQ^#P#T+=8&?ef(w277r+C=L`jplLr zA&d+CM$9?z1m?iSE?xh^aUI8cbxd?~q&Zu5#>nw@fz`lH4eV3_tI&T0{OE|m?+{oS z+H1}lIo_+c%g!6^ZfvBf|8qvWOJHlzu6)X9;{t$A=VDLN9C$)sCol&pK%?sbUso^( zqKH-Okl^znucOrmSp@C!{fI5vWgDtkA#%i5Ju4ROY)$$>TeG%}1%Q6!Md5+jlE}JR z=0DJy@KcUe&5Hg5EjG&2!u`GB@&hdiE{8hV39KVK?MXj!%zxmHH0`RX8_5$dG=;cRdO9DqabUOz@ zJEHql4*9YpEeS4T>K?fx1xOcmZ8*0+PkoSbvJ^R)^4_{=1uc+Y6HIyW7{HC3cjI>7 z1$4Ps$_aEjnSGlv2O4P(1o(65^mSl2p5wxv>KAZmqR^Ms~CUR_ro4544&e#$vq2XM?MMh?-MP;$&@BTlq7 zgdV3ku#1tebRAg5(Zy7b0Y>L0gmYs@UI+ZOe0@=oKY5hrD}5{vIb!$Eig`P0lDVK2 z7OrOwU@r0^Z!Pk*D9Ccx)+BN%$9%J5?%FDwO1$dzVRda)g3F;!b{s`yr!kp}9LrtX zCFLSda$(y}@=dcP_NK;!o$LfbYpSx*{K>1X3HzI>5?ls#vQxN0_s0%9_NFe$4m)<( zro0FuFC2z%4*2CDd+TRKN7}D??w1NXG$+-a+mc+qx<2fHJqP^CgFOfOAiBDJw#2c0 zn{Eel(y?9lONG3DdsTwVn7Z4$BnRoju7GoDmjgk{#bV@QO1X8Bf#$Hdf+<01+=b{1Sj6Pi5@(c&r&tKw^J{v zYRFllYV>Z;N$=cNDg7kVLNfnqsZ2iTPSEpLg|z8VSiKYqsre6uw0!91LzmwB(YsaH z>nGV33!b?`ZYmTCk=%8))K2~6!!MF$A28OkDvbVqJC|>pYeo<~wtgaUq+nrfP zey!fJEM7`FUKA%Yf6V;Lj1}b@<&w*8#3^?%r=+03ZY;|wJL2F#9PC9t4e!_0OFm!7 zUg*knwtfnxPiAfV>141j*+elF$`WcsiBitTnDqw;i&xE{u>>mlBOKqzu^9%JnH9ep$AWYmRf;2h%V0;mAcHYbKJECDSOxW1 z6@5{xig~PfK4rv;$BFW(a510EI9>O8?e;7qRx4x6Vx^>GMKPjyiHMgOtIRlw6es@9 z4{@>@amvn!lUrcVXXMmQ#E9grh=&dFuzH*tzV}csIh`Tv3a6G0x)t>7e3v%u@~W3y zE;YNr1^Siy*@zQl`mZ~^b}Nt7-gKie>-PIURgbE&5FFT`VlL9gJPq+!PxwG25O_cK|Kd?$}T`&;rkUU z@twr?C9T9qJsW)c3dD=Q7ajVKk+Tm0$IUJ#^ zd)>siQ$Y2bVSKVI{E4Lmi&lknY%VWj!DkD}rPLx+G7W2xC z({+c#Zp|`cRZzSvR!TZn6eEh4h|aW%NrqMc)FE4RbwLvaS6Ba!N!_3E5T+yZSjH&nwZlQvAJ% zm2yT&`mEL(F~`QgzcRnE^5glmPm*esETv9=hd%U)glFlro(mQro4AL@pUR(N@TVO3 zQx5#z956l$W>x%04R~*j)q@V)^Ygu}2WlYKUpEtscYthLCs${x8$m1|@2>R#EUG|II@@+L92L9P`? zV)ClBa(+Z!BaW$rn>#=~6O;4BTvfJ*Ku@UhX3>U*(kpL{$@UoRiD&l6b}>&SHb}(Y ztTdRs_B0P9otM`8GM-xzhu?s-qd|6y!>a5N%O1e`k)O-o5UU&Hu-GF!Yq2Qe-Er#! z@gt_ng^C!o{zg`<|5Gm91o0COWK}GVq1Gi-Smf|3*}Y13t&;N}kwaHxhX}vJ;y?px zE}_IC7d|IPX`BTmvcF1pAVPMfTy}KGcKlELzW;@y{edFBF#bUNA8=!xV*Mp74aDT_ zq6=R2$@VpJ;iHQ9+;~j<6asc7vyFf(Y5#Naanc@cKmh6*C;)rXp;)X<5^WT6yC)$M zh*7hbntP~8y2X1C@JFfXQFSg%A!o#1t11_ZzhDi>icy@JYP7Od*(RQg>9uW2yEr+1 zLtd?j>ySkv(!^FRZxgfkD4_3Iq&FCJmFQnCU#y4=2;DZNL7W)Bf%+cc9-?Ko<&}z< zvZ(TQh@~Kwvg`q(Sk%lmiA@+{3&|U(!%`9!A*Qz{sV(QjCrg9udRNZhExRtuf&U`A zgi~%gP%pc-$boX%6_NwLlU-Hv3Tuh%S|huy|4Uv`E(vmx_()8$Aa6IQy!9}(0%FxD z44n9X&A2%y@M?Cc7(T=eOh) zCuP?UWxx0VYnMx~QdGxezaqLCctCbFARvCRJ|^!}-Vy&c*-pWJfHTY#@j6V{6!GuT z+9?K*7=N3DWhBxA+5L#@`jK1$n{UX~ieV5Y9xR%G?xV}}ev_g167(8$N1*o`=<)MR zUE8)U)BA(^gWez4UwWvY>(A=SaP&(D_%%ALUN*qr)8RX^)GmAzAEx1X6)qtQI3(PS z;%hm4H(?wZTMVM??Hj=Lr(VTx7S+9bcc|5Mv8q^=Dg1flb_6R+(KqH92d-m()bF-f zY+!J-hsCY)tDM(U|d{=%d3dHaytfIoio$qdjAIp$=;2>An*n_r!+> zj}766lYIjxLGS50d-7OkSJ!Y)!ff>o^bVT!;m!eEz0DRktgFQP2FMAn-aCw+*0I=$ z!PE2uK1M%}8|~}@YEaN?I+|B(6Yq2C~a@4FM16^hq+(IyF&I43k!p$zPT?pG0deG?VI`r zncl@QvTf>{`)CtYL(t@#`)w0ff{#ze)B5JV-NbZ08+K?6na650h-TWyM=|Ss!!pKl{UhKnr;*C)8eOqjhxGsDvM0e= zP9x!jp?{ki8OL(jv)~bJ`BLOvt1Ds4z2q?UO-zAn)-wg4H1ypxxiXIBve&>{P9yOf z_*jUJhz{xh=J_)T-$8}+m;3*=p>Hh1rg*w9v(G!=q;oed#n?xN{&9mwH+m#z_HWML n*FiIL#}MUEg^!=;cvpw?f3shc@Do(NNdHqqfB6mHa{d1cOXR0) diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ad478129d773c0b3f2f7bc6c74c2a7ff36f8bb69 GIT binary patch literal 10672 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco index d0423775178dc5626591f6c6c84c848d9f8ff278..2b80fb4e5bd229889d807875d10cf5fb29d00125 100644 GIT binary patch literal 6368 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 literal 10672 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 VHOTLv@mcz3Yc+|DFJK$>{~vD#+Cu;U literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f384531d67fcd78e5d293e11d556218582331fe8 GIT binary patch literal 16656 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5e05b8068f7c05c45ab0fdec31212ea299a2809a GIT binary patch literal 11128 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco similarity index 88% rename from machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco index 3851459e7a08de2e38bdfedf55960f8630ab9800..103de0ec9aad2303fecc2b93fa6bec2ca5434486 100644 GIT binary patch delta 262 zcmX?Lc))POUKS=3%gOs$yn)na9#%F+UK2}(?9`$>0~1TV?3BrkY?_k`L^(DGux;T` zuwYvRO(_PL8>8Vsb@MNosylVo6R~Zcc%zc|~!W zX?C`GVy=l%Vp>5)Ntt=7d1<0aT5*xNUO^>8Nl|7=ejd#3$shS;n9Ncp^9xvjC{KZY ZM>5T2WPq8uSyHf*i3{Ps&1-~3SOJI)OOpTq delta 262 zcmX?Lc))POUKS=J)5-f;yn)na9#%F+UL#Y6?9`$>10z$t?3BrkY?_k`L^(DGux;T` zU;qLp27V9)1nwY097HfMh%f_X*e9#-x4V@TWtQaU!OUPtE-fxhDJ;x3PBSse&n?I= zt4gdeNi``pHBQVaEK9C3$*;)Bs4^=n$VyGmHZiL-H_1xVE2y0Okza diff --git a/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f4c91830fee5a197a7e8b470614afd3db4a5596b GIT binary patch literal 5704 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 LyO#_VZN~ox`+Ky~ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..0e910b44d9e5289d3f455fa1f3d9de16e2c37610 GIT binary patch literal 5360 zcmeHLTWlQV75?Yy&Fp&Z>@G&I~iN zwl^~NCPZqaMy0JPcmd_55Fijh0t9MH+y^8S@{+uQP=r*q&ymUt63aO={~2%ATmpH` zk$2AjpL4$RpZ|8|j92bCaIYu`Ga`#fVwae}+sI~kdwe)*{8B;LK9+!ImThDzh-LWA zMCx^Xl{+Jz;C3iR+;Mk3C~M;wH(Cf|e|AmU_CyayMGQjs~^b0v3qHx7#9M37$% zj_@?UhyN2)!ueh0c(mpZ0gghakgkT~SmAgWFj61SNs*X1t^ELsL6--1_rd-5J@`Au zo;hPQD|O${=SR|X<9c;N)2l;Dtu=@uc zJVWa}9+}F$>-|cpT?|+M1HI-sEw|{KwWetY#cE^GtQ2v7*n8nF!;Z#E!)ny*#JlU{ zXg>A6-ZU1ARm%v93ywF(-Gb(P=Ox`Xn&v4yG~-i0`-kp&jd>$5W4}Fvp4R>NJmubw zI=3+Lea;(?5GkvZC^NJxuZ%3V8$ea3tF>h8q2d0OS&b+}7aR75OgAbrr zE8Anh@CT=RY^+vYykp#;!#;0%e#5c`it8IL6EAqM8WQ;MqPU!v6BELKwvTll{7hym>PaS!FtmZ0B}HvnV~Ghx z()Ni=Tg{{6$ZlW|bSc0pYuE((6hO|dl*;<7dMFNGUVO~NfJXDV=EHQ z0R|ZAq7T-2peyE(Pj|)4@*&uW*3gNw-Be0^{i9o^S?c)GWldvhQqzNrVDcSrIVBrK@x}YS_N$NeB zWgq+xY=jk=y>#KSc23d&uV&Bf(z2QPL^h`-v46wJXfm6dS9x1yUx3Z6vcf*Upn{(P zi03KrBPZo~7r3OzVn=>%sUt%M@3@~aaRnCf$XV!I|6N~$>u2El8Te6WfNISx{JoXL zoD8%jVo|LP?Z0!q#^pKA|NnK@!R8^Zr@HbO?{l-52^)o*(^*AI4{yFHy-~=(_@d6F zbRGtlbkJthy;&$_x3j%j>^zoyJozXF^$7eT=ZWzBD6%2$^giT0uVWEwT0!a+-3k&J zAMb322N0I&!XA(WUL$a9db6_f;_Tsad#YKVG!9R-YgON!wkBs=)5e7BS+mo#uK!d} zwvEHLw-**n->fW5wVS%zW`&^X76QjB*P+a9m7!HMEU)GJPGNDD{T?Eg*?AaK7KE?T zgG>Oz2;lGgk%hX`Gz;WPx16$J6|6?7;I@OhV^8XP#|wTVFvp+*pEGKv9|ch;QWymf zO7=$6WIuUo5G1cV>ZavFk%aTbGDg{~u?-?Evy>B*8}3qe?NX(hu544KoUY_1lpRli zO#Q90L*1inGn8GE%8mjE?o@WF^->;}G7y`L=tqQOvgb+z+_oQ6|1sTm0+Z>LwhbjM(`$B1uN!`y@h8dykLjLM zF#?0>fw>rj)<&~Y2C->*PSJ%At%h9#xmjw}ibkpAne)_Z*j0zxp{vNqYS=hz2&j5c zm@~cXG_m?;SX>8233wd@cz{Bp2IusB zN@~g{)JH6)1Ap1|Agmab|W;aEj@iad1zk!C%UTlO7{x&|ug&E*zN8{7| kdjVv9TO1+|ar~LExAvfMN%Ar@z73z|2W&eTa^8>s2KK}SmH+?% literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..aa85f0c5b18459044668298676a7925d13a45a18 GIT binary patch literal 5488 zcmeHLU2Ggz6+SaNvtF-v*X#9S2e)pwj@yK)p7oCsn@DY4k+wv2nnDyx1!z0FJNpyw z&MY&tjyE#)B;_X+QE7Py;sI4cYEw0|B@!SiLTx0FP@0#dJRnh_2*G<5iM$}OoHKLJ zW?2Us8Xj}yneW_l&Ufz5o_ptBZ#=&Age*ymG6W?AS3wdo!J?2G$v}8iCEWr<@STPf zgi)>Fvly7S;g$%-7!iJ?Cf{#JO*=ka~W4cjzo&MPmS)AVw~&K0bt>B4K8ZkL@i-+Wusi$&XToSf6p z3&!i^nw8gUXEm!-atv~Fs>hAUIc-I+HI3YI)hxahxa9K9QpvDCCP3tN10-)Zz>eDu zkonjEFYt8j4qTP)>3SpI%K4M`u2#0KW+Ueq<+@?Ixl(o2DCTH-;TQgogg;2fsMo4x zGxGCodUAj0ms(w4&6R4pn>%LN%OWgVE_ttMrd~JB(r-RJJM$~8VOLjl*XYFUYV@4u zbkZSxKBzd2YON+RUpd7rU<4j7jax2%Fy|s(oK0sJEpG~CELQ`QBN1&5;^GN z*bMhwtd$Gq6aqb%oKsWf(&}fYbqxG^0!Y(nDg$P@d{ zHV0JDnmq~cz-dJ4@BgEOUxb%1&J|E4XoL42{Fb7g`o__W_nrf%Hf1@nMVePZo{-^t zS5D#x$?r!ee{dM!J6CA18(XJ0`(=4OqC{q;zUTt_X1)zD0ijss)mUO8OuU#319ECT z8cWXh52hC4^2mBDmYy9L99aPGs~;+`0pLCJVH7svgb~Tvd0bI`lNzg>NR3pI@c!la@Yv)a;sBzTIlb0@R|>p) zPOkNjrXVt$jD`m@Yms;i`rzv2aQtGZ@A2e%|Iw?Luf;Bgq;XjpKyKgA#hn8~$(8=0 zk!YOiqYq5RhelTVgxm*zK_5*C!=EqrVGMck{0DMej=(r54eXZ;Km8!8&ZYtNfO;={ zW(`Ou&8EFD=B{#P%~KTcWJFm84-j$wz*`IE7fx(q<<4_w4({Z@ogDCUfX|wL6bHfq z+Apx|2p~9Xqg)i<#i-Dy1^)e?ZHvT=u!}ITU(|(L2c#kC{=~2vN+d_`N(@OUY+u$O zl*nMiAq}mm@XRoN>c(Ma_{iv&2c8>vmb&y5K0)Y+|8RV7NhafVMx6%3jH$w9HC)J9lcNe)KluN zo$B46Q77iq^t0+jR!tvJ?|G!G?%JpBoSste4jtFjd-p!9P9DgrV^6CoLmhiqO&w9k z9#vBp58tm2zpti3tD2e)MKkK~K1Ei?Ls?CcP;ofp*QThpJM<-2Rl=J5Eg5H%eowlN zwXrC8gH@Cy-eE=QN+HrLRZSevz6{=pGD}PQGcya?v^LGo+tH7MpK9QPoN%E=|CjS7 zXr|>FpcPvto}oc2n@z2vI~5Rb(z`Zjm~gtQgXS8muJ5has|8dWHQUNH@M2aq%cwW< z&2mo9=WSz!YgMykv25!mW&_v!zyYOJHK`Lmy=3FP0JMTtr^^S>+1}Ojh!rFRQh=NR zjCkya-2UgDe(d0Z&uyQvPo|;yq!mu7#ZU9FSCJyVd-fe4&FpZe$1bzN>}OSe+6y5I&wcN+CS9AC9&7H zd=nk{T^Ib`EvA>>6#QPl2jUb3zzCr8WL|`fi6GkU z06Op9{Qn_Zh~L})9pZaF+F=F)x5fBlRCDfjyG{%K^FoPd2;Yy}=k@z0>U&beXS^)< Z7X+Vy+vWPtP`DX?NhIhvI|}UO{|n`u{5}8x literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..28fe90624a7452eeb511cc4c46fbaf5eac8ef606 GIT binary patch literal 7504 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 E0!+l$X8-^I literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..18bb41d7cfe0e5204a0c47e67c9483e27d5ed84e GIT binary patch literal 20632 zcmeHveNPP>n#43sO>VxEYDjIGqDckwLGyaE^5*7Eb9;09_PTE0byx4LbAQi1 z`ykMyA8-D+ciq*q*5~n_MFj!r;O0rlY5;HEDeZVZDP7o3Gdv7o* zUs0*Ag4yuX!`#e@ZUrS`i2np%5ynik2|enjai4d^5)6rn%w@D`99&>c+O`5O6(kZ+lZy+)J0BG4Qsq5ap4Gsl~5t^eo#7QQZj<$UIve--0szQ6UNx%hgL z!*tEUJz}v<6ir6U+>C|>T)wty^|~7wyYq>r9WDB#ki}cJ(%GYkj!AtEaiC>ydCzTidSIe)fa#u8uoe zZ9fbTG1iruZZW=XN?J=^Ii61b`TEG{rtahS@(MnpJj~&Lrl?5 zFh_y6(HV@h*qLty)*O3?Stg|AS&GE&o=AYtQi`IVP^{XpqWGl*MVHYpp*D;)>#6E}7ysu`oeZ682{u#u$H=srXKeK1DCXb4RSDd`xw}AO(u9Y(p zPg(HpG(O@!Wx+ef_<@X57Npbo!R%8Oytj-W&OK!TFUODiPg(51V+E%yNx*N1PFWnl z8gcsw%9l_KTXD~I@6--TY2UF8M!PLx*U}}~(n3|IvOr7Hkrq0a`rdn7qwz*IL zidd6~SkvV|8Edoxr~p?2RbUm6*036w09*yM0apVPfi*xoa1AgCSPOIjZvZ9(>wr$+ zT3`yW9>{<(_T4k1mXR|tsWh4r`PHQub~UHKWPuKWNdoNx69w7?CJ3|&R0S#mWr31F zi$EqY;>bRIC);;6YQK6n^&y$Oq=UWKOJhJBFWHcRWK#js94e6Jv;xTo>;qo%3HjkA z9}|J(vmHqHkOZWAascTblYw;4P9Uv83XpP@u>)s&Q-H4A$uE1r9$;m9D#z zrt!QcUBK=pC>7UZy5E0eAF)(^}<5b&l~l?eALH`dj0~`e__=93sHaFsOJ@< zF8tLjsJ~|P&y!LAnNiQhwlsLosLxG6{ijCVmx%hSMtx2a>Z3+II~jFacdS89ilqFQ z?LV8qV!T*@DUnGY8z+!rl?{CQb(e!|FpaQ) z4SEOzY|u^UXM^d48XHU{%w>Zagg!RtBFtuknLNjlGXs=gO77&B(mbpmb(;fqcRK4s z-Q__&HG@$OdVQ$7GOy*D)H}J9v7ln*SYWer3^<$|{Vq30&6B|~*PG4J=gZ}oozqfX3fj=pEw`^p&VTQPS|9foBQBesG$&PCPgHmJSX* zVmWFxdH5jq>~!qeCO=KSn*25S%=e-y-{gZJ?Z^e7B(r#xMW^3KnA|sW!ORUaSF{%2 zBvVxO=%+wyf-w#|nwe8(jzxwcw~LldnmJi>5ORBxA;){NnX_gNZ+!@IN3tQu zOR@eq+D<&FanGri8s+=q`DE_Hj9vZJ_Zcf=sT@m~pJNfbj$`mdK~NhhDDbDv59(R| zf}l%II2~iw)A1m4;C+ZCX!IU*?xGcMKUnY1INNuIjiAC}`(5nSagWNB7~ZX75<`(t z6clTeY5UGNzyroU8Ba@zC?}ZYXT%x2-C(Cdo@eCFAU2eaP?Bl+Zq33Y9 zO6_TGo*y3yXp@ALT~|IFSMV zo1Ea!W|lpP2Pm$ej=L>Y3KP6pXUU$VU&3vbfOwI-a2forjpNH-%D6gWNLwPOgoH=eQ9~YWFE{1V0Lic5qGvLqu>GN!kTCd)nihFW- zSt;(NA|_pg-XzLw1DB&6F20f3VXNSyzLVM3O-yl~=o{5~!fNzQ1H#Ug<5XFw- zKyeOEk156s8#X1#6cp>=^q4{(GvqGFyeQcyK9tFWl)gNB|PG7n0|;4I%pNG@5N zuSAgLadz~~<3B505|>H_4XhBjlq2P*iu+K+eZ-|oAz#K((uU6@h#bS*UfM$*h&**E zdmgjh5A*_~%GJB$QmGhMCU7xF$7hVcPmI5J`gk@h{M5wwpumv8B7tF!PVMNQ_;sA@ zCNkT%$u2PJBES4%TtHv}M>cc3jqd9h#@R9MC=icoK0ZMLO})NSTTU+c*9$KE4&@5U z|3LXy@Nal3*PU!|53NN^>VvEwWdQt}A+IpxF33tyN>R#C7K48?^t^_i8!`_{2KYBa z&euE<&nufZa-B10#g}5z9_al~ls};SZH6u#}7@*VO@dUhGl z!U*ImP^wT?!M7QD8tKKW)^@~f;8)cR9U4BVfv?c@p%~9kbDxD>{!FCz2jU;CbHk6H zQ0jm5xN^hKA5dz4cE8e$_3l!ctqa%O~6jzI$%F= zJ#YY61MCIX0{ehVQqC%ilYgRIm(Zh>syme8x$R1LPOGvYbBhv6{|CkO+Q?ps<~}E} z1^C^_l~>&izyAYfv*j=CQz9?Kl=7sPl(NJZltuD(rNq*qEX>)a6lFCj^V4p@FFrOZ zS6*Gu@PNV?I}1ggywr80;s7nUHpwc zH1Vk(XYU&F-@e7M8{@mjAM|a7Kh2|lyzWB(Ly5&deb3PQ%_PT8=yhVAX6SAEXQ6jl zVqNI(!uW0I*MBYg-?*s$sXq5Jg*e?-iE!m;Ro5f z3HIKe;Qo<~?QhSt7rJqpe{VmmE+BiDgLw8Rc=jj$ZTNiu_&vg>5ZQoT;_PGKYzVOr z9lCE0e&@pT0KbpndEi=lkC7u4GFt`R2M!UxPhSe&b8OC)R}V0}mvZi}YIr@mx?wC@ z1)clvk-Sw67oyb-Z$?L7e@!19`#_I>Ah`UR!R65lAL^rTex!5G{vvx${3F594-JlT z?t+s;7e3a9-uy%#dL5h}`&8!~eZxJ6INI{_YaES#Iw3fI(ZEmMG4NxN8_;k4C!r6{ z@*IF29rvPR{uapF{U=};t^#k{4jp7IXzRa_ywzy8e&Yb=c=b1k<73g) z=xaZ6m{kE=?is=S;PUygyq5E011-d%17mW_`3v@T>VM-{e*5_g2FFov0Vk{OfxP-n zgOlg)Q>!Wdu+2ICti(Cq@=I{?mv0)J9KpQ59J9B`nLY;OG0tIS!vzkqy`--rfq{u7a&qzyHIW5S|Yqv|~3N-y1|d2!CTY-Na%W zj_-|a*uY}zf$P`fS2f4?@|=AdpI6qcW3H#f^WwC`X6MO_T)=#rV4v2a5w=$~oJMXu z6|HJ`8aeT7bo4ZG;;D;z{NkGiM_;?ZarEg4ee~J4^fvg}_9SxRtuaGB@j6GI6Bm#Z zPrsuNJv*rnoqkUrdg`*?0{xa}jGSmRbK*_xyO&=y#=rNxfs{i&h6?QfQH)H-r$TwXQ@-c~RMEjPvsSVEKO@rDSeVK{|fAcfX4sadR$qwbj#_H#zjo9}a zpXuf~(P-wxV%f0w0_?r;ykQSH(fGpC_FMQo&H1;yfO$ln>`_i^tbW$8_d+MniAK!9 zIaDU>JqLTw!4HuWjn6%8`1cI_dv2yZ%84oep6lc}(a3Y+$x9o+D?ayh|Bw@(=O4dE z_(VC;D01Q^a5NXOUUmI_zCv1my#Ew%%x11qvG142tN<~%Z>{9@LAUBl$9z{_tz`kO zXJ-WsBhkW!1JM9q8@B`p|(3dL#534;}LnhpJv6PT}1K`&RtI zW5)QgM-6=a2?JkyoFj3t`X!-{yuAr_Zi1Z+zzvw6o?okeBIHj=4BtnLuRbd{`-IW1 z{)K2ij<-dcpXV5I;4xz#xaAEYe^g@h+}w2D&u#`1$8X|D9Dj^$;B`BHj?&r}U@u>_ zwvN$0LGjE-yZVM&Rt+xY-!LXuS09WPqHlFWJqrM<*3@AB^W)Wr#`3BT9UQ144%K3h zJapK;f%=cQ^EVtiJiv8OCp&>PWarUn6*yjXC|Au#{HtJ_@B0ta{b1ZF*gN&8VXp@E zP93zb=JUAoSD(T>qE7Y-8_3>a!``WEH9+<-2gSb(@i*p%y(930{Huq(BL@xt4#B@8 zGwl_uo#x+>Y_*W=VU7Ue6WDnL@tNgc-RJwq?-4!~kPX-+-Yy1j3t+2Y_aA(@*z0rA zjx9UB*N3_f{>GLqW3fu?_m!0_wp8r*4@symWwDCmduQiG4Bs-l9u&`klM>I3^{_cJ zCv@aQC(ns>JSV!46W!5KeMBGaJfO!9;MeZ-{y(yp<7n4GeYE?qz6^dY>p)H%zQd3o z+{2M`eJ^sN>!d!^{h&UiKco+JKCD+lzjDVh-!ky3>>k14D01TAK4bhty#_uwVBpDq zj`)sly!;zNe~-kL!p>6IsQ^}B{xZlH9}@CABvy|0k|ToS14g_2`=Z@1;g`~w|9hg{ zCovrF8~@59qTMU8#b_`4fgj(48##gREyTM}A5JM!-Od&xR!esnIk6ZyQHFL!hmjNI z$cb{16Xn%iJSUcjoG3$1lz}7VJI3?h`v&+7O&odENvJ>-&I@zO~D6j4|?CpF{ zp`0kg9DLs|683svuLpjJoG9z*GW^>C|9WQHqnw!Xujf65a-xjq#FLlmz$ZTUbpMbO zpXVRHNBBfJQ6_St9(;8p)&=>Se3`WV*!S@}WaE85B=-HF%rX#z;|nFP3%Y@M>#^^L zn1}1xSw=%mG_#>L>VeL;=SyBsLtQkzp*}iVvqvATy+e=RAvm|k;M{24UVXGas&lTb z+2o5y1xNQ99OWDbmxk&_^r89#`cTb5eW>=Z&N;buy^lB(xScqKeIFc*AMP|beNZ>> zK(~P-T^xyP`TtJn69;h*i(#h>ScduO`Bm_BAqQvk(JmYmob5K+`8-Fk&v!}uc^BY0 zhIXgKXkYlUnG-tp0koGQXNdc>?-S>Z_x(=riRyS(Vy$RD%D`S;u&{`kduBS?`3piU zA6!abFec|$*F`hYS6Cco9$;X85c8iO&tE&17g$?25FiePut%<~w-Xog8;%9a*47Vj z9n{H=XFl1{qXBR{u=W8Z9q|vqHsAM;)BRvv2kdp|hP@!{b=27l`8>x0g&mkj)X83E zG1;p(>~-9yc*q{+p!k;{{>I#}*8o4rzcB1I)EWM*g?|k*?PV;S=3m2oN+#LE93I5S zvuGdUGt0lC&-ahtBYesr8?Z~fEd_5gU@N2ifX|J+-i>yw;P_q_>Mr;jD=1*G0QUVr zfW`b`-~TrDeZQZ@wBvhc=S57@nCqC>_m4_EH)>&XW=@nKCrWuv)bN}rLryG?j+SiI zM@yUacyqnM(XDkHN6T9D(Zy{#e?BcjPPEk;@|GHooa=SSi85UuTHL7*m2~MtrQJGz zHkPmV5$C*3g2VO5iS8A~_^yb7ovRGgt2h#8v$hHS8j1O_K7QEIfEwn<*OcSgtwLTa zu`IN6+C@&RGTK?&MY~F(P1d?%e#3_c+H$BkPUmwVQ+cFu!o%RE-$m^@Ohd8 zImyLfk$`SATezEUsGP5EE z$C4#4gRaNo#=dW73fHqUYeO)a&=86$&^ekYd6kBusM-*Yjs|P=(NL`(uN9oDF*r9` zRHu)I>vhhx`PsgBz2In_!BNg}aA~M$t3DKN)`x;E`cSA%=bT*V_7P`1Ylu_W_rbw< zTdBe6mJ$P-7aO>>j3aR^{RW{=9K=0j!;Tl|#r*XA%2+Gp;4BUyjb}Cp&Mr3E={!fU z&zDL3dFSCdhIXmMXkW-PbD{+M0NQ@!3~`@0PMkOP{ZjCW>UdUSt+KK9R&Y8a*}-Vf z^dg=r+UZGlmJTkdNn>()bx||{eVHjvrT{&OHq3v1JbmFGQ2@3=(C}an=DegsxyD=y16=Qz#%L#kMMTTDs;aBlYd)DM>eid(0638Cr zP!Ja-wG?r|{Y>}I@%jGodxK9_vH`oq*D&~Mg)M9PQlEr9UP3!&J-(Nrj_wgL*D_$_}LAd#y!)4@A8HsIl&a1 zqe%t{Q*v_k6Ssq&H`#o~h%Uo7?Gx&PnJv zm(S5p_+ZQD^E>DHbe9o-5DaNw!Yn0dqnNXd{~DcjasP{k{T6T=VhsDktaoIz2d-;ao`X=hiDHf+4?$&KU%8b_3s8d2r6ajyjzwOUGG` zgbYY$6VgalDB-Z8aYljS_#mA{MErnW7wKxy_2v3gNjFczF$w7U2q6QeQ2$)xTr-RH zUUqs1@u{x&vMb9#H@?cHwkOj#55r@;LS{!1FFJQaXKT6;KU(ka(R#0>_0Bccd#+Fa zj96*3w%^0LQEX56HEo2}cAlmmh~)9JRdgoY4IP}XW$wIyj&;z60|CFgFrd4!{%)*4 zV$pd|BtPhZo*R0e{Gg6?)P{pWzh^;E|3;(`vb!cc&~?ubAP#p=q>)}>5Iz}PGWDHv z5hskf-%oRj!A>e zIKSC@*=-ZCOf+KYk`MG37nQm**kkF)a`M zl!xDn%*DCOYq>~zILpgibEoo^>zO*>Q0Fl-U!fQGWboXJdptaT)AKhuGo#a*u>C6!fc!cKw7MrvdDCErE0qJ2e@7PKP$) zbovvL9r}Hdl&P3e-0AN#>?u=m_fy=>cqgPgJHHc24-yY>c9$ikXXqy~vbAAwASow9 z|867=vb!ddzzvM+Bt4w%Wl3on@ae7zm2<|>ho7A^=6;*q5qH>(m^vIhrlyU=On0X( z(bj3r%FvS%ZMqe)!kmhYFeL*q1g2%oIFFZvb2E0Etu!IYUU9`PZf^BKQXf%s6uFS}^tvm(EKe>IMy zDvZ4%#^be~UmuxqI3jS}Ttk0@z|8`?1ojKuEAXJeqXKL2D^$Ab1a1)6BCtzfzrbOEBLXWH7~?Ai zRtbDdV9P>7-Y?K-UHjSJ*U{h8ZT@{I+jd9ip4<957Vm7?(Yw91Z2KKcI_}uDz59;l zmiEqF{d;#oPq_DXR@}d%x46HjZ<~%khTpvnwJl9u zeYM6dXlig*b7+t`uipBE3oXO0B3oR7OpC4JQ_v~mbHcf@QdbTxn6?b(s7x&)Y zulICc7hY6SysM+Xbs_#ve|uAV>n_8I;w`2d#eMk0{*E23?B9HAa8msBtlrwyi$C8&ch+Y8ie8)H0v?WjVQ4Et7YJ z)p^&csX=vtyhkIvev_J-t2+GX7|>LQY}eH5tzp%nshL(e^(cmHMN3Wzt4`Uitwg&~ zQ`6;qO?Bp}bLHKY=ufg$s;lM1Ml~dNNjof7`H4X(&mvDSP0g{&>9&tl&GwR-^JUd9 zx7)(1CTDA?wn+;uYAB%Q$SKkS)a0FEH7j3r((KkE)mf)H@N?6j`^8xhUH(gS{Ph_Hk_}oR12+Gh)UIMErln=mE=h+`4pxa z_m0>0QC~mx@mkxIUhV9fTi%WZSa7|XDwj8^>3OQ%+NkDPgX+p+b91~?&2@1Yoy+<{=E`Od+ksMi8(sc(8)ookh^LTx3~_Cf6`)b>FQebd{d78hzmP>Vxt2x{m9PPIub zW-+YA&>geX$}y;+4>;9Uz5E_m$``> zIU1OEpP2V*^eF1MgDCC<^G<84Sh72zR)w4WBh>DM+8?2YKGEJsZSYnewp4CvQL~Zf z+lJ-D7u9Te&py??Q%(wts&uPI&0eay>(m@uP<6|D!q+Nkwmj9nKu!C#>M5a|@KC0x zX;NbvWoX(BFtOXFscB@*WAm$NMSy^s7E(PQmlP|KI!8V;7*;H}<5!tBt(`5Gw(({? zNzu|&x7751$C26@j)aX??KQXl;r~CkJW{~(*9QyRx)iX`R)p+F;xAGQ<&~87*Egz# zLA6@ekks;bv1fVasfDfd)Af>?)~*&FqPqKAYL-08Xq&557h&JF%342P<(CF+8rC^W z{u$Dz+WNTsarCH~YL)*53CgVUH(}9km9L;xEeApQkE3C}d)VBn=X$m9$hGWl zYhkG1VTT%dZaaEyF238%@)xH5vcLVR@_=*%e?`S#5FL1Q$8jn6c0^HJ^j(EAxVxvnm4#bw@5X;J zVd3`f-C@0Hm(Ijb>hJGk;l7@hrv4@t?r+`G&$XL&bZkR+Ygb>-mR|e=qmJ%&^tU$e zZr{?>+}zhXV75BC+j`7;UsE^Un#>kAYz*n@=q4xl@U}kucNP}j*0Y2D2MnYCu+rbu z4Ae2es2OO!DVd0WzQVRtZLD9ucFoF}tMYGe(R$LGJiUVP%d808V}8&O;#o~THVHCw znECm}#2PV91=3u2cjcF$2mg5Sukm<~Io|wyV`4z)n{so!=%(+7=}!!&<~KhNnWzax zbG+%liS)rio;Ke6{AJ=4pM@PxdQm4RM4>*@euNei*AyDfsh^Rlno%hR(Da2&@*Ay z^lU8zv-?Qb9RC;Gr}Md=IsVsT{suBO?V3GTJ7lx_NPTgHe&TON4Vd~lTX#1k)K@a4 zVN?p18;FlOGcI$yi7`mc`gFx_i1GKB3oeASbq{{dcyFySAUNG9>a)zT?}+iU{f~(8 z_^x=yWzKKngOHlsovzp@#%~p!_+0_lGv_yH`WX66?g&*5&x`RdPwzzCoY(Ar8kNr) Q-+zOlfv*~8T(igjA0d>)7XSbN literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..22f19eea1f4c6b2e12053c650a455c4442b9481d GIT binary patch literal 17320 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..add02474e34f15a350f6a37b4eca43628346972b GIT binary patch literal 14384 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..32da251ce8a0f8a7c6e81386a7a410e6d3165833 GIT binary patch literal 10088 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9e4ddc1798c4884ed1abf23719f3a475dc4ef159 GIT binary patch literal 10672 zcmeHNdu&_Rc|Sb&!7GZQ$SX>sC|bFuXo;reD~gh3#c>?P@k0;C*1V=mois8fQKDpu zR4H1qgM^|K#dZrf@wy`2hHV}OEE$@#b%wQQvCNK^1S{MOu$*CV*I)<+bbsxS%)qi0 z+sysG`;aBY&13mz7;=SkzxQ{(bI$jjdoHgQ4jewn9gaTE%u8VJGlzu}=(F(45fgbp zB3>_3aQ8En$zY3UeWv&$@D0nE4HZj|*kt$Xu0C>%%ZAKr(qxAa7;~C5tKS6cEZTG-Oy#qw%-nB3|B9ZRoXwAn`(P%esb3QmdG#4t}Cf=5wcJN9IzKGpTH0 zWMb-cYJ7y2j{V3;04(;JFqxT}%qlL zK9!%F%4NUhu*($HvhgB;DxjLI{pbUqDX#$V(GFr2b)U&L_E@r^7DS_R^_G}MbmX1a zKV1C9j=!RkwYMXZlWfCf%>cVI6C1>zh3K`Ft+;J+J@kP18}|17v#iWYSN?G6JHN@b2sE_2l5Fq0rDzw`UQ5p#o?5vU*qSWaj^eh<$@%fkBJe^_znJ;E{2FF zIryT2F+L{7&_@J`dKppQ5UVQi2zl!|b8%J@cc+(QVpO8B3su|&JHhZJM=!*b=<;z- zgjb5O+DdnfSBp`hQjUq0N(^yDg=#q}Rx8natiDQIEM8^Nmh-G#TVZFfG=k3%LldA3 zsF82Lt$-q6iJiN`1sQXppt;a!UOZ@CG_}~umaZ1X+vjLq8T-c7*=mBpn_D90S`&}4 z%*`go!UXSOteGHk0UDW`TN&H7@FsGCz5TA|Ku~mEbS}QY$cb%R9IPA+dXd7+&C09pfgZ6O2&I4Q zLY{}3!XC=k5N8qIuv))`Gm^!z32ft`)xbTj4LU9Bbp8xmV(VRWqU&@t?2X&+q7z%E z^Sj8lw!7%)>vX)>EIaO^6JMuu9<|YV7oCKqb14uEcUf{bjT!UWO|k~gb`rl46H*#} zubVAY6HKrLFTprl@DSA5f{$Q~EmRSVvIUi33tMm#jIf0o%16q(dCEnl>1JcKmlc3} z1He5#mItmyfmf-F@-^NI++AbrO-8=**_$E8JYLm+UM*}uHJ&h_yTtp84D0(~8S8tz zKiZ7-ZFV}?*Zcdu;Y0h=VRm~pJmBJCjH}@QXU!N_soNY^m@P!Q%1c*csPS59hxqL; z1-wg9t}US++>ZsK7nr}LQsB`x)Snym=izlxvxb5<+lcld0)Q7 zIO_MU>#x;e_hRRt5ozs!O|zx5wVW3jYgqLw9M90us-qHn7LTJ2deL^H?Lpg%nkZd? z?NwHK{5|v%Dze+>JSFk!N~!eRG%KN|642{L>oMkcoo;~Ev>yG`DJ%j1y=At1<<+-a zca?cx(S-dL9JJtJ3m!2b*UnyX-sxMWb#LkW^LLdBrbGZ`z@mKnT$%5)?DkvmpaI!N zdn0ecu;Z}P0P&nL>?=4cDvCS7Dm}d=;3e)wQ_=irb;iD6k4t6?3XQ9TanZh9;_`-Z zL(WKEiD!{Z8BWNR$KX?eUKA~c){drc@QHfxlTG>Y$J4{uYf9V&9XFZ>zL(bKA9`Yu zLyvvq3bd-Lj~|Pc`Ejgc>8NY){L`H6zwYYi#yG1V*eiPO-(&2tzOE+G+ZhsX9S_qh z*&OYmW95SK?2kR}$%TIei3W!b;^Q4jXW#dpf<+lS#MqU4FNvb6=>O z88qe7{RULn!RsaTzu28kFZRr)7vuT#Vxo|aKtHl`Fw}y610!L)TSE`=mJ6e%eg1?A zXD3XU9XDVr^c$uueauAyeiHB#2aKct0OY}wmVA)22GET&L_c`FG-1*WU$f|O&PYFy zv*=OI8bP<7vgi|tho7MN--Yw)YRg<0^bats1N0@2`5dUK45#B#J)p8k>8V3g}}$TdnE3)*RRtVZN@! zyl?vb)mz#%!PgacMM&0pFcRsC&l`Hc$&b2?{PY)n?4MSBU8ACp{o|?+zK!)ih;=8s zfosj)f&O_f`HNf=yaRDpgW+#qq+uXFZ|HRHGyFB~GUM{XpLbwX^unJPeNg^1A%9dW zMiud?%p%=Gte~P#EICfo zwV>+{SvkJfq-%#PdJku$?;o(}-JD+URvV96bT4Q4nQ1lna2PevL+^1$4N#rkI-wf% zL^V){wF&MpYoKmxJM)7MY&UD5c0&!sj2ftK*6-9n+qGst)j(V9P7Sn0T>;9y?FS=) zwy0SH!0*%m_ARP`wqt8GVCFS)zY{rb=YD6@RcrX!7pd)xnz_H-%>DWf%Kcc;$o~1^v5u1v*jNI3evukk;8gT`X`*l062?5l$k^9@N+(%qS?xPRl2T*ko5`|!)Lrfw-1@*pM;<-Yvl(+oV1Lk*SWCcKv**YOrp;($EJ zN(_)z#W?d{`FT5jtXn%v__H^4<25{UvyCz3k8$<~?Oc;H=(|6n4_}79Wa*2ZFAYcO zJYt+hhH(}-cK#VUJJ9>r_Awkj@r-N0bKZWJtibzP6zof?Ut3nya7C?}c0sp-bVu3c zXsv&`f@qK~oXcHRE#f7AUD!qE8$V}Ncy_yRws8Zm#M!2z9vgCL_C1$^XEUCk3f|>n zTSPE%HuBPWsC4#jF(@AsgHr2Vi$OsQ3dP`6!wSU!pH((m3dG>5F=J4;83Sek zF(_sX2<2`uDAs!`{A$ZyZ&<1ErfJ-YH4nT-oK}cNoD>7E3U7)*+zQk^|@QKs({wyE{>_mvcW4zDX@99-IOW~=y>c$ua%!A@I=Yc!T z7-$Vj$O(J=k5L{Bi_sFY$j%3+6+?MgjxK?J$%9xtp0LyBK`iHtzSqxDd034uLa!1s z%8~N0Kl&`$)djTWy1H;>LtWYpnF}(!+i1&yK-k?FNLOJTPK=8;iqnKw0^TZx{-n zz1{@nGrfbl;mcX0_S(5E!%tOJLUjB631@v>FMiJm%an6i#wxtuy4~)CyV}!B@7t8~ zTv{-4U%|Q5r~$`KS!B6w`^Dgo~voFnA4CCATH#`Oobp+(!k;d5;B)JTHITaTZ594h+fIukq^Iu>+D zRk;&qZgC6ita+sV(aNt>{uYHagl4*?4VSiD{H|tPhv>fUqXT~cv_n|WqJyzWH@Y0p z1G{bw0Gu;?~HfMO%+l*@E!AHaxyh%2GKEMhtZM8htH{*6#HKf5kXpCY0|08EIudE zxN$sSQozOVql~qJLbpTOA`eR4y41QyQspC3_pH?0CEXX5whE_psaMt{pWGw038#TX zrTdRdzIMqSmi$6~LUIcpoiL3s&BS{DLGp*BT4B2;9TMDsFGYlu0{=ovlX|zw!a+rs z8fD>Mm?mkzgxcsHNfVlM!W31CY?b_5C3UOh8Em`>eg3MVzGyOAWC)GAC+yujLoldqZzO+p7o=@SZ?RNE;v2^E^;5}wpe zY@ht7u(WUy6Di!nxLuvnKA~bz25(Sml7%vOP{Hi~LKgn3_$UbQ3X*!%B=3=hl0%ao zlJ^Lug^R!k0S6_p7cF+VcoF!7P%aKiZL+X?j}#Ps2Cu$Hq~Mg~`=%6pSW@{{{ZeqZ zr0$i1?UEXnf*(j~T&hu;CACfREB`Llw2NHYA`I!G153F}GpGTgf{01nLd`Ap?@%7^!dJ!90g3nz{E^w?~pdcmwh&}|0_oxe0boYyU*HZ z=hA%Aqm#B?kZm*j++f3gOOYP`)E8FNxa{*pHK-5E<(zGA zpBro#vGi@ZZEvyZH(cXPV$1Dwh7Gk%_ICU>ya#f8CR>Z&KG)cAEuSqvM$%h2fmSr) z+5Ox9*I>gw$ktzd>j~f;Xk>4nyX?AIJI~nvw`JRH3Sg&YOJguDyI!pSvzoQo_VLS} zKYR-?uD!Su&$gen>}M_ei)#Zj^*43T9tL|ek2G!jU8dREeY5UkkZk6W^2=8LN7pP( zWV7xh*qeEz`JrV$Y?`gzH|w5)gm{~`qJvGQ363}$F5BLQB}i?2z2YmD{i2;{mTzx9(*Ux7E9uV@mIsQj2d+Qu!tFOgs$MGkSY+7PNch<5$VOin~Zs^(l p+x7ch@a^2OR1I+5vVVO&6S&>4&Hf7@ceB4>6~48Mw)#ix{|78y>u3M~ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 90% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco index 3c022959a004bcddfffb7ecb41f6455b6d536042..3cbfeb5dc3d93f4b1d7e8df9fb5a6ec575135cb3 100644 GIT binary patch delta 227 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 b>=jY%D*lHke3JcXJj%(0H@bCcqy7H?-&VfB literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..709c737801a62dd0f604e625bfe51452571c442b GIT binary patch literal 10680 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 {qq2vG+!R!r zU0lma!A9?8)qG6Ccf?EIM3~?wp>X3j5hCdHf=J9Y%L`_UG-ozTV!l~65hDDEAM(hoX zxhB}3T^95Gf{C!m4<7=Zeu2JyQQn1{unxleJGaRc&&e}4(04CJ^0S5L_O#n#iRTtr z8|a%C6VWlI9=yAB+idZ?B6|bHh#nVMDx}>GN8D2EYEbu6$8HOFZ%K2f(Ewj5`>JEN zO`J+I^FTIp0}Q`Ce>(=hje+0Bz~^EB-*72M3?FsTk*5MZt0{*@X76eRvqq=oJ{`aM zEIUegT5HF$T{*7kf?8b%L!n`dwMgWxw&D_Np}~&+xhUhU5<2FiXtf(_vGpO8vf83Y zi@WlUd{ndHqgO5mbpyZtJ6L*{73d!whVv-BfG+5`tl^@D z@9K1y+I~gDs~Wzi)A2Mx$D)R>Y50MLmwjsc6%DUySYN8r-}9^Zv4(1G?f>NX(B$Zd z{#`BWJ6S(AAj?mVCgODyr%#=@U!FYqL}GC3aPPzur&GgEj1Tlad17Q}xG!0kO7_VU zBjd@*=-5-NX7a>X&E)8KpNx;+PxYa6JdqkdH8C+-bF!X&fUy_YN9a{B82*J^)lgVm)mk&FW6RHt4$8|Gm z#_=Kl(1|4bcV8Ne)V?~Flc_O$9!=MaheIa1%`BJG-Otw>#Cl_kSSpG2QL%hLv>O}6 z`a|M_eExQ^o}Y+{o9o2Fuvp2TmIxo}2K8iAEadYg(GmcCN)jL9u~xAd2gHY>q9qD_ z{K*#4!WT%?3=%azWZbT|b*;96q_(ZfeNmgk$dA7XZtHf@!H-L#ldre~?T>vZex0w~ zE(ZA|_ng6CIai7ujDKw2l#httzRt<@kO0i_Wk$+)2%KsA>EXMV949JH1e^fi1ws$)QpkX@= zK+Eb-td(YoHVMAwS+IDcR2`sd3sp(h-+}?(PgSR+wn7zRh959VqM!dc+m5K1gllS1 z%auek|727x?J#!nv(p#EawC5qqKHSBm}|uyd~S;o^p-XHc8x9({fqhiMm~$7gIa{^ z-x~SS=kXZiQTDPRzWLG+p#9CA&D78;Qsp;<__L8a<>h|ATm12AOPe>uDdTE0u zG9O0spTc|x|LXL*9&kN0IiN4P0MmuFzA#R;clXuu8<;&Q3NLZ<_^=3f0vz~cl4WrS zc)N`+p0H1?9eC!XL;pQY>(B`98`~uO)=X+`-6hpFL}O8GP=3*&=;2KGnqngd_4=Fq z-iAd-MkkXj+W*uDem=yagCnP+a$-Ve+JB-?j1uN$jQ|B z=u4@D~DdtQ2*Va z-mI@P^*YJYLQxmf*Rwh{YmBrkrM~F(G#&anmzI-Ouo3GH}=yK29_-qvw7o;5vc)N2($IZmSK`tdehJv408syf_V zuR#OJ>tgx>N^uJ4tG{POSvl@9;64yZmac&gJzw|al#vMzuBT@81c&mKej-82#@*X9PzoK-D%^A3K2{FElY zxGJd@?v_8L$!qMZ+%9}fK?jz~8xCDw#|&Ea@_NSK(d0i|b*$QYH}A7wAm7}e@`u+e zMOpWsPW}!Gr1Nh3$256u8rIoYZPo2~87-@^yUK;%p=t6x8jT*%h)?fd&)?TU(_=?t iRp7sA^6#!EqOA9;lYfN5z2vVxpmJyrZaVwtRPYR#_ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..0beb7b8987a27d53f960ab94a92595c379e47eeb GIT binary patch literal 9592 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 V2KgN{K1=^>ttPSY1#F}K{{u!C+6w>x literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..8b5ae98e40a5bc5f8c32c5fb8176b05c08429c31 GIT binary patch literal 16656 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 nbW*{MZ&2Brpj*(sA7SuHnvu%3_(wP0Xi zU;<(Yum@3M5Vi-9PR_|qPR&bA&NMSgG%GJnE>6x$Do8IXs4&V;D<~}~sLZWQGRmzq yDM>XiGRrngPOL~T&?~5%tgEQZl#@HTOVPq2Czm{9Hvdvw#KMJe_2y-2mskL+U`1O1 delta 220 zcmewn_9JY=dS)ggv&kEoy@Ax`f6Oe5yhdgW*{MZ&21aIj*(sA7SuHnvu%3{XWdH&u z22~IR1neL}3`8(6c!)7fPE}O4N;hUmPB+d^tV~MJD6YsX%`QtROEk_jGfPa%D>5%D zC@sk`H_kLM%1tXUD@)GE0V*i1%r@66sGQuTXkh`=PL}@7zZ4g-a3Ng1d70WJ761%f BL_z=n diff --git a/server/src/main.rs b/server/src/main.rs index daaffce6..1f7fb7ec 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -341,20 +341,22 @@ async fn service( | "/cold/compute" | "/cold/io" | "/cold/inference" - | "/cold/inference-batched" - | "/cold/double_matmul" - | "/cold/lenet5" => serve_request(true, req, dispatcher).await, + | "/cold/inference-batched" => serve_request(true, req, dispatcher).await, "/cold/chain_scaling" | "/cold/middleware_app" | "/cold/python_app" => { serve_request(true, req, dispatcher).await } + "/cold/double_matmul" | "/cold/lenet5" | "/cold/resnet18" | "/cold/resnet34" | "/cold/resnet152" => { + serve_request(true, req, dispatcher).await + } "/hot/matmul" | "/hot/matmulstore" | "/hot/compute" | "/hot/io" | "/hot/inference" - | "/hot/inference-batched" - | "/hot/double_matmul" - | "/hot/lenet5" => serve_request(false, req, dispatcher).await, + | "/hot/inference-batched" => serve_request(false, req, dispatcher).await, + "/hot/double_matmul" | "/hot/lenet5" | "/hot/resnet18" | "/hot/resnet34" | "/hot/resnet152" => { + serve_request(false, req, dispatcher).await + } "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From f22379e3f49f951ff30a2b5b59ad55d1b6dfe516 Mon Sep 17 00:00:00 2001 From: alrusso Date: Sun, 8 Dec 2024 12:46:07 +0100 Subject: [PATCH 142/176] multiple batched ResNet18 added --- .../gpu/gpu_tests/compiled_tests.rs | 45 ++ .../gpu/gpu_tests/load_models.rs | 363 ++++++++++++++++ .../tests/data/test_gpu_resnet18batch16.json | 374 +++++++++++++++++ .../tests/data/test_gpu_resnet18batch2.json | 309 ++++++++++++++ .../tests/data/test_gpu_resnet18batch32.json | 367 ++++++++++++++++ .../tests/data/test_gpu_resnet18batch4.json | 289 +++++++++++++ .../tests/data/test_gpu_resnet18batch64.json | 396 ++++++++++++++++++ .../tests/data/test_gpu_resnet18batch8.json | 347 +++++++++++++++ ...pool2d_add_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 5568 bytes ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 8008 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 6240 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 6528 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 22336 bytes .../resnet18batch/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet18batch/tem_fused_conv2d_17.hsaco | Bin 0 -> 10616 bytes .../resnet18batch/tem_fused_conv2d_20.hsaco | Bin 0 -> 9704 bytes .../resnet18batch/tem_fused_conv2d_8.hsaco | Bin 0 -> 8472 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 17048 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 22320 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 10624 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 16600 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 11760 bytes .../resnet18batch/tem_fused_linear_23.hsaco | Bin 0 -> 11680 bytes ...pool2d_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 6240 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 6528 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 5472 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 22336 bytes ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 22704 bytes .../resnet18batch16/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet18batch16/tem_fused_conv2d_12.hsaco | Bin 0 -> 13560 bytes .../resnet18batch16/tem_fused_conv2d_17.hsaco | Bin 0 -> 10616 bytes .../resnet18batch16/tem_fused_conv2d_3.hsaco | Bin 0 -> 10624 bytes .../resnet18batch16/tem_fused_conv2d_8.hsaco | Bin 0 -> 8048 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 22384 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 12968 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 22832 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 10624 bytes .../resnet18batch16/tem_fused_linear_22.hsaco | Bin 0 -> 11856 bytes ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 6344 bytes ..._fused_add_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 5928 bytes ...i_fused_add_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 6240 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 5568 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 5480 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 7504 bytes ...add_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 22336 bytes ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 13328 bytes .../resnet18batch2/tem_fused_conv2d_17.hsaco | Bin 0 -> 9704 bytes .../resnet18batch2/tem_fused_conv2d_6.hsaco | Bin 0 -> 8472 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 14200 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 17536 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 6488 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 8712 bytes ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 10976 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 16616 bytes ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 9664 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 16320 bytes .../resnet18batch2/tem_fused_linear_21.hsaco | Bin 0 -> 11432 bytes ...pool2d_add_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 6240 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 6240 bytes ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 5472 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 5480 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 22704 bytes .../resnet18batch32/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet18batch32/tem_fused_conv2d_14.hsaco | Bin 0 -> 8872 bytes .../resnet18batch32/tem_fused_conv2d_3.hsaco | Bin 0 -> 10624 bytes .../resnet18batch32/tem_fused_conv2d_6.hsaco | Bin 0 -> 13432 bytes .../resnet18batch32/tem_fused_conv2d_9.hsaco | Bin 0 -> 10224 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 23800 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 12968 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 24512 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 25264 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 9680 bytes ...sed_conv2d_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 16656 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 10624 bytes .../resnet18batch32/tem_fused_linear_23.hsaco | Bin 0 -> 10552 bytes ...pool2d_add_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 5568 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 5696 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 22336 bytes ...add_conv2d_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 23464 bytes ..._add_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 19064 bytes ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 22696 bytes ..._add_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 20800 bytes .../resnet18batch4/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet18batch4/tem_fused_conv2d_6.hsaco | Bin 0 -> 8464 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 17048 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 17536 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 15080 bytes ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 16616 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 16320 bytes .../resnet18batch4/tem_fused_linear_20.hsaco | Bin 0 -> 11440 bytes ...pool2d_add_miopen_batch_norm_relu_23.hsaco | Bin 0 -> 10760 bytes ..._fused_add_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 6240 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 6240 bytes ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 6576 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 5480 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 5472 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 5480 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes .../resnet18batch64/tem_fused_conv2d_0.hsaco | Bin 0 -> 12632 bytes .../resnet18batch64/tem_fused_conv2d_12.hsaco | Bin 0 -> 14768 bytes .../resnet18batch64/tem_fused_conv2d_15.hsaco | Bin 0 -> 11112 bytes .../resnet18batch64/tem_fused_conv2d_20.hsaco | Bin 0 -> 8976 bytes .../resnet18batch64/tem_fused_conv2d_3.hsaco | Bin 0 -> 12976 bytes .../resnet18batch64/tem_fused_conv2d_6.hsaco | Bin 0 -> 10912 bytes .../resnet18batch64/tem_fused_conv2d_9.hsaco | Bin 0 -> 8048 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 11424 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 24568 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 12992 bytes ...sed_conv2d_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 24600 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 10624 bytes .../resnet18batch64/tem_fused_linear_24.hsaco | Bin 0 -> 7136 bytes ...pool2d_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 5568 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 6240 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 6528 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 22336 bytes ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 23464 bytes .../resnet18batch8/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet18batch8/tem_fused_conv2d_17.hsaco | Bin 0 -> 10616 bytes .../resnet18batch8/tem_fused_conv2d_8.hsaco | Bin 0 -> 8472 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 17048 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 22320 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 10624 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 16600 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 11760 bytes .../resnet18batch8/tem_fused_linear_22.hsaco | Bin 0 -> 11680 bytes server/src/main.rs | 28 +- 171 files changed, 2512 insertions(+), 6 deletions(-) create mode 100644 machine_interface/tests/data/test_gpu_resnet18batch16.json create mode 100644 machine_interface/tests/data/test_gpu_resnet18batch2.json create mode 100644 machine_interface/tests/data/test_gpu_resnet18batch32.json create mode 100644 machine_interface/tests/data/test_gpu_resnet18batch4.json create mode 100644 machine_interface/tests/data/test_gpu_resnet18batch64.json create mode 100644 machine_interface/tests/data/test_gpu_resnet18batch8.json create mode 100644 machine_interface/tests/libs/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch/tem_fused_linear_23.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch16/tem_fused_linear_22.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch2/tem_fused_linear_21.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch32/tem_fused_linear_23.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch4/tem_fused_linear_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch64/tem_fused_linear_24.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18batch8/tem_fused_linear_22.hsaco diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs index afa2a2f0..f76683c0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs @@ -83,6 +83,51 @@ fn resnet18() { drop(lock); } +#[test] +fn resnet18batch4() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet18batch4.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet18batch4(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); + drop(lock); +} + +#[test] +fn resnet18batch16() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet18batch16.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet18batch16(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); + drop(lock); +} + +#[test] +fn resnet18batch64() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet18batch64.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet18batch64(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, true); + compare_result(expected, read_buffer, true); + drop(lock); +} + #[test] fn resnet34() { let lock = GPU_LOCK.lock().unwrap(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs index c44c9d40..4d60f495 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -139,6 +139,369 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet18batch4(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet18batch4/constants"; + + add_buffer("arg122_1", 2408448, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_8", 3211264, &mut function_context); + add_number("var_11", 802816, &mut function_context); + add_buffer("layer1_0_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 294912, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 32768, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 1179648, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 131072, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_109", 200704, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_119", 200704, &mut function_context); + add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_150", 100352, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_number("var_161", 2048, &mut function_context); + add_number("var_162", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 2048000, constants_path, &mut function_context); + + let output_name: &str = "buf42"; + let output_size: usize = 16000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18batch16(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet18batch16/constants"; + + add_buffer("arg122_1", 2408448, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_8", 3211264, &mut function_context); + add_number("var_11", 802816, &mut function_context); + add_buffer("layer1_0_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 294912, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 32768, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 1179648, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 131072, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_109", 200704, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_119", 200704, &mut function_context); + add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_150", 100352, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_number("var_161", 2048, &mut function_context); + add_number("var_162", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 2048000, constants_path, &mut function_context); + + let output_name: &str = "buf42"; + let output_size: usize = 16000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18batch64(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet18batch64/constants"; + + add_buffer("arg122_1", 2408448, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_8", 3211264, &mut function_context); + add_number("var_11", 802816, &mut function_context); + add_buffer("layer1_0_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 294912, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 32768, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 1179648, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 131072, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_conv1_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_109", 200704, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_119", 200704, &mut function_context); + add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_150", 100352, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_number("var_161", 2048, &mut function_context); + add_number("var_162", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 2048000, constants_path, &mut function_context); + + let output_name: &str = "buf42"; + let output_size: usize = 16000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { let constants_path = "/home/alrusso/pytorch-aot/processed/resnet34/constants"; diff --git a/machine_interface/tests/data/test_gpu_resnet18batch16.json b/machine_interface/tests/data/test_gpu_resnet18batch16.json new file mode 100644 index 00000000..2b036aa0 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18batch16.json @@ -0,0 +1,374 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch16/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet18batch16/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet18batch16/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "path": "resnet18batch16/tem_fused_conv2d_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18batch16/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_linear_22.hsaco", "path": "resnet18batch16/tem_fused_linear_22.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "kernel_name": "kern013"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern014"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "kernel_name": "kern018"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern020"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern021"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern025"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern026"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern027"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern028"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern029"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern033"}, + {"module_name": "tem_fused_linear_22.hsaco", "kernel_name": "kern034"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "var_20", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "var_30", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "var_39", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "var_49", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_73", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_90", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "var_99", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_123", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_133", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "var_142", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_166", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_177", "var_178", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 51380224}, "buf2": {"Absolute": 12845056}, "buf3": {"Absolute": 12845056}, "buf5": {"Absolute": 12845056}, "buf12": {"Absolute": 6422528}, "buf13": {"Absolute": 6422528}, "buf19": {"Absolute": 6422528}, "buf21": {"Absolute": 3211264}, "buf23": {"Absolute": 3211264}, "buf29": {"Absolute": 3211264}, "buf31": {"Absolute": 1605632}, "buf33": {"Absolute": 1605632}, "buf39": {"Absolute": 1605632}, "buf40": {"Absolute": 32768}, "buf42": {"Absolute": 64000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "var_20"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "var_30"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "var_39"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf3"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "var_49"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf12"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_73"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf19"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf13"}, {"Ptr": "buf19"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_90"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf21"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "var_99"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf21"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf21"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_123"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf21"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_133"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern026", [{"Ptr": "buf21"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "buf31"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf31"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "var_142"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf31"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf21"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf31"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf31"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_166"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf31"}, {"Ptr": "var_177"}, {"Ptr": "var_178"}], { + "grid_dim_x": {"Absolute": 1024}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern034", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18batch2.json b/machine_interface/tests/data/test_gpu_resnet18batch2.json new file mode 100644 index 00000000..4053a888 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18batch2.json @@ -0,0 +1,309 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch2/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18batch2/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet18batch2/tem_fused_linear_21.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern007"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern008"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern014"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern017"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern020"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern022"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern023"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern024"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern026"}, + {"module_name": "tem_fused_linear_21.hsaco", "kernel_name": "kern027"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_63", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_80", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_111", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_121", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_145", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_163", "var_164", "fc_bias", "fc_weight"], + "buffers": {"buf1": {"Absolute": 6422528}, "buf2": {"Absolute": 1605632}, "buf4": {"Absolute": 1605632}, "buf6": {"Absolute": 1605632}, "buf12": {"Absolute": 802816}, "buf13": {"Absolute": 802816}, "buf19": {"Absolute": 802816}, "buf22": {"Absolute": 401408}, "buf23": {"Absolute": 401408}, "buf29": {"Absolute": 401408}, "buf32": {"Absolute": 200704}, "buf33": {"Absolute": 200704}, "buf39": {"Absolute": 200704}, "buf40": {"Absolute": 4096}, "buf42": {"Absolute": 8000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_9"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "buf12"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_63"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf19"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf13"}, {"Ptr": "buf19"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_80"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_111"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_121"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_145"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 10240} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern026", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_163"}, {"Ptr": "var_164"}], { + "grid_dim_x": {"Absolute": 1024}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18batch32.json b/machine_interface/tests/data/test_gpu_resnet18batch32.json new file mode 100644 index 00000000..0de013c6 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18batch32.json @@ -0,0 +1,367 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch32/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet18batch32/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch32/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_9.hsaco", "path": "resnet18batch32/tem_fused_conv2d_9.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_14.hsaco", "path": "resnet18batch32/tem_fused_conv2d_14.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "path": "resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_linear_23.hsaco", "path": "resnet18batch32/tem_fused_linear_23.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern011"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_9.hsaco", "kernel_name": "kern014"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern020"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_14.hsaco", "kernel_name": "kern022"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern023"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern024"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern026"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern027"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern028"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern029"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern030"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "kernel_name": "kern032"}, + {"module_name": "tem_fused_linear_23.hsaco", "kernel_name": "kern033"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "var_20", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "var_30", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "var_39", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "var_49", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "var_58", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_75", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "var_84", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_94", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "var_118", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_135", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_175", "var_176", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 102760448}, "buf2": {"Absolute": 25690112}, "buf3": {"Absolute": 25690112}, "buf5": {"Absolute": 25690112}, "buf11": {"Absolute": 12845056}, "buf13": {"Absolute": 12845056}, "buf19": {"Absolute": 12845056}, "buf22": {"Absolute": 6422528}, "buf23": {"Absolute": 6422528}, "buf29": {"Absolute": 6422528}, "buf32": {"Absolute": 3211264}, "buf33": {"Absolute": 3211264}, "buf39": {"Absolute": 3211264}, "buf40": {"Absolute": 65536}, "buf42": {"Absolute": 128000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 25088}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "var_20"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "var_30"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "var_39"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf3"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "var_49"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf11"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "var_58"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf11"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf11"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_75"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf11"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "var_84"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf11"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf19"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf13"}, {"Ptr": "buf19"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_94"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "buf22"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "var_118"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 34816} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern026", [{"Ptr": "buf23"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_135"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf23"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 34816} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf23"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern030", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "var_175"}, {"Ptr": "var_176"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18batch4.json b/machine_interface/tests/data/test_gpu_resnet18batch4.json new file mode 100644 index 00000000..de90995a --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18batch4.json @@ -0,0 +1,289 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch4/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch4/tem_fused_conv2d_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18batch4/tem_fused_linear_20.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern007"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern014"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern020"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern022"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern024"}, + {"module_name": "tem_fused_linear_20.hsaco", "kernel_name": "kern025"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_downsample_0_weight", "layer2_0_conv2_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_117", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_148", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_159", "var_160", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 12845056}, "buf2": {"Absolute": 3211264}, "buf4": {"Absolute": 3211264}, "buf6": {"Absolute": 3211264}, "buf12": {"Absolute": 1605632}, "buf14": {"Absolute": 1605632}, "buf16": {"Absolute": 1605632}, "buf22": {"Absolute": 802816}, "buf23": {"Absolute": 802816}, "buf29": {"Absolute": 802816}, "buf32": {"Absolute": 401408}, "buf33": {"Absolute": 401408}, "buf39": {"Absolute": 401408}, "buf40": {"Absolute": 8192}, "buf42": {"Absolute": 16000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 33024} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 33024} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf14"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf12"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf14"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf16"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf14"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf14"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf12"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf12"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_117"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_148"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "var_159"}, {"Ptr": "var_160"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18batch64.json b/machine_interface/tests/data/test_gpu_resnet18batch64.json new file mode 100644 index 00000000..5358bf1a --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18batch64.json @@ -0,0 +1,396 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch64/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet18batch64/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch64/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_9.hsaco", "path": "resnet18batch64/tem_fused_conv2d_9.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "path": "resnet18batch64/tem_fused_conv2d_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_15.hsaco", "path": "resnet18batch64/tem_fused_conv2d_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_20.hsaco", "path": "resnet18batch64/tem_fused_conv2d_20.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "path": "resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_linear_24.hsaco", "path": "resnet18batch64/tem_fused_linear_24.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern011"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_9.hsaco", "kernel_name": "kern014"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "kernel_name": "kern020"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern022"}, + {"module_name": "tem_fused_conv2d_15.hsaco", "kernel_name": "kern023"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern024"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern028"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern029"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern030"}, + {"module_name": "tem_fused_conv2d_20.hsaco", "kernel_name": "kern031"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern032"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "kernel_name": "kern033"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "kernel_name": "kern035"}, + {"module_name": "tem_fused_linear_24.hsaco", "kernel_name": "kern036"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "var_20", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "var_30", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "var_39", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "var_49", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "var_58", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_75", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "var_84", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_94", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "var_103", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "var_120", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_129", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_139", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_163", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_181", "var_182", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 205520896}, "buf2": {"Absolute": 51380224}, "buf3": {"Absolute": 51380224}, "buf5": {"Absolute": 51380224}, "buf11": {"Absolute": 25690112}, "buf13": {"Absolute": 25690112}, "buf19": {"Absolute": 25690112}, "buf21": {"Absolute": 12845056}, "buf23": {"Absolute": 12845056}, "buf29": {"Absolute": 12845056}, "buf32": {"Absolute": 6422528}, "buf33": {"Absolute": 6422528}, "buf39": {"Absolute": 6422528}, "buf40": {"Absolute": 131072}, "buf42": {"Absolute": 256000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 50176}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 25088}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "var_20"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "var_30"}], { + "grid_dim_x": {"Absolute": 25088}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "var_39"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf3"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "var_49"}], { + "grid_dim_x": {"Absolute": 25088}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf11"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "var_58"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf11"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf11"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_75"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf11"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "var_84"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf11"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf19"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf13"}, {"Ptr": "buf19"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_94"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf21"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "var_103"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf21"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "buf21"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "var_120"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf21"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_129"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf21"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf23"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_139"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf23"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern030", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf23"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_163"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 34816} + }]}, + {"ExecKernel": ["kern030", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern035", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_181"}, {"Ptr": "var_182"}], { + "grid_dim_x": {"Absolute": 1024}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 128} + }]}, + {"ExecKernel": ["kern036", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 12288} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18batch8.json b/machine_interface/tests/data/test_gpu_resnet18batch8.json new file mode 100644 index 00000000..8a1918e5 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18batch8.json @@ -0,0 +1,347 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch8/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet18batch8/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18batch8/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_linear_22.hsaco", "path": "resnet18batch8/tem_fused_linear_22.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern005"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "kernel_name": "kern011"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern012"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern014"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern016"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern020"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern022"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern023"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern024"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern025"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern026"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern030"}, + {"module_name": "tem_fused_linear_22.hsaco", "kernel_name": "kern031"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "var_28", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "var_45", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_69", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "var_78", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_88", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_127", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "var_136", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_160", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_171", "var_172", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 25690112}, "buf2": {"Absolute": 6422528}, "buf4": {"Absolute": 6422528}, "buf5": {"Absolute": 6422528}, "buf12": {"Absolute": 3211264}, "buf13": {"Absolute": 3211264}, "buf19": {"Absolute": 3211264}, "buf22": {"Absolute": 1605632}, "buf23": {"Absolute": 1605632}, "buf29": {"Absolute": 1605632}, "buf31": {"Absolute": 802816}, "buf33": {"Absolute": 802816}, "buf39": {"Absolute": 802816}, "buf40": {"Absolute": 16384}, "buf42": {"Absolute": 32000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "var_28"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "buf4"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "var_45"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf12"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_69"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "var_78"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf19"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf13"}, {"Ptr": "buf19"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_88"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf13"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_127"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "buf31"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf31"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "var_136"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf31"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern026", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf31"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf31"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_160"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern030", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf31"}, {"Ptr": "var_171"}, {"Ptr": "var_172"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..276f7040add838e8b6a059711485161e8a283be4 GIT binary patch literal 6952 zcmeHMYm6IL6~6PhlkwPVduJW5yV=LAce}BY?0Dm(>{3E;A!$pJl7OgaR3vBCp0%BL zZP%~vM!|NHl15c1P$8;Hh*U_>N9ZFGud1ak9#`hLnuj5iEKYKU z`7tcBFy{iS!u&)KZ-mGB{Qkc5ms-Zj3ybqn?eUy{5qRv@Sx0URuq`K_*kLR^cvy1P z9C_|BjXAIxfOp@&{ocI~5OVA#YcZ3nTINB!QnU-zZ$EL`w6f(&DqX4|)er2s`Q?=J__|)(KFsS?Gg~Ru z%c-iJU9^j})IxsA&ZKY{ke@k&2?kErXch9=qWaTo^yr@ag}G=gr4|ZSE%ivLa*%}u z%kKpkSVe2meijGk%$CisndM5pVb$zz;8m@jHmlunJAB3!s^xs4z=ra(W_5XSzEpUD z1v3w3;P$(ep);ifr$x?%xvum${luZ|>0q_U2XnH!ku=L3p zi%+VCU8&|v#U}+m<=u(db48;r!R%z~ThLkb2*Ks8A6BF!TO^W^mVDq9+gtW8) z;OpSy2cH2k($r(Igm2>p?&m|l5NY+b!4Grggh*}eH4^>YbzO4C(+^1^t9$!-(^UI#` zpj<;vRChRU`bKj{d`7OH{B9-Cr%&pDK|qn*bD7dd1L4U5 zz{7$J(1>?M-OpvZ0fpcxgrUoR@+-qD>FPrenro#j8P|pwAQMCzOe3LpgA1 z<+6HSQYLgQfck-<$-so(2mqIQLCsal?(J z0cTv-ocutn{&BtG_(0v^k59=I`4C%$`+pd6>-9t$WkAh4)bOoQ#J&+#Y%AYAERtOp z+A!|Pf%lHL6@?rn+9VO*JKoW>4Q-frZ57{~nir{rX$F)DJtoUW>&=sAr9MT(F)e#l zaV&Z0BCKHwBIK1`V>g%`@VfROvjbk&t};8|6}#_B`|_cS(7`ohfM|b=C{x%6B|y49 zl>B=|paMMj;foZXKFAWtcn^d;4!^=hP~v+1wy?${x5e*#joS_w?KehXE_BFI7|+{3 zE09YoqD*9AhuV}CIVQm~5Fk!L2cHYYg1b7=X3VDQ)(C z>Sc0-AyX3{bJUnV#PA;O4cL!t)kyiJ?Bu|0vX7yhT`0qs8)ghrQmt9Vj8(~?h>wj9!z-Z3$B496 zpySF;x=9(QgUU8Ksl@0g$ZM5hI(;0fCY}D4WbLH7B8?h!^hv6Z($N{JZ=$17I-z_Y zTy_C2&@sSC@;Z_uHAR8P;)p-)p?+!&%mcT)W>I-pKaeS{AD zm4>3bWRZ?Yx0|v+C#2LiS)!BD9|Tu?zG*PoaLms)%~f(tda1b++B8)d@z~c<-K#}3(QI>;n_Q=YrnTnd-`64{9I}JF?GIsCYZfu@2XUrMyd@VY0 zL^#dt@xfOAm+x<47E3jon3?4w94QbpTdbQotC}P1iuziGn3Yn-s#(OW*-JIY+gi-0 zL2VZ*rBoRX)bhnF=Hf7DvSL_Ct^2LP`uUBAT+f^<(fn7==U&Ky0^o0r>lMpjq zTExQ`f=3-SYaTEM1h?iQAL1P06ojO<@B6~t_kaF#*JkYFX)vF-kiy(?3$HNbizGMq zu6fACy@k{Ge#7xTM#OCc+rqC2EPNlr)&2cWr^NYuzu`FPcwdRn`Aki2g9^sxe7-+% zG?*i|^Zs)j13NAh+|Ktyj@|Lh;<%%p2>|QihdRzrvi-D+S6rQ1vPX`CjC{Ud^QDTP zqj%5CIj^S!cQ7v7qq_5jpQo1@k8j&NfBZP;F0iAH^Iu`}?G@&*mv6r;PEYgXe$e;o z(3SJ=V>}MMz7K(+SBJj;WbLOpkzucI7WBP3bbYAbCG2;hd+qhDg9UZ$w!40>F+S{3 zR~63Z*aj=FuXco^0jC_}1A`fReeuk#SBI|8v4Iz3JP!Q%artSeAiuZ&7Z{%{!`!{w z7H{(hVCm_iS1X~;+vVz?K;?RTnf+gD KggY|q<^Kn8u}Z=K literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..65caed13a6a318c0e29c04d6261ede45c5299a41 GIT binary patch literal 5360 zcmeHLU2Ggz6~6PE-L<`5+nemxNt~@?+6dy=wd4F0rQnDZXi3^agVLxEo7vsj-HB&s zrZcmS9a;7!t)Pgg{HSV$1j-9EKxnEyfT;M1dEg}!3FnmvMMwx9c#1?{kXX){xo5K8 zv@|rYx$@3;?)kgt{+&7FwI_~!UKE6Rkwr~nx0t|bgn3SvG7<4v1$l>90-j@RgsH%m z;Wr_XOHq|WwkMwfTvptzj~ z{Clw@dz#-@{ub22`Q77qwB}z1I|`jbx);Q;!tpR*Y<-xQA~qqd{T5&gAS(bKIezpD z&wiD$m#*rqTGQ9H1;euq%m2=+S2VrhdgZFqwgdJfP4^o98!ung^jgg`e823wdewNd zVL27ux~w_%x^JMGZ=N#}SF}alY8&MR)2_W0sgx`2dfo6o!a?GG9c1p;LH>Rn6zKvu8dzX*33b~G01mf5fq zKfjBQ>T|!;TKZDCZs|e!tm7?kw;=hW06T8$E#oqtn$paHUumvqF6x01JMJ0visr`$ zD*H~<@mjm&1$xhsq*_zxHv#X4Cp5eMl^euos+w4P?fG5f_ z_*Fx{5XF|HD6c{;o)sk#cqeW$wkG2Iz~69J%%k6fU2)s$Y1okV@WpH0Oh)|K?;kzL zGOw)M&SqI+YbKR=CcAn&pJ%_zjyKO|cQl9DA2x=zPEKV2(}10ciz}(^S=K3BSV`^7 zvcav{R3cYcNsVM!irv~sj9iyePi$ND!M{9~kd?8NoIG=D<96n{GzdOYx$C$s>uBGLlNYi2guFO-{(_Kzh-IzL=Cn zX;>9I^6M)dS!Nv-P=z;1C%DPPHCWm6*P!#@_h1bkoPh^tAU*?BYv%cTYXC9@wtNIp ztqt@Kxje=BS&skuPuD^6G?!Cd`7-ZwwHSmE;S=dGMM`IK+tVY$D2y*^OiCAEU`Ye% zs5&zSrR+{NGlre#2Tl!~#GsyoU*tRyz8^(4&7BS-_PmZoUeorlK8eQo_)`v*;S~%& zVJ~n3&kP)!-mI(`wA^Cgc-1D9tL-XKW!>`HzV8&>DyzEH1Ix4f_wB2+y}5m7+t!?S z&I;P?vu6&xXf1lCyT4wonEQP`ep z2$I(wO~Z1bM#33k8KXR$Vo8x!UK$gW+`~%txU%DfvVB&WIMse!*{vQ{Ce&$VhjdO; zCgzmgyOeP$sVTdqB~95?Ql`|WlwE2O@G$5Wl|6vt>eI^Tlgjwx%4lNp;1Ol)?@G4x zC0SH4DC)z*q`GZM|hyfo)ixQ+DA)%d{K7H!AH$S+7()W088MU3Z8MT}4WkY2&b=LEVG8 zoM~03h1Ea9+B(oHfK4!ns0eAN38Cy}<)f#bK63oY&uw0ZkK4ob!~2N`C~QP& z>kD8%uuz4*SK|AD7ZDo$AB2Y$uRnd3d-zEV%gVr}ZJN^MY)Fb=H zu+!7}?Oy;{KM&P^!pA?^V~b?JZiDmgN*zOyp%Fp+Bzr=S+s6u=Fu45-q{#VwT?QX6 zcg2LN>*>f~PXzI^|NMRvB=!e!zB;BFBFF{{p#J0_Xq$ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f2d4488c9e6e8b30d2c727502654879d8c09c24c GIT binary patch literal 5568 zcmeHLUu+yl8UJ=}_jDAYXgl9q=gk3=X!Lgj&{2r3~Yj&FA7 zJD<-f4b5vtzWvSj=l9Jwvoo_ZUVrTHXPG1w7z8B*H$f704h2!)NCcHf6s|h}5qzd0 z31L*r_$vhFZMY$V5k`a`S99Kb79N-vLeW0wVG5i2om{{oups;ip^L{&g?`@~3R7FL z5s0u65*5K?DBcN=_|(5I|J7UY$K?*&qcQ&y@~F!qlRE<5mOq|6VP1N0SoDjK#{NEZ zmC%+&eDuhn&mB7s@XV`PeWB)R>Z0ygy6JxBg^Q|IZ8*iU-LyRTv8p*$_oZiFRkei$ zM|a(#+tAATPpYO}(##90U8%S_cXN%?dgP+Iq?t{cT`SFhG}%PUrlWqqN@-w*uC zf6MqrJ4Veks#fHe+w|Oh?$>HvTP{{i%_}}_JBuPLTK*{E8@IH&eu2-LnSA~?YQr&> zG*9mY?rQa->UJhn`f?z+4Z}3W9J`>pEA^6XzAS>NiwoGX4&_6a1EHJpn)^C*HNmLt!V`Q!|6ReU9BvCd`6?$zN9;@VO!soXf5KB*jBhL8NyW~ z_M2T|o%Nx95O<0Ve{4g~Oq?EboJMyDcg5sq?_bW%%~Bv)IG+jdO3t7_3Dj{rU59 zcpPH!0}*bM8SG$etv>;IDa8&z>(~u|_4ok##uMp0q;~qcD69`a>!}-ISjTA5jV!j? zX4y4>)_j}oTsw(_#M_Wqd<_!)`TJ6FpNIa@5bD@gU8IlouSFum`EYCm{hqqf59>1T zE5;jWvm}pu)EhYWW;>H%Kl{T2^N{)0>aAoF22#mr-_gw4t!x%tv`eE*hEb4zpBb;6 z$xPHz@YdDAv3(P1#3W*C-?`O+JsD_Co?RW-n}NhwCfYZYUBx&MgPT|TQddH;$1-c7 z(Xh-$WjTK8=G9xtE1?APV`EqLp#M^QEE^r<^6rBZgJapHn5f6#FX;1WISzlm8pAkH zxO^Q(S>zj-7r>?KQE5EQP{&Z$;JU)kugek}X56NXr(5viDnngZVZ$vP&lY=ewZ#~; zWJFnpRv0miU!K+~A0PBMgK=B;e)q=U-W<3$2i|iI&{=g@eD`9wbMP`8KyX&a`j3P? zD)ecA|NKwe=GBwJPUq5Rg)H1UAPq`;<0&N+PYm53AC!{VK2sqS&tk(N6|KqeYzmLU zqcEE~K6E1XWbA7^r7z+y2p#dit_-F{NPYnB{+P49DC3E^>-+vu)X4n7i!_C`zxhD` z{x0wz0u$mi5V&qWJ;(5D3vyn)k@IY)T*Jd~vy8Q(W;#vRwR5Ko`np5;lwnjKH0Mlr zZZW^SRLj>F%X76#Q?usxYnEABbi6sI`OxybZJxHh{Y$#x&Z&(RFfj=k-o{pCN&0tu z2S`|W#`yQYTh7(&x}Kv{RMReNX3jK9xyFiDv#tH=>`cxzJbfC^`HNarcY{vkiqwsq zgBJs%uEPgT9+MQOo0@Jm@Fd22#79%v9fdwduOpO_l%d^9`iQdYtIGX(B~z`A?N;`L zPbisi4)Njel(Oq1%19`#Dr2G3k1G@5$CWWOO@tptb55B=90@<6B&U^;Pb$gd%E%*1 z^2+>vCH0Pyo>5WL{X3Y&J687a;X~Qk1L}-AL(bdLkHhemJ+;-wTm65|pP*W{ zr-Qn%V&RDz)T-4~YnodF@#K2X0oAb=G*1K7)0aKpTdNyoRO_Z=7aMrdGps7=^-{B1 z)Ji2sUn0q{DmK*}&BED1k{>vrn1;oZ@aYu?Zwa85?K;1U06*z_S_!d+grF86%?Lug z1VHi7lTSQ)3Dia@$AQwy{|k<7V#gCQF2gM^`BSj6Mw$j`8K{^zm1Ml-VyB|RrcKq*)2|7xS0(<%Y1q^v5p8x;= literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..89c8e8bd63ef3d1729d6a4dd41fc0ac411d56f8a GIT binary patch literal 8008 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f6259a5e4be7c16e7e6a5c6b68dec75404a1f7c9 GIT binary patch literal 6240 zcmeHMU2GKB6+UxkW?9b?d-lgaF$Rypma%vC2d{UR z-Py%PXuXh1i7J$;eMl8m6;h>^D&${n)Tn82)b@p@5{Ad33RUWRgw(uLs(a4Ny=K{v zCaGV!^2|BsJ3sf_yLZmay9EIqO(iS|e!NE@1U`fn zyi%U}Q*@aJ6V%V`2qwSJY#X>nP~DTs4^sdTc)y1Or!9^P3T=LrYpdI{Z@h{>h{KfcA{L{(M_`Ya=qTBDFANBWT8};SRCnZd+gAVb@7L<$bG^!{V=(7Ll zfo~jt7U20etocm7W|?z#wPY7-KYr<&Y2_-_^lZ6aa^RPyRn66Y_JcP}E0d|(wOYDX zv1aXG<%;DQt9aEcXR|e%%xZ=6w*Q*hu!?m%Jy$4YUiVDWGxcoNu6|Ac|9S)H>kTll z-T=mW18iS!fXVd+NUk?PYP|steQto~#hN?rnJVpT?$=6bMtn| zNoNZSb|y`06y9}LI|`nYFctYUpiGs8tHZB7e@VnzhCGnR4+}9?YD};K15l zT%q0NP4k@9u(Q=Nj*n7Jz0RLx2M1?6@1c~NElnVy3m@@`iClK!tCN;^;v06gRw$Q# zB8hrLrQ~6a^dT9GEw8(I*|X|G62ywR%!^pcgMsYDHHbWwC%pv*VX=?i|K#G|CjLMn zcom*RDMP0_|sN`Hhm;WARnlbY{`@Dh?+ph~a`tq*>F>8Ib7 z;DuY1>=mXMFESRDRF;1QdB#G^#q_8gut>bqP)%p?Zdk_m;0Tu=F!_jszrRj%(1d|7oVdiUwU??HWTap20G@*6s z&PG_mm&vI+-LRx+`cOg-Z%OvBXtP^45)8EE6y_BSN0ULewW;f|L^!-P*~`Y85q*22 zH$0xCyd-8eLEn++51VdY7;Av?i@?(3GMjEPT~7>#L#|GTrEb!NU@1bh50-j}`eCV; z=IOORZ`-p97eBzHdR8e%XdPSVxqRK9dgrz#fnN%}cmd$RO-W~P&*%dUVC9~{z@K{i zw!fDRbRFw!`j17LANED_A4ZIP-~P95>%Gyv7yGv6FGgZ{1_y7pb}$%3JcKy;Ya<%Y z6yhd>0Lp<;lK0APyIqh-%#x#^;&C|H(?io?~Bye-lFc+P288a>f!Xb=# zccm+QLk>J`H2sKaK^^n{%SvG6#;7)8G_*5!SMG&w$l6F$3lTm#9t({`8?FuV1U$^ND+N18f~CCCN}zh2`d=4MS+$NsSlsF)&+0f!o}+-Jh~pu!J{?sXbn8D2E<;+;0)Gvw+(RW?)8v=jq9vNI_|=JFLpxdjF>GpcFzgW`f*pV8^nF+K_Jwx4Oz^ zm^c1I_>;1b^EjZl&8(gA}r%b75E5yRV3-( z-H(BUjYfcf|GUR{zC3ToMG9uIJZlx>#llRyvgqW?rJd%~WV}{z>F$0YezV%{!R@T-8%)tGOu8uiJGraC;QZb_=!hSk_kb<4OqJgE-J3kdHX*|$#}l@||_ zVt7i8$>;aR6LEF$j2fCy2cJ|o$=W4#P;MA%h{Yo6;1ge?82(^@uV}!})Kvvf zY!pQY@!W_B5Z~=b3MHJcCk#9TFpeBKU`!>=NpljNKcl&Em> zn4q{pgY<#tzPX0 zD9#PVdrr)s*v9TdU&4g{$Nb##V}6dQcMP~ggrn%&i6I2Se-8<5t<(1VsO!YYe4G2; z131>^OKhiY?jac2HMoC@gtpe{Uq>Bbou%kq?vJmC2b%B~w1ry1w;OKa6a1$RWrygV z6?9@0=Wfu8w!J+l^5XXs@GHoWe`o&wkY^#5ldub o;`x0QF|l^IsY_bi|NV9ldC{+ce}l}!{P*(z2W%FGoOb&E7x^shJpcdz literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..04fb4a1dcc9f35d5b07daf1aa268e20cb56a80ba GIT binary patch literal 5480 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a31a4d37ae7ea2a3156399eb0034ea52a0718237 GIT binary patch literal 7504 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 J3?y1_|6e#rb<+R< literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..68582246cf71dfdb351b2235e9ef129aa873c514 GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTE^d-;QQX9_rcgqOK-$jk&i=%^ zJFA&l$F3}Ul7gtfDnAcFAfZS|5Y*6?NPwsa)I1=eP#%)Sk!}v+_#A^Q z=%`llHy@g};ie467?*yeCfWx9^WVb;#Gq2-DZ0{=bu0xcb&U*J4kH>?NNuR^x^Mhoss8$09`lHmP35( z$ikD)90PdqHM3QzyQZ;dIc=-ye(mM+hFR-4#j@RPd+=SubZYLI&%b7vm5O7zZqe{`XeM!WKA=u#|ot5wT+mjLlQ4UoCh0QcN! zfZV$Vc#)@Tf9R@iov!bfR*J#oy-8gA3Syjiz@ljXjUzJJd z;ovOq4XoA5?I{HMVRlYU)vC)Mnl?FEmn_F^*zK`F-}t-q9z^{J zu5@4SJM)rCX8ui}Ov@JL*tkD*LIDrA=-gL?3gvj8_{sH+#Jv$|uf(*aPsDE2nYv>zf;I4hnrO4)H=PmY6%M>U(susRD+C zSW6_KpbU#S@Sk}HV0|bhU@e)<6ks?T=;E-R0{?UGsIZRF^vxW$IV`ekY4jOHABwMt zu{B603yI-0a}pF!hxH_l0l**biR2pM(VoZ<&h|ul?Rk7T?(oK&y@{;&!LRnsLiVNA zYsn-GrjiN$Xm;&dCIb%IW8=Ci##Qx~*@^n8?9Tcy{N{3MbYe1tm`3z>Z>$d9n*~32 zdUbGD7UH9sgg%^Gji-_@09P;TsY|heCo*fwxKLpn)WH*1FJDVuiVY!uVC2#RLnE1` z!I2$_6xGM~PNqh7EDcC`0RDtNhN{CKFArcGn7{Bgq(r=f{Q~&m+X@Zq1o$eVs)Da0>i9MBSA+QkIE69%yT7}0a5o3;=0K1GeAfKEJP;1y zK0@W55W=%I$`$!tOi2Bh#DDy&XOozdc0N}w$hvfkKp9cqpB~j>>CE`O=@BK1?F$29 z=^Qp3GtipVXGZZ;w+m)QkBxt3==jic)TNK(FAN=5=1`{3Y*?No*zz$Khp?{1wyGXP zjYTeEh_X)Zb4gLd2Y zPOh}whnL-Qcj*PM(=nTcgGOfsJg4E=ZT{{<-fMO8p6!(Dco^=MQ7W2Er|Y_Q{zMD# zyNhFd3tLqc<)7&kC|Ib+`1jwL`MTY*@*K)&+GVquZ#GK#&WcyJ+YcEt(|NbySyOmU zUo>l$8+IaJ_ghZnjag|I0ZO3``;mj0)z_ zN(+oyyKB@lO~)>F@IuyT*HCYjy0xNNDmm5? z*Bb4r&9Y;*F$=gB1P&?9Mw>bj(5nt!2f!%XExL379qB!@gjh#HD22#xo)J&`P+U0v z^kYY!di>^DdG9rvPr9o{3!epve6Qsecpu_AacLuA8t-?EACr!>ZBbi%kLP`G7bH|M}EworOKAl&;Kmi`gP=fPPTt^3zx)x-`Xv7Mg6vtLJX{+14-?GGV(_UHdM z(L((G{%2@mVHpo0dU9Kg-$4uKZsdf*e#w7cD)HlXYx8g6z1l`4s68ri821QNzbpQYW literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b32496ac6fd7288ebc391c12ab7c2c07a22c7b1c GIT binary patch literal 22336 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5d0f5c06c92280ffd3b52c1e275b273bac966db0 GIT binary patch literal 10616 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 PUR`5rtQ3kI>+Syy2~~Xk literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_8.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..6234886a1c82a7dc1675d2ae36dfa12a9fdee677 GIT binary patch literal 8472 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 Nhon)tm-$zU{|3(x7&HI? literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..49f40ce3f757e272b11a8e4b70910ffde00b9f15 GIT binary patch literal 17048 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 RD*X|Bv`5Fv2gjBA{|kqw^ArF8 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..93054ae3969297c936517d81a74853a04ff510af GIT binary patch literal 10264 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 KqjHqEmj9pBg&+O^ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..db3a74cf007eeae7f15a58ec5aa27bf8e8acbe29 GIT binary patch literal 22320 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 W>3#;4Z?cbGBsB0dFe8r9_WuF!Mwn;- literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e88836e87b5fbd11acad074714f3760b5dc3441e GIT binary patch literal 10624 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 z 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 IuO^-RQRFryiKpYVX~)y)w3$wuanl6#`#bks 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

4Ux`UR6tz3L#J^Qm+3Hi3&wXh*I%aBq}6C&G+rj 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c819e01294a58d767f14ee2b15dbd19fe6237907 GIT binary patch literal 5360 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c197ca0b489878c11c684533cac327de70342648 GIT binary patch literal 6240 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 VaykEF6mG;{lmm1pJ4)>5{~H;O_R;_V literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a9f79f533a46fc87ccd0b40de36290e5485f2548 GIT binary patch literal 6528 zcmeHLS!^4}86M6aS}v&-MN$$&%Mwk?imF&knT{>RMOy{+k)lpy=V)U%0J9QTT*|yk zQnX~SBqh5C3L!=NV51MM(gLZAoK4XNO`F>CLtoMqi0z^%P@@P66n!_)yc7ug|GP6Z zMLUU8zk0ykZ~p81XJ%)IJ5xV&^e}a~W+-urKt3QYR!5j&^+wRCd`UvxG*RFlBz_`; zT7+xHG2e!pjEtkg{7{W?A6GUZ4;GHZ=g1gmn=mn!eg`;ix*eHgdmM&r_Aq;FD;6A) z%&j)MMf;&?po-;@6;C$WEbn~#tAafstxV@}LVDRuCUAJkTlPbO z2huVcnRF_r{N^@2y6^t2o;8*e3mK!FIGrz^VzglSvkM+r&d8b<@u5$~r+%*&is_0` zHe1APSzpmht@#jq(-BIAbSA^5$VI)hlAX(EUS?$asU&o)74p!Vj?fvZ;?01Iv`u-?%?&=RPy)83lMRQNG{SOjY~gXyYSR1p<^QX z&Nb}F8WG1f6g6^AQKBx;;pmgw zbg~>3JhBB`(F>{?5k0EaRMk=PQL`y}yo(!DiC$2Yh|8^5O+~TwF1K%SL!{9Qlt!pP zttO?mo(jRm4H@!MZ4-NocA?EK2%*IdLZgIy|JoWnk^1KPWj7UTur|jxyjm2vre(Bw zDe+K$P4y1O-91Co8$N$jLA?+4{WaAWiF*Rk>5X82R7HId_2HTt9Eo=ij81Qa!ci~k zL#Q9GsiCoW-?s5-(s=F$A$3X`$8Kn(9!B($`Zh#AsShFsNqu`a9jbXDcMs(5rqP-g z^7TT#ZaP}?LXH6B=muVIi`V8GV0`_I?*Yaa>H$8D@$~?o27Hvrn-LfzTO?t5QJiI{lp7qOg-@{@J zP?*{;eiKl9WLm5ON}oR@PGU2O?Z}c z=FRK0n}+DDws93`FZA<+t3ubif^x`TYXsM-@*XdN6%*RwCtct#qQ6^#@%__PCGhS}IpD9z ziyvIQDZeYo0Zmm=-xD5D16sxQfjV+h2|0r`nf&vr92gP>@{g-BX%o=IR@QCk|Y|zfBSyuJ(4RpWH6dy|rBuasht{=G9Qwh|`Dm zwkaRqHr^f)Ie>T2qpC&V8J0#Xjgj-!?QTW=2FMZ57|8HkM$cCZAn$OGR~n-*7sk$4 z8)FJ-j029VFbk_U2(80(T)hm!{pPhxp z3oD9U*mj=$=c8sG6%l6V`@(}vcD!%hUA?YdT0jys-@rDl*X4)&R40NKfy9CiR=>O_ z09(=RWKZCkfoDA@JYUBqeHAW;T7i#3{7h#1aB>92wvTa&J5ra>uEIYz5pP&r<50`6 z))g358J=Uf&hSNsPUx+BxtK2JbNqXp%&%0=B=fn`$?X39@oXVpDi!7`dsh~g^GoH$ z#gbuVAD$`{_8G!e5a5!}gsX4@%(!lD{Gal%0})JBOgMOY(nC3jA9NMnx)Z z7bbMkB?W}zku8d#@RWYbJSKeYSxJ<2`fUnN#0y<&LJ{GsM-+W}#C-q70d^_4aR3V$}oQZqj1o$lbPon4YWs~U1l^krTiJr6THl z2)m=cTqJripESw_(aYv?+4eTF>3L9_nPNUsfP&*Ej*l@%Tu3k%>;de;*H>J|K5RDg zJf5$k97mWxxASK z;~OlV<4n6V)H`LI-WbpShxo$46|Hkv@Ucrr1NMOuWBK_Be_!~yDL+?b&1#K5KPLGi z#NwFp_(}FoPBMr0`Tq>~VChIt9>0SQ{doKo3T>q`{v_Bsb?BaA`Dfc=vD)dIx`Ph= z-eU1HD72N%_$9ERj&-}``5}upTN~r4D0g-7P2*5Jt zKgfhMLHFpi{sBg&F5~r>kNy3o+(j8Kc1hzzb}K1&mHD!!;38b bopvSEd0wvmHB{~t{~UYqwsS{@o$>zzW(oA! literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c6bb3f2b47b51e44bd14388525c16eee79dc5c14 GIT binary patch literal 5472 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 F{}-BNa(w^* literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..31199cdeb9b9973800d6ceaa077890b2a4db3b8b GIT binary patch literal 5480 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 F|2NpbhNb`j literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..53d706aed4ed13a227694ec3e3489b41b358b38e GIT binary patch literal 22704 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..22d870c9364d3ee7ff7a4b7d5ee4f56ffb2d2d46 GIT binary patch literal 7576 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 K5=0jd>i-j?M4tQr literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_12.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..84834da6deb8710c63624758bbb6beb9da91f6e4 GIT binary patch literal 13560 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 VzXOF2vVXz(fBdK*I(XRrzW^ry5fuOc literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..38aa888754080811b1e727a55722902d637e6858 GIT binary patch literal 22384 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..fc51301f292548a346a01bfa8d8716d1304d0477 GIT binary patch literal 10264 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 MJvJ*xiR=0Q2@|XzhyVZp literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..0598387c61db0812afc7e602fb7f519ceee41d34 GIT binary patch literal 22832 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 Wr1>dqT+TkKPSL>6%}n@Aw*L?4AM)}5 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..596eb3cc6b76d1acd1e88c0be99c0102c41c19d1 GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_linear_22.hsaco b/machine_interface/tests/libs/resnet18batch16/tem_fused_linear_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..377ee204d0d0f50c702a9a1bd6cd279fb8d0c1a6 GIT binary patch literal 11856 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5e0cbf5bf7368fa38676b0d8c9b26665766d5099 GIT binary patch literal 5360 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..aeaa50131f2cb6e8bc2aa426a744588dc7e963a3 GIT binary patch literal 6240 zcmeHMYm5`u6+Uxk#&~VAJAUjV%filjy+Bv&*lP$l5uqj}lu{^^CMr>p%?m08}F2*5E z(*4WT+UK0_Jnp&Ich1~KkFG9-xuvqbo*`eqyD~ZqrRN^q=c#U&@n#Qf^yNBMim7eUG^V6 z@b%-*0zChQS<2*VrmkXi-H^9hx z1L*4wuzkG&;_D5NTyKEXdIKE#+yKvuHFw-KRl3*QujiK1&I)|b$W`q|C0(;}C97Od zXA6r~CQWM;-gQL(`W7K0uPItze>33%Vx>C zLQhUS{`l{WO1025>(*M}u3oPiwY7(8>}^-5RSLx-f6lHLwWZRWU3`@XGZr#9ux=Me z=yrM2IBPboY}Ll`QL3re`IB77!CCe9P|D4hXOPebAMu%)Tz2vCxGA3ard6#K?D9_} zQIDvUJgAXAC}XkZbvG}&R((hUSTR?45lgu+kiGbfB2VQ>YlBW$^rQDbx$w7{KTrrB z#?h1RzQ!j4?oG&=`Weopc->x8bTO3DAK^{7gp~56=J_GKgybfu5_F*b!Ot)L^g9x~ zaFdd~%oP1a#v+o+@~)9E08=Cb06c;QDkFDeX{S1w(9gt68} zO-V>0PZHY4ZzJj(Mr`PQ%zqhJ1jr9Z+sBla7e*3H9!-Xrrxk>;ge-4K`kCH>_Nm(& zVHsa0r*8Mdvf|Um5?W|Wa)3oz{hFR&;9E&yUV%^~8DLvmnifrjLR*uAY`PWJwkHNd z(@DxpVnz$J9f{$P;pBy}Mkv29EI%rcg0h%@oF&in?($#HMs#z==N{4NPHt&O5$SPbp_{K0(%7O{9t( z!S#W$Fn%3n?WuQeX|wF4Bzs%39ByeemH-<8#1+InvZu8{9%@y{Hucu6{)rP~fHr_O z3~dlUL0_mj_V+{2S_1fe{MswpMThgiMD>K&K`0{y$PqbMSBtJX{0!tpRb?(K&;4-DxA7I%hrPU*meL z=S~ZA`mg_VY-00VFU~cWL||?wh!l{f`a`PRuMKbN4@f~YV+P3mI(94@s115%@u;h8 zhS|`w!zcaE`M*mkeG@-!Xs@#?VKBoZ4iN3y1Ti{*N^&ZMAoZdd2?c*ttZBbPRd)kdvm$0{|Luhf>Zc5|U& zmd#z6-L;H;Zs+c1K36fz*7p~zrQ&0YmYH2RYc&?FVzbmdQ#rfKs4T$>j#PnX#)^fxSY@f6x63PR?SU5 zmKN#9s(8>Wlq~qalgA|aE-`NvE4Ztr5z(eo#Z5#X6F-j}lGNb|HGEXvXxLsZCs7+RJTm4<8gINUPO5J#J+v%q`Y*P z6yvjMR6e&imWZjNXVl<~I{Ku#N%mb-N9Crj23a($jy|CVE z2;qCe4g~#%8j>5j8jj0-hQid%^0=-@s5q(j0A`nZyPP?xDjtKq!0-nHd_@CpQ#%UY z*eHqy;<*tMAolG?3T2$HCv?06(2pEBpwA|axDiL^&uC5@<^^$&BFt!ke3^3r7-hR| zfst7%<7o$sT)AQ7%~~G#H{tav7*#uC)=e<#)?(eUHcN$hgso!LPFL_EqEOBuZp}4v zX>)F_YBhyaC}(ZKSIsi6HX%8IU6*2^Oi4KI*(#pkz?ip7bWQ|1h1JbDq4gI*J*;`RNUtXwWxnWCSNLG!cEj!K@V|5sfBK1MgD@0qn?VO(2Mtgplj=y z$DuKFw{0j8Cj7;@RM1qnG4j1~3^DRwd!2~;Mw(b`Yxj(<=o$+i>0|gIUs1@#^CIpA z#l4|;&x!dH$Jl-7OPKKgnBQA|%l0!w-mk0{qYrXUlaa=B*2 zf?kZ`+zGhRws!|bUi^Lnegzrw@6F#EbS=bk6854mL4Sb?v37+GQJwpr<{(|qlbz^a oJio6ZCe{u&bx520zuyfaFZvbmZ;*MA|6cz8fX%{?(_a7o0)@)(ivR!s literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2b61b5929227e57e8be25aaaf7a1f5e1f9bcb361 GIT binary patch literal 5568 zcmeHLUyK_^8UJ>?>-y}A&u5$5aqZd8<(eLFx4v`!5(;%oN}(i8_!E(cO3vC|+nck! z?(X{jM5nt=TB#L8Mf9OnB~T;;1U0lx5FjcFJsx;T%R`b!A`~G|c|?)u3lip=-T54! zFSMa~&FI#@`TqRA`DS)zcIMU|KlmjkNqGi-3BV1IM4dxk)YoHv zs%3ogzIhX_i(rHy;m6gS_dg2{%nPAtpYt$Hzpww@DSP8`hwagre+_xmWs%7p0dLD2Po6L@eK;!mMMz_RAG%6t z%OE~_=)e<4jsiUUhSn(8Y)zflt)^bLzyIO|RjanFLdk459r%f=SylU$=iX4Ya@o>t zyI{AplK#_b-7ISL^Qu{?*gAK!jZ=E)g1Vs9+j?Q%XqI31T?)l^rJ`FO5g>H80b+L> zVDxSSWbQV=)JFz*md1P5ca?j``)9@Ff;akasa4Btw+gmiZRky>P%)PDa)G}e__g)bu&LWb)m-+TLm(|?}%9bcNX?QlD{Z75<8;MQPl zFmqv-(B#FwwaEb$Jhe0MCY(j&`SKF{4!nqP6%+|N;Qs!HXI}Y+1kYdPNt|PH<^{$k zB!$%&i>`D3S5YS^a;+oFJKRpEgY}c=fKABoy{l)icWdis--$3-4TlDE=j7l7M56mb z+$J;F!r1Cy402L}?F0A7b%3?#5c)=A$s8oMdb%*I4T1ag^&qTawD5Wc+w8E+DuBDU z!?v!TzyacING!SvvBBJZiKxdz|8M|xY@;qTzy?=Cq0wA0GKPLnUmt`unfDXp4Ru(Y z$35%}oqea1O0l2+@u9ttdST^eJPt#NczED&YV~F&12)>FaVEn!$bU#p)J~@+YYBMw z%5ZweWD+rs=d##!hY z%nRV+wXigiWT<1PYjIuv7uRHo;nYN%GLdxQ&^&bm+Sm=`i|Mj1a z$*U)XozA7t30b&xK^m4Gj3$&oG&XX7bXbaG`%HyEG=mKXRJ6u}a|t{OkHcKz=*Y3i z@yNG$N?*mt4;}Kpt_+4m$R{}Ve9W0R5%;J*&B^?S7ik)6fAfL>{6pYB1rCbSfbV+i z*Rc%8Y|{4|N{f|KxrKIlzER$3R2P?aH5_wyEw{T^()P5hlA$l{Jo(J2YB^V_&F`|7 z%!S>>J!)$ivQDFwbxf;N!^3pDgtdZJx7xOCW)~|^$0THU4_lQb>EF>UAYtJd*FH*{p3i`V5})=e4SC`$=RAlt$LVi-FP5;bV6V zlN6_$nqF_=NsRZGkEXIM3uf&fkV~;5D%X@b!iT9P{ ztdiKTB?jP(r36d6*%T7a!_U8WjMIr>*d!wJO*`Syb;TC4DZCE z^voZwIcPMofBQ3d$I2W$cpx*kPn}g~$$2w+aTwmRr#ISotN+jW6V#^Z=%ALDn|PuI zwc2c}HO;Pp_~m-X0@X6hnxld0=u3|0tu>4is`a{M7Fu}GGn!S@>&14ppcRXjzCe=E zte8}{v?k6DlDxn^rEWBN5+1!`;Vl8wlG)&Q5#T3%M=K)Mkl@#Rq!~eomjEanIR4b5 zhraT~jid7MB|e^f#djAjRRq#~nOdOziDb^@8w}BCA0+&;aOB$=Z;SpvK>H)#hCb+Y zOybi%NH{6@WGB8*!zZ!AW0RfsO~QX~OP&7IFMpF9d{#@Zmb* zuZw+~Fpsw0lJ6C;p2dgr={rITofP@5K@j^A*e$qpf1>q5|L39q%ZRkP<4@P5FCd?f zDe*6g^>&djY%E8};EP_aqUymR{OwE0(-VJhuk&quzkM4Wr@SxPKg@-m(%)7UZT&j# zzGsV1>fd7eecOWH?^h9g-4E0KB|f1m_+1B4c~|gT literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e18a25a1cda9f62ec356283e86402f137929f9fe GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTF3wN4u1P`_&)ORYhl)~HxIjhH6iO%+NZax5?2kRW zvz?jU*vPUsX$2KT<>w)Y2NVejf*RTq2@n;97ztiNcu2|v5*3P&5Pgmy5<+4*XXc*G zW*ul~c+Az#eCM8XzH@)({_f`EM?NMLWkEogB5(~9DHAM6xsnQnM>WzNhA6(rAPqXI zReTmg^ETX)!5E{`kJQBbPiYIwp~MKXeBuQrDwxua5W2{E#vWdvic9|kw_-zPyOokW zf%-e)F`wJ_>A(2JpnZ2(9{2gDkjGW$D%}ZESwVSJVM=}YdzokCz8^r>Ewp72A3M7E z@u!XhyzrV?D^@(ySh3u?WqaRv`MhD48*aYfH0wTm&oJGxcjm>{46|5tEziq)4YOc< zzic~8rhU$EN+r)CH?R6dD|+5&nRe64uT<;BS3{TlQnOUD+;<5Oz1sk(yA5#P-3G|K zYk(KHyY`2!YHxS_U}-HMblw|A*>#$Yyl0hbR^88+s;gEpPu&YY4L%Znkgn0RtL1w1 zC)@Poe&A*JPUalK|liq``DR36yCXrP`1o-PGkbZ=C$&^e-YP(?f~uGGvesUa}Y9W^dfINr{)Ewp@3% zIiP~(>?wF1P9su%{~t;J3cQSQu7ajO2im{<&Z%!bt-zPBQX|d^HS;AQCKXLogh*~t zd8nKGhpJW-U5|8BbuV-}9Ys@@&w`i)_}bM|*aMqer!Ni)eIp9dTqF`Zd{)&bb+V}f zhJ@IN#UZB*i^I@<>TQ6{p@e{qcs!MZ;dG#j!e#>6UwB)EO^l{*Ww6{~k={t6&mj6x zd_|0HKs=s{4JVlsqj)-O#;F|u?ct7yZy+A)h!o*`Mw`Pf z(9WD%AKaaW=x8dY4`+wsGA>0OP>Ig|{Ffq7AGUz>nUFDY-F$I)S=2 zoLLv7({f{N?5DOkv)&d0+A5-|LR&}FaYt#d2mJ|f5@WRQJ@@+H-Wa$y1}^eh^AGYs zID~5mrTan%&)O&#<-Qn``Z0-r|5wK$F(d7Ku3VIP>DC2hM0tO5REs22<2#chN*c=- z21Jq>EI4AIHLcH%;#RjCW=D^Ye{Sg6p=YQ{pTs8&9SwF@0n;+%Fk#PTF6cz7M0!;Z zp+=<_CFLQMw&WK5Yl)X7z9TVoz4`Xts_)c!|AwqzYh-=LEmZJO+bp1zH*L4+c}{lq zc_^$tZ?{h5%D(L{&mEd;wn~i?{`}m*Lycz6S@Bz~Rolze=ayGjs)gKKu2xwqFB^?D zzmB&iT(@n*)8+a6>7SUlydmsjbflZPy31`#<=IHuXeSn|M-7TiV1UTKc#)@u-%* zG=ESV{i`-Mqm4eS3T<~JYp9Ag7I``oC#T3yk7g z9gognlWbQ2hfq;H46`O7onX&>^7 z&p!Fs(I-B7Yp=Zb9Q7y7Y#LHQVnHI`YuU`}5a)?Y3klPBy<_}@bfjgA%Hn%GuY&h=-!AMJFc?Vle+VTCMG8S|3p@++y8tW z`Uv_^pEAE8=UYSazs?2NLKStqp{6#rHceA6!e*V7!lTr4D literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..dbc9924c3fe2907cf7ddd6b7ed03d20a030499e8 GIT binary patch literal 7504 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 McF?7OOjqjv7oc)+CjbBd literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..8323cbad0032a1bf458f858082947b781eb292c9 GIT binary patch literal 22336 zcmeHveR!M2wdd&lkY!nxWl5H0TXAGrv1MD99b+eM2*HjM5=_7$Hw4FZ;*a>_mE*72 zj!C(xEIW>qc3GNodDwnX65!tUmahg%Tc9+=G(a$c#-W!R*lb8CrIbS3&9k@9KHWCj z-{uebLO0xb7tn1#u{6@;X27+sF9d>WOjiW^gKb0p0C*? zGS{k9SItcL>tuFjM74rcBgh}aP2SJGkQA-#lNOqynS4)O}`lF;P(BM{l&-pX0+q|#r63sk^18O zk;3#Wz&)JESRC~tqhW4G!3(Utam~7ow=lNvv9`VrZMZG8vva7wvv>H*cRn0y>mD3x z*)g!Yf5i4rp|+v!;d>_^3$=B040R3|3GX&-Jwr^gg5u3+?Pcpw2Zpb^38pn&0L-q1)O< zJG+JkU?AyQ^QgW|jKI3ik*87W-qBwQpoI0Kw6wcx&u7Zp;>*cs=g@F?p#LsIe6hot zv+yC3UB;@Uuj{{CE;y0_=~#(t^nIa5RP()x+EB_yqGit(WnL=#Pd)ql@&8)-BN=&0 z^bnnB36DMq?DAkFkpG%OtIl*>-#0#~O&KcRWZz+TKmoGn|Axmnm2>BFthHc*Dc&!! zu7aFaYaqs=$Ns^8{ap_*!x<^>RYhV4&Llx+DNWH1D@N}=Me#{ViYB98LcOdSwZlf6 zcc0Pdlhci;-+xA4WMEQ~tw%y$LY`!PW8%O3U6N`?oi0zZAEz-OnNy15C7Hy>4x%l! zgKW@z68qAb31~5P{Ep|6C3nQ6Xcbee-Mf!T-U@bdmL(@kmZYBQ31;*klB5EK>XK5W zeeGudy+(II)Yz*{br}6>vLyh~M`b3Rk-Lpb(p2`H<95Z*tOq}Da##b)*`H=*)gX<# zje##&>;>5tXJEg@;!jR87Be<|dfF@sR z1guHkfGf!uFm_vt*Xr$K?M9mo4sA{K1zf3?KsJlb$~k7`08iYZEf&QxY&b%hvX=;4xZvisAl8SU@rum%ow*aCNV*aKhba0c$} za0OB%QzSkY72WRQq;6}msoPeZ+-)y5cRPzyx?ROe%8F_!RS8(Las$>hf54hv5U@G| z0c%Eaz?$g^xU$>-PQvSKCrPD9_<0Byikz;xiXKs&Go z=m6FNoxs(=3}7A53S0xU0M`MNfa`%K;Pt>{U_Fp*y8)O2RFYOzUx=BH$~AAk9>t0y z>1fcA>6oOWQAbrrMaL8!%{nIQXworFN2`vhI$CsmfK5CXF)gZlA8>q z_9~F{N&}LfHX!Mp4kUe2fTW)VNcyG%NgorC^g;Z(NgpGS^iY7LhYTb=5NmFVFUG$3 z++Z5emV36^WyfNgd-gM#4vs6_PL5Y+W$;)eUdDRQ;;0SA-m}**2FBjAs~BDlfY&mX zL0H3>i?EilOv2TCb?-e}$5__bOXw^5!t1^z5>BDLXV<{33D+`~MtB{1BwRikwsUms5T!lkH=Q7Tzbt}?iV&7 z`9&HKdp7*$?CaP(;WuZwKUsj}Pbon1PcxAGDj7)rXabTSCjrTijX?586-a)p0LkBF zAo;5VB>#;{{zz0RKnfrgBL$H{NaaWs5u^9uvFq5u=VFz9?Ks|74*Lsyc3Ru8;#DrG zsi68O9Hgpnb#)?b4X4$>QL75CTR>aSX>2Lc>KD*9aN2P{(QaBm+bH_Od8Mjw(*oLN z(I4I^s|vR)pfy$;u3YA;Dr~Cex>u6!%@tLJ+pAf0r{*jOfE z0UL7=`q`M9(8tE?gkCn5#n%$V<|xInl6!VphKr3LZ?Yio%w$8z+nmTd+>Bz~?Lpq2 z#bW(_jb0+->j3lipG9C7@OpZ&73Bag(|fWg7xOZmdqg?N%UA*Qa)_5PK6=^D%N|k2 z@y@5$d&Rsb&NahaOPFgGZ9eD0SdeY=eM18M=p{kV#TYz#Y2vwY9R0q{*qI7dRgN*K zAV;zV#%=bwbB!725BMW9JDl2Kr^~y~>GYX1othc@xEW`a|`&=$>%2Jn>g0?CAoHNDGIp$24kdX@ibe4Ok&RrsmdXZYqKo+-!v5vP{zY*~ab^cn z98%m;9J+uMw@x4f(mHK3WS@NqtFc!CVl^(8fmn^1*K_tEr;QyVI#$>tM8~8bB|0tp z&;&Z64t}1_UP(B6nUYOCNkoVI9u}QSX3x*2ELx%@CEK(p&OA}cf@F>`@5HeZ z_@YXF0$FOBMKi*OxKGeLyWHL>m&=!urTYVT;8#7y4DLfdGp$kRFBNB4Gs~K_P~RzL zwD-(fG9`TUbl{9ia@^V8DYx5a$#H8I^kt#Gvdlfk6t@PN&q8wG8L808LUJe%8EOu^ z1#5tXjTs5eY)p+vmky-RdAG_7BJ9N(kK35$gl%?iQz>l1knk~rKVdxVIERmOKPH`$ z;e7LTGAFx)Uf@m6viA^A$^ss)H|R>5NyB*bC=Q{!lIcO)xc;U&{SSL`ePn|I8>~e4 z5W+TK8r3hJvkiOn#&cFSmQ1!;xotHPGZ>GOeMaz;eNoAUIddara~ngtjieX+l$o-! z=WI-a{;8yYuGc%2o9j!<%hk+T9xV;L@MV^|IJ<{13OejoEZt)5%5$ zxABOuu^?`vKVk03mq=gJV*i|N&bZ!zV((NS;B%G)H1pyD%?Vy7cov|h&Jj&yR7eMQA{_GLo%4AMQc(K{6i`7&<~Y38D!mI>ZW@Me@1 z_YjY30Z*LnDhu{F(?VJ%#)WKf>bhr^1~GS`NPujBEk&>)vjlbqLxKmo5}n%*I@wNi zvJK}ee$Ile8DwK7xAB6oF+?^_U~LITByaRs5nofJqvT7O*gH&xHrTe0ubVFDZNmP9 zKD|@Hpbxrg=0d0DqH!SJQd2NG>5eq3W-fL1B&7#6(mN?*BidqaxbD`7CAhib z@WxHPq_Qp5ynZA0kKo3Nq_R!?{D|`+KOe##SA<^~Cr z!6S+lpG8be(fK4MIc-2D$GB?f~h7=p?=mn@s7-`nxtcj-;2xSqv7XwnhDuTdua&b_tfvOds{!k2RQhMEB}b8-Kzb7C z`+WZ5=SrL+8flE^b0KMYjhJgA&Gi)K`XTT?g7g^PJEC)EQMB32$JJ`Yn40)_ns}S9 zpv_a@KaTV~(g~y&Bkshut<)BykN!mbn3Q<@JOln`k&a<~xP10Sf6a9EO^1CpH>-eM z)lum*_|77|g>(+-JnTwn(<{!)XF&TY(i{BUX`bDhpkDy(eWVYNK1BKr^i7a6BKY0` z?Omkz7V0)gbce(ucDJd5<(Q#cBlx076G)RtQwh2$Y^+AeYyzzrX?uchpa%t=f#yZ> zA&K|G`MQD6Cio=K6(nPVZlE)wXW$&?blWPF96NN=z;_a92I&;iYYDoU*jR^<*#lZH zQh$POpjQgI3A6xGF;WmIlrV1Ka|%8)Xci=Ef^MKIM9;)I%mv+&xo&I>XHFzDk_E{+ zHh)ghW>UzMKvR&6WAr{8pHtAIf^GxNjg*b#LCPJQKW^Z=L-5%_b0WFM=KCAy2Z=68 z*5fq@GRy&Z0!YP3!7+->Waw?0(>nw`C+F*NcSNCgH6Qr>NCnU{fqqEP%R#F~T7k3@ zX%+NL;Ja7wRe)BBvr6KWLADcK_D8@Zr_#^7gH+%fEkJ3$H&y^|f>LdH1iY zL;e0U_v2j|ZFf@J?+{N5@${kXK;C#$UD1Q6zaRAv)~yR4zV7R3%I|Z9*&+D&w;`M%Pc`akX%zQM@WoOYha`yb&siQQSVEAZb2)P;YqYn@ar)|EScX?GV}y zGd6qit!y^L(Z{ma{C&}*wVgX}{%*ax@$vQQjSsI@H+;KBZTQZ0>P?TXQLq2;1Iqg8 zBg)zzeoNU!eoUbeXtgkACiw`RWi@u?_(e7@v%Ld*9Yz7_zZU^24 z+zh-IxCMA0&=33yumJcqpfmD?y$X%TUYQNmJpOwBFC_QHx87lc++I5yYB(1eZa5zq z1nt<*B==y$`;lD@A4I0lozF57kc%-S>nS;(^+IF5pE6n*xCZy>cq@Zpo3DC(nVKY;p?G`-#^ zvk{bcr&GE1bX1brZlY)CWhUqY4!!&viQNWzf0kbUP+~Eh0ifpcQPlTlmY{q#(u$bh zhw{a9*=&NNk6k<`8KOLIXQLR)iH{`r(3{@9qrW)MMo^CaN^3M)e<^S#sO2 zKO7y>^COTm_%qPg{w6ZS-a)&!)LrcS>=0!0SXd^(uV0xR`Rz>p&~JY;Iz;j=px@tq zU>>FVU(YNV{p|-_9_2~i@GnW;heFjM@1r-=VUmYF$lv}E{`N8b&Rif(EhJ2a#kD^ zzFsb|Zkh|kbr(k;s{zm8_+5)GzBR)-c%7YPqkZ3hy0v$$PZTFCmcD$|oID9T<`MGFs{+U42F9jNZ!I6Bg6YkIDzK=N|dm(3# zY(oEJPZz?3(?5_{C(7LjKkoDIiE?MMUVc~N_IDsmIsF|mR--(Y5F-~PK4t?5d%iZp z$NAcbPs1;s)7K4r;?RXL8^YLS!*9E)Dp?20gBZgslsm7gV4d)#tgB|^&b6l^IjHMi zzKpqn9ZSp6|0}bdug>Imyn1T1gM6rBM(%j^HS++~|KzSE1Fya|%6X6{Iqsz-=X|6C zKHl-_eQFlwzXP(lkH1LvpxxV$_x5=quN?B;K4tFa{oJ*r`)%~2=Sg19a+3F&koWf2 zR5!^(ALIwxQpqj)hPUvk#~TgMSw z4aXyO4bMkv8csxN8(xe|A4g0)e?f~~ctiN;`JZx}KJkt={o=b?5A^JrHZO|3dq&XT zIn9y#=1&n5C*IS>UwmI1KmLI>{``lU27c`YX;BaQZ;i*q8;FSyXGHrCP6~YgHG%J) z;BPf3jUTM>4= zJR`9kDDTA9#LFio`g(J=2Vu_F6~qKzS9nb5>j`3_9b*O^+^gZ|?fWNLE6N?ylDih= zwtW+<4Zc^qZ$@rgdm>VYx*Z3m@b$EJZ|isz{l7BX_QFhl>kB7FTgm4pX5`ivUNn>M zw7oR3q~nDbM>!AjB&TMa z{Y)&`@iO|+^CYkC0Lgn%$b0#VY7NOlAKZtY)#beec`rc^(r*g#UOFN4dja~rlqhfY z{(1Vn^hLFf->F7yq zdSXV4&AeF5=!|mm1jp&gQ`+>@Yg#*GwU58$iM{r`pr1OMm8;|}} z8=rVXYXyJn{xcr(p_-S;r*J01x)pol8PWcyPYFD8OyKEfIg$_7zM}IZZns0ucF1W4 zHlu%v+10P=^yej3i*nshbf1L}P`UPXy^J{|{+e06{ES!!cKoYe##pTez5QQ`SqqTP zHrqMUy8jGo=6SI`Y{%FygWs<1>t!^b&6v+BlxuhPuv++1)y^5YcI{+jIqK>L`dKBg zCaj_VS7vMX&*azapB$|rAL@ZW?4L3>Q~d#HN%Q`xQO<)r$*ByJoTnl+@bQ}cR<#QA zUjy0P$G=bZpxx7u_w-Xjo(6eOPnzp^Khl!Ar_qm|Cwa>UNZyo?_q189Bzfq=0~m=yZ$hkgeVgT*%7Z{RdAj*80#jSnF5av)6-s@H3QO#iA>*-mhGV`x*Lr|0LG?6)RY@ z`kuXIG-p`nLmYjmt7gt8^w>Bmu@L%b+D7jKO)SWH>@3uvMamj_B0S<>f`4V-6P{J*w{o0(5HS%!OniSxw109?;1i<)kB)G>7W`HFbpAaOTLC#M zAg3Bwjs7XNm+jZ-w@a)F<>d!-A0HLvs_*LM5!?@;{vX%NLlUF4Xx@`XF*`))<*RI%4}8NOnzlw?`S3YT+@tP+1GEbruu<1{_4K|QO<)r$q8;HIfIc( z#6)G^d8HKoQVH2SCLSYu&~6vx?HUyF8X<32uX#D|=Zt^(F7%`4NnTkC$?F&LcD;5CUyaC7?fF7jZcE}s(75eo-zkx(~p>6Z@8+c18BYEh9{AnZn>0|meUs*qH zBXkOp49F#a-2{KNW3EF>nmqWbo%^?oBi8+gbl?7GiMhbLrBrg;z#Gilgmu4|IXR!5 zxf&WHnGH=5CwMj&Np5FDb0ni-dt|zCk2c+OyB51$_qjd7=cb$YYSY^z8uzuWO`cdp z_tCw=N4f99m&Ti;+W7VfZM<<(8*iG@xKD1|d5qvZ-z)Lh4)Pd788<~~ zUAQ_P6B^b5lvf~T_&y3B=ldu>+vs~Ge4NI98OGiPzYUcJ8O>)U<}(B3(vo6U3SY`7 znUPD^Hb*j1S5_8cPGGPofc{^ZE!{SgAKcbF8YCYohCgiEZYEzSZF$09xo!I>=Ruz2 zIEzS*774<~gWHZN8JPbdWOE0zc>5ZB;y{Siw z^>hgz)jBv%Z|>EmxAbcj(6i!Z#6*9)p!c?N z{Un<$8PH>5yC@e8>*Z#N5r1HpUT%_D3CdU9rk5KfhE8WIb{F$lp>?0{p*$w^y%I4| zjJXQkB4VN#F%dvHc(aI!BE&?I9uq}tH}jY%(PJWjms;Fc|B z@|~hvAMgin*)qy`kS9456Gdwq@%`&Nvw>S4<1rD4$HYx!587>oyseEw9%3S}b+fsI z_w#_iWGnj7^CXXAqG;_FA#dwLJSGC@gRlD=ba}Tz-mTC>kBPvon}vS2K)+iP38cxJSGA>CLVu%4gBe2`XMH+q#w5tI#Emn^q9B~{wiUvU23)`33Ef|8hj-R#JXRv z`}TT?88HV1sgj$4*J-e0-8VCQ*$O`VUtL2WlGIQfQNZI*mfT81FrqeuBGZ9JZMwKg zi#2T#KG(RJ<8-iDn+|Q)iXp4GDBBa;zDdxVH*(}Yz8O9qY}Lj??b>*tLmMyd(gNTQ zl-fODnssg^pTfGo1wP(YFWPsk7ubH2z}5{M$p}>P&1SafJ_{e9a>fq5j5#EJXPaKGr|;wu6Ww|lV@3OBac40r1d@*zaHO+MJ@fNC z_DUL0jJ*+SIqtm+VBnfqyX;!8HoyjKj|H^De=}f+} zG&t%cA2MT&EDf3cRA08q?=KCFavtPKj*?7r*5iK2JG0Kx?TU)|cS1JjxgK(^UoYgC zPH@@HNT`Fft@B&Cs@kdSkIlcJCu$fkMsV%|lckXMHONiQqpl?8=frO>M^ zQJyh%o?c~5N)pLK9}4D0Nw2`Xz@GW~S+1-fw+%WONe1MSzxv>>M#wT|tnf%!<0X`% z#(VZMvzuS4(LM+SKxr( zr90rjCvi=J@O!vMH^;}&&Zf5q%+-tbir(I+x5xcK-d;LrNXNYgc2vS0vGgVxEl-?g zx8pN=HpTA)O6-oQblm&<;i6v|>7LP#;AnRGJ_h&kEci~(j=LWAJh~?&?qfJQi{|cQ zq~RWrH5ja*J1CB_P<8wsiZu|ZaFi6|KE~iVr)3Op=Y!{5R(v0g?*uLQ?*H4%Es_=A zQ(5w0Fz%Zj_7r&cc|1OAp+~c#Z!5m%vMj>gGVmP5_f3c01>#;{VFAB?=YWn1+0!bs zAM_Pz8EEq~+8oVt_dJFBTKtX^^k>S!DU)~Vm;*LA@^D`!3wLZ5mGgTg@jE4HxK~X! zWI_MKKBXt?8%}(Yl@h|`$+)MP;&5qq zX1gtiUDL1cQ#sNoNVm`Gao%@upCXs_@!cj zjIsZu`{s$$mS&kf=D@vV+*77|eyLa>nKU`2U|ii8*Oa_$E!9CjgnN`3e)tc@jq9Hs zu`0qAy8o4?cxF=<+r>RE*ls5p&_VTuxSfapMIb-5Dr1cP=YaBdqZnVJJ=l~Spn4

W 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

irk?VlYby)P=#<~ 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b829c3ee97a4277b659c7777cf037825bb7471a0 GIT binary patch literal 9704 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 Q*{iE;jpag-W4-;q0S%^ji~s-t literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..975ed8ae6c657c85d409a0b5d9cd4cea853a1643 GIT binary patch literal 8472 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..61a2b8058cf967e00ab8e126a2c479b14341a31f GIT binary patch literal 17344 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..efb5d8234bc1f0cb5696e0d01d6ee907aee0127d GIT binary patch literal 10256 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�a3zs))=R>`?0sJS3hNHU>vbt)7Jy4Hr! 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 U#t%{WRrWvg?D5XICat&sANXUys{jB1 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9cf5af671b010dc234290fc8134a5c3bdbf163f1 GIT binary patch literal 10976 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 QE#&WJ|GaCz>3!_~7g(A@QUCw| literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..641daff61d853e010e446846bdc9fe46d63580e4 GIT binary patch literal 16616 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_linear_21.hsaco b/machine_interface/tests/libs/resnet18batch2/tem_fused_linear_21.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..46653d74f855d58855f3e092b86052dbbc3a4ff5 GIT binary patch literal 11432 zcmeI2dvFxToyU86W|oy$tyV&aT}g=1qDZ}iv`C9!#9LtAFJt)yc-Qg@tsWpGv63)Q zIcX)(BQ^oT`D`#?If);sJRFkB<(x~-aEYDsrCe75Us5D-U8QolD_80&b(Onw<#GwS z@2_V@mN1E(#~=B_UA6l3ZWL_wbry%%#_nqiWLoZ7G9(D7j<-yG(kri8`iKXv1Ygv0ZjK zU5`{6%AEFfGudMo*)_kDar)yZeh@uZ-}SHY-}+kQynMj^$S+FwK+ko}uK8epsV_O7 zG+;`%vBxR9bmx8+ME9c20N3r@uzC0WjGcHXd8nnmHyJ&cN_V9?dp~jdbJ1j5Pr7M; zcYjx(_Ixy%ZtH#Gc+tS_rJx#r-wnM3|zNXfW zqp6lA@|%5C&K_oJsxjHw(bnbt>-W@?xbbrIQ1WO~YiF{r>Cx`=LB}jw-pD*3?Mfa> zy-15u6SKY^?MZhWN%p0t>`v?SbJ5v)%P`&+V*!<1N6bRsjhBoJ-WOm z>F%Njr++fG(|6taWYPFY6q(J+DkEqik|=lKSx|Lqi(N3@H=ZSw+KmHDw$N zJEYCxGM_mVsem8vdk-Q?raVyIsAZ!joskbR1-eGG3xUf zCmZ((Pp+^1ZB@Av+UF4-Hgdy*4R}@y3ZCOTz#*@ayastqGsYX^g6C@Op}1FY$a2W4 zdcKs?q?|{}ooZ|rd=})Iv!~=Vy-3RG)8t6TwWI5$XlFN+Ia&II<_Y6my5T{dvokk_ zHO}U6K9H~ZV%ezABAGybSXKS?UTP0;HW%#$fj}%v&97&f_*)(}$R`R4!<6^3!Gdg( zE8wi4pddC|EtE3ZY%myrk3Jfc!HrSFFrH}a5doFAhk8nc0v{Fl=u`OtALRTb7c`8~ zV9@ZD8SOrdC5OfmEDHO`eh~J9!B_x#0qEr{EUNdHg%99}zL86EC8c3M$(3+A=B2N4 z+$ANkT(wk=$;SpuXv}^#Xbhh`FHW3%T8uUF^7D-uaj9`wR4{%cGUCx9W4p}Ah23W4 zVxyT4TX|&P2#1xscM0X5-9ovSiwOJ8bwyYB*gjrfJ#wE}J@$ZEePNFopfMPnO_W!J zDQ*XNVn za?C+_c`TG^5q-I*t|HpqtiZzdQrpexqY{-CV3q3~N*4)Q5(Jm@uo1QPVW$R-5gGXfL3( ztBM+Z$`6=8d_S)9Q=+%n4zJm526; z0`d<#x*GjdqyM?QWuQQa7>&PL$3+hM`PftN=td!Q=cdeh^eOjX0UO*JjzOQ_&9}v&+lf@&%8{FKSYTt6Z!^J?+ECGrVGjBZCNMD$r9dcunOZ zH_r@bSI9lmfIYGbYXMfSwkg)wjI3q$9zk0@wg|~A#}*;3phFd0iDghObD@vanEF`E zTS-Rx}c#Hu&vTPw^`Yn8dcT4NekgIQ*+ zH^bHjbD_1#j9M?4W6PG6k2U{oc_v>hzt{SVP^`}iZhc;;)=NUOt_a=wvItsV5h3fV zqR4t#lvv*o^Q~7zsdY^(u)Zk_>s3)^eOrXB*Tq8XJ7R=o8#Ww4v*lzt$?6BSvJFR~ayR09JyRDyy-PTXVJ=VXAMr)Z!y!f_A;CV{unn=v@ zh(wlGBxYxeL~V^oEQyK4(mIh?UM~`e0g2VCL}Kk4kyzIt5_hc^iH#dXV)G`E_*gWO zc)TW(_;@UmI8zr%d}3K7@t5_H#9yt5B%WFoNnBVHNnC7*BrdOyBqlaQ5}(`@Nql-s zB=P*V$fVDd^P2HjEx*dfD>B&U_hG*ef%k*M-~-?Z@Imk-xCa~o_kyF~K5z_t2uy%+ z@L}*_unBAe9|0c$lVB2T2AjeC;C`?LYyo$IDR39q3f>L2fxE$W@E))OYy=O0_kst( z`@l|cBX|hh1a^U&!ESI1*aL0_4};slG`Jn?1$ThO;5gU^ehj4e_83TU;&G7T!6}g9 z!N)-zJPiiHGhhfj1Qvl^UtlN%qZtx z$xIepQ5$~nW`?mKcc?gI4(ITqf&8Dd7-ymD`M=;yoOwOqEzYvNU|3~= zY_LLQJ|AeR?7ScR8D|&#CD)G>uV6=udA)j|B zt~ku{z$c1LmIFRn97C{)zlA#%u5OvD&UtSTaTk>LF5DG^RL1=gR{&c^V}k*z<809D z*5R81UP;*P=h>kA-oV&nxbJk{#9TZ@9AfM|ahS0S#1o7?O+3liMdAo!mx!Z`T_%n( z_6##RZ;s=tLi`wG&k`SF?32XD8T%CR6l0$zew?xAh^HBQo_L0_7Y6?UXHMp|H=kOo zYWb7-8H%-YGINGAtl)2$Qt;KmZ`Y@Lgn zk$=_BU)qZNx9t4o?Y6BZ$InL`Ka-B1&5ob@9Y1ldNdFGOzrlaBZ9KCRHsC{-GY8#{ z&p1=0&xakK(~i%*j?Xw_-t`$ix#K>++8)zR$G=^F0{`xI{KGjb*YO_5zedNudmaC9 z?#gvcP4jQU@vqhKz0L6tXR7qC!}0HcxV0a+-tZ}{L$-&>xkT^ zTO9vz6_NWCR}r~SaTSsKbcf>uUcJ3%{T^_9f6(y{cMj>_UdO+Ej(-n1{>8~ZeCMWT z=P2EU818>~IvTtvvP=tS$-m7 zR<0X&SRU8TGIr%{m0xk6V`UDXia+?mH5Gr%56LCH+I3n&tZEb^J>?>)7h}hd3quL!6TSAx=sE5T~Snh*Q!(#Hn}v!#e&c{oCmH zx5@DjaZ37!I3@i~d{I7m@*aNo?oE#-R+S5MVv*wre(NyKvVq# z)K2?6$7$EpY*|P9-H$p39ZmJgx-6{gEZkE#-Bno84-s0Cihh`bopP3lE)505Oiua7 zZvDUyDb2{d;$`Dk>0O&f?=JA3Esy&K0$y*-Gdo+pzrfu{8(_D_df2I}yy44l@*KRp z0a+Hk#G(7pE7I1K?eeahIk0UgokSjL4v1g@&4cZ~oVNp+QDzLk51mSa_HyOAI`ytd*H)8khzM3QKlY5 zQ%bms%7kDo6AnJGOoJ=B(JKAt>Y7dw1p$8@_+surXZn&kMg@U|KI_UdA%?jhokGIx>(U8+x1e9 zp~nnec*^vkdUTsEmhCJn(HE)yReC6ZN6R-gh923Qv_T!g{eM zs@HiI>UmXq9ZIG68;8cRZF*g$UaTHRYsC~%zsIRJs2=6M8RaW_4(wH8C^^;Cd*vco z5kdz!^Yu`z9$cg6MD$>VoOm z546|9QH(WM2Ln9@CLnKH< zz=oO~g{M8zI;KWJ zlN!D@Xj)(@9=gx5`}>a_9bNc!#tH+!O)_@u*kIJwM{A-rQ2s4R##QcR4eMqKP^9>M zeqX|(UEO^t7Hv7!g`do@Xj@l*v_09|&YZtg-TI(evLKdMum z>F%Z;{6MOss}1$3=Ki*(WOH*mb;K=obhUQ7d1=ZP>g?#EZlywN8bADD(f!?r=+{Mz ze!SC{YzEt*VCQVQzhH5R-}SJj4SRR3+qw0wne*_6mT3OyRKZ2sPHx7b`@1r?`S#-<+Y2TJJk$tsp!k>RR8Yz z>e6roU43`_E*GF3U+Jdw-Sga~d!9RHqz`VMScwn$<=Ss>E(TL1p=qgMTAs3t@gaTp zzTrM6ZpGB^9Z8rH2~SH)ktbd9fs*@tG?dw8yl;`oy|1|Q7jWw7U&d7D>R(xBH(YV_ zcheW#Y3a7^8NE}vy^h3P{r8(cyf?U`{;N*^CK;QSZttrNZB%!A==iy#Z@<%e*MO_< z67Qex*#GvhtyAr86vu?C=UN>2E&504@`faAO#OA|->rBY8M1l%_@8z3ak-n3-2PoY zfmV0#O&5IG(SO9Lq}Q$_=l1VDf0t0_uDv5F5u}Zc^pcIKziz*7#S6&XN&nl9KHfCX INVn_%KNYwPxBvhE literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b8d0c6e91f299dcb615b30aa2148aed3fb7652ac GIT binary patch literal 6952 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..79ac9cc6025dbb7759cd5477852407a0a717b9a8 GIT binary patch literal 5360 zcmeHLU2Ggz6~1%lC%a>Ny|y>mt&=!g$Fvc|vuii56O@7@QcByTEi@>N`mmYZo&AY- zXO@}Sjcr->Cas{TQTY*~LZZqGG?dU(eE?DM6Z61JC=$*q5sHuyJn$5Wz96xjvvbd6 zy=iG^UUTK0@7(iu&;2`d#_NwC`y!X51*NFV|B;FfU)&qN)FhBwD#M8ErBczc;xue zC!YH%V=rAX>&1#^8jF@|TQ%=HuU$6Ga>LCPoTlxw9~-7y_FjMaieVOuuH|_-uVEIf zH_J6AZ`LjuPO0QssOD8ytjJ}fW!9QjZn0_?-wsrA`DUqPxgX;oa<2~J_v#>ZuMX1p z>R{i;I(UiJI~%Afz3csx{Bo|l`tKQK*J(C#o>i_}wx26im#ktA_lNzWyUVbnq0p>V z%XZ}FckogDz%Pxuxs)r_Oh0$laTkSKko-}C9k zeVCl(zX!c?!JY=d9~|%L>2hi5P}Zc=-m+Y;>e%0v=q?5~X6qAWqcYqYk#GJfl%v4M zY`D=)PPg+Ris?5FG+xVio28LA_5QCvIQQr2-{930*Rv}ZE`ckWSOj)^F-Q{P0YNQ@ zycG(12)y&>**ok4AjXSL`zCu0;5w5f)?w}6zH$Eb=Oy-y>lpM!uB2b#d{R<*h4a`3 z>i+ldQf7Ujwsr z+?mo!YuTTFv{~`y8jlvLW_hLQJ7+E5tMYC*qLGYOzg`aVuWUtmO_KAas zAVu9#v1$#dk#I&>#;6bKEXrx+M;(`=hPqc?GSod;bxM0m-J@jy4})$--3K_XJ)@33sg6IUjz%WukEmmRR}`PpOJ#@UL@NNBq2kGNhxx7pbDe8J$ZCi|VsuRU2mU*))9Pq>mjt znw~jmWQ{Bse?;s0;ZQ;B->QJy_W#s>%&;BbVn%VB6@;T7KH6{CoxL*xn|7{YWGiZIov*RDaLp`!T zgq@z&Z~r35`gy4SmKgtJk1dk@x@Ez;BXtY~hE@RKlk5pyVIL|8!V>l`lA_@Ebs2oP z+z}J1Zo~qEeF22e{`31PNYH10{QnU4;{6!f)A)qn0|}kIPzj0dTNvs9!5jrdJsO|x l-w%P;x5ZtH)588rw|DzN;}YjhAU@1KCJxwcQWV&4|6i_L0tf&A literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..1ccbc3ebf71ad74f1c7ff9486af3ba9b80860642 GIT binary patch literal 6240 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..af103064fd97a28ce170fc58154a4140f2ab6354 GIT binary patch literal 5360 zcmeHLU5p!76~1%lC-&^F*SqV)+ikLOH%l8qcI-GQo1zppBBiuV+Co#c5f9GT9^2Ek zXUxpl*H~<1pDYi&gd(wdB|;Grf(M==(HA7lIi7na zUZ&zH`stJ@@a-nO%S6*cZ4YEpQe#nO$d+pb-`XolAzq=Tzh!VljA5ura0q zTY=v~D82Z!0!MHwsGF zap2#M9of_TzWleK+?(HRjz??$C9tE=DWuy$9IH1T28?Y0C*_b$NNc|h*b>MxfJcrW zee~&P8GG@P*(le1(^#}T$Ey3^edVHIR-0a-`omd@6^HMojSA>EK0L?_8*=^so0%ipz!G>c4ALJ-5{?_*S)HIYFUfFInXR?hpG#Z-6^@Rm5m z0Zh&c-i2PZ&-nKm7cAf7@bQi-Lv-OFxaT#un$T$BK%5mUh zHr(hXr)DeFm%tTGECRc^7$k}Cpr95+ z-iic$1m5|x>}_@q5aY$BeUrTcaFxjt>$1*oUqAcmGZOpyRSfz(S28biJ|n5T#(81` z^?wLFNmXiHMY(^Y+wB7V!gpXo;W9zXI;0*(hGkqfi{zKV`YYJOex;(YUSm!CB8%N&~=(DXpG#PkY zQNXX(^9xaIi*scSa&ex^9C#nEZlauUssj1qT)Xv%{`@`nQ_L!vI=j9Z8@nRwkL+0U!M`#QQ`8AviNA1t^G5QDJPbbc^p!os=^gEO zdQu<3{yq24j-)5saY4t~UpM3Fyb@!7*^GlPWh|zvW4iuT^anaxd|J_l6744Rd0gT0 zsKz_W4^}&h!a5qD25*v1aEy|lcMa~IfxBlQIs;T|PKx)|5M&B$lOcq) zHqbv3a$WFK0{``&u8ZU;A*Z_XCD9jZ5lCawClV8?oJgkcO^iw7Fg`b!oXEhyvH{X@ zZT|$6vb)&+3G6&SbaLo94C)#9h0bHW_anScgwsb6`(DRf)U#cm=~x z+6SD#vjf+mH!CaUec!DY-L^k(I`-*W@xXj>v3Ov)wo-1EeK)_nZ2Jcu^j8)eD?uaQ zp07Z~U^JImHfS`nf$NoOQ0BHuKo!io*8*qRyw9G6h!yr8jHyV{zY`-&f`$>m-~YDE z*4&1bC09n>Et&Of-7aRE%R$X`4jB7$S>FzxL1YUQM%IIp-ELUyV^0l& z6m>_hwW% z&u(=}jvMM8dC5?B=hRv4ado$r1w0J8S#>Yql=h@L{+K%TusR-_nLnaV{9R4uo=~{D zOa9bhMN;?5&p)mzn!&%uVHFv}&nqZHx(a-eDoT>kxumeDK09VRFpJM*;2S4%?AX!F z{zFF2$bs>Pw4NUh6~w-+3b<|mPyNRX#|s%>=Ll8y5|;}@S$ZpRp492R<&Rji=Ne{p6ygzqI<4FrMm6luswr{2X#3! zN^S$Ie}=VnU={&uU=UIv(oPdX+06<^Pd<6%_+y{nx(*+=hwF#;6Aw_Y5h0MiPf1Mq zg!*WU>43~AZxMb`C}R4-v0w*#jq({LjrY4jeUejNC5+Cm@Pl*cZx28Rd1SvK@+{#(zcSE+{Ved%p7K83lZX)sKndGG z01pBSRp@&qx*vEEq0#?AL|D=K(`U(NK?m2A?3?0#HHH0mNPy0u4GhnYe*h2l$o?Vh z^tD0zuYhcjhw5*N@t^CnMRHKLDtNb~j*-yN3L$!uJ)tM;BLzWN!u}*F3jRQs!H3H& zF`?>4A~e_=Li8Lwzuy80`W%e^AHrU|A0vAjpYZ!2p|ck$AtBzzrv!5x5cOz$x__?$ iZ(xgi7N>;$rC#smgT^J!8$f)JeL@_tU8E>*(Eh*f<^wMP literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..45b8dbcb21f2679165a2b356a2878844272fb01f GIT binary patch literal 5472 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 J1!THh|G#6ra<>2g literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..75d2734931b206dedc423c821b7b8cb61b84bf7c GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTE^eG|Q#T1!JnNq}4i%-YaDj@XDU?tmkhbI9*&lm% zW-~ME#Fb@FQVw&?Boqk=f*RTq2@n;5ng=8l%0p5fkf>0EK=6nnkryPEb7t<@ zY}SE>hR0la?|1Gw=R4=#J9qBf>y0N5eMBhAynv|0;3_CmCYYCUH4_PsYot2}ajZum z3p%P*{LM$^ZMY?aF~+4IsfqWW$`A~O0HY3k{AG&U#ErY2u}<=R%=``XLr4YSg83q_}8`|w@EbSvJO&%b7vrIKrTUcqac zMeBQ&y0d83&lyg+>{;aI)n2gT=ZzJ!-m(hIHM{g`PODk)tV+YO{X)5R(kc~bdf_MGL&68rF`D&S z#g6}Yo1WbF|I}!hCky4e=@(8o?y?MvmftG)z-+T&ouh|7H8uS+qv_UGOyBAR?#g=J z@H*>ZaWOP#&QV<)}ahth#K9L*NqeAidA+U93ORc{#CgM zeH@(Szk#hv(Vj%0AFj^H$x8X;2c}G3tSgr5)g1fl3cpIYqPG_^W@EVO<-YNE>D`a| zA$-#Vx$n$NDw+8=hBCcInE-O6n|SNu^;3VC{CNyz`cWaf3>mh=O3nh@n2j4YDe-m` z$bDy<11jj9Jq@qJCL;Cs|55ZW!OIxu3TO(nA^63&Pk-ZC1-^KN260xXxlJKdC8FwL9<#nWLUNn-#A2HPUJj(DUkGK6z&kzRiuAC5P;`DS}8D}L~+y>pO# zY3*7v3H_;LLO+sSzm~~>i}u*4u8L7r{bhEndMdlKItahHoEjdR$RMT>gI$|z{r6@e z$emv6AJ0O3IFrx^b8GQb68hlkWj%E%*7sy)T^SWBjDp&~boKJJ6XM=wqll{PA)h#)0_@Z$nDNo7gXaAHJPXW<~_+1nL4f zvnEKV&5Q&%Pk}hI76<`>im0j(=!iOgO@g&>J^@Z)jNtC??i}1*19#UzxCZ#F`FnXF z9Kd~q$~_T8XKj>A^1GOj`Voo$_*dH@F(>VOu3V69>DB>dNO>?lti{rq(REWZJpBXqd@EmpNy0|^H=23haf?+v#kPtl70kNZ@;oPBvA}n0zGL&( z9f}p};icnF*=Z~vpS6$A%s#y2tSs3F-13PNvn#H1z*?;~56sl&UU;P8m~+K?`G99M zR{_7fIL5aytEwpfOs7D>LOsU6|K5Ro)oECH?vYV}w4R-gD=%lk#*^wdzegiqVMZFr?j|fPTS`BQ~sPqxWkg zhqaxb(#B`B-N&?DE$soltnJeCh#%DU>ie~w@7L}-@R&C7R9+iVp9 zRWo>Zm8EOxkmgX$#&JBF!@E%K(4mFg^g(0Fm}2Mc7{(EJ>)U^`jne)v=S(nc$G5;J zt=f2W2BTuPjH>BXLDr=AT`*jyWcnr;zID4_10pmQZN@6 zU2BC~HM{Jv?3y;N0&azYBTBtyQzt@t*~RMs7)7T+mkyvKy>BieR*?`%5%QB~#M3?$ z7LGmr#NnqteDkcl_ZH13-BoExg@px)e6M9Q??c=sE^Q=C{e&~ z`8xC=^r1Orep9}0P09Z%8z>l-p7e0|7CQ1{{v0*BN-zJjXzSIH`#G8aNEesHUf;?s zbmVtk@_VQkyf?S~E>?pC9|8D>f_Hh6J literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..8335f8f20b5306f946eb03b49510b7e3d42ab304 GIT binary patch literal 22704 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..dd6fe9c197c3298217a4bc5e0028aef4e7292344 GIT binary patch literal 7576 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 FKLJ=Wp0oe} literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_14.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..aeac8a703d08e34a88fcafcdaa2c0e19083cc58b GIT binary patch literal 8872 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 ny^g+3Q* literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..38a9baf96eb4c6ab42506c7600dfb98dd90c5dbb GIT binary patch literal 10624 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 Q|BiLz@^6M#wzc;E1>)@{F#rGn literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ceb099c6e0f5c957d0a0ba6ed3aaf83adeccbe00 GIT binary patch literal 13432 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 Lr-1e6*82Yg?V~@S literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_9.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..25ca98713cea034878c509e6bfe8716e2d546c7e GIT binary patch literal 10224 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..371315cff8f5a122d4e6c8af1d632ffbdd4f6486 GIT binary patch literal 23800 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..45abcb70e626018b0b644ecf047c95075d0f4d98 GIT binary patch literal 12968 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 a=PQvH^$PX(k-1U)FWvaH!qLUW@&5}rc=?C` literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..621b6a348ad941f03dabaf0cef78606920fc6e7c GIT binary patch literal 24512 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a8312acfe8088ab31f90e33078adfcc6a10c797b GIT binary patch literal 25264 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 JqK{YF{~w(r&Po6P literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..bb0d03e78974622986cdb95a3ed13e282d26db76 GIT binary patch literal 16656 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 Mm)VRK-Y@@u0C<(DEdT%j literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..28d64b615401f6cf5d7ff5350f96c8f419ec3687 GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_linear_23.hsaco b/machine_interface/tests/libs/resnet18batch32/tem_fused_linear_23.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d89f9e5a52e0f49c47456e5cef7fba2ed3e9d071 GIT binary patch literal 10552 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

wPi4;Bz&(4k{R1@WuWl z(BzK7F8VKU0_?a@2)o!11@^`>kJBCXTmZNMey9`tB;QYac+u6ZCHv$!$jBG_wOFde zIePEBT=4oja1-b9J*qcf#Cdv!^Tf6-@+XdiZUsB)1pj3|-(Kbp_qy9I4+7BFJh^)v z9eNA?ohYm+{rm^O)~`eNfAaPh*Ko1g@0(pmhkg$X;+2qn?)BoOpT7(y)bZQyIljjE zut!}|1YckqtfIcw5sn7ja!d>iZtVBPGq-*nx<11PUX1eui03EdC!vD;{{Elke7+0| z_g-6~%^!fJuZynlyPUs|GvVFM^%L!j`THE`#n|DlF5J1XE4{u}33bt~Q2zuf>+u!- Mf2}d$$g!XQALE)!kN^Mx literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d56f1f80a7cf1369fd20cdb46b182a554264cd8e GIT binary patch literal 5568 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 L^e|A-)%yPhr9^UT literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..633a13da538c3636deee385e801dd70a600d010e GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTE^eG|QD8=A1C{iX^ka8^(2@h$cI|y-nk3kl6 zRIB(bMCNU{C4(`>r5~w@_n*=hmP3gVWckDkO;j+Y9T9Yq^^85dP?ePa`>)5A%yug! zc>?t}!(%?T@3VjL%VGO&vOMnd&mfPh&Q-b@q_V>DsKS)`@OLuL$bCP6u3Ko!AwGO~ z@v*0l0=)31*(}#Q(^#@x+iG~QQvPr{FcAEawE8}+Ik z|M50Gx$pm}(KL@2Dh<;wtT^tH42zcED)_-{vuT~7k3KUq`!l2E)|XA+>IUv9^{nA_ z$HUmUDC4#2jfNZ|XAEz(S#%n&%V5S*85`E6jGT)yy_C0%6?56DxDK|Ds=Dxo9E3hL z&hp>JT(x9RBhZ7Rb9%a3IsWk(lLzav<$86;ensJ_gd=);B4aj&qh78Xf0y2as2{{fPK~l-g&jiXejWPk`NH_KF`Ku@XF#Yow%Jfhoy9^oT!SFq{o_ao9*f@TK=v*uZG|Ru0P?7TNVQ`V68E#aG1G zIwX^GiQzPJ5)@B|jU=@JAQr(scSL&qS^PNO@a8+6iLCg+ulCME_Qka; z$s`P>k_r7tcKu2w11{QQ2^I4qzNuIQJf;M7)Ld0{G#331x0fpiZDJfKzLN zblTilfc+GRQ)__`5U7Z%3W1KO<8BhHh5ZR|0%HWXpWA(Kdkowj1K}9pv*z#Rfp7@d z5lVMN5S_JAF3Wu}A@ySt|M9PmLt;+a`CPdu^U|#g%82sO^r#j~XU6YLk0@CzUlAVug^q{2tAJ@4a+t7ZGZ%ECRbsuWdr_m( zi;{9LO6TPky(RJ268|hQa=rHU-Ma7CynjR9Z?^Kj8>*s>#h%WExoOJni+$eLRNW9?5!i>(S4<+{aiyc;%~e%1cz2bl zXXudTP~FCMJdne?Q0~y7#oX*cW5$?a=j|BA5qRs{f4z;0{a?!oU%wQMaiQA-&?_bpVW#)1*rW(2?FZi-^d3|KeNk_JG{Tc5Tmzy8|cW7`SX5{~JYY`K$l{ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..849f6d7640572f2a963c619c1c4ed2b999cc5aed GIT binary patch literal 22336 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 I$HndcHz^u{hyVZp literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..221de1bedee47326aeeaa2ec6c40cb8b44fdad57 GIT binary patch literal 23464 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..14974a045429c6b6ee19b2717fc841e456e6dccb GIT binary patch literal 19064 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..76c24fc510ee508dc624777201d36aa8200d39a9 GIT binary patch literal 22696 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 Q#{>CvWa%*ef9m-E4Z5ygLI3~& literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f6406a2bcc8a6e6280e6366f7d221220dc600206 GIT binary patch literal 20800 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 WQT$ybZl>?qph+w=1a+LR|9=1y7{HGJ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c9911e8355d9cf44100580fce2ea3108b2343fb8 GIT binary patch literal 7576 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 Nfulbphz=gq|0jcup27eC literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..8f6c0c37b27382341d81bafea2d74f1b94a5ffdc GIT binary patch literal 8464 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..78a91bd92f8a46eae13150c887728a356717f839 GIT binary patch literal 17344 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 V{8LoEN`Dj|?a{IN!Ev?z{{qgZ@T~v< literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a426024fc4f133b7174cf9af382dbf1db4538582 GIT binary patch literal 17536 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 YpXRt`#}82Xb@J~U^2<#|10R+Dzn}^qEC2ui literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..1918d2e076bb914664af3c302de6852cc16562be GIT binary patch literal 16616 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..3d3d094f677d5385bcf47b74eb30900f076e73a3 GIT binary patch literal 16320 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..df1dfdb30df622472a7caa265d6903f7e63350e4 GIT binary patch literal 10760 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 mzpo)C<_-^aMT_%4=mb$0*A?(@P6Wg% zAynUj>pU1?jN73Y{XVl{U~GiEfAoVCZpybI1C5aE348pyqQTId?cIznXQQOJp9u2X z@gsj4-?#q}l)K}*&HiZ4zXg7jI;C_wh<$bY!-TQ*VMYqYgf#bCKrDbR3wZFzp~s$n zma!Kv8I5wyH}pl*vrWtY(JL2qqw0EvlGC&U_6yzcs{ZRQUDAzm*)x5=;JZf2e4}bP zMZ>zFJC%xWqM2VmZN@I@EyHS>g~hsEels*F6q}Wb>3vRs*qsJQ-f4i$od(F>X@EVS z8{kEn?|f(~_s;h(i_3-X?7yQ|J*Vjwe6!jx?VwPpFPY^6t`GZNca>p9Bc);0t9I8Ac#AwNXxn~V;6LPxlweiU-Mx4Vi^V&xs1FWGQBQu>8FgAS@9egAEvtSCf~&Y49*PR z0j^rIrvdN>+k1MtT3OnkH)yxFOwX@7_KyWRi{Xjc{6yWT1gD1IH~;3waggI}xZb^- zZr+Eerr$Wwcr24`mPOgrdw=}s%-^Q}gh!Jf&#s<_1SxNP64=ejAWek(IJLm7ZDhZeXY)_n9(YB{pJ9~CT+nHj6 zTT@yron6sJl1yXQH)11KB<;~{t3Je+$6~TFrpfUau5a8(UXcbNhL*mvdoaDN6;Efh zA>{A5Z)zx=X~j7mXMf*_r)T9D`*0%;vE-4Mri^IXNsI?JYJ5Ug2NEq8crh-E(y%JF z<=0l)vdr2lpbBr2c5sb}YcR8CE(3G-cXtl%?t!~|Ald^|Yi9U+YXEKvY?%ZlM-3zSkgf|s?Ll- zDZ7)+j3M*f!0~}&nA9`y3xmgmd7!DjW$ZBw-t#&Z9|j(3+8)uDK_cVhgETy#;agJJ z3zAaPuI%&Niq$I4)n?sbu2Km~wqXS&-CbsZ zR}UPU-pDK$G~8U^c%>SYxy=$#1;g^1zVGCkHai9{Q<=R7eaeFHabk!G&@cn|``@0q zn$s|I6iT<8l40endNJoN2Q|n3iawLi`Srk@h6;SqsG5G5M6N(-kadZj}(&R zbw|y#T&R(7_&EE@y&8*)G|keOprr3rQb&{>N0sff%Ea;JL&|RTfHI*@D?6mqx-zj( z*}Y2{m*TpzTUyeUU3q0neL~r#<^T_XZBE$(IIcdaj6SZ6KctMtCg%<+WB*iA`ESai zvQv8CfGj9`r01ScWK|cxBf>o5=M|J89T~nzWjV=cUs76BpB=8-Fp95c;TtD=`0%0Z z%)Fl0^Wgj$ts6S#eO16;QMr~YHQ?F1&%%gZ)Yv`nwsO}%FLHO8MP4?L!OPT2?y zrU&Ly(6u%i^%96p%X11Yd}!6}D#*=Zvsy5UMbB&zSGOw;(cMs?kyW>`+pa^!gSwpQ zC8vSaKf~HOFp7XRa0saoX{8CF>}G{S$DcfS>eO6HtFe}Bg}F` z(o_C~yFib%KI!RRC5-kjkAq|AZTAC%GV)*N_blN;uQAa5d=6yjPxn5ZlSmLLzzADk z0uO=+P3U_iIv;otq0#?Acv{i?(`U)ozy{}({9S&&T<-rvQeZG>eciJopCUs$^52h4 zPwV%89(4UOH2)Rv|5%SNlKr+-F1zLG7z!QD5TYmf6MEb~GT?;C{hud8F7IO*e7M|_ z6Pm6kLWeyeM9=>H`+d-0%>MlU#r^sFG4iMW310;b?Y+nd2|QTPPIRAeM*^Z9^-t&T kry%QF;;zRD?tiJv-F#5LBzXgfPxDXk4YrdEIrjVi7wU2afdBvi literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..7e9481300f9e586b157b14b014ac77f670248727 GIT binary patch literal 6240 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..4502efb1883dcae8e5114421fa5d73372145cb09 GIT binary patch literal 5360 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 V>t+4NDBOxaFDK|u4wTr-|2H(S^%VdB literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..80a127be31c8fba743e513731e0ae36d55a3ed76 GIT binary patch literal 5472 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ae7d8db07e117f262601473a8c92914bbbaee005 GIT binary patch literal 5480 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_12.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d0083da88a0bb78bcc452ef32fe7f3e0993f0855 GIT binary patch literal 14768 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f857bd39ef81ce5f39bafdaeef116c8ef63f0f83 GIT binary patch literal 12976 zcmeHNYiu0Xbv`q5XLfdW_Q@6BmWHd9w4%fnwR%w!Ez^(0Z%1|0)M*hgltgkVQCxDl z)WeRrONyiatGz~1}kBjO@5TyOpA3=%)2#SjR z&fGf`NyV|9rmawTgwc2Ao^$Se=iW1S&RtIRBTsx(*R&p;W!V-GwI>2Rq zzRO0X|L95_RhQ%_LHX&pd_R7He-Pi(|57>P$M-((7mWFDz|X&5z~_A;-^;%r6Xs(T zcB<j|RJ$&%Dh|a#zcl=0kyf1&OzdX`EJpQ>CUd#6lj+T25mnKFk zJzvWAl?TT^Kl4Vu@5qsI|M+mk#v}znU)%42<_z=u7$Wp=bN;*YYR& zh9~-aj}46+d0m?H9-0^!=r6xV2ljurgT#Aw@b&y)xim4_JKjHdynm$9J1}&r|41*> zroZ-sN1#i}zTu(45&N(1XlL`rH}l8)PW289_f>jNmdeLex6u5fhJhIAJKp~)4`yfQ zj&I~g%R?vnD*a0xFT3k&`SGQ3ZvL9Q7#|%P9+pE-uja>3A3szY{&Uq?{@4+W?~==R z&wou`E%*6q{$$^Y{(*7{0W#N~*VXJ+5M6)e>$n;`JkkN+6Vu+&F*tB)Z)abS1t9kt%l_tVgThMzNFK+8xDfi*NEc0u)J9zGJ2@K$n6nsZ&= zk7<}U>Ce8;`@XOd!li^kbEJC>^!L{(9M+-F%;;OQp}E)#7~UJ2`6;2(i#Mk6e@t)9 zRj*xIAkkUq(dmk&+mkx_kHJuc3SI2GDC{C-i57)hq(>MNMH=S3k$o7tGpUQ61v9j} zYuoXP7s_~tIZVTIX#@nQP|4OVVS*2`XL&ES6Dd0V8xn*CaJyeoifb;`g$dbR`p zDfp-1Uk`sfXErtGw5Haa-n2GHO^rFT&BIclSv&Hfn0Z_(wen-HUg7<0f7 za5K;bwgU~|7GM~-73csvfDvFGD1h65QD7%92HXye0}DVGxC3YccLFuwE+CKjZlFK5 z^tr1wU7s|1{^|QQqDEbzrjQhd6j};Rg+gIOp`$RY&{h~%7*iNk=qjvJm{OQjm{8cD zuwLOBg=vK?3Y!%+DQr}@PT^XG_b6;txL#pKVVgov;UdpL0 zMDlWSD)A@ILiHamEp&0)#1BRF?=CIuWckbuQT_I%g-(`d-x6Da5$!KTj&b6TMV9f* zOTuHEoffS?ODl^;#)(5B&3NW%kzkyCK)Aq=RuDGhL`De4Gburgvsm?jvC>Zj^N5}N zps=9 z&q)sMnB?G|mK@wEaQK$w;9ig%qGOUn^t9v;cusOioCOEGhj=a$7bS<}xa5$0PI5?|l^l{6B?o<6a?qcX z9Q3o2gMLwRFvcYZ<2lK}I4e0A7j1t_&4poxTw?QYsl80lXyB|)vTWrJ?#Q7 z5Pjk-N9kH;mtC+sl~dNdT?XBaj(<* zr|^Ek`xgHmGIr)CAbVNJPLwK;b6X*YV^oIRxf8M* zCte%7x*5mq)O6=+t!GfoxFg zbti9P&vC~RUau!*!5 z=UdliVr+wYHG*|1#x{`Suo3I9Bdm?yjCEtR1G@K0bPh<=?^~ov{noiy4)rS6s^Cc0 z^c?RSbi}87GgsR=F3hJ9k(>?i3V0jw)}oR0iV>`djxPB#XK=l4G&mG+cUcGC%r(lo z7KZ}PG1h_ayqC$uS+~x?&sd1Z(<#9^V3OO{^HMQ-)9F&N?3EbXCo!=fu?WPn(aQPt zyQNc)>t4~VnK?iInvh%Gc^MCKOsIHxoP&4-;t_s4_M{`0#Un754XNAlur7#)buFpe z@vtt4hjr^xx8q?Q$HVRGQ!<{NDxO^`p4}>*J&4CfJXt&E??bQ;6V}|E|2!ZTD~KhW zDuz`o;i$V5OE}($d2uEkOT~e`Tf}O;ZZ@??kmoF%OcX<`k2l|rll2@Y z_IOd&wKQYpgfG^7n{~i2x7Xp<37(ry$=%wnVk$_qcgR>4@rn_Ovo z4fhZ1?7D<+XR=*nrJV!+Fxs6uKj*#KblP(o(iq#>8;-w*%=v2(?theRxeq+g-t*~n zhV3}MVE<`3IxVK_)w*(i&TNqDN_ecvUsu9oa$O0JwTZ>FTu*q7UZY*`>vXct&++vG z>RMOVC3Vd?aaZPor*ff9CRX#kuDj%wMdp;yoJ|tB>q*OlC1^M9Q-okjk*V@42{w;rw@63T<-Qc`2 zqb}ACCwI;7lXBnoePj-Wk}*Gr@FFE!TbV;ao)K~f#jyWuW0H&WgxtZF0e{f(bBBGy z+PmeBTptLz6ZA1p$Q}0gb7%GXKx%!sG>7`-sEIm**9ERWZm$!(J|z5l!^PUai{~5f z2f04fuKqS()2(wlzrVfO)zj))a4m!S{1fqq2|l9`OLo@)^3lk1?zyFGZPNA&Dug7y3! zgg&)CBi|icRbF&RjO8UJwjn>b##ig!Rn)Fw^Dd1cr()QwVrW+}Y>_bpYxn0k2K+vJ zSI$FL#jruez&mBU+Y_5)48i;6$gK+tpT(ZxuFa=b6~{d)jr?IiX>yXyc+!gFCoYvL?uRYqjwOzsb<9J>{Tc5$c7xk*ExJ4DW znBo=(w`FVVpJ9A$^M8?-t$2kMFGul;fY-7${v7iPF)z92)UdAmzb#=Or(u29czx&b z5~9FsycV*$g1ycM8ABdF9xq);9*(K_S&Cms@(SKH{md)Oyr`%}L{W>{;DS9l=~(Qs ze<0qgV$VoaFbv)Q+f=~Y-?M$J@V;{(_|~XXU=@rly13}pZpe1QTtj;uIiH4R~QcLmuH{z7$Hh$scUoH8oBtGur z|CW7GQYjBrN+Wc5xOBR-dq-jP)UnEr;n9)PeJ4-#?>t^SbZX+%&O^@*A3jz-HZXeZ z*pX+8mEqkdckkJAd^|sTnzmJrk8Z1!%7=^i7-`}#q~5;a^2GRfY1?p##t^HZH zwEu`jNyC9FoZ2t<{FMoD_vSqgh4mmxW2a^|TAsP-F*9KuFzW`*)V#Uh2tQ-)G{*C0 z(uj7mNY)NZJs542HI?!nQk*v zZD#UuGxeyMY%?MTc0#H z^)t1^H~bNM-Q4tXzT9%uOt)gpx}P!EY&RY2F|!`Sm9qxSy|}rx&0ODM7SKVH)n*o^ z%%+w9KWI%G)75DVnz7Hr80`1ZMIP=s^TCy_>wMP^vuPW8wJ+c4)%`1Z{qlQ(>}!1A z2dy9ZH{4_yyD%1yo10!V)7$(3!T*pkEcdEmNg8`Art_p(zuVl4QNR#b@XaGGk{D_D4 zJU@5G<|;Na)RH<_Sb9X$6hhTw2tr2G>!jsyof{KS5P4m6uei0 z^)UF3@QI-jeC4;#!#Aql6Hh$kZSTr==J9vscRT!kbo@#3qbn_V#r+`PDN=rz-*}PK|J+_FQ@&g}(pTxDe5LkhsbX3#%^dIUdJ)6W(cOM!n-cLbPK_JKa|SIvY!FZth(2l}8+3D8^RAMg)w9rOmy z!2g>{5#Un(s(v_z<;Nyma9iLnKW0aRDzthaE&Xygk?==V=x2;|}-cbIZTIS1Q;2&UlS=(~c2v01IiJ)MXmrMTY z62EcW?lWj(tZkK7x#f+JSLg3VwEZIff2#Z&R{00K1AH0!rQBO)drkR&TD9RXxV~L* q|KR!iBHDwwSEfFA9rEgp<&BVo`v%QlhVYC0zo-1~2@Dmk_Wv)roA3_+ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..eea20b9e5ea55a38d152f4c14e93198ac25402e9 GIT binary patch literal 10912 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

c?G7xs!9RV+`(%%e{qi9j2j!i3%=S}w ztGmI-(_6Ub5JfhKwg&tA^cEqPw|u<`t2G$6TEm*v+Lp9h+u=Ea{T6%ehFGq~38q$ zlo2mEdI!iWqJYXh$rU7h{xFmLf%Yzc&=tb|Q;<1bbtRxoN#7oey*D~TwZ)~OTDdZ9 z!EN61G?XUu#maKES{|xaNv$$pE0@T0wR-o_3v)9og~G9H@$rSn7oJ?1Ub%Sm?z>jX z<P%_j*mQQ~!u*pZ>+$@oxwJyQ1#coUS;WD(T>s(s5f>z=L3aK39siHJ z#OB#y4@7e@OKH@_Miq^9Xl(Q>OT+IN3oE@Wq@H4<53o>@<$Bo366=vJnJfpypmK~2 zNSB~suv3q+V1jvd5M0z4e5z{flwvY3w4z9lLqTdaS-0fJQbpS>jj?tqILq3uGJmhM z@>ObdvQJ8GO_Ba;l^QPArAWUb8qKZULmVqJBG&C=@!C0STT_cM0m#Zf9brviK zpw336&y2A&OfsT8!qNp6>0yEIv+x`Xz0T5qhSh-u7KyWm6hx&_Jis!$vN%&fVVvmQO2Rm9DI=u>nOop|Lh8r$G}Ym>cZ$e$#H-bdYrp zfsy)xZIxD}qcF5nEPV}!!pFzUfm6;XgVM1Y^E}9+$6&K&aYPE(n$V5(TUdkBu*^(` zE_;=3XPke89e|A@J@Eq9?@qx{$!io|jhyRH{FK{)B*Q-U#GETFn^wMR z5$6}>wF)sS<(YgfPt023Qq5-P7w4xzTqst`lS^>XKVO;yd0}dKZZbbLRViE)wfWL) zS(NRjIH@>a!ftJY*$P~M6LY$}h}Y}{FR^R+DL@Mhc!{I9$rT9q+hp?0BcHkN!B4|Q z%l}2f^~3)>AlC3C3J$`j#J+SejG`^ZXh9QkTi~Z0YmD327k>I<67d}Wp8EaHPFdKC zxGgYgv)^l9*gInQKIH#@340Oe1!@QE#rOqwgC0I#cgHWz6@k0{>$HP&*qhQ&L7C{E z{}~4Y=b##g;@&jAw*uuM$Y?LlJrQ?>VE2DJVRv8v_&A^~&H0rqflU?;dB-j@#c zH3wRh9Sj|&WB=#-tlt}}Xs6=XAE1#hI`-FhH`Mpz_lux? zzwuj+efvJ^JIDWJ&>tA0ZP9S-KkwM%e>KPx{fp=C6_AO&cc?b}!m)p2uMo-y=l@NR Qy`TN_&i~_wKg9mO04-}2*#H0l literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a672a2fdbf35ebe331830f3364cab7dc725670aa GIT binary patch literal 11424 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..298a35d4bc37053d1d23d17dfe814f590227a53a GIT binary patch literal 24568 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 Zc;Q!we+cGo_W$JAJO7HeShJ*QBV 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c3af367b99ac5c1567e480a3bc274f8a40738719 GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_linear_24.hsaco b/machine_interface/tests/libs/resnet18batch64/tem_fused_linear_24.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..8789fa6acae9673f0d5377b8f3b4bdcc12c21cad GIT binary patch literal 7136 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 Hz5M?IvcF4t literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..117deef7340754a5aed90eba29d1ed44cb108fe5 GIT binary patch literal 5360 zcmeGgTZ|i5_0F9~?Acwfch`xxn`Gl|mNtUy*t<=$DN5-^q?DGVEi@>N`r(Z2u|2gt zMMwxf_=-e-kTBE(-V%L&+z4AZOlZ@hZNFiR!R^8LKuG>g`o zmAYFn>z53-T=p$A^X;=%?6R?F)>~G-W;>;~LX&)fJ7&YWgr_Dqd+=9A)3X=Nz={I*%zD}I zqXU(CCuIDlU9XEXcFFKp8U?rhQxVLlm0)3!%g8$+)9doKv1Bec+bpK%FB=COgin0mgn29^KFUlVt8Y=j;I@z;ns+H^G{(M2RT;5 zjc#$eT@O)BzX_o6S|-~pgR<%Oe*ONrKhOLIuco-3UA+hiQUPKU*zL_AO@t2!YC+Vk zNYO*!oj=dsW)}csz6jda*z16V5O27{$1(1FhwoTB4G*L>eBo**ndCqF{loJt z`P%BOREov6C-vBKskK|<iU%5Mt=*YkLRNI~L>V zaeWB+2OgRpN{=tb1s!L9-HfN_lo9d2B_B@7w@eBs1yj}AqsnK zpnoXzx{#*?{?~sxE|RB(p8CpH1ux7ZB#lU)NQ|j+BAMQq7?DO{er_;1k%5V21GJ;s z>=?ANyV>j*GA|CC8aRnby#T*3c&z(=3#OFws+=iZKc+zIF&+h z&~5p3%V@698<}N;Ml&0@Ua<;oZmS4X-mH5q-*>b2JUa;)E9^a(Q<0>9Cx(~=fEmEw z|MtvQ-G-H=P)6M?n)PhmE@Yc4LDh90F=lgF-wv!9=)h}c#qz@>vUy4)>p{zIH!SwC zmk3FUzN2c@o6sZSy0MK>AJkc#(>BXvlA3-{O&wQvoltkqsgtK#kE?sN!|J3qqwbQ= z8tUW$b?+W^LXI2iUU}J2_vF-R?HP5CmIZtmY_sYgdzz#N+B{Y-;|9I`(%p zmHUFi)!p)^4l9znPk!+kRnZLo6%PA|pI6X^bQJg^Rg@&7b4h7Ye|F4vU=^Rvz&B3j z*s-IT*+WLo$bs{RKsOGD4r2dS1AJ`%PyfdZ#|4AR#mq6DqL-U`A`A_!vBH3?S5wbf<$57~Kg(w=ypRgzVBLhKL!v7^Q6!Jcn z!H3HoIicxBB6QdnqG;?tzh4Ip#_Z4kAHrX}A0vO7pYV4;LuW5CLIN)q!0GM?H4-q| p(foA(z7Mj#N8I%|E&Q)^x!VKHOOiK%_#pp;IAFWUP~d+5{{k>?16Tk6 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..215a0129932049fbeb8961964626c60b3d2f409f GIT binary patch literal 5568 zcmeHLUu+yl8UJ=}cYD5b&gZ)$Hg0^rIBsgd-m@>J389cHq!dchgg+6fsC3yo@BOj& zb}zeojvZO{C9MEeQ4u_}LIOoXKu|;51OcL=Q1ie`S{{--5}^nQl?R?8sDzL>zHfKt zaz3XtG_M(X_c!04-#6dP&dkkt{qaMeW0I6-5R?$y1c}!P^1Qwg4=M)~((QvVzEh9@ z71c66`M|sdH+V3CVeUt2;=N~~z*GeC_KAln+}3X=0Sm`G_ZJ9VJTm3`eQ(H5ZN^3* z!bXT!IFF%tH$1@?{rmD?y?K9J?y@~G=3hdd=rYgbu7KL|$CDDK(u2diUjoJ0KY*?h z+A@fb9X|NP(PIG5zN**ftFEps8jfX{?ss0esOgo4Qz+R@%Yz?lx>IpqdhS(CpPzRO z*DbgWy=45PV%kOByr9|TvTKl=TRUxpFKSD=*)$4^HEaHrz@<=Zmdl3oJ^{k_8X$hJ z0fz52K;~WpOulb`XT^BW1g>)Tc>lDxQt(Irb*h5(5#us<$j|zoZ6D^ z8J)mgtzOjJ&V))`4g|MRGfh6nE@+^I+QIJa()@`OxJ+=%&1;ozj<#vSVZa zDAoKcd=`7yIm3G$rAo<~MxY0$_w;n7y!?q7UCj0+!*Of2^<7DOYAL<8jr`Yf}r`!7>`HN=+>*OA9L56e_Z@=;GnLkbcmX@a2cF0b)O@$8v+#ZZg zW)kMOCeQb+Ee@!l)Xu_da1N33rJ_C$FCbh4MS?c8e)og3FMUOVZ(gG$&NDgl4aUYL zg;g1gZID0e#{VVDRY_GtZCTz8?RHyI*PtKleZ~=JU`$5<(r@tPA(C{`Fsx^6cusLurVQr6YYqnN^GfQMh@vFL@;teLTGu8dYUB zD$B8jn^$iou7u*qkB(j0h5k#iu}ox;QC^S2U(n|>at!`_HHvW{fB8C$ zvhYdF3*gfAh%}yJsAH&WkS_o8>$1d#8QGNaR102QWvEjXHr>Y_S(tTZ}ufl-z~JoSxfr(p_pSH|=Wf5wm*A)EB(d%X4#cR()~Btk;{3l2fcS zO69%9J$Cb?)>sk0`;hhOjjU%or79k#nZ6INx zjPdV(GqY8@Ze&F$&9qCpnKf(0Y-7c%+SVRzb|&lAJYyQq`HOnRaDybW1(8P9!HYqy zZomibA|}aCH&w%I;7N@7O{1yoj6fd~pCgo%l%btU>aeootIC5pC0(hE?NoND$Cb32 zMSN79Qg(bq841NSWh`|1No7KPQW->0=~KhK_rRtZM9ehJ)*WUb^1l5vVQWjaZiB zcqitiYyObtP|d>r?a$yHD|6`3!OZMFZAP0B&Rfxs!|;|pwb@3k{y*nW&@9_CK$~B& z@I(z-#cFC*-K_$DliqVcbL@HD(?Ro$WzYB4>$MW94b!m;4ZP^ptP1LlVzW}vi$%v+ z5>m}7+oJC17S0YK`GEt9S+gh!pI&zGmH=AGuG3uv=%nxIMZ_u+f?9xLMhL`902B^B z{nTTJzwp`3qw>Ke8c*5^Ity1+IEwqSXhG~xLMAS4FoGubL4lv=j#}sg1^D{ZGm~Tb(eg%fb}ds#23FKVxbE~zGL9To&-M5x#IpL){FQ*kNCd~PpdQj z;+phn})n9MJe5gl+u#4g{EpFKAf>Ve#DP) zX2z~JTJ1V%#iK;!p{kV-C_m5up{e=-qT-R|gP%|&HortDLPGGtS0ws_ggIyCo{86K zX=r|Pw7%zk?zwmFJ#%K)9y|JZE=fzA1t7B_I3ny&jD8;q7#M-Dm>>NhgLzGyTsXL~l|mSDrAgdYd_ zo%oSIt?$c!^NRlZ?r=WZ^DluPrA{f`3C6kn`7mLGA)Jx}F=5*KEg+Uamj-9HRfrc-v`c=@tn7K@JMx;eLH7OXeR zbvtj?FB*2KNMG#X|%SE`#{?nT?FiLjvgqXbX9X*R5jcxtlQ{l79=PPJotRv36-)=P#P z9;n1S0pqr+^}0A?7Y%p0k+T)EJk2ZTR3-t+V2QupDkNvFMIId0W%epjNq7~Gi6BkCq)xHY2Q{8Jc5L5|gM z-7ikJ>LIG>Hw`pi%Xp8aQ8xG9uiroW=lS2@)fCs$*Nc!K6(BZ&-P#P&gm_UW6td~BwqVGts z(X9zRl1#7Y6LF@q8yk^{tFr#swpAD6D^n3gozj))sT&(N<5%TTh@mI1?ix*Q>qL_& zeGK{g9-JFXraDnUN7-LDqR9m%!v3-mg;>f&L{}$t{WQh{8!bAcXd|&s3wRz?xIC`$ zp7Q!iPf=J;1FXTDq~~2{d<}N?>=j_{{qF6-y)$s{41{NZdd-x0Z;e2uKu85B=(U0V zq0s9>o)Gw7|LNOEo)miOD_<78Fbk11A$=k?rOL5*^8VO_Gzs%_gUPWpOe`Cqoz(VD zK`Xn1?VUpAg^?2@&tp>0!Y>FO@!yY}Ve5+UI1U4^WBw@c(9;fxJ_!;9hd(7@0Km7T zv&WCnL@2z+}F()+IC~VUFvqq=IL6YRI0hP1D5G_PT8(|y1Z!ZTm1As z$67vRw3g|O%rai1mGNw+P=PkLT>vU))}6NN+8L+Io`Z}P_8!csNYcM!V@v|T4B+p7 zduA$j!^%)7qiz?>dZu2@XIjf%#cu91_GU9~)wAZI1FxB7%MFsqCVX=?B zL`YKf9TltIf*uLijcttjfXr)omvL)A+XJ;y8%yYPpOknsMC+Alabj2ht;XStBLFv z6|U}(KXpiv)ZOw6PpXP$@UL>%MaJ;+3fhpq0$-$x5@&QSDJ|;Hj#itniqE9s8z+7A z=#li^gGScKg7b%fABRH+v1hXZKDPg-|6@ke_AF);mz&VhGNasV8x_;7FfpRsbC}`S zMbk5x;aOeJw>BHq0*I};W9M4%p;c{`L2l*S<(!$%J64CdYO`b$?S~4C>eVJr>pPSj z=*yW=up8L@GwiKBGY_}|4gnQldeVfU?Pj?nC!RWd?1|59-iMFN;r`*p#RKF65dzcq zDXFQR5RblC4#^>kcHtDI( z5l#z3(o_C~cY+>!ebQ51B^;h#5eL^W2oC{+GV)&+b(ZkbpfS+Hdza{QhOZb1A6c`L(XnJ<+17v7N z{tqKF0K@)Y0o||+&3_{1e}2Fh$zj{Fklj`~#sWtxK;cOKgdO1@8VJG?{wK&#$cI=4 zA1=4$gr@7Uz+rcQ!g2WgeiJkpb2$Hh2!HW@4E!-t>@-3CHB>3?=0wM4r ztl%f*xj!dYc`_mWJdR-EePP?gJwoc9O*||CK;V5I4qP@lE+n+^sMcn;7vD7Rl@*?* zDLT)24DqkR6MWIX6aTDbsDEGedg8L*M;=}8>o&TUJDyZ9wGKJR2U|#Py2GfVVIXDy z(F0E%e+J;Wx2%OszG|8Cwo|f;)t|n2#k6u2Cp}wUEY;wbrsd?Sum1Qg)5>HVyIM_G zE7q+2t6Z@>V-+u(sE2mPR|!gnK!+V^vq&5Ydc?(z`xN1`bHD< zZ#03i(FD6TnqXq136dL4klJX1LtmQUIWgysd!b7Eocs06a@w7NADB6(yjV$B?c9Q0 zs-?4qB|DR*ISTK)GaYC3y3;BaawY$7KZjHJ)4wwptfh3eXw}kZ%FaAbi=MwqIO|K+ zf_<6poQcWA@6C!+s9QCAJ#pJrub9>Kn`-b~&!|=k#Uj7YE}PZmg_&~kb)L+e&tS*e zDX!5@dD}c=)$OcP#{N;MsW6;UlxZ~@#Q!SKB zKa<3IL`%v28u>#qF1CE#&C6a?7m6URn5%pdOL;I*y!Z^DPRonGnmjSmFe9gubR(_BmOb$i{>rcgnWggy!*Eh-!U^_1=pGE&+=I@vygDOlkO`Kf&aIWSIFHAs9@^^7dqa84YNj zy0sZr@L_W5RyV9Dnm(A&!`qWvShUft8wm#5Y6|NLhNH#La-7c*$XRMNcv%= zhsNoRKkuAw!TFD{s4Xq35t_%Awp_gGPrY|jlfW;9UN{GE;JTzUxMTE!2C#O=VBk-^ zd(+>;`n!(xHvGpTjgNby`Hv$;zIXpSH}#(A-t)aX^5-M5JcEPRo4XkdARa=T_}Z|B zBZauhAb@sYgzWv-n~!pPC%2~<@S3Jw-l&FltZ^DA-5n!JuLN!_8rGsyEu+S{Ksbas zZ?AQQugQTYjfNjFEvRGNe_0C*UmMYejk-2>d+ko>nyd{+wGiPWW3kY1wC={BPJDlm z__2lt|G;_=DqZmRH4SsRF{7AgH0I^e5gRqMpqqaz797R=Tz9#nPbg<_JV7=Zb(D%6 z#rc7`FnXYoGB>Nk(9BJs(mmup0#1+JSvahj8?rl^kHucWU?%@-IfH8nE z3}YC^Xec$5Kz`}OAVWVxzdo{=(b#AdOFk93GGoonFP~G$?!nki3flOqGsFTu)?^Ht z%FE}PiULg^N*~^B&2!$oh4WX@c<^~J1`p=IgE?@|91wdQgDbeMyRDx~cdv)~8{CiU zx!WRK{_8)jGO2m)7yFuvA~BB>LJCTw-C2Hi<*=~Z8v|-nc#9S zmj}2!#N{b2J?h=>np3EiOX58UW)o+f;%siNI<@CaeaR}#Puqz^A!|QUoUS{CxtZna zTy1WC8ea%)YuTBankr6Z%*ryvYYUZlt?bO^adWmfi(1+$I*Zk6Ii5HRtJqToKEbOh zlJxKHhd{zcJ;1;J&5Y;E3wB(jGK=L|s~9g9X5y9QTE1M`V@^)QtA(09j{C-WD`!`| zBI0RLM%=-TW?{jG|GR5gB!5fH+r+T6S3%t=-8ne2InKN#R68t^r> zrQnH;qUa#*8!-Ulz5Pg`gyZ#?foA~5ks}9;$)q`9P9XUUnwy9DL7bzAFq$A=XI}tj zsa&(c%q*91w*zLbv}oq7Y99DE;WYvquy!95hMQk<3yY{(!gR{KWFqzFIea(AHffC#X>Ib z7jZ5q&JD$LPK=+}#_mHdVS@iDKezmppJVDB9qusUC~`Y7gh248$!Kexu|GmzCr05r z`Sb5s8<*71*xY?EimP*eij20_$zMbtVVz6S`<#!Dhg)+F(eJnKg~fpo~Jl* peR2Q3j+mG`Jk%9U&i}9-L|t50z`sG|e*C@s{{h=XAeWu|{{qY$?6Uv> literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..073748321c56db4adb8791561b1c3b0abc6efc80 GIT binary patch literal 5480 zcmeHLU5p!76+Ux4j(45rhlQBmnm6FO48|CfexxSee@g3E4kbpAAXjP*u4hG+-rab?lnN} zJp;VR-L)%pRr|Z^`=#Y#(0Om_RmX0(imq90nwD3r)R)Y1k-8Ut5_}~5AU&hes8_An zk2mPaefLlGrmVRX!jV`KZMs&lW&LFi%Q zOz%z1RTr#j1bT3EPES`WOCO#wc(8U%$F1AeHx-^rIHETuGG-$<>gBrecj+BR{V2|K zU#>fIl1gTNCQ+tol<^@)x~aD>-#qn)>7PeXriT*QWyl~OyksxHt=_n0lM*jSzFc=U zIG}>&>}hxd&LUEM{~sy(Rd^ZWTmwykF8IIr_UUgur@&XPQ6tU^HFrjc?TRL9LZsKJ zyjM`CXlkvisyqB{w~O+z^B}eZeC^t4Z2j8$*|*{%x*CI6AreU(IIl*xN6DrN7#3nR zk%WRWA`XE6?7IMK!zlr)$z-MgBiTR~gS8a+Uwl`EHH;Qr&taJ(BD9pmXXfP?nPL{t?Ms`|_9WbIUTOKk*xb2T+KIh8?7Bl_FUuEaNI!Oxvu ziEqt9Y%G(Aj^tKisU!@+^{dg;mB`RjnN?*%s4xL){MhxYHb% z-IPdCeqzT|YIIX)NXkR-C-l+PDE#s25XOPIOYcBR#9CM{fFHh-PzvJ$bpmxhoLdp3 z(+cB0_LDEpt@uKKuOg}{_))|t?k4_9(4PROFou8sx!(u($H4tD5R3snYyMsy2#0YU zq4Yoq;aMByvfLLFQa>*7AOGswB<7@@&z18sFWq{ej4B^Yk7xx9pvCoJZSwYZ-9g z#Wuc;rK*bZ&vXhDOjKk1{r3{{HM?o%xe9v2UN9Q@M!l48EqgWF+N00TwpzO+2KHAJVpb zR@+?Awjb5DwY7(%6>VEIkN6R7XLPr=SB(6U$d z@6pEos*TTRV~?pq+ZxI1s-lfYp34QfY0B-2e9qI|03tEy)3 z?kZE?&>_vix`pj{EQfcY+`)tMx!D8yj6TE88!?C@@Yc8cb{iG@znn8cw`|V@y}WGU z(HZor)z)i+^#xR$4aY9F@IqF%s;Dhk#HEFVX}sPseo{KpvPEU_J)YM=T4ru` zyEgNAy^qU@t!8!uO=!e4&YniT^*5)#~*>Uxz-5 zKGdhoZ^`-AlKii;fr4QgZ2zG<=*W-x`zh0x2Kiq=+n|ozFUax__i;%a^sU}OM}9XY ze{hKzB>(vV<3KjJa}Me#&fn5uv|SP4~{|3A!-JZBC#_yn+$8NvpF3EpED)He_uuYzz_)-XC(i!0lJkPB@Xic4gNCt%K!iX literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f461efa9777fe39f1cbeaa8bb68a6b7e65e98d65 GIT binary patch literal 6528 zcmeHLU2I!d9X~$zBiGl?jbl5B=cbA4rdi0E>(p)6YzW9i+6~b)?LMH>CVAJ+jjt2O z_H5^CGPaYJflxFA53P6r52P`)?t>wi7>qT2;H3;{*$_gaLK70=y%Kvtn)(0lJ;!z2 zebUz+`QG38fBpXFoO|x^J*Rg3O;h3&fxJ&#td20v>h+*g`HFTFOusCd+^@S)5ZL9AyG2ZOJ=T|n9r=4a|s+?^1A(y z;DNM^MmCeqDZjZ%kM0M5t1lUAiTSKiPORpOi;Na5e|EtG%Na}N3;56{<41n47mAq` zqinW_+p=ELORf13e9aL`g-kZfrpOC=X?-b~&%VgW^u;;oSS#eN*Bqfe znDuPkc!{kuxNP*on_g$~Gz&$4eubfquaU1#BB&dA`^^tF{yy;s0qS^RK|9)Z6*daw z#%Sy^qi~RE>U{mV$%7CTbl)bgk}W{C%zcE{=TphwBhNy_yF_x4CaJ&mr=<&{Gp&`=fMM@)7 zpjMMoTTg}HLPLhURNKbhqFrdS3qok2L1>ha@4veVPo%cJb=ghDDy+@%hF6OM*OZJl zFC`x8ud3d`xVvX)s^RlT71aAs-(OXIk+>%iooWR8qbllys1H}w;7GiCV05Yx3P-)D z521d%s)okmeS5~INd1Xxgw!ahpT4G%S{TtsYI_jh$^WC5xu0=hx6;DKi+w)NzT7TNWG^?eO18OCOv_8tVw68Pr?gS>)Es~n9pn(mgv`7nij-XUY52dra~+-~ zoqp{-+D$`r)>{>3wJJp)l@bwAq2!A9lyyZrZEbiDS{s^fHBU#!VaV#uQxO~CT>~B! z$pQVOsfQi=!H|u<>0iF*>sALv$RqaBkQZbx$k$IiK8;RossPcmHN()aF!)eAr7y!B+xb z*`t#B;8sO>*bDu9e@E!LDk#VO)p~HVA|LV+STUg;e$oa0BKo@(7~enbD1oc{<$!-h zUU+}!x_niT1DdL$z9&4Q2DBC12kOX4CFBfNW%AD*IWQy&X%o=IR@QCk|Y|zef@suJ(4RpWH6dy}Ml!asht{=G9Qwh|`Dm zwkaRqHr^f)Ie>T2qpC&V8J0#@>LV8_d)yG3_V082a})7~#WfDK zENfkXVTIv&hFc7uW9Wq5xR;BWaz4ku$4RWbREU-H#gqk`)a4Y^5=OSTTq@;bxfDs| zQbzjlLb04&eClX=KA(!0*R9pk>S8{VnNKEDxwTcJyqbP`&01f{8tcV{V@FbYVV(RG zdMc8)A*<+e{a5QIE-2Uo_ESu)B0-FRpu+pSn;wg6iz>=ABmqV@gA1{DhXa7m`T)u1)eQrGmTWX@GbIZDA zlq|yTs4o|ZUd+!KWrOHtbFFN98%voKsLgCKpD4gVO(vHHy_sB2CyZpWXs&Q6lbg@; zdeO+iY~qql?1W@9Ic$U-K3{}m0-~q#OL!PTaI0T7l7JQjI5h|P4B`l<03E}a9)FC*ap?4Y91NX0^i8w;vpkStr*9hc zojP=VoyAY1&{jHqm%)ZQ*6o((2Q1!fX`Bj==U4|dueZBC-s?!ucNjZF`z)$cXGg+E z0G2TaTKCTR|0A$qd}sT|So}aM(y8!V9DfFCK6l$)r&;`yOo<};@%;S#eGzng?l4yy eo@4QEwkx5|^K$jCq4H7jPp}tnFLz|v8UH^`i}uq1 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..95361743b90eb760e9bc8a1dbf5365c4a91f1c9b GIT binary patch literal 7504 zcmeHLO>7(25q|sj?V9?RNXkEnWv^)2mj9NLlKKxutR!v|3wGC1Qo{Pj%(L&_;Om39ig62;etTr7TbFN^;dV2bPXJ>QCiDV%%rZ8GkbIx7FIUd_>MQJG1V?>5dQP zy4ZY2TL+b!KJ@`;wW7K^e_p6=9deYAqi&dqMbl?pFwKx&XC`!rt3z&bU1&sLZs1vp z**Pgbz0;<5DrL>xXoC19rz<*t_k^E!MYIaV6KhAYwtz0GLDlyl3 z&b1zWmE=asZ+%sMmrIiJt6x38)qOU&`Bl{K@)ygg5$lKjatr!pM9xC}HdB5NxD>BV z16&)gcBZ~s?R-98AFT5r_5)m#CiIE@<6gsZ|CmL@NijEvSks!mA;Ir|7G0a>qPRQX z(rI?zGG|^aNsDqYT{>dTxH+tA>q;zk?Fjj?H@c*#lV;J6JqdgOdQ#u%^`u`+=|u_t zwr%Oge#5m1@PY9t$5zyrWQgKyp*R=aIKGzJI9rN-tUtzqYud82UMN^A#A(6$vu~8a z`rAC;_2k>gFL z1Mkg}+(Ef?(K=_{9?n88LC&RncPNN;?Z&!x6@$25;M-xn{yknUK{4e=fB3xca_LUs zK4h`Vc1M+MV8u4z<L?5142YkL-+Q|tNu+-rx{V=j9!m*%2x@7}(3VcYGm^x(t7ck8h?aTar^vQe&$T(JqFO}6FY&HAR7Ul8KS+x6|x@8Y9*vt5Zs!;>{`@?>(8 z63rxQ?jTu*60Ia_?Ic;J5^W@F+eWf&N*E+F8c5clM1W)g=uwO-;TqNHUfjBXC)0p7 zkgQ$GG6{8Q-vcuF z(Yz4HZU-TM1+w5SDYQLGED9MC3UzR8;0bQ*GDU;*6`?!&lrG`=6h07g3a-Zao6x-X zfA?!}zX$I3KvfU$x8_FLxASK+eeQeT+VBMVDe2+a;tt+#|LblEUw`5`(i0K0%y{tf zzt*O0Zw?rGbL)l&o7*%$#Fw_vn=J^e+o1KEy#e@??GU|zr#75vc&6cLOlc8*o=2Z{ z5P1Ad@WvBJDn3T!QJ8CbrD!)u6#n7R!n<9*2l)dY{~Yp1J$?cC$31=t`6oR7pU8j1 zYv3983E>$xy9S=pTr_NAxz)%Gx47ly@dZh9~+a zokVgpor{e;ob7Y+*;HR&d?Jw>8F^^pz+`G-C_kDWn>;tU|7_oIE^lWiMIo0gWYYYt zDZ+)ZY`Bog4JF_JV|)m>NHmoj&*wAYyd%C3->pi#2jP^a{kypdz8T$5Xl#oAZ5d8v z#+)#_vQwF%Xeyja4u-Rng+wO(klou8&L<1bJ~&$$jmDk4mqa+iX@qld7?T`xzWhod zN&2ErIH@e00O0cR&N4b-GX#4OEF;{O0nOOZY4}eXo0koLpApdO2aNXPMxe{sA2N=Z zG5s0a=+k#v##Y-nvVgMuo>n#w>=)aw^L23aV zFbt=Uo2IuZ9>@LC+nEEn8-*TbLWhl%+VHss82u%HbgkE)_?-MkJ zb5N9_u0Tnn1wC6vdymlyi|H^sjg}6hJ@kJ(YcaRrayr6FGd695CAMxxt_!%1J+92y zZXPj|E$3lR3=Q1~4GW*#B?TwcO0|~Hg}9mdyy`?U4ZVNZf-_I+#ED~8??JoA#&^OR z!+qaLINi0X0TA*ForeiKohdlN9-d6YDW9<8>2W&|%_ju?qr8w4b}lm3AOpsST3e4x!UTBuRhOvO0a_jvH~|6kyU z6^G-I@;}=%odyl_We_k&VN;Fc5*OB+-h;)n@zv~aulEeP$&LwMKc4>x7__g={}Zy` zz(ArLi|LO+&b?a+Z6(9!NQlcp9LMMT_bSM0mgrh!$^N=KTlwR-EcqoctJ&|R038e@ HT5JDbl#FwJ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..314e9f2e746eb807b47f56a32a0d2e193f7baba4 GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTE^eG|Q#T1!JZn2Y4i%-YaDj@XDU?tmkhbI9+1-hE zXSOr5PFz{`CIwMZtNc8qDiVr>1gV<-MFK=cpymMyh4PS;2P7&KArL&GNaO{H<(!#& zHk);zq2V!CJM*1;&iT&$nftqIj~@J#P?R|VQHsG8P^3&SC*^7;5+2q_cL3t}9)T?A zs8;cri_DvFLk44vOFvQ*??0stEQb;!$nuF7ny6q(TO#Nn>lwRvp(-i;ci)H&ne9|c z@&xK{g~xnu-{=1ll*0DiVtL%>pF;O}Ifk^8<6T{qB{Lww}W z{HLEd0`S}$X1!GPO=HpW9INJk`^9sHS!sBMqT6%=_<>=1760^C-!RNl$+LXF;5W>o z^}|ZdT`+5B4YyqOEpqeiXRY`-W67*Ft-_-1lwOZq3JcA0+44RhK>T(CWNtUWUAG$` z_kjVPA?&=jjf&?s8wKC0)Ga3{lCIPQ9jGAvqttKbK7%(``!KKj(u^v{fjXD^w7)d}2H>N&&j zjE9l)QO0lBwVE6vXAOV3zTnngmBEa~5;m+u89E$@x4X@tIgGao~)qZ`aAD3K$S# zHIalFWl$V|))VgotPP|DtR|D085qolx;U(*p!JpaRanDl`bG}R92D8rH2UeKjf{K55i+GAPq+OKxbLiYKU ztH~tvr;-W%aCY@-CIcSYW23q%MpgBf*|F-$?AGca{N_?>cx)nrm_}@ETVLtFI}5Gc zsg?fmEX0R134JiP5>F+e53XF&Qx{`>k7ibtQK7;psQt&TT)LXP7#l!--_XVT28J?A z{X<(4Daw!Tm`Dw6S?ZH=AN&b@3{{6eUh2a*Fn9hvNQrm@>jm)EdkJM`M4(Qft_7!8 z1nIPykrwt-OPpS52>~q?QB|R(BkH)Dv{u6Y1UQK?T6dm1eQ;+C+!+Jm7~r$!@8yAT z0M`*pcSR7LwNWm~eK8^RBNG4dueM8KPTKigIWP0ltpm!Ca({YQi={K8cc+JxES4_} zh^2E_aLhn!R-Ycmt!^BqhmVYYY2fIb1rya6fB(J2eATU6d9H#{bBkszU$YnTjpd-~I(v-isl0Co)+CqoVF_CKUeJeJqS9@ny#HujK~J)(_0tYt6G z?$L(-s*Ox(!w;%L8;|7;RnbObPv*khB;|I+z8Gk#Ziuf5?8E3QCK2$s(pK^2s;U{h zyUNrxbVzg1cCZ}}=I}0*J9uzDH+{gEGN#yhGlp>l-uiamXrp5Pmvbfs6D86y zza`ga#<`AXB=qL!7%pkSDK+kfaLI`U)wEM>Y(!C_Sy}$!E-s0^zLlHk$nTou z_bxHL{HEmh`t3+j6aXuN&YSs+Ewr%QaYEq*$$zTH*pm(KoV_}V^S5*qZC3=HcklRr z87;)`t$!xmzX7jFHzqEN@%w1zvD@vrOY)zVN<2G+eq27!-&axJGeknh^OAo-@)@{X U&i@F7oAKx603ByXiM{-P1A3MBasU7T literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f60ba9fea3490d9ea9df77e77605ef6028b28992 GIT binary patch literal 22336 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..fe6f05c947b8921e5836a5ea005ce3a96230b71e GIT binary patch literal 10256 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

RaF{rJIQ%#Q zID!)mksG%fXzq4hvtiAK$^Wil;C8UOM3p|QELan;GF0<$yv9@2xf-sCi{BE(s=7`p zo_ya&lX~!igFG_hAZvTsL9_d^gLLw$gPzk;PmpjXU6!u%T-^Uv6}vP0)o zfb8`{W+vq!2g8ubLt>8BG(a}IAI?3NTiJ!-#r8{1pL=NX zkjUMTwt8XfT(gm|71^2;>Dip4*w`k9uYo%X?s}Mj;`6Ba{1T5zdjL=K99`ah!;=1>hO=#>5)@Z9V2T_GZu-lMX`Pv467;4VXhTt#28XPCR$|b zRxQS9m5R>ZM(kkT z4AiM%$?)KG6?5;ymnPV~+4Ib>oLpc(L&#%8d>!#c+w-P3GHsesy~Iq3eT^>Tvl8Qs z$VZp)nHKnT@ijO8)MmwJZu|?I6<>Gb&uvzG!;Oz6U~|qtcjI5$toWuIAIsk6^xxyg zzqVQNy>5Ig>6_F45;y+!&5G}H&5B><#(!$dh^ z3(+HiO0EZj)%AgpRw3dy<8a-**wu^Q6&?X7Pl$i(p2!#S!-Z^y`m@=gGabpHzV=)` zUKk%3JF~lQ&z^XD?(9f9xBErB^!dh6YP@57Bs;u2mrdldnX#;$dy!fTBe~W>Hs7DZ z%bc-(NWF=4er$9!+nUYNtLUpiBZz2d+J6MfNJBvlhxXqy|Hlc5=J{41l`z#yyN}f^PvLCr_DQBAiIz}S8%)&Bg6erC)4?CZw?k8_o=7mFzU-I;Dp* zBCJCg%;QBp+5OoO@i_pAm+gf_A20=iE4irNI4i_^c$}-5pFQ}NaH_d0ay+)Gyn<|O}}^-9Ppu2O#=!hglz{jlq? KRXIxB$p24p?jEuL literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..7a806045114a62b743c114e160799e91ba34eaf0 GIT binary patch literal 22320 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 Qee`0XfuDgHag4VAKLBl*!vFvP literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a3bde14472fbbefca676fd06511508049583bb8d GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e0802667bb079847ebe9161ee09b80691654f2ab GIT binary patch literal 11760 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 IHZCv!Khm7w>;M1& literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_linear_22.hsaco b/machine_interface/tests/libs/resnet18batch8/tem_fused_linear_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e16dd547f9f1698d5d1ae6d691a0356bf33ae8dc GIT binary patch literal 11680 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 literal 0 HcmV?d00001 diff --git a/server/src/main.rs b/server/src/main.rs index 1f7fb7ec..590cb43b 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -345,18 +345,34 @@ async fn service( "/cold/chain_scaling" | "/cold/middleware_app" | "/cold/python_app" => { serve_request(true, req, dispatcher).await } - "/cold/double_matmul" | "/cold/lenet5" | "/cold/resnet18" | "/cold/resnet34" | "/cold/resnet152" => { - serve_request(true, req, dispatcher).await - } + "/cold/double_matmul" + | "/cold/lenet5" + | "/cold/resnet18" + | "/cold/resnet18batch2" + | "/cold/resnet18batch4" + | "/cold/resnet18batch8" + | "/cold/resnet18batch16" + | "/cold/resnet18batch32" + | "/cold/resnet18batch64" + | "/cold/resnet34" + | "/cold/resnet152" => serve_request(true, req, dispatcher).await, "/hot/matmul" | "/hot/matmulstore" | "/hot/compute" | "/hot/io" | "/hot/inference" | "/hot/inference-batched" => serve_request(false, req, dispatcher).await, - "/hot/double_matmul" | "/hot/lenet5" | "/hot/resnet18" | "/hot/resnet34" | "/hot/resnet152" => { - serve_request(false, req, dispatcher).await - } + "/hot/double_matmul" + | "/hot/lenet5" + | "/hot/resnet18" + | "/hot/resnet18batch2" + | "/hot/resnet18batch4" + | "/hot/resnet18batch8" + | "/hot/resnet18batch16" + | "/hot/resnet18batch32" + | "/hot/resnet18batch64" + | "/hot/resnet34" + | "/hot/resnet152" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From 8ef5479fa790be45b12c30b7ef01f96eb725dd6e Mon Sep 17 00:00:00 2001 From: alrusso Date: Tue, 10 Dec 2024 18:27:26 +0100 Subject: [PATCH 143/176] ResNet34 batched added --- .../tests/data/test_gpu_resnet34batch16.json | 648 ++++++++++++++++++ .../tests/data/test_gpu_resnet34batch2.json | 543 +++++++++++++++ .../tests/data/test_gpu_resnet34batch4.json | 545 +++++++++++++++ .../tests/data/test_gpu_resnet34batch8.json | 592 ++++++++++++++++ ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin 6336 -> 6336 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 10672 -> 10672 bytes .../libs/resnet34/tem_fused_linear_21.hsaco | Bin 11128 -> 11128 bytes ...pool2d_add_miopen_batch_norm_relu_23.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 6576 bytes ..._fused_add_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 6608 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 6240 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 6528 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 5472 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 22336 bytes .../resnet34batch16/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet34batch16/tem_fused_conv2d_17.hsaco | Bin 0 -> 10616 bytes .../resnet34batch16/tem_fused_conv2d_20.hsaco | Bin 0 -> 8976 bytes .../resnet34batch16/tem_fused_conv2d_3.hsaco | Bin 0 -> 10624 bytes .../resnet34batch16/tem_fused_conv2d_8.hsaco | Bin 0 -> 8048 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 22384 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 25176 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 12968 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 22832 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 10624 bytes .../resnet34batch16/tem_fused_linear_24.hsaco | Bin 0 -> 11856 bytes ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 6344 bytes ..._fused_add_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 5568 bytes ..._fused_add_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 5368 bytes ...i_fused_add_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 6240 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 5568 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 5480 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 7504 bytes ...add_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 22336 bytes ...add_conv2d_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 23464 bytes ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 13328 bytes .../resnet34batch2/tem_fused_conv2d_6.hsaco | Bin 0 -> 8472 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 14200 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 17536 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 6488 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 8712 bytes ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 10976 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 16616 bytes ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 9664 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 16320 bytes .../resnet34batch2/tem_fused_linear_21.hsaco | Bin 0 -> 11432 bytes ...pool2d_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 6240 bytes ..._fused_add_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 5568 bytes ..._fused_add_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 5760 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 6528 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 22704 bytes ..._add_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 19064 bytes ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 22696 bytes ..._add_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 20800 bytes .../resnet34batch4/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet34batch4/tem_fused_conv2d_12.hsaco | Bin 0 -> 8872 bytes .../resnet34batch4/tem_fused_conv2d_6.hsaco | Bin 0 -> 8464 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 17536 bytes ...sed_conv2d_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 15080 bytes ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 16616 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 16320 bytes .../resnet34batch4/tem_fused_linear_22.hsaco | Bin 0 -> 11440 bytes ...pool2d_add_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 6952 bytes ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 5568 bytes ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 6608 bytes ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 5360 bytes ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 6240 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 6528 bytes ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 7504 bytes .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 5480 bytes ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 22336 bytes ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 23464 bytes .../resnet34batch8/tem_fused_conv2d_0.hsaco | Bin 0 -> 7576 bytes .../resnet34batch8/tem_fused_conv2d_17.hsaco | Bin 0 -> 10616 bytes .../resnet34batch8/tem_fused_conv2d_8.hsaco | Bin 0 -> 8472 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 17344 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 10256 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 17048 bytes ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 10264 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 22320 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 10624 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 16600 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 11760 bytes .../resnet34batch8/tem_fused_linear_23.hsaco | Bin 0 -> 11680 bytes server/src/main.rs | 8 + 102 files changed, 2336 insertions(+) create mode 100644 machine_interface/tests/data/test_gpu_resnet34batch16.json create mode 100644 machine_interface/tests/data/test_gpu_resnet34batch2.json create mode 100644 machine_interface/tests/data/test_gpu_resnet34batch4.json create mode 100644 machine_interface/tests/data/test_gpu_resnet34batch8.json create mode 100644 machine_interface/tests/libs/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_17.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_20.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_3.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_8.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch16/tem_fused_linear_24.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch2/tem_fused_linear_21.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_12.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_6.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch4/tem_fused_linear_22.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_17.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_8.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet34batch8/tem_fused_linear_23.hsaco diff --git a/machine_interface/tests/data/test_gpu_resnet34batch16.json b/machine_interface/tests/data/test_gpu_resnet34batch16.json new file mode 100644 index 00000000..7446a40e --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet34batch16.json @@ -0,0 +1,648 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet34batch16/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet34batch16/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet34batch16/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet34batch16/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_20.hsaco", "path": "resnet34batch16/tem_fused_conv2d_20.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_22.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "path": "resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_linear_24.hsaco", "path": "resnet34batch16/tem_fused_linear_24.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern015"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern016"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "kernel_name": "kern017"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern019"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern028"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern029"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern030"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern032"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern034"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern051"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern052"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern053"}, + {"module_name": "tem_fused_conv2d_20.hsaco", "kernel_name": "kern054"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern055"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_22.hsaco", "kernel_name": "kern059"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "kernel_name": "kern063"}, + {"module_name": "tem_fused_linear_24.hsaco", "kernel_name": "kern064"} + ], + "blueprint": { + "inputs": ["arg218_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "var_20", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "var_30", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "var_39", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "var_49", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "var_58", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "var_68", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_92", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_109", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "var_126", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "var_143", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_174", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_184", "layer3_2_conv1_weight", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "var_193", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_203", "layer3_3_conv1_weight", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "var_212", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_222", "layer3_4_conv1_weight", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "var_231", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_241", "layer3_5_conv1_weight", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "var_250", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_260", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "var_269", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_286", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_295", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_305", "layer4_2_conv1_weight", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "var_314", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "var_325", "var_326", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 51380224}, "buf2": {"Absolute": 12845056}, "buf3": {"Absolute": 12845056}, "buf5": {"Absolute": 12845056}, "buf16": {"Absolute": 6422528}, "buf17": {"Absolute": 6422528}, "buf23": {"Absolute": 6422528}, "buf34": {"Absolute": 3211264}, "buf35": {"Absolute": 3211264}, "buf41": {"Absolute": 3211264}, "buf59": {"Absolute": 1605632}, "buf61": {"Absolute": 1605632}, "buf67": {"Absolute": 1605632}, "buf72": {"Absolute": 32768}, "buf74": {"Absolute": 64000}}, + "outputs": ["buf74"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg218_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 12544}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "var_20"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf3"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "var_30"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "var_39"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf3"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "var_49"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "buf3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf3"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "var_58"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf3"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "var_68"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf16"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf17"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_92"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf17"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf16"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf17"}, {"Ptr": "buf23"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_109"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf17"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf23"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf17"}, {"Ptr": "buf16"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "var_126"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf17"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf16"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf17"}, {"Ptr": "buf23"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "var_143"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf17"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 34816} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern030", [{"Ptr": "buf17"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf35"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_174"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern034", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_184"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_2_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "var_193"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern034", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_203"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_3_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "var_212"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern034", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_222"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_4_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "var_231"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern034", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_241"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_5_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern032", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "var_250"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern034", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_260"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern051", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern052", [{"Ptr": "buf59"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "var_269"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf59"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern054", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern055", [{"Ptr": "buf61"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf59"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_286"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern052", [{"Ptr": "buf59"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_295"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf59"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern059", [{"Ptr": "buf61"}, {"Ptr": "buf67"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "var_305"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf61"}, {"Ptr": "layer4_2_conv1_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern052", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "var_314"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern063", [{"Ptr": "buf72"}, {"Ptr": "buf59"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf61"}, {"Ptr": "var_325"}, {"Ptr": "var_326"}], { + "grid_dim_x": {"Absolute": 1024}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern064", [{"Ptr": "fc_bias"}, {"Ptr": "buf72"}, {"Ptr": "fc_weight"}, {"Ptr": "buf74"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet34batch2.json b/machine_interface/tests/data/test_gpu_resnet34batch2.json new file mode 100644 index 00000000..8243d8d9 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet34batch2.json @@ -0,0 +1,543 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet34batch2/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet34batch2/tem_fused_linear_21.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern010"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern012"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern014"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern022"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern023"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern025"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern027"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern044"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern045"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern046"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern047"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern049"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern052"}, + {"module_name": "tem_fused_linear_21.hsaco", "kernel_name": "kern053"} + ], + "blueprint": { + "inputs": ["arg218_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_78", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_95", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "var_112", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "var_129", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_160", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_170", "layer3_2_conv1_weight", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "var_179", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_189", "layer3_3_conv1_weight", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "var_198", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_208", "layer3_4_conv1_weight", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "var_217", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_227", "layer3_5_conv1_weight", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "var_236", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_246", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_285", "layer4_2_conv1_weight", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "var_303", "var_304", "fc_bias", "fc_weight"], + "buffers": {"buf1": {"Absolute": 6422528}, "buf2": {"Absolute": 1605632}, "buf4": {"Absolute": 1605632}, "buf6": {"Absolute": 1605632}, "buf16": {"Absolute": 802816}, "buf17": {"Absolute": 802816}, "buf23": {"Absolute": 802816}, "buf34": {"Absolute": 401408}, "buf35": {"Absolute": 401408}, "buf41": {"Absolute": 401408}, "buf60": {"Absolute": 200704}, "buf61": {"Absolute": 200704}, "buf67": {"Absolute": 200704}, "buf72": {"Absolute": 4096}, "buf74": {"Absolute": 8000}}, + "outputs": ["buf74"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg218_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_9"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf6"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf16"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf6"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf17"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_78"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf17"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf16"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf17"}, {"Ptr": "buf23"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_95"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf17"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf23"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf17"}, {"Ptr": "buf16"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "var_112"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf17"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf16"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf17"}, {"Ptr": "buf23"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "var_129"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf17"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf34"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf17"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf35"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf34"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_160"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_170"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf34"}, {"Ptr": "layer3_2_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "var_179"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_189"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf34"}, {"Ptr": "layer3_3_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "var_198"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_208"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf34"}, {"Ptr": "layer3_4_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "var_217"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_227"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf34"}, {"Ptr": "layer3_5_conv1_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "var_236"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_246"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern044", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf60"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern046", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf61"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern047", [{"Ptr": "buf60"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 10240} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern049", [{"Ptr": "buf60"}, {"Ptr": "buf67"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "var_285"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern047", [{"Ptr": "buf60"}, {"Ptr": "layer4_2_conv1_weight"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 10240} + }]}, + {"ExecKernel": ["kern045", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern052", [{"Ptr": "buf72"}, {"Ptr": "buf61"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf60"}, {"Ptr": "var_303"}, {"Ptr": "var_304"}], { + "grid_dim_x": {"Absolute": 1024}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "fc_bias"}, {"Ptr": "buf72"}, {"Ptr": "fc_weight"}, {"Ptr": "buf74"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet34batch4.json b/machine_interface/tests/data/test_gpu_resnet34batch4.json new file mode 100644 index 00000000..f5a62729 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet34batch4.json @@ -0,0 +1,545 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet34batch4/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet34batch4/tem_fused_conv2d_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "path": "resnet34batch4/tem_fused_conv2d_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_linear_22.hsaco", "path": "resnet34batch4/tem_fused_linear_22.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "kernel_name": "kern020"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern021"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern023"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern025"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern042"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern043"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern044"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern046"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern048"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern052"}, + {"module_name": "tem_fused_linear_22.hsaco", "kernel_name": "kern053"} + ], + "blueprint": { + "inputs": ["arg218_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_downsample_0_weight", "layer2_0_conv2_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "var_147", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_156", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_166", "layer3_2_conv1_weight", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "var_175", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_185", "layer3_3_conv1_weight", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "var_194", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_204", "layer3_4_conv1_weight", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "var_213", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_223", "layer3_5_conv1_weight", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "var_232", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_242", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_273", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_283", "layer4_2_conv1_weight", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "var_292", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "var_303", "var_304", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 12845056}, "buf2": {"Absolute": 3211264}, "buf4": {"Absolute": 3211264}, "buf6": {"Absolute": 3211264}, "buf16": {"Absolute": 1605632}, "buf18": {"Absolute": 1605632}, "buf20": {"Absolute": 1605632}, "buf34": {"Absolute": 802816}, "buf35": {"Absolute": 802816}, "buf41": {"Absolute": 802816}, "buf60": {"Absolute": 401408}, "buf61": {"Absolute": 401408}, "buf67": {"Absolute": 401408}, "buf72": {"Absolute": 8192}, "buf74": {"Absolute": 16000}}, + "outputs": ["buf74"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg218_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 33024} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 33024} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 33024} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf6"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf6"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf18"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf16"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf18"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf20"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf20"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf18"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf18"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf20"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf16"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "buf18"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf18"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "buf20"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf20"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "buf18"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf18"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "buf20"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf16"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf34"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf16"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf35"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "buf34"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "var_147"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_156"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf34"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "buf41"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_166"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf35"}, {"Ptr": "layer3_2_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "var_175"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "buf34"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_185"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_conv1_weight"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "var_194"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf34"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "buf41"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_204"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf35"}, {"Ptr": "layer3_4_conv1_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "var_213"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "buf34"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_223"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_conv1_weight"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf34"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "var_232"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf34"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf35"}, {"Ptr": "buf41"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_242"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern042", [{"Ptr": "buf35"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf60"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern044", [{"Ptr": "buf35"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf61"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf60"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf60"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern046", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_273"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern048", [{"Ptr": "buf60"}, {"Ptr": "buf67"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "var_283"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf60"}, {"Ptr": "layer4_2_conv1_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern046", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "var_292"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern043", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern052", [{"Ptr": "buf72"}, {"Ptr": "buf61"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf60"}, {"Ptr": "var_303"}, {"Ptr": "var_304"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "fc_bias"}, {"Ptr": "buf72"}, {"Ptr": "fc_weight"}, {"Ptr": "buf74"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet34batch8.json b/machine_interface/tests/data/test_gpu_resnet34batch8.json new file mode 100644 index 00000000..6265612d --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet34batch8.json @@ -0,0 +1,592 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet34batch8/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet34batch8/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet34batch8/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "path": "resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_linear_23.hsaco", "path": "resnet34batch8/tem_fused_linear_23.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern005"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "kernel_name": "kern014"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern017"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern028"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern029"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern030"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern031"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern033"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "kernel_name": "kern046"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern047"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern048"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern049"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern053"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "kernel_name": "kern057"}, + {"module_name": "tem_fused_linear_23.hsaco", "kernel_name": "kern058"} + ], + "blueprint": { + "inputs": ["arg218_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_8", "var_11", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "var_28", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "var_45", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "var_62", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "var_86", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "var_95", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "var_105", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "var_114", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "var_124", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "var_133", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "var_143", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_182", "layer3_2_conv1_weight", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_199", "layer3_3_conv1_weight", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_216", "layer3_4_conv1_weight", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_233", "layer3_5_conv1_weight", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_250", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "var_259", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_283", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_293", "layer4_2_conv1_weight", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "var_302", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "var_313", "var_314", "fc_bias", "fc_weight"], + "buffers": {"buf0": {"Absolute": 25690112}, "buf2": {"Absolute": 6422528}, "buf4": {"Absolute": 6422528}, "buf5": {"Absolute": 6422528}, "buf16": {"Absolute": 3211264}, "buf17": {"Absolute": 3211264}, "buf23": {"Absolute": 3211264}, "buf34": {"Absolute": 1605632}, "buf35": {"Absolute": 1605632}, "buf41": {"Absolute": 1605632}, "buf59": {"Absolute": 802816}, "buf61": {"Absolute": 802816}, "buf67": {"Absolute": 802816}, "buf72": {"Absolute": 16384}, "buf74": {"Absolute": 32000}}, + "outputs": ["buf74"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg218_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 6272}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf0"}, {"Ptr": "buf2"}, {"Ptr": "var_11"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "var_28"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "buf4"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "var_45"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf4"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "buf5"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "var_62"}], { + "grid_dim_x": {"Absolute": 3136}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf16"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf17"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf16"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "var_86"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf17"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf16"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "var_95"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf16"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf17"}, {"Ptr": "buf23"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "var_105"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf17"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf23"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "var_114"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf23"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf17"}, {"Ptr": "buf16"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "var_124"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf17"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "buf16"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf16"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "var_133"}], { + "grid_dim_x": {"Absolute": 784}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf16"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32768} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf17"}, {"Ptr": "buf23"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "var_143"}], { + "grid_dim_x": {"Absolute": 1568}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf17"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf34"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern030", [{"Ptr": "buf17"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf35"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf34"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf35"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_182"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf34"}, {"Ptr": "layer3_2_conv1_weight"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf41"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_199"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf34"}, {"Ptr": "layer3_3_conv1_weight"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf35"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_216"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf34"}, {"Ptr": "layer3_4_conv1_weight"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf41"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf34"}, {"Ptr": "buf35"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_233"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf34"}, {"Ptr": "layer3_5_conv1_weight"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "buf35"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf35"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf41"}], { + "grid_dim_x": {"Absolute": 25}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf34"}, {"Ptr": "buf41"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_250"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern046", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern047", [{"Ptr": "buf59"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "var_259"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern048", [{"Ptr": "buf59"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern049", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf61"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern048", [{"Ptr": "buf59"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern047", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_283"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern048", [{"Ptr": "buf61"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf59"}, {"Ptr": "buf67"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "var_293"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern048", [{"Ptr": "buf59"}, {"Ptr": "layer4_2_conv1_weight"}, {"Ptr": "buf67"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern047", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "var_302"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern048", [{"Ptr": "buf67"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "buf61"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern057", [{"Ptr": "buf72"}, {"Ptr": "buf61"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf59"}, {"Ptr": "var_313"}, {"Ptr": "var_314"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern058", [{"Ptr": "fc_bias"}, {"Ptr": "buf72"}, {"Ptr": "fc_weight"}, {"Ptr": "buf74"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco index 103de0ec9aad2303fecc2b93fa6bec2ca5434486..f0f11615c432abf8f8c3ee1ad242c74495c4d45b 100644 GIT binary patch delta 190 zcmX?Lc))N23%>#b5HKB-NzY)HpGxuq?UCB)=jfqspwTAS*RJ+r+HW+$1Ya gub^`BM}8Tm(&EYd0u~_3Q=s3N41+dv3vOix06N1t0RR91 delta 190 zcmX?Lc))N23%`N|0|NsS5JP}Fh!TgeMVNsy_LEik+uf4QQgU)~%#9P1D~d`|^OF)w za?)~h3QWx_iqlN9v&|E8O^g!L3NlK{%u~%v6HU^Ji_G;3Dj7PYb^tRkI1m5; diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco index 9e4ddc1798c4884ed1abf23719f3a475dc4ef159..f9adf350f4b42c4fbef655e6b5fc9e894a9c50e5 100644 GIT binary patch delta 169 zcmdlGydikQPFX2k1_QQ{Ex2SEk~CicmfWveE)$|+l=S1}}~S5>A~6jzz2m?oEG z7FSl}S0tvTm!>6UR+tu)nPr$}RVJDk8|9dkWaU>BmsaLhR2J(MR8C$cXTg+SHTj90 OuQ3@WY)+B);Q|08#W`RA delta 169 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 N|6glFICAXe{|8^{NOk}K literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..7587170e9f4d4709ae4c9344375af4c480693f57 GIT binary patch literal 5360 zcmeHLU2Ggz6~6PE-Lbu1+nemxNt~@?+6dy=wc{u*N~t5#mX@R~G$@Vwu$kSR-JN)L zW-~Lpu`SEqq!knql^>y2NT9qx1B9mP1Bi;BmK9F^7n`be2j?&% zLa4qAH+V3@7`H<)`h8@>z}N_R|L6xP+>!4<1{xvR6ZZIZMT4O^+rJeXoQ;y=ej>>4 z#gF`Hd|&=sQ0|WJ9{Zy?{}T97>Xg#GAokVm4->}LhZ!jp6Vlvo1F-Q&t+mp#+>3x2~WnQv8X zw`kaxb+=OSO*HeZ6*G24Zy9#eEG$}1`R&l8P;6EzruQ)cV)q*$dA|WN_ZuL4zXA4r zY=Bp2zVo4}+&kYtE-n|kv;Ur6_1tEo;G5OD=>&y}wPcnHxIXL`-BpGajg*FMRh`(+ z?~8CdW$?PX#Oa`iaSQ#yo|dhKRfd)z2R9cBQT@DJ-uGh{b)m_ z-VGVQVc9m{W0!S*xn6YbpYmY(Vi^V&xs1FUGQBSE=;w@+E%a8%z>dhqZtEg9~rID6p^Hz@#sUa`rV*oD>wXCW?s-wErH+ z1VyfOWciVHr_%xY%q1pHGWN|I7a;rfjf>X?M0HJLu~|vd<}bwbLi|v7;-<{j<&KzIW32r=w~b?L0qoh<7^(y^QI;XD z+KmfYY>SKX8r;RRq9lUs#7)N5MI0Z*8}5i1jC-gf?pQkw3(_3Ec&(F6ia-1PqlZ}X zwbk3H6pL+7YO&{2Yqv8Q_Pf-0?R;uiZJ7OGb7=eIR1z=&*q*q!s_jg%cJ{)mwmZcJ zx2LpNI=iZkB$>u;ZN^5fOWKn=)_jOBkHutVOq1hhZf)L9UY7LOfoKmGH7IkNC7=q1?KOSh&7HN_NqCvc?0x7{7KDE%hL`{iGl0MU z?U}2&bu&kyblWW%cFwknxyEu(bDabFOg`sZfjJEo_@YrY{V<7Kfzrr%P_kQf^OKJh zlH_$q&9oa(BjNCI_LYY<78hxnr7=NCKdhvVE4xl8J7<-NQ_aVfz3O3QLY-E2Nh`WC zF{kX^ql`;&UD+!w>B^qGGNnGN>``-ohru?d>;oKEpHoJkQN|xvMq`tQjwoY)S5o;e z%A&Gc`pjWjQ1(eLJ*&v7E`C*ndBo2vC__3je38m>lF`1Tw5UEiW;rm5&t~BpCwuJJ z(d^8;p4ao>{1L4iM}!Ju|5gKBw*RO8W4hx8CezEy4pg*EuR2Y=X81M6pC}JJrh9JL z2n?nN=2FnLHtJRh#HQ`Jg$8_RSxyz?X0cf<7{#JzwurNwic54iRA^*d4tCphsCZD9 zGri>2vHE9NTL(rFum%nx6(X%PA(Y*$aP-u3M~*-9`K|NtNjaQ9{N{{~FA*H+`;_9- zeL_6?;&ni7bZ-%Ufg9rWgMGmYb{pMi!@zye>A2)i_ZHz4wrE?Kj9wGW35kmx>pIK{mbLv7<${Iz@Uu$H~2kExX^11bU&X18T!+`Pv;~OL<%s% z)|bFR5TOZuuSDkq4>*^Q^9nBD;C;1b4+&?nlgvtG1CPOaoV;Ow7 z+?5lWZX`m7eIZ28{{8z6&|u8|{QtrI`TH^Qr~V1Q3mV#ckr5Jju%MmpKH-i8L_6xA m&foVz*0;o6kJH@$YL~n7pngg677!oipWqv8HyLv5_x~@;8wAM! literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f2c3435fdaccf5151fbdf7fdd526e15ccb923119 GIT binary patch literal 5360 zcmeHLNo*U}8GiF-F*%YbN}^3hwq-_E6Qi|;v?N1H;WRSpBu#23Y2v~Oa-fIgaEZtn zdS5U zCSxyNGV8^PXBrEZYg;w%M=xJA%yPrc6`ZE+vtJmdTlQXk>5^d~E)Ij>p1+lI4CzfXJN&h~H^|)SU)M-)Vq- zpBdmqn(u62s&voyFY_z8&g{QslwGIU$az+|ZrOgWR9&`;Ib0w1yUr@ZiiS$FRxR6+ z-`*le^O@fpb#pmas+oRn$#EA%SkQbV!HU~v-MWCgCObXzw$X5_i>7adfxCLWXn5g< zO1v2`UZYy8i9L3~@K)-1r}k?R%vdPGz(SXyHv^{IBkr4j2;(To@iyG( zTuwLdLsZjm6lgq_@fJ&?Y~sUrK0foO$#?N+isRYQi;y4{O-us2IT@r0aYj({;@%1s zT?C%_v+NCa4iNLjrhSjS3~-gn5^J;8dp|q->N67i&Q(nMJXg}+=6qaId4==X2HJyc z{9lSvku*(iE6RPW-EK>&^1^w>#~J&<)w3{y^^J3v`?$8Iv&fVz>vQK7ZJeV{;cSq{ z)?!Nk)V6K0Io5jWn#R^610d@M8E5)N8u|!y$FC`DU1{^g8e^>|g>4jLOJL8o#?WMt zaYcc+S|=`Ku`SA#HMozbxXeLz{2F8H9LEUp2HQM^acA3n$J$9)l;+^M%k6la|K<<( z&$9S;S8pT|EV4bWN1jZq-AJX_`-#!YnZ&NjAp2l*VEgz)954ph8aubD?@X{(`s}K{ zJHh(5C-g`%y{Zqzna-|nMux7)`olZcJczH1L=<&ISE4Um-@FmOBKJcKJ$Yqse{#oS zG?~%|kiX}?iGgHlF)HXN`^#oDIi*C{pEsirOBssj>X5FV!gye#MaLAaFSghKo<|if z4{E%n{A9JID6FLcYVbB``PUdhZ*3O&`8F9}|lg&++{UxIdsH z2Th}~!hE;tJ2t(MS;nt7GQQ&$Dp2M&3qa+}n%nd|Co{doPQc4lVIM-DiX{CzHozok zm;wC#Z_iA{saqKeWz?L4SL!aUh%Vs=hS|75IW#w!9#TOpemXxKOfJ z>(=KVDI_WCj*3-lK#hdM$Jtl!)mfC&G|MBBn!Hy{98-54S9eaSW98<9>R#=TI;Ksk zyX4b`IyR&3-J_1mQA6D;FB|HftU94RuI|w?fQP^~qwWJ7)t*p?A5%vkREHzuvxn7@ zzp07r*A=ermcMjJk<@+ivyZEaX7F!um`D7)f)b>yz!#~a#2M{NN{i~Vqg5M5@#Qpp zl-&*!N)@Hq00I^kbom>Mxw5oO)Mt!iVp z9fy(&bvZK%P93X%hPAbC<^e0<5KsZqN)tla&2mScd*bl1$G*CC9zHLJ^M~J@;qfIx zAbp=we7aAFM_;@S$c^qT!mkNKyne7RSiw%C`)m-nkK1jB{OR5zoDlY;Cx0Pk_W*&h zNl*72VOkiHp7JN$1A46WNl*7GVYq)q92`S;yB`>ok^hFcX9?%Kje+jvGay5My7%dv zgo023M%a21I0zy%q3@OOeBeQZM*jy9X@&DopCw-b8=O<}Z;12N5dJ?T1qOrG(>*)( z2{N=J{|AuiYQ6r?gRWPG=D!mCpXl;Mve&jOWVc)$1A(IzK=>qoLRa{Q27<7J|MO%h zoP$<7n* sNIR;<%EM;to&ACR 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 DJ}nn| literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..368ac012f7bc456c034b079e18b5435d6dc0d0d1 GIT binary patch literal 5360 zcmeHLU5p!76~6Nudv@3B-F0Gjn{3?8(ngRSJ4>2PQ3@N80xd~fXsR~i!5Q0Qd$RV7 znHk&b)oRyCD}JN$BSa+x$_q3=XsSMdsQAh9z)L6+n^z(fAt89+DH44_!kja6&&2Dr zG&HZdTF-ax`Mc--ojJ1`Pn`IaCe0;Qn5N`8#VFwx^=@Smv1+39fogLVYP2P=y;&vkN z@5YYoX?~yon_mv*cbDVQntu-LD0B+xZV<-`#>0TI4PizK*@U$AJAf^KEDLz-LD;+d%CS*vF3vfei8Ewiv}+2z+ml|r#qshIBjIEdY=gXFzB$lR-g?7ceJ z|Go}hqV>*)s`B7^|G3yK1grm+UUi*Tv*4N4hH3kSinU^v3%Eb*7r`#Wjz&VGZdL8r z&+p))`k`Oy4P&KHsT+QweES!@Pv2CZ9k2E4}GjZNoPs#{;8Y*1hOJ zrQQrXUel`A`5C*Ud)-FSssEHa)0fLIvB+fN&9F0Q@`m0q+GfRdV15|t((C*b`!G4v ze+zoml06TAKRDj=^VQ1AV|jy4d)st9%dx*L&|M5~%=RbBCMCEvJm372E60J4*>E#R zPPg+Ris?5EG+xVOk7bcJ_x7*fIrr!J-{95c*E5iFm%!zXF9N&07$k}C5T}-S-iibR z1m5}c>$Bc(e{lZQ=LGiU>lpM!QOa2(|S!Cm4Vm%>` zF6`KmIKq0*-cZ>_Yz%m#z!RCanFar$?9>gJZODBwwa!@Y8Lk^g-va2f?LJfqc%m$W zUp4RxQS69|@;c<=1yK@#cj^XX8zRmR{Ehd;4EkN{i@Vm(z=pKOFI?>>lj6^Q|HvXs zer4@eD#ctil-Ok82igs9DK?76GZx&OPr2KUdv{WB1q0jf1K{Jk{-nF3oTgs|2I z`iESuaej*9zy8yAkUYcXR9C*t`&=yoVM6#&VoH$`$@GJX31Je(7j-5jvM{iugLG0o zI0dEb9(HgFJ1>r$9(e(SdJcY}^H}hH6xlp?I*vH-Iu?0NJHYxd8sp(=UKiv4;A>bQ8m3V_*{X)&$&>tTMd(a;NT%h zUU$^YdJ}3SoDr5W%0n89i?s66l%S*^Qc@?C-KQ3mnbWPum3`__Wk#J>c1x?eGIL1T zw^x~#;<~a=TG5rgd1X$0O4+OC0FQ!hPT3DQtv;gjHk=Kd+z+>C5m%D$7Ym=aRyr`s{>d!z@0Qg>Rhfi4(`O z2ao7^JrBn3(E>jrR1gQYE8w>MKlLBeZO1p6UhdjZ(K5YixAdCf)fj&w-*=hrI%UH* znC_b^exPkMtP-%zy6Y60@S$bdRp6V&R<&Rhi>}$Go@G}Yq61f)X}gjudg za*CgDFUYahCpqO+!sz^RKRAcM_6T&4NA{aM&k`;TDg!;-&jAnZDeu!gi5QUpl&}p2 z@F=iQg}zs!`+*k`8vP%HhZU_qeU^M2bZ||{zRB-bliPoj1n3Of(D3Z!yYNtt>>tC< zKpVFI0?3AWsQwc^{tE-PNDk{(Iq#0tF%}w{Aw*BICv>@eq`(Q2+n**y&L8SB_;9%+ zCRE)_ga-RVh@Qje_v;`*pTqJ0gWL1>V`NX`6MhFIboL@8B!agv)B&7135a?$KHb0X j18-=H1B)}<{z}lh{h)D)^BNHEW}n~(Y!4}N9Jc>2oNEQW literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2b8eb51159c044797e353851e2ff6dcd6d035291 GIT binary patch literal 6240 zcmeHMYitzP6+UxkW?AnNd-mZ+jKSme8mNV5?Zt&{MCg(dN+}dd6P2h)%h)^nz`Hx^ zePKsvy^u- zB=ujeynD|1&f}hY_s*GnuUDQtdWcCGQ*@OF6V%J?2qwSJY@4`7P|cOe4^sdT_@Ijer!9^P3LSowYpd6_ZyEQ~G7r-d zgXew>@h{>h{KfcA{(gS;iN*>fmAC$4!^17RoU8^1>0j!v-yoe=T7|33HhLNZ8q_sdNEc(&=pIrFc)E_7W z598=bcVFWZ0rw_kUHug2lDuxOD>@iT>5uRxTtZ5DQuDkBFCn=JsswFleem;(KmDEr z&)=kEFEd4dfw73BvfL}kGZtJWA4yemZAIDMYPZ|SpS`SjB3}5>&5H_ymDNkv9$~Dx zSySRt$diE9iQ94l*_K9 zW>~?O$?4m@u%h_1k+>Gxmgr-VX0N8l8TeL{m{%YaNd(yTrlv*Xq0sh3KbvfZwVm<) z&}4%0l95RT>;9JlfO4W z{?Von{(<=(QhMO;Yd(zW*i2xYiKrV#Lu^9#1)TVk(ZB@8=e*-P@q}^?=M!YT*+8nu z5nLY_3**;N)}DChmNvsqNwT*o%i*R*V+pV!KwLrGBYT>gK!{d0%!wh z!_bDIjSs00DUe<|Il@rSP_K<|W;8cGvL&60zA|I2%`cx9@b(E zTFT4kTZ#fL4^j_4ZLRa}x`hkZPselAvCuI22~ZewOTR?XL}DLgkWm|3gp zCLc?Q^kWq~Xy%I+{NKrAl6;q#vkGP0)zXM))2ZSnqKAo}M-EBq;Fuadrf%_^Qb#-^ z>Xx{=?dap`xaWvE>e;PEJ^R#%M_xA6(FJu|LftW{Mt7^*Ce_htbwpl5c+c4W{pz^9 ze1sIEGip?Rc3&(WQ-{y0!6|k4adnIAyQmJ!4P6bgXjmP7Obt$Z*N%Th4V_Vg6e2A9 zj;JAo?+LpQ^c!kOuIp-eTJA9vrf!u-bwxtODZL9YJJdVn^eI*G80>k5KN#RE8gQH1 zR`A9~Q8Wn-=yjB6DVyDfT2}aFYsyWtXF+Y#6RjAmhGG0XFOIgIN zxq3Eb&dpVdHbZ@wuQf_vw}vszt9VR4#T6!P;8+Wby-lI8w$P1U(iw1QxOz;@g5L# zeLeFyG=|Q$0|ml_zc`l)n(Q=2zFUqVM*i!s6LH^26N_#Ap3xOuW5FZ+Dt^dU6ms#r zhImyDMelNdd_~;XgukFI)C#`Sa0{Q{KXoa) zMCY!c8>2XP0&cXOok5Wozn_3#L5BRh^Y;c_3$dJpz35BOU!X#)U1391=l*9nNZ0dZ qC;Au9@2iN3wZlyv(&GN_cY?@^eg*s+WFF+dkN-blt1#rW+yB2HDen6K literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b34e90034a8ccd8dcda9f590e24b384581dcee02 GIT binary patch literal 5480 zcmeHLU5p!76+Ux4Gwb!*UaxnREt{XZ+ieo6?0B;Y-B3}w72B4Iq$!k8Dv;c%>DKHqX!=oiZU-CN-?+sij)cFrCiHI!owQr4nQ2=V~_a@f9GERXyA^T^|>bCqrdsjRR(sxYNK{JqRGa^DZ2>jv6#h>sjv zc>Jj&05800Hp(^MG?pySvFiSJUOsD>)uvY{xh*Gv9~!1t^-sO{reT)Lp5^-mziF1N zSF3fmXx7gdZl&T|bb3E!MCan%Lxh<`>0heQ1`-5!;gd?q-!+mcGZdh zWRsrU_x#Lgm`4khx)~IncfBPU7A?P1@Pj#K!#YDBeP-Y6&yA*MFPnkY4ct@eS;Oy+ zhp}@}#&6p7x*Q^B41c9jbnCCnV8&7z8`hiipW5C+&d zD|iQU)si!fKo5@2>FH|a=qG1P9<0lj=i9FHU4^F-j_A#ajM*5Ddbw`=O?nTaegtQF zTdq6vl1gTNCQznnlxahbbW<1Ky>|SM)4zzJOb;cp%aCC{e92yb>%DQ^CM8~u+H&35 zXG(u#VC6jU1LcEV659^ch4S zim!;VHAp6B6T@ldBq*K^>q%+{Kzq0&l52>EJ0e3k*AeNp=kNph!za&oCbHs3zu7eh z*_T$YCX+CjN+$Hf*|n>g40vddjq9oySJhu-Cu+yD+iJt`+e@j@iKz@?8nM0O1y&qYzX-SBNy%+ z8p$jVj%-P!C_lb)DmAiYc|gho@MrWfR2}|wX#nHE{JHlaCE`u27r@)^C6w7QfjWV@ zHk?`&q|;`{+SpHRacZ?K1hiE|RfV>WsN;^(UJd&b;5f!;-+Auz!JRR1XAGR@v*sV< zfp7@d5K4DN5S_JAF3Wu}A@ySt|NgIzOJYvi`CPdm^U|#g%7}7bdQ^+0Gviy+BT5#_ z7Y4-AIV?D4pf#)S9mTC~JM0}jGXCYEXNR7lDt!*0D0DpBT?GuwkdG7gZ03Sav`Va3 zbw6rUdQnpDM`=TD(Z7~>QQ`*@BiHNiz_SC_;r$y*i^XI0Ik&XrIj(zbpKVw7d(Hj! zek*ujZWfOzjcQ}AR;d+(YH4X{an5S&UoINW703sTWO<3%i0Rg{0GQ=nj?8sqQ3GxIgKVdXiLQFlvbJzuwr`Q}PcbDe$0-kH2_2i7#6 z)0fPu2=l4OP*`Vo&G7+%)BO$G#M3s&0rE1@>X|6_W^fROzUAb5+$0 z-d$zt89JmnXgk=B2XlBA${jqoklTB}m@#J9c{7G_1m61g+-Rd>|Ce(n7>*lQV3b!J zJUW9>by`Nv^lKpBqz^nWJhyBHCK!QrGzh)ThFwCnRrlON6E9@8Q$@X1Y*hA1}2^^S2$^4ZROsfLfCK(X1*>my@MI5jp6UXK~O<5|X$!(Qe9cA-Q% z=C|eg%sAimjD-Gt9@WI>{emZSSJ5>@{Lop71fRf%T=<^Uoi8*oG4cN=vRd8#=j+g? z(TDn!`As?Bnv(x*Hc&83{p~+=6CL?6e~vOesh|H9wDs%A{fsRCa1WQne&6a%bmVtU z^81&Vett{x`~7yNC<=fTLHEsk#x`15?mD6HP04?z&)Am@@0|TQit|A_incp~?z?~d zzk(Lx_t!ro_wn&AGZMHg#vh=X$8N9dZpnX6D)HR@e_uy^-w+8IFG>EplFz{9 Ua{k9C+>E~<2k3Tol-SSzHwO#$KmY&$ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a5419b81bace61d7d1710d487c4d2d62f98a2062 GIT binary patch literal 6528 zcmeHLOKcm*86M6)v|LgviliilmL-~&6;-j8G96n=inaRaziT5$DkqZP2u-EgyPuQy@x;qCkxzC{Xlnpt%$X`~SN$ zG(|g!Q(ryc?l=GI`)6inhdWb0a_lH|xn?MFia=gFVf9APseDO7-850)9wdGu zgIa`Z#xdW7Ta1jO!u(K;aUWNJdT3?cH($E@84tpDkrgjx0{cT`ALZ5U1LqUEx=s%cw&RGbl_i@%#n|M7r1VL zEduz^@!5w@JW0se*Nkk^DjE7|vzRk8r5`+hQ8!YBVqzh`oGX(Tb)%Rnoj>=QZX}aM zvs6ly3dVx@^He53Z)9H5^NWim6WvPb=S=0IUNJJuX5w@@mweT6Nz5-VE}F$pAyDp= zz;~wvp*tmrd@8|NK3rpttJpqVznEW5*n{_$o+{>-3yG4M%9^=yVllm9CKEWk)vvrpQZrX*D~a&%DgY^wUY`SS#edHyoiob zdFUTDb>>wz3Cqwqv-}oFsfFAG0A4UVCni#hD-TQ>e6m)|Vkw=^{m{i znDuPkc!jMqxNP*oo8DmZ3=2hneubfquaU1oBB&dA=j{*I{yy;s0qS^RK|9)Z6gCRv z#%Sy?qp+W88hrh^$%7CTbl)PclMO(&%-zE4v#I3ok>?@eJtDbClQb^TiTYlM!8 z5A(c@j(q)POHqC{M7#cC>wt#`S7OPeB%UZ6BW z1!^@Zwe?g8E^W$?mug$sTeJ&pc0mX&Z4w$KocslkzW_rU1%W+)u> zqCSNB@tPVMi}&pspC*lGt`SnFq;cY!M(SZiAF1y`^ppA^Vvy8#chjMo7jpMN?rs{b zc_Cjfb5@M*wDiM$noF+$!R;MEv! z5AbR`d50M9FyoCd-aR;eE;?8vUT<9M(WZ&d7uN#*X%Y;^wSoR=5(>q&U18|=iEA>c z`wi!ix0)xS<1l26=A#iC;avkB z70Chpq^XA;`~HxPzL{UX@9S0vMaU!e(vTNqFUZ%AK0+GNjjA~3t4VYITGvU9G{WoE zu9!wfdNfry5~+4|!I~4|r*L;)Knm=ys!<z9e&aU{v!Ij6&T+?Z7YGRd*y(? zA}@WgeOL<5Lbnk4Jgj~R1f_XL6HRAN4 zy=}_Jw~e<)L=NB`^r&hPc!s6XN@L`Fb+=nlzX5W@GX^p|m(lap0?2#Z@Om4mB`EBWQ} z(o)H=viDCF3Wtnhaq8gVLd9Gu9kTSoDv6b|g;+UXT(DqsySxCkgpnyOmrD8AYK8n1 zdMc84Agkzd{a5QIE-2Uo_rbt#gz8Oq@lCYUio*@uzXe;6jn}2 z!-u62xopcL@=qZ8lH^}FCxyQt`G@U0JsFh34@&-u6j1g`{@omc%09{eIVtdODHs*0 zv|E_aMVAy1PDXYpg2Lna4fB}rwNsKP>-5_co`@H^)Py3!SC1(A;7p5^wke64W9b}> z$Ab|#BZ(Y4HXAuGtxxKc-1%m-d8k6R*f|sTzzOhK_Mb%0<;y0~ldCz{QWHIuTh=Y3 zWD#~peYr^VVm@h<4WgILm9p(^WYY_vHZ#S1q5uaq>0Ao*=KOLhVa(4L%?g*&xy3xM z7mXauCN9~;PDm!5!$#QQi$yplAo@Z+i-!>exB6vc9?*gSr{*A^K^)-}fFx$0di0^= zU->d0k2^&iPh2r@YTAWY81nNjZszM7moXL>C?3YwQI3x=M_foS7wiG-!q-<^#y)H| z^E{rfqZ~(=KezLErY8451-ZGMue%&0%#qu9`#BDS9nT)PJ;_!)j;;C3c(4!ceShh@DYGz z%z@UubN>GbEEwO}{xKFm(28^_JQv5Gftt_VcGnpe|149Yh<-dje}7*F9iKbQ)rJ>X c{M+qHsPnvB{cEV)D*hSv;_c>+3_Iih2aK%r$p8QV literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c6bb3f2b47b51e44bd14388525c16eee79dc5c14 GIT binary patch literal 5472 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 F{}-BNa(w^* literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..31199cdeb9b9973800d6ceaa077890b2a4db3b8b GIT binary patch literal 5480 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 KVAOG8`~MB)@rK9% literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..22d870c9364d3ee7ff7a4b7d5ee4f56ffb2d2d46 GIT binary patch literal 7576 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 K5=0jd>i-j?M4tQr literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d322c3d40db247178bfd2eab38b18e47ec6fb524 GIT binary patch literal 10616 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..02ec5d8aac85869450d9f2ca1b90658d95cc01ea GIT binary patch literal 10624 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 U-+{sh*}vfYKYmmY9XxFRUjgb7EdT%j literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..86dd2ec0a37ff56987717658872b93d739b97ee5 GIT binary patch literal 22384 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 x;TZ1yab*HiKO(!x;2#m$6b(S&~Pku$M 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 b@6J{t@6_w4zmLqF;(uw!uW%e~oFD(cPk#82 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..26b8561129702054926b02d3f31f7cf786232029 GIT binary patch literal 10264 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

;E&PI=k+u-17#Q} zTM9}=!f-@nJxt@bIvX5N%M)HPF z3fjM7Fv)>Asx9pU|7=ikiGp2fHFEhI89%(c#6OGhO>GhTF4ewEwci~vP}I4v>L!O8 zd{1(Tw@2*fjaR;m?zNX`Ba?^J{_ChR?lZYBa(8kYseh{4)Bkpl|4gdV|Fm)Y$xD$A zFQ(E5muM3{5&H-RA&qR0SKO%Dm*66E{AaT6E(j;Lk^azf#mc3?*!QIAVD~^m_LKcT zt=g-1BF5|^eMRsvBxA8Vrp4HwRr^M@4fjB}UZnp>{yvKKNbIPp9O|!DYR`^u#CD|L WNb^(JxSV}dgQ9_-o0;&LZ2uq4W%CjM literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..df1d5c3f2309b134acbe3c945a8a5ebd6dbb7900 GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_linear_24.hsaco b/machine_interface/tests/libs/resnet34batch16/tem_fused_linear_24.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..cd0fb8fccfaa4f0d986702b8869650b96cb7c2b8 GIT binary patch literal 11856 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b98941fba28c7ec59d724d6c4cd2bebaf895514d GIT binary patch literal 5568 zcmeHLUu+yl8UJ=}cYD5b&gZ)$Hg0@(aop5^y=Oa39YUd3n$l8|Cj5y=MWxH$-QFMj zZuh#o=h&8IU(%|eDr!|8T2%r?LeQXwwh016MWN<_m$W=2c_cy+5-JZoMNkPLaeT8o z-{pKxX=q+E^4@R0KfiCjnVp%P@%keNzrrLb%fK%IxCWA_bI6MNM%1r7sBqmr2;y%7 zVxXd0#wY8Wx8Q~dMi>-+T+MkOS$JSx2u1sxhbi39Z|4FQfmz{C2wgmG%JzHSke%F& z4PS(ffT#!_L-AI4#Hap!f@+Ja%5M$LKYg>#x-ZrHhk)ihoBiKg3S=apyQ)bwJ} zHXJACH1vY;TDfNB_1am@DwQ0AyE)YrBX~|*)N4&6w@@{UZ}={`e6v(C?2ic$yxjoN z+YK;$y8+U-8(`vN13W|HJ?*>7-Q)e!{Bq74{kOHUZ8aM?$0*kg)6JEtOGYur-w*uC zd&~GnJ4U@$Et|n#Zqal1`+lv}^`%^?rn|Wlmc1atqUDbgzHw8p8)x~fnVy~djn=TM zi@Ixc0(Z4~PIEdFDsjOVoJO@)6LajW<}BCqR_%2WOj{^o$2ycxUGRl&%3InAebFe{ z7WR*)ntemeVi!ASxNoCWE|^mY{K4rxHB~MxeSTV}*}iDlPSrBMFVR}WC9$P&TP%R9 zM(j5`#5(Ik{UGiX8{X!0V?X5n^o(GgyGL7)=DP9s-}&(5pQe7xmnLmH+|F&AiWmgA zF&LZ7T)0nYvSQ!b;(!XC+9`MoP9ySsc~PH-7Z5IkB0(Ekzx&~-SH3C1cQ5lK&M-Os z9AjgW!YYhKHn>0P#{MPC6-iYCZCTz8?RHyIkoSt-u;LF>p>fc3}#`bMIOS%`1N{j+z)BOVX^LjlyW&8>t727hiBFB2>LyBwI9}H z-dBt_&}K0n_pm!~`rURi$$s{Sd*>kez18cn7!1T?p}xb(wd?6LIB1tfnGB;K|2{cZ zIhh=<#NoY5gQ?x)3B(v;Yxn8Zfn7;xO`KXCxF-qGR5H{zlwQR+5Qb})`r;P@;YX5d zfl*avqp}>Czjo<*>|!8_{BY{xF7#iFq|%{5F7MnwKA1``hDALLe?gxw%MtkVr7*^U z?1d{Z%7Ra0UI6E>grufsdR6bXFY}-@P#I9J~zs;Gfm8{$pVe z34KD~KmXIVc=foj)4B9nAq%$-NQ2Tnk+>3wM2GH<3`#L1+7-p@ZJnmBD}r`6$P(k2w=3;x5%^Ihp_PB28lLZ(b09zYF|_ zz^FJ4_^vm8UAyX9CVju5u%fS28pesIYo=bUI4c$X{$g{!IKOu`zib%u#^U^*m8E*U zlD7&c8uh(PE9FK(Yb-;?tv52RWfv-Vm~IxZmeXr?({ZfKiVihQLWcLTRauh$9oYsF z7M?Nw{cmQbV%3cdh0{cvuk2W)%ajLE{h3EVQy=*vs5}6#Ok+Jb& zP^}yAiMxhLiqlQSs5S5;#{0`hQ`s4UK1OdS5SNspol4@6vg2FI-Lp!vTu$v&cB#jd zq?$o|K%G=}d`1}wL^LH8Sb1C-S07hWXc|`^KyyZ!Kpat@P-0Wc$QPB^QDx*oC3bOc zj}retNlYv8{Yqly3o=ti1CyF8DT%<*v?qOzOA~=(t|F@%d!FIodasvX@9+rJmhna` z%Tc@&i_$fJxaMHh#QyD1;~gt~@Zf>;%sy>enTvOYlCK6McvgwbB!g}^VaLt0;-LgZRHwx(W{ze)EoI`Ij86I zwy{W3)ht<5w{;U|2T5LFpHi!uJPD6pvhkJxTEVLGy9n@;zN_aED@gEbKGKXJ#7h9= z4m|n9Lx;Zl@a9qZiLMKJGV-Uoi1ojFp-JfW^(EoYp|1u)2&iKvq10?{{vZ1pghu XC!lso{smTU#{Yqsprhm{u$TW|aTO^! literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ac7df00d5b238c67ce4edb107cf084d43e27e5c3 GIT binary patch literal 5368 zcmeHLYit}>6~6Ph-Zr%s0CM~l!wz6D%4a+Y-V?7AMxzW zW@dJ6BV%vUNJJvyB}D#!@&_6qG*y3qsDQ>uAfZqslD||aLLmO4Nc0aK0fGo*A~6X`oi& zw-}mt;g$$S7!!V|M&5fC42*?Pw2wUK!nS@NR-h1)KVc6qP$ffmc5Ej$MK$V_;K`uB zA0F{(d|&v7Uk=81pY73{e;#<$b?VanAhs2>haJY!ha*a;CZxF^0JQ|R9N?3uPCotI z7a4o$hS4b3JVReLUE8$0Z-3*uZd99Yq2#n|pZ!QT+^Tow;tky>mtE8I3SQGFnJ-r@ zr)XH$bf;4BOmy?=Uom6X^|oQP%))ZrF254G6pF1%#dO~%Kyk_09#2&k*duxrNWBpVF)0fLIu!u7BT3G3&ysEDlZL{J!Fh1<+;wxeo`!G1u ze;sPol06B4KiJ-rlhw-Vi7A72d)suqx?_JwqO%yDn4M3wr4=|eBH#R7IPU>HX2Y!@ zIc?`dG}CVsWIUF`9hO7g#GAi<`}|)fe}hL;9M8ZmLV{KlF$rvYGRP9)tdJH(-ii!8 z0=99Uy~-{FVt+-sqYX=Hmv!D?zeCNXub$0y-Z;lD-9+6FE?jwDVqd$1gSaZIxr?$q zCULn2^4Jws&B=0V3t19ZYh6|S2z#g71^Mh%RU4DpH}70fWwyC>`R0%;Z=}@Nv@{T3 zV4dgQQrV_98kYUh(9wL$jB+lj$_6DhzXU}yC5y0$;bItMPS zYmX*bd@vd3ncO;XVRziU%@em2?Wy#J2k{5?!i=1~d;4DemJ$cPmbo<^&!pS2Og5gt z`Xgf#iA=Vw30Y%*1D~TRXMeq|L7V~T&pC*rCe(HlP~ocFQNOp|Q6al`nr|_A6DINe zO{hHlJ)DDwd*I<7*tG}ft~ny!TM5j&P)0%s@7f^$P}t)_pB4D;ce)OWXM~;Zl@~=_ zxJ4lCl|G!xa3wXo|3j(0QX1Nqb*7|p(6FL|HLV@bz*Y7jJD$PH>BNhP7qC;$!!HaT z3*L`18xldEM(lYV%i>PkqdJOYeEfMoIy3lufmhZs(D-iMcWipIveL@z%#2%htkP_$ z<&@4Am*?h6waScpZuZ>D^6H#XD$mc`(`$|P>fE&FPEVVSS-rW&@_wV4_Z_!XgKKW9 z1X97U+?MA#`ITArW$3ZW-h?()N%~J}kV#Om2k`g5nfaR2F!K~jx15q;<*j-#-(2%+ zjy9ShF4?aiF)5^4lKb@0E5gEV@|1C0LFerV^vs3S)LqFo5z)DZ)=YI)o{W^62iD>_Y9xjUg zzEz>yl{yAPq8UQ;BtD@l_>qGUOu;XbqtN$N8GNkl>Jz&DAr%sigb+RZ_wU!if-(F1 z|1ZH8@5zWy?Gt_%EVTC`ClF%dt$ao((}3tl?bG@DKIr>xP`?C1X%Rr>;i literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a5d325abdb04ce80101bfe355e786c26431e7cdf GIT binary patch literal 6240 zcmeHMYitzP6+UxkW?9b?d-mZ+jKSme8mNV5?S;TLB6LX!r4$OKiAq$YW$c}O;PuXS zU)Tt(7g8xvgi^IXQbkpTRH>y3d8>^YH4Tp1{-LRa;b&2WD)oPa)cmQ`?Kv~|nq@

`6|b01He0pHtXeo{`>&b}t5~-fPagOB*sR4%*t)oDvS@eR9DEjXp0 zNTME5DS1#MeMrV)%j<4l_N;o41hHbS@FJG-U?6+(8AhJUlimV@u-HfMe{$h(Q-7ck zJdCR+-F=Nu1l*gDHTBb+OYyqBrs!ZOr9Z-(a0w~pNzL~nyoBT?s1mfH^})|C{`9*N zJb#mtz04Hj1;(P1%JQ!u&sb=Md?Z!Lw-se;tKDuRf9A5{i~8Y5H!ms-mRBxadxWv( zMqNorVP6tj$8RI54I(yhKNh$QEDGd@qwQfz(+@)lCJ!gW%-0OTNJ5skBm>N7LhID+ zjj)U_lT){QVOi1ik%S)JlI&yAX0L7}7-%ag%qtj21))3_vf#pYKwyVi>Juw^(xjG$|dr239^B?}o0++E`Qz5k5W{3ynn^t_||!?+=oH ztf|32FyDhp5Bz;q!w!Pp`M{$AK%DmZZxtbor=CPW37!ZpI1okN81ew%J{1@!~#CnVhmc! z%ja8)0xcg>A3klZ^WM6J3)fJ1_<1-757)rMHE`b=5N92OGg#N%HpHoW)HRGJyxx10im93KfgL!+Y_}HRtW#`Y@^+mhbSZJInpWS7amtX})s=!Cst0GDN z?tKI#Y%~J=``3FqJv#0RfIB(_bs+W8` zEz*xy@Ss^(u;Kqs9+Tv|#JpWB$We8Z@1#278&NkU z)GbGzP{)0T)luJ0HRju^Mt$;MM-4?n#Yv+JusYP+<;+P{@tN#-hCdkKD;jW{+E(z! zMp1MS&yAP>v2Q<8DB*lPZr~k&apcGWVQ4+3uwt^=(Fz1{FIwu01!fMtm(mXnNoJYk9 z6BG|o&n~D(-WHTGT%wlP?u8;U?;=poh32)miFG z++T_MOXcm8cH0sDqRt8$0nRq?Qvd(} literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..dd189e5ec1e8966b6d0fd96444e756738768877e GIT binary patch literal 5568 zcmeHLUu;`f8UOC_y`E#Ij$@l9WQ*gbSr;I=PSW%bWiW4a3`V<_KNYQ*)o%ldl6t30BSZZ8DzHx5zo zqgur$?U^^>x(vn`kba~l-v2BVm={d;W3~4_w~O!d3Rjyust60uOW}SEHk+yptjucq=c#T;IQl$Bai)k=&GPC ziTLQj{ZAY|0`Tk`Mm1k*82W-~*UU=e`!8P5jbh!-B)WmH+t1r&J-$!lUcIt1sN7Ce^T&`*Nm!po@UL=?EG)_x?Ns0 z9J3R+tJMp7qcfr6mpq|SFIOsZj-A&VC#zYj@|p~$FXXXf9m*#zc|tekO?}B&Gz+$c z{i9UVugh8NVCPKdEtHD6+B5<^IK8K*i-qOS&KNw~7friSwrVdaycTguY${}n`f%0A z{bpFMvp&=h;!d&dZcexML-OZm1ncA;X+e^76YstK!RbFw|BjX>Z#!fs+lC?s0d5V( z1~UosQj?bZ)+Ps3P-i}!v0rU+=;&Tw&>gs~9HUO=sulr#QqXpNK*k)TKR{>gk z+G6YKaU39OLlNOsi1g3h7Yn;Q^bh(_CpPK=eWHIg5E!2Ghepuv>FfQlrcysK-auPK zDefU>;Osl?L_+-hj}PsE#0x7oqfr=$MT32Z600|pNob&585Jswg8GNVcRtIeM89=i~}LKaiuSI*%x{|vFaQ3t724D z!zXTBxf#9eiy%KVc6mGcFNVjG!9kL@?VA`JOD=|FJp_M6pU2cN{N+jr<3Re-H5e6v zXD}~-i`Rn6cwC@Ppsr53^e?WdiomIfHf=oKf|pkW>in7*ZsB;g#LFu!A)uuqsw%Yn zh<^O)v{q<*(Bm}5ZQXnBjlsP+aBmKL=p5j)>ahIog>d(vGVFnOR>%5}r9CM1af$!> zPursEacSps>2p$+ZXHktl?THy%@>Xg-5(xQqS(IB!52eED~A1cZe*8b)O0r-c+e@g6^rvcCP z)~{oi9jnIQZ^$hbPR%Vg^9$Ad&T?^SdA{mcyGnDrvN>aS-OiQG<((&9 z_Oi9OE4y2-pM;cCt*0Ez&Xw>m-OOPvV^r*BqhY0%3Q)l$RCo_tRTbsm;VqzGp^WkG z!a#PcM%gi^@tnV46wQX0L@L8+q-?wxl&dCu z?5<&w@^n)&D|I}HQGaPPwQWJ@6a0pJF-05Nro|6x4}4R*e@;srD~@f`w)>B234aRl zVgHo&z^AkkUs%`1e5an&Cj3uoV`!T2KaA#-Hi3WC9ptg!PVpWac zomiHx`9qomwcz+3jzMjN&I|C~QTuUU=>dj4b$ zPt>3nYfZgmG)f?UN$=R8+g9Fi4A32O*>Sy%YB`5$vtnDBI$re3wIb@xY_pg#vRT_) zWT{*$SX{S_8qN-u+`t~CQm#=FF1=vmEdlhLRi(QK&`IAhvWO)lcr_1sMlj+f05bcJ zJ@x3puY7UisC;~h#*1BHx#}1>T=nCN6C-Oyhl!@ypVYwlivr|3AR{BW*(; zwA&W*c^_n)kbJf?U#j7gSfSW#=Y5kgDIM9)`7@58o$elN=Y5*7GoNJ~Z`Mlz;URoT z$NY7AZ?@%{E~bVPYywtt9(uF~695pBIX za^JnhBlT`Ey}nJ!@AWH4zUhVO{4$@hCHWl(S$S9T>+C4?J)(OT?bVTMT7I7=C6A$Z z{=bR_;`ioXlKdeiO60Z}e}sCTyWOrW$v-ZYc&2duxP4x~uc5wYinxp$lK-~kGjO{s T{}L;=LKX>LLU>5Z0}>UAkPv;2AQD2toHKKe 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 McF?7OOjqjv7oc)+CjbBd literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..30f53319116c010973bf209851592c2c26a816dc GIT binary patch literal 22336 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%0D5V^PVb=a zC)r%tpdJ%DMY&`|FSkgH_yc?Na6?z1$=*bUGK_TgqdF)_uN*@|e)~O2kAd z<|=fvh>23fL;&UBO(G^r5ECVOOq8tO%44ETkBI%#&mX*b+Zg9Tp5#zWl&o*U_pfiv1#W(r$3!3z6E~7QXty2mwl@iRh>5`Vt>!Y` z&wc)~?dV6(lRS!vlJ(n!yzTe%m$4 z-!1p^mwbgo z+Z!cj#2gf*OKt{Ur@@YO-^}o3EBNq#b&Y{&N@HnM0gpdbax0C&sM;8c&IFpYnbKx0 z-n>otT+>#LGr<;ZCbUy4g{;z&Tu*%G7C~>>%#r)}R`__ZO`8aHXcK`>ZKAYW3xGdR zZufv`&bgg@3hVwh_;`1NXy3U}V8@LD+ct3|AI$oc&c9h=MUYbjIewrY{nP&C+M(08 z(ESNEm))xSEPQ~~PzdSU?d5|YLN-D|Oi2EUL%sI<u=HkZG}pM3-5>v@usl0kApLe34%ib8TAo95k%c^7>`UIqFmy{wQ|5fplrL$8Wt zdB*ewdQ~(lDI^blD3})|GmLqGJqz`-TwOnI8+0;~49F#a^}%0_kY&tT<&m()ODM;T zckgG&Gw2&L;_8`#^&XbQB%p+~o&oW4D(;J)c=Z9?NMxBn55Cpb@0`;e(EAy#zyZHQ zcff()#We}S@8KHVJRd_lo8BHUUoYA#dV8bZ9`^@%d+D$t6Zan2aS3FJaqsVkOMYdfdqzKkquJ^E7~IFR;5$7#?t0h@=$??ckKyPlnZJ*b zfqOvKU@%N~P#hJZn#4U6YakGIl$GK>#?S?)WgKtkLl<0Dd>@VP1TFaP|6409k`>=m zSqfkwqaVV|4snpDz#imIr!vND`|O_DTOC<-BiuVda7`^hI3~?rj8dPY3;HOP;yR3NtRR z3O(FJgFZP_e~np;WxB3QhS25PS-HJ;1e_Ly_cz7+b7bOPUXGvNeWLq#iF@K1xEp9E znSS(#J8cfgwG^A*zk5hD5803UrJ_H3s_4&}Cg$+oW=9~-4)gCv=?-Wr?rEkuT-qJE zZp%?uF5M0GrR6QW8~j=R9bzi(2B(7mVF%{aj=P?AyDv2_S3AYb#}6AU$5SzW=~y7+ z>_6$gdFrgCMP?5>a4#A6lZS7Ji2^F)duc^4*PzVU#8VcsJ5{$k-J5JT-2=iH(7iso zTbYhKh>81sbT`rJ6?YTUaj%d5cY@oE`yzZzf!#Jq*qzYf_4whZh%YUZX-pq$hP%D* zk2T|WIeDK>7w?my&&0i7y7OywN{sINGTis&{i(vI%qi$=fqkd-zHs+fW2q+XsLAYO z7$^QeTqg2M^kp)Ik6NrgmS(Oo(tKNR_tIhsvkWVbRmJeWEk+srV7$=j-_qa4;BP+g zHy_|WfcFyq?9(%8dYO)B^r!+D4wC%APRJje*ZK2rSK|1Jn6Z<3d%VB!=gov*y_^6; zreT@Yp~_ZUcAhoUU-akz1@-;Eqr;I= ze3_B>zxG{KyZXjC4;6$`Nk%-*w~;tjh|3$Ur-%As{J8|t7w9TpKMU= zeu&NTQU|b@YJ74|lPIFUdnjkJQ`Zd(D$C?P(-Rn)>QObTP+hrBHOu=#swc4L7WKA`4fw3iz@)qJ07FHcm|P0CZ_4QiQDUPa?r6H?7+UuX=db(Kbt zLeO0P1IA`Ks_n+>)aAFR_5#&^RJAWv!v$Pu*sJDy)w)-bC9UR?>Ws3v;m-+rNDV_T zv=6W5QcfpJ5&Dpn(4Uj?zB(}e&8vy{|5FhRt(c&D__$y`tG#O3GV-0(YSwbNT)h|G za~-A-qpapjv)*4sK zlZcBetO3|SbqmYtQllIPTRqq&z!nGF1lUlwuuN<*gJ6q+EoNwtV_-uaaK21z6FOTw zdIWh$ib5jT7L--QDr~HmUt}RPX;AB%>inUaE8lt<%j!C0_F);= zqT}ZX5zSJaQ_Wqa+Bd0rrT|)^Za(8M6{_|!)$vQ!S*hkNSDkz4uS05f(9-Dm1VrpL zc~ys;7E+xi=o|$2RY$4ne56cQG#Mp`@chx z|11<~`ahsZLy{sPQEGT!tsVdGspXXX&cA-LGUZ$;V4y|9jKFYVS186durj2sH_8Rr zCgj!-HU_VngCe#FxfNN;tvB8y{{r4EmI-HtYX1i;A}dB!W|Y5xJq4TYAFws9L{qbo z{BFHm;!PGueLTU1(B1@5@=17omb{Pl73$#wEs_;@g|~(D%WU(46rK`Gq}Y`$06{2@||P>yysCS<&q8~oMuTb+_Mw3hneaJ)z zzNWv(caN$xNeA(-T{yq-$AZ6cJPJN4Rumh3k071}uLM-FDKdcb-YPGCm|+ znown^Qs?~;;BqAV=s{;Pk^24j{5};64GfNUu~6ry2k?tqEYvfwH>9IT5815QNlp+J&gNgib z`v6YMi4qqqn)F2mND1D&dl>gdv5~0I%9&KFeiaaL8osc=IQ!- zcH(_|-k)_j3BT8i^nDn&E787IZ$FO-MjdMxm2tmKv069bblbajHD<01vBQB7^h z2L5#FxK1GccY{APM)V}a(pNb2;7%2{Ucoua}KmNn@U%Iu)cbEtYW+dpo~yL~z25%PUueHqZ@+jcdS$(6*mafm37unl`$cT* z+UrG46ffxupG3Pv-R;OMt|QvX&4ME!VE%7n{t^{mLWbHe*8gq2J$+5F@JaNQ!23W< z`0heJc9STz>6Q3Qi1Q`-Pq^v*s89Hg&dQ-pZ~x@NO5_v$CaS-S%!jr2Y!Mtw5{x=7 HZvVdlgZGD! literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..98b2ceae5bf132adc63af65356d4f5e862ca756b GIT binary patch literal 23464 zcmeHveN>#)x$mC$i(wdsVVFz?LdeT7Arl}2Ap|j|Iw6om8YNAWNFqsq0C~X)5Fi-6 zaTpLWb$P7U+vRP&J;v4552MybPwVNY1{*bE5+$~t)SDYW>Q|#yZ|*%^XZ5z>{+_+x z7iNgDwmGNwkL#?p`R!-#XFnf%KhJ*m%wA^3;7>XSfzmT}g2%dGWp_qURNpH-hV=U>7&()ZWCNEe?^GMHX7 zaIZPp7MdiZX>I|b16N#AvwGb|#%_JIc~`5^*Bri~t+%T!+V`LDdN|y?v!{3aj_y5O z{qFCCn|pWmeRJf|aC2*GZ(CpA_P(Cx9c|y;8SQRqj(#uP-QM2U*3Z5Z?(4X@&HiwB zpgFpyZTk%!U9I02EZbZ5w70kQ{sjT{OBDb^FUgp8T$Y>sy9?6Uvp zf_7qW`f+$y^WN?4(dPc`H+J{lV2VZ0aT_wKt9e)3_b4mNDk^^#?&<9qXzp*D5}cs* z;c(wn!p?h45Pdxz(WuB__Puc5O}kpUqYs(F!Z)-cQKyC+JMx&I636@?d}H%KTYGOe z93)#K-#533et6f`{}WInnyyE zNhed%$Ca--JcUDUC0ND&JfW#JX-IR1hBa5{R?Qu{&EW{9rf5ZSnijeo{WAJf(*@na z*r8=sTZUG|AeS{sjCfh+{?RL}zD%v?K;u2PP&>{v6T{j;+gDjp;cc511=V6l(Q=ay zu{#l$4%&Qaj?nFl70!a*E77My=LmBIFirqlTbetXGpHZkHjXhVukjJgimaF&_a?>T5gtWMnFJ7{wN z@60)9a{}+mJ7`M>-W@n-a{=!uJZQ@Rey!-B4Jj~jZ}^}s6ZrM=gEkNFzRH8PEZ{en z9kh9Y_g@KlQbjr0mL@4NX4<6{JBw0^T}Ad{cTsAwr^r$4Epit7i_(j8id@CHMH$6; zMebs~D6=?F- z$Tv4PPf7^A1I!efLm!WhCXdTIs3 z+ZA9nW3vcXGUg+!VQlu`bI=t(@^VSOq)=NeqgV9QD*mX5o?6Wx8_`p1_+un`>S}(} zj-IOHZ$+Y~zR2GqL{F_{EM>ByqCAe#@yg1ooCk7-CaVxvpeM`9j5wZY@nu+Vmh;5m z388aQfusx`7xkj~s2>yc;svO`AnKuosE>>K!eZ2)7xltLs2>&e1*NE)egti(KP%ej z%cwsi>H%zvgGWTYAO-bbin^YP`qQGGk7OJi6ZO1w)M-61H}f(izh?2^JE31KT1Cyf1=Hu(Dv)jJ`FzuM8VzWkKDHzO}qh$0l1@ zaP5q~b-d4wjlQyA{fxd1ar{^>qp)0MBOus^`h?fqMqqv zl#l*g)ZMeE^G@nHRmE6|qH!#;J2-}%E{=t6567U_$1&i~;i%{4am*9zm%L^Y)=a{h zv3TR@9QZ^wCa$rD{$HOL{kibv#ez`n4+==KLBbe zVjOlSD-W!^h>W1$o+|nghgRNLc{I|f>uc@=k0VX+VE?dk&B{H9Jz1)*P=0O%3Y)$S zUT3=C#bMZZ1hfl5j5%FiX%|kdZuuP7*EWpvvmT>fDZwrR#jKt_H zwgZQ;7U_@{+!m_CTXc}B8nMqFaZISDy8{N!w`pABO?7$eJeoat`oXFnC^ zJ_Y6+a5(i5ha;e-I}89vvG(P_OntbCeYrq0yMxL!7`myupN8sd@115GMt?nd{@;R z<$%)_(8zZu`R<50oz8MK!^M5q*q}OXLzyJ>Py4P|dQ(ZS@SW==-#JNfSM>LVUcAa$013<_#Csn zoeub(sun2+yuN^ge8)LF9WtF>Z+Yr$ANSqC22-bP=#ez8f7*Aur8krG3g5Y2^8Hiv z+Aq-S=6dbZdhMjw$$dwLQ_TA<-@Wi1@43vpBcGh)`)vP|@9FT}NxtXg>LWQhf%LgK zMmqS?!RMUg?{vcVG__ng;Liy-$#*~b?u$A7{_?arIox+A8%&$F;ciLjpZ48h>77M- zh3{N1`Ti+-9T({Ja=ngey$;gr;=Vs1e9yIf_rv#`Dc{K_7x_LXcgpt+_)c5zfxMtT zl9w0An4f24fG-1lu6engF8H3VE>jNV<^^2jdoKB&6LaR~mZ#6lb zpZ48p>CGm+!gsEheE$@^&I|PVxnAeAUMK1GaNiFL-?8tDy)GBN=S}%eKJk5iUU16y zEcosr-wPx9NMT_hYek`v1->l!?pYA*^uYHFwN5z@EDU(a_aOP67jp)KvfS{o%{Z}@I7MrF3y=&%#%+# zt^0z=l<)cQT_@kGYxI%o>Og*NwUH0LeDLWjBb_>Y&r*k#1Ci>0PQFLT_rjPn5-HDG zSmMGK^f-UUc`Uv2HRv7Y&o~`=Wjv1|S09N)0?=jX7T*dD&+AFN z|8yw_@Og^$IZ8Ut%}zxr_oQfCuY|K>jGe#TuWO+eM$dhGE}&s#qvpo@BqndyLNd+} z^jU{>hT!khl-yG?jt6!pP*s@Q3rx|NKNpy4XL=Br=3t=`V7il)RRA+wtZF$h3oC8D z=VOeYJJy-!k+tS|WQ}O{9gNW5bD37E35ao#&&7pO^WNfg3{KX=lbT7t2kiT5souhH-A@Dzf@@UMNJZ8i6 zn0UgNyD;X*;6IG=G|CZ_XJfA9u}#xs4=0R`W9(1C|8tZlV@w}Sw6QU!oxeR3{<;0E z9DY^BrI)~W3guOl(*DjeT^vFl59hNiRh>E zq>eKE{w~or@VNz_1Re!NOR^39jQVHcZ07a5%au7E*k*w5D9Sj>F_aTYw&9G?Dr9z| zFN)HYWE=V`M86$<5tM3_8kAK@^9DX$@Hx=uL~$kAhJJ*+c2$TJHrqy4-q^7zYLDzi_re|Qoj zGY)}{5{>-^biKlAUP?bhpBDp9OYF=4e670vM{CtDKKEUv?wM~Zb>Qy>e;+>QJ@=}I z^>WN%U;3vyb=_lY)N3BDR@WYksP#WsrC$5}8ujX5eoI+1_JC6RvpbZUpX^swKXsR~ z>KAt^O^|~(i1rp>C$It758MJA0ImV{0OzN@tOQdhlm!|8q7kEn(a=r#RKH$ATKk#l~ z4)7k}2H-b=n}GKNgTSu?3xW3m(_6l>PolYKl38!$v6s8vmi*^leUtTYza6Z%{&cLb z{!FX~eTUwV{5|#W#dg=9jg6f?WsIG1c1$|ciYe75PuV$+z31u}JL~Qki5z-)>QYn0eU%+M}}zK%a^=;c0j)=yRt%Y?xyX zJ9k>L#d+Pq1~7NSA4>k--{|`W-afIBuk`xF?%$5fy|rg!eQ3M! z-FH|Iu>XzMVebnQz3-0~^uK?0puh9=iF0p`%l+?v;JA_6KRh}A#`ixM=r!y8kkj)9 z`fGn5>t%0Z+^gztc4nd%vU%KxCB*X!6a62J7xaGg`+;7P_d4``bk;FI?eCAzANc4j zmq&Gy*Y_^T`#{M1=oPhx>zpXK;DOExqT$##t)O_b-$Ki--oZL zeIyS$D89ap_`1NpGZ(jy`v{wQNe1Ln{C*elTaC5vz3sla=|%fRY=bzNKWykf zzCM>?wDmPJ#u0Oq&fkjhjyD9_-xa96&5>fS%|k8b5BUWB)#65JjS0T ze=zPf$b0RKkQaiy*N!=May|FV-}xH!n01mjyOiXe5b|ETPxX>K=%6?-7D|4h8}eR+ z9b{h^@?Jb9>^lzoUQCwfTa;kmi}$IsNgi}~u|D4ad2a3n_LW@RKJFuI@{tV4r5Np8 zgn5Q6-@pEGF75l(pyT0t_tCQ;0(;}(FpHPmyDwf+!s121q9PU#-Mf$H>=C@T2!&Ys z(`IhqD39-xcy3g4#JavZ%p$z*VAasqa+~Cj0Go!8TlI%yE9;+*Me2{lR@6Tm8#|1g zc=~l?^7U6ljGp-w$FU=C8e`ACWpu*M&N0W_$+u35{x@IZ$Yb|c$cZEG7(>s#XAB)a zYYaX8fnk8(ct)Dr3H?o0PP~Gg_+VU&KYLW*dnW|GbByB+;BS7z%%PVMvyjscIjz7} z=x;)Q%Wuv8lM-tNz2j}75#uKW-TXU~J|;2ZZ+h3H$0fD{^bH@H^ihemfbM)hAodmH z1m9P9PMG@%a-s!u1{?gk#xx8l}uxw-a8Y$e)u+&+r0 zF!g;+LviSTVWRn&@q(sjjtn$W%ngsrP0u{*px9}CZg_s{GtUli9@I%rWQgP(jWr=B znx45!U4eLMf^41>mE;e`Jr8-$9~JWAkoWu%#}2M%c>a#(p~tL~yp^|;yk~{H=kHJ> zBo8`x3{{x&o`bySUl};_3qXMlNn2 z_YpQ#lMKkE82uJvG>o;b-uh~8dbt_f_`c~ftP}0~l^khq$h|wA4=n;-%(PPF~*9oHq zGFv)2b0<$cE&7ig=E!3l`8E`N$r$Q7X$%>^GKM-|F`B^Nw5uhTVyNPIiYe^l*taHM z85ZMz6&HANRNzY^94Q8uzF_hrZ|ON#4LS5Ii$Fj5Q+eF%e;VJlfxhfTGiFBxz4T?1 z9+9~J6%!^sEaqy*znFAf;&ayW>wwrF5aZR5caF#SFys3JV!RS_R*kvKLEKg@tzZ?P zBbdW%&`Xz;v!#fo>?Py!(%NWj4%#letdjYG6^qND|AmRAyT%JDc0~s&D2B?%<%(Th zjtI4PpA1HJbq#PH)JcwiG0BO?DiGrpyUr-tSpN#h<}v;R`GavokT(<;^2#7@DC)S3 z>p2;`YzTVHI?0=J8OiGs@`hej{3H)LC=MDIOMamn^15LM*;fg9-BDrRF4)(dEH7ti zf_>euDsxC4bojA8{@v%WJ~QmAxVU}XN7$4@G9Z^?blXzQGi2rL`C~4f@57+umG|zW zGk*!}#rO6sUV;6-qJqWC&Hes|*ze2BS-kAteWkR1$b~S+9JH0O^vBIyIV7<#bZps5 z=l?CNg!4F97`af2Tqr?b!)D1}f}B{yb0UtM7&az{VgR~N5)(^rHTm~SY#HP%gPba074-9*xXtXp+02RC%@`jrbK;*&y5G!+$4t6c zqSnKQci5&#!4tBHaA?D6I(=1R8j0852|M5M9F57(=(M5izr?oo9D!%W=`xz4Dap{ zG28%oyAyI^cXAAuZcoUG-LEPoBo8|HzW<0RuR9?pwuzkJ_8}*#X5>V8Yl3~qiBggW z9TZRN5KlZO676fexP3e)U{jc6KrY4Wdc>;-YaO0{M{WVlKjJ&UF^8o;WXAS`5(|KL zQ?2B8gSRAq82f)U(>b4m1?n4O1@&8EI(Rm$koX-{XN+x&89dfD-;p~RGh=k0h*2K9h^3*%xG}VC*cfUUF^0B`8ayVq4(C$Ll-xuy zg&0Q+PL6hpm>w|%4tEKRM>$fgE&5L;KgA$?sDzvfU& z4W6ry!4}D%4|>tcYPJabYyQe{c~Na+tN?ALt5-1{Sh6Al{Vz-`+B#lPvbAxbg!a{H z#KYEY4vK|E+aC{BY~41%c~B=g`U;X`#7eO5mu!7f$;bMaKsJx@d&wV+>wvrtL&%Fj zUPq&&lB39L5Gg@(ZBRG)@O!&H5a#!`v{u?Bm;6OZm&h$1|Tc2aXi<9z1{;l zUU=_5H|lQK8!s$m@gVm7V35TF=DzCXPJT zTagnRdW@k>y~fbGeq(6;fKdkivW>&J<%qdZhZ)1|$cce1Vtjvtz}{^Fdm1?|0sq1q zO#UW%c3}^I96H~XKz|7RMZ3)Y7KtqcUEFQv#5O@M>@(>`371Ksf450*kytV4B{!OM zgT$b8qI^$)=L+rn{29t~!hBXDCyKCE;f*3EijWf_&?R3IIk6BqvCzzkg|!=aP86Ft z5kgLc5F-mWju(VBZWsueIT6~p$w9HR@VajWOEzvA;5?|49LkA>wGFWlaw4?xQJxba zD<`fce=u${PwHVFGR!oKU0~MTJSRdtCmwsb2Jv)(eaMN6*~fi^O_UQMGbdId zUL~w`K+VaeJHNE=YaFrf*O{@s2A}g{4GPmGKLf9B^I+e1FkF-bzk_M@kyuK7bxZ+I zFjev^^))fIepPHN(qN2LZ!spfY!Wfouz}-PO`|ckYMW66Sw$;yawoT~7yXUvIPw_Z zfEcf7GKN;Q7(&XSvgua<#3j6*h#CUt17~i@^V9T`vo7Qrq7|g%k zW8?ltV?0el}ydu9;pse;Z=bFh5GlA1Oy=hxQ6 zQqWd_?@AS*PT!>>-tue53-sEW0i9yVfjzQz6)u6Jef4lKSi5R~^Po<0lvI+lCZ;3C z_1e2|EA7mL4%wXNYRI{IjgVtU+toFW0xo|zSa3Dun{|?tl0kA-2{~8ap(rE=vT5CO zvF<`A_YF2_ zBm;6OUU7HTuR)eJYgw*@JzfGG*Y4fNP-n0=u4yc;V84eaaS144uV+9;uRES%?8)Ce z6+=9D+NS3MZu4}qZeIHl+8XxF7g>JhpMTyS1JC&o0?h`-4 zSo&lG#vyq&e4X=YoQ528oWf}*WBoto{Sv1!df#DAGyl4+3$r&}x3Gmd57Bqw^qsY{ zQD)Mnui$<}e3b5lJdC>r^c_zw-F;=^cNcEl4|o*KxaX>m=z73ipc|RsbrWw3JM?Hl zpwmq>NH^{ZWM)^x$|&wXGEd^&*fiW#aN~P+hc4lwb?!t~0d5WOJHkDu-5z}BitnD> z_&)u?#frpj179bLkCHt(3HD^d9@2Fnfcr6lKp=B|!06uKgsrZ zlk9Q89u|i!X~Gs^hm+4qq78|2!tZR64L)7m70dS-v?g>{jMm7J@9pGw$3W7(F-LYd z>E2ixzAtys+Q7#&tc`m%=7iq^?>X(rNVEfsg1GrhcF@=ZzC2;eJRiTmG-b=Yzhp~Z zk}Vmqh33OyH`fMt)#*OrgNuX07WXHwiv#O|yW$M@v!gk&&vxSu z9q!$kb7Id zW_*CAyS5K5t`W8%b*z0PF>mdN5Bzq3;qItD;&umcpOoJ%r8}s!Hd>Yw_e*gn)m$45 zmxvPYnWo`>M&jCNSR0B{dy23_*nkH+|SRZjZ z1Grnv?-|p5WU@ucu;Z>V?kAhJDA~z(j?-{oCeaoJw$OZNs<1=Y&~$+fiSxnld6NwZ z_q<6b-Sg%)q}%azK4_41=Ud74CEfX^HBo3j;G>H9(9$p;{5L5*rxnSZ572aP>%qmX z!WKMkJ}EvF%!fp_*d6+a-5$U_bAIQX?ue5uQkv39_oivi$QCI(`5rj^HZ9Q>{BDlV zhaw9*gbl_8HYCo6^*hM}nq42E-$Ya-Enz(*PL zp`>6w%x5lY{Fy7xAv7ORVGAT#^FjCVt#bhV_7WH55`J?@zvIMjG)-F&fSvp|o2D%+ z+mUo<5bnnuxHHK3oxvV_LqCY)&JfN^@z2ZWbMSc#d>#XTRSe**4}a}7D`_T8Z@K8D z3SfAH$X^bVrnhGF`q%T5xcb4^VRJm*wD8wkmSB^%z?Ny7@5)kTmwWacSEkJaHYvzSHqLHH+njbCne;^zA({>nv`uFa;I*3mnAWbrr_vG`YLgS2 z=z|D_{?N;IA8O8df^eJYH?hpbDifERsLU7qb`#wu>L!LvEHg1;VvUJ^va}bQa!mA_ zsGArvvC72dCVo&R#(iw!znOSwv1q4{9_bY{QBc!=`+Gb3ySuFaufTS+-?XH4XLmGbpPL(+ceeEjBTBbhW|a2gALDfF zYGZ%1YcSIM?-NE_vaYyx+>AspsU66RhL`5V|JEcmSCLb6)C%?gT&3;;w zzcF~X{4Rr;ntW{o1}|AogX>64m}=pv+A!7nsg2j#r})UnYskQComi&HVvEyav^v@fWOZ&mY9jkL=ngJHE;lb7i-z`oSX!26Z`em3?O8sK_$w4V#Q}g6svM?ffkB(}Zj_BVL7PV@v zLB4hHZZ%<~W3gH-r`2g_ue-2ar}m5U=V|hJYzEcZa(Ni(e4f<->!>Y}R_AH*B-mDh zZ3t|WU>gD(+7fAEi`xWS9Bgr0og4=n+JI9uu??AQld-!|hol%Jf-Qko{d{&-%EvJm z^Rzm3WrKVkY{Os|r~~h|Xp(xXDfQ22z7=eL20Pk-Q?!Z+839`jT=^54N5J+cu%XSQ zhl$4aBHwOXuIB7fJv-K_Ii;#+_0Q$h`&IA%Qgh@R}%*{kL(Q$1_dIrfn1q5Wy9 zl4UPYJ;iF)yQ;TLowHc=?xw$4(v~dRYqP!x5qs>qnkA=&Rj)muW|aVfYF3fzeW$Ec zk<_{JF9ySkP4yxW^aMIbUeeCVYp55L{{PO9x+Fuwf~uP~YwKSzKmQ=+r{UjWe*PoP z@=8JPXJ4!Za+4Ic(bGCpUW!NAV*a3+kAECgE9Zwb`Ry1z#pKJw>QZ@(-Azw5nnX>$ zo)$M-eim_Gs||y1`HZ}-l@}t6KViI@twHpKqv}-b5}$2U_)>M@3Hiyo?&r_#L<TB25=!>huWnuH(lHf@G%jHOR7H>~(C$)dg|G{J7 zuI~Oe7H++%3;)@Vg?D!C2^-CQ1~dOsdw(wr_jb27_cya}f7{-E&fUDLV+WesqP^YQ zd+-lEJGyqFy{%=>&h5=DExm067S++!-fh);o4fEX$fCGlF(lg2MMm)9?Y;PKg)F?I zdl&srL`MH{u)nzlXkdV-3AEn%Scrc{$hOyPzIMemSFcQ-mA{>$`J{K|^p=Xhtcrn}$AXnDu#ug=@@lDv)&9P1^b#gFY_!!{lVQHQxHX!or}*Z}nT_&1RO3 z3dy$mt~OjyA}I*G%3!(KoY= z*h3q|ppby6zt;L$4c|b8#?Q2WojHEC#b~0X%ffG=-HP2rR>K_MWH#cnKh9_Ax5D%x mv|F)bvT`_Tj{kXLBkGo3tNDkheA4)lO@d>t#c1Np@&6Y<34U+@ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ef7ee5f56ead35e5a30d996804c00cc2f4a3e03b GIT binary patch literal 13328 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

irk?VlYby)P=#<~ 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..6f5b6f66292f63287a9d1f4c21cf1d16f40f10b4 GIT binary patch literal 8472 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ddacebb6d045dda3a02abdab148db6f2e16226f5 GIT binary patch literal 17344 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f952430778f1b7ab24cf6f22f56651749d5a1604 GIT binary patch literal 10256 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 Ljmo{mzf$}+_a7M% literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..df6ed032f86322ab36564fb662b19bfced6eaaf8 GIT binary patch literal 17536 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 aUuhH~Fa1jK+sNDtKPeV|qcjwBE&kspcA_Bw literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5632116b528ae7c5ecf091a67908d5ba4336c1e0 GIT binary patch literal 8712 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 VD#i~{_*M2l^X&1?xgl+~{~uF#z;XZp literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9cf5af671b010dc234290fc8134a5c3bdbf163f1 GIT binary patch literal 10976 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 QE#&WJ|GaCz>3!_~7g(A@QUCw| literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..4f2bbe870f05f681c4e1a699472ef1819ddb8c90 GIT binary patch literal 16616 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ǝ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 iM8~2n>Hxjt!qVTB~4o@8I8#vY5bCd>-eaHgm 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_linear_21.hsaco b/machine_interface/tests/libs/resnet34batch2/tem_fused_linear_21.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e1f24acdcd08b2d5f344320b665ed5bda2303895 GIT binary patch literal 11432 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 JE$Mds{|9R*46*Gjp%A zaY7p!iC?)|&v(z`JNM3+`gI_G*AUT( z0%{q4N!NT0o@2o{s>~17$op@lgMp!NBtch39&~|_HLgsCug0Xul{v2FVaOzllbmCI z3@a?mxd5v$KM}+m;c-5{zc2o!o^kTR;(SzlJm+5k9=mncksAYS%gHBp7)u`>kz6%L zo_kDV9&85Sz4ve1@!&&*9Dm7L%H(U7x!|*WPPrP7Sxk@#aE;mYb@ng8)V9zcbN;!|O=e702yk0YN)pDbf zs@b_EyHrnQ3kU5?3WovtnKPJR;Pi}Ev5+gNKfOke?#W-6OV+_uwrJH;2g=p`EG$@l zFTlVmSxfe59Gr7^CSEry)k4#%+r7Z6T7AK+^~UY!tFBP16pBSQluw(rLrV+g;`1z+ zxjzH9-=mDY>I$nVFPjIfrk$;p;r^VizQ`s^9d6F9zXnn+U77{JAIzfJ*q$37f z9Z_kWQnjc;zWMesAL{fLF^-)XAdjDIpF4Th3qG1Jl28L9^D6qNBJqmjEiE{j2n>zS zlg@+h_(@wu^pUowC4TVOscmq*Vw(eExaEsXC%o%s=8+RZdq^aXJ{C%NH-?>dbA$c{2CzG~> zJcYFVn4?DE$h~t*UrG(LZB;ZEx-q;`uLH{nvci>swO|+YpD}{*)tiG z>&S`f4(CnZc>bu*$Pbd=tpo=2X&o>KD3bdwbfO~e`zy+X26N@!3mwop@}x$(qJeE} zxokuU)v+Coc)XfMAJAJ}c&__k@(m97G?4@^$P*&&%PWdUBX8=y{82rc$99yV@bnPi zAfVG8i|-j=?ai?ErZjTd&`D6dv?6=XOTq2YmIq?f3FC<3)u2z%=c)5k%2c$eEM8i< zte%&YDP0SoerRMmFr_yGz@=W$bKQ2MrI0_bC{r`CO#TFYJ1?#As2bV>lMrjtaARq} znbb8WKM-qhQg1pwP|KRH;dcKJmHffsb^bv?hp?haB)n0P@tnA^d)Iok zP%oEAdbzN8$8xn=wX^9h`NDD~pQs-=+*nF{;;?lfohd997n_TR>&3<8^x}cSa%2C& zg#%{g5P!)h@%mCFUN2YEdH6zaq@k9wiq%G~R*o+hNE^0nnT$b>WI_0se}D*3@DAbc z!!;jVvC&a@1r+%hk=6=y zQrSf}DU)vKQ(mHS5w>9Qt~Lj_jp+dXA2Kn(E@l5FNRT>UYy2b&Bd^bm*@% z6x}V0bWFP4lm$8^rMAivotFL}xZ-mygUNx$n>Zn@_fO#OeH5d61=Ln}DB(-ht=kLA$bDzC7V;@h0`GnI9=iI@G0F!7n@cGymuJp!gCDeJlT>TTMT#qla N|7(qLM~40U{{WNKPb2^U literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b00f3da5609ed53d9dca18e19f1eb3ea8774c157 GIT binary patch literal 6240 zcmeHMYm5`u6+Uxk#&~VAj34{RvaqvWFVGb`-ZeD15uqj}gibZJNofXNli@ZfdL*p1ABckVn`1yp68qjwcmNtxFE`!4{I6?l7uo=t$Xr z^uUwHp9XmDHM5*8)J$W}a%`(q`{9dM3^QMKGP9M2U58&7rjxJz^t-PaW;W|swOXcD zHD|3~=1Y|svvk?0eA%+= znOt$v%4TSe!rSgl$63ARG)u+2?f=cka0-9ww?^4q%;ZXDJ+n}8=6G84{6)f9Z<}T7 zGTk{-$?4x2Ri`*_)~&U~9ap_#)YfjQ;Ws^_RxOrF{64#E)RxLKmD0;RnK75ej&)L8 zqm%Nwv0%M7%=PjpJtk^%2 z#Ck+a$^9Dn!!jesun?lfS1F zJdNuo-#v{F1l%2vHTP3oOY?Pm&C#JyNq>OX;UY?^lbY}Q@FI#Epi0n&)_Xs@@Z)bv z@WKr$_7YR{=NXGhDl4EKV=TNvoPQ}wLGtBO+O4KnLLz=Fkdqa!%11*nhG+# z39V;uZG>ffpgeo47nYTPHk{NVTT`1@tl6vSNd|$HG}ac1#8M%)t*L48WF)dJ)yF29 zQEf-EFEWv$x+G>aLED)eh!}2Nm}`*gi^B55GTYr`nwA`jgk7Ho%e~|a!*Y~lKP+z| z>4)V$8mm|Sw0%z-&cBC6ZE91E&^orb>Ecy?`mLJ*3H(y{d*=WST$eNkcl3S;0Ic58 z8Tiw0-t_me!JcFNP5-fI^Zou<;r*yy=->awO|37s_k91h!ue>tz~JEZ)=maPh=&m; zeqc0!BZauZAc%HwjO_i_TaR#iJGXZ;;5F@WdE)`Jc*hyz}g%TdmWuCxTd>pkV|*3 zhx#krk88QxqFny-KkW*s1@0I7nu{Vaj}t-)N#nf{RqoXWHur|4ForP$lItP2f?geUZ~{@XXYDAyY0o(XA9*$cD7M0F3jai zbCtR3+?k}a+bLV8b9>Izt-^w1@2VNqB}mlE)kMAG%ocES)|f>tW0ssotyW3cWmv(U zD)0ebRgt8B_dWy?HtGTX{cmQXP$^ppk;*7lX3bKfRGdjvm+FOzy~~)MO4N#VYZCX3 zb7tPEc|{~LqKt%t8_i7`S}7leg>RrjGdzt0TT$YTUP1jrrsyLmin@x2DwXBWiq?x^+SwnNo-4MT8$2 z-M3F2la~&YV`N&5%V+l{k_mO_v>KjNhaOWm%Yh5(kUX!eVHS_7LyxNADgWxRFQ}1I zYM4?)<-lPzg795qCxSskjmQmMjZVouhQib>@`$cT=s2l&0cMALhnzjBDn5ff&+rEW zd_2=DYFoh*8%5DT+&5wX#C!XZqK)JAsE%g<`jI0C^y!o_WlSOY6PlZc`9Ykch%lNU zpJ!hHhFz&!U}TqU-0gsow;M*mtQCNN6JB?~a4K1|Zh}#_7VB=bSuV~ZY?Yi!riup< zMLUnUHPgsv%$XU-nip2l&Q*l&m^RKfVY!JtN~vg55iULF;0_Lq*-DxAi9oxsx;cZg zfCNwTq?lns;sy;e2cG%*{-a<0iWraeN*YgEQE2MAO(z}ZROADBwiFH=U zLp+eyS-O@uzY^;&Eps2W+ZDkV>#UG*&KG{c=P*2s3gs4lu`Ua#^FZMj^$R(Iep&>D zUpxndT$|545A~t5ZAXJJ!58~dA=90~sCU~5#E8H4I1%TKG_cs#&KW(^3l=)cFXD%| zVj&mzi#Qh)=Z4}rC&o`~WA`DKFv0(jpId&&&oQ;G4tJSw6uI3PLLm5i$mnR@vEM;o zH%8&x`Sb5s2ba|D*!+Dkiks*BG#MSOo8LemVckp7+nkS&h2 tJWp}r`r`h588I<;c&IB{od0eoh`PA0fPan3{rG$N{{yy&KrXxa{{>S>@In9p literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..184fd2d147a4900f3364dc5f8ab1c2b82ac57b54 GIT binary patch literal 5568 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 b{5J)kfZ8SbS6I0n|A%6Nj*_FmUjBap);%aD literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f916f0c393a42554bcc19d5ab769d4f8c52a666e GIT binary patch literal 5760 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2e1a0f91de9dc45ae401e776ccd90ee41998c5df GIT binary patch literal 7504 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 L^e|A-)%yPhr9^UT literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..633a13da538c3636deee385e801dd70a600d010e GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTE^eG|QD8=A1C{iX^ka8^(2@h$cI|y-nk3kl6 zRIB(bMCNU{C4(`>r5~w@_n*=hmP3gVWckDkO;j+Y9T9Yq^^85dP?ePa`>)5A%yug! zc>?t}!(%?T@3VjL%VGO&vOMnd&mfPh&Q-b@q_V>DsKS)`@OLuL$bCP6u3Ko!AwGO~ z@v*0l0=)31*(}#Q(^#@x+iG~QQvPr{FcAEawE8}+Ik z|M50Gx$pm}(KL@2Dh<;wtT^tH42zcED)_-{vuT~7k3KUq`!l2E)|XA+>IUv9^{nA_ z$HUmUDC4#2jfNZ|XAEz(S#%n&%V5S*85`E6jGT)yy_C0%6?56DxDK|Ds=Dxo9E3hL z&hp>JT(x9RBhZ7Rb9%a3IsWk(lLzav<$86;ensJ_gd=);B4aj&qh78Xf0y2as2{{fPK~l-g&jiXejWPk`NH_KF`Ku@XF#Yow%Jfhoy9^oT!SFq{o_ao9*f@TK=v*uZG|Ru0P?7TNVQ`V68E#aG1G zIwX^GiQzPJ5)@B|jU=@JAQr(scSL&qS^PNO@a8+6iLCg+ulCME_Qka; z$s`P>k_r7tcKu2w11{QQ2^I4qzNuIQJf;M7)Ld0{G#331x0fpiZDJfKzLN zblTilfc+GRQ)__`5U7Z%3W1KO<8BhHh5ZR|0%HWXpWA(Kdkowj1K}9pv*z#Rfp7@d z5lVMN5S_JAF3Wu}A@ySt|M9PmLt;+a`CPdu^U|#g%82sO^r#j~XU6YLk0@CzUlAVug^q{2tAJ@4a+t7ZGZ%ECRbsuWdr_m( zi;{9LO6TPky(RJ268|hQa=rHU-Ma7CynjR9Z?^Kj8>*s>#h%WExoOJni+$eLRNW9?5!i>(S4<+{aiyc;%~e%1cz2bl zXXudTP~FCMJdne?Q0~y7#oX*cW5$?a=j|BA5qRs{f4z;0{a?!oU%wQMaiQA-&?_bpVW#)1*rW(2?FZi-^d3|KeNk_JG{Tc5Tmzy8|cW7`SX5{~JYY`K$l{ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c2016bf8fd337d90960db76f42185ec8eb63c16d GIT binary patch literal 22704 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..14974a045429c6b6ee19b2717fc841e456e6dccb GIT binary patch literal 19064 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9a2074353d4c0e3fcfa3cc6832863d16c095b386 GIT binary patch literal 22696 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 P59HI4p~3k7spJ1Qj=^3E literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5eb20e65ed4ede75c4bcbd9768a8d3e64d099fe8 GIT binary patch literal 20800 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 WQT$ybZl>?qph+w=1a+LR|9=3<=)j)< literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c9911e8355d9cf44100580fce2ea3108b2343fb8 GIT binary patch literal 7576 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 Nfulbphz=gq|0jcup27eC literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_12.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..abeadc44737d082caffeae93dac5d0f1fb1e2930 GIT binary patch literal 8872 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9beb9a271b2f2c9931332e6d01790b9101af627b GIT binary patch literal 17344 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�a3zs)%`?8sJS3hNHU>vbvhIZy4Hu# zhj*WlDO?vEqWR!qzKe9x`#~o?(@>EgxF>evd4>=5LOjn{RVL^@$|OH`x^Q2MdrK#t zTeNSM1a3e0hFInz*&NKWxe((!Y5ZVFoel|AXALL_unQys|i+xyw=k9QstU1!U&>V^1 zS-jG>zGe2>O?&fodv#mw+^_fAsmDS-jY)p>tLn7hAIx9t*XX@(zTsEAWW^aLM zug!=9yyLO)I0)&!b+3#8-M4o5)<%Bv`PFHkFGzmLhpl$Qx3&`ZqOErFt;Y?zA(J&f zlA-k=e!FL-Z{5pmwVAf&>9*>2hL?PMkFC0I^JrZ1k=LhAd%eNDVy{Nu4dj`&7VGh9 zLmcG6RvV{3cPEczvgSuJG(X4>*^1m6eScu1IKa3#4Ww-p2dL*E4(vsG9M~M$w&Gz6 z<<&iQ>OSRml23nEJ6Ej3?`5ZGtUvZfk*|N#l3$gTF`)a^2EU5rBez$bcDsY*lRWsy z1|Nw<$`I|hwfN`7^^^s!etwOn)TRl2QK_?2w6!mqieUtO4+%N5M^xHx|<%?9LI>y1p}B!y$+2tn?UF)%#i@w=s*qn%&mq4Sz_0vWck**Z%C@)f z%l!%&`ksi#tJSVf)3-$VR_-T>#)hBBuVkwPzmly>{Foc@7Z~3j5r6L2vz7d+$k}#k zU+q`ZR`M&pd*Wl`yC)fb<+kSOwn~Pr5^R-CzuGW2n=L5k+c>{Wwt`>E;ondN`MV>l z?pKNYin>gG#d{2#b>Fh3J!=g=&rb1c7ZGDa3A?UX)oDcu z!Z-XIEfHgrPmvHq0&ErGSG>>H?#EBxa&i6~@LD8|zKb)zeJjR07M~>5upFhH{3%!_ zaEUyLZ%Zp@|;Fg#l)%-^#_-?>x<9Q1|jBfUUQL!2Qbjwc1|M+5I zm~h;nrF#f^<} zNbDD0v{)4J)`a!0_$gE65=9JH|6W$D|6MNG2KEzoWmPPVq1G!@TIA4L*}YbFt(6PE zB?q6C9U|-wiHSzkTtb;eE_q3g&^(LEUIgahgu$pI~k zu2`x~QQsK&_DzAsAEV{~HCw1jvZXC>_@mVHs5%v@5HsR{Rh3J{S=NZC7{$_TL<=i! zqqXO?T}qcYIdMf^uZWuwMIyq)wo%?C+FBI!w=DHH8vQEuKbXH%5i=H5-la5(nTac? zw*XNrYIa**11(_N4Yq~!71UdRE!3CYCblVq?F+C?f$a;hp$|yyDQe4wiui3yqwM-X zF5D-(re*(sggbsbAp|Y5U;G3s=@K4s%l-!0wL|ttWmi!4|D)`xmRDKJWY-4SZT+9} zs;DH$tHqX>WI+_ytGu<3T7Gfk7!;iNzfHj^A?W#P>(`6Ng_wmF7U8u~wkfK-P6=ay zSH%?ZAJZ{xD&p3d927rhSL7;e1TJMQpZnuen0r**7L$u1vug^>jZ4vBL`eyv;Q>k@ z>zZ1UMKGEX)}lw!??uC;niYA1J%%wEr`*-(

StQ`wJU7?I_pcm zx}R*;`aaNC50d@=c-#m2isEXep9f?qCS1Zdptyjb1FwMC0uBjpHYLf4Z3HB^!N9k zIeDz7w|AsJWwr(r1H)#0q$h!^HM7MP>mu>N1R24_2S)HyRu(%ke2RWB%joB*V?Dh< z4FY;iNAn8JMEp{f9ouvGK=Y%I;3q2oJO}wR2W9bwz^oW({@&Xh&AdM`+ayaj7^awc zA7tV_gOP4$Xe@d)Nr!oVg!l67Hwz2Hro4F{WMYVOFX=bsjc$7HO^<{Y$2aerOjHd< zQ@?4yiEBW|PZ$>E&HFSH7vtH`V}!lY!tW$eqdrqVy=&!%flWr!gq3Z4>%!$tG4sNk zFA53a1C(XQ3IjHSNU}5sewg{PNpB{NZu551^dG${rUT!6@ij5!lZJfKkiS9+o^`Ak zp5gaQ-2N;UUNzTgLdU%cSq+J^29n-x%^YzC!+tA-{4fx>lUI`&;dex?2Ru_!-`ZCGy@ zywou5xQY5=>=MB^nhg2lMtc>I_{{Om{CyjJX6zWO9Bvr$A7po;ZjNhq{}`3~$seW1 M5I9!e;IEYb-+XyVkN^Mx literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d42198dfb6edd5dde54b3e9d84a135e64a01bcef GIT binary patch literal 10264 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..4e5922e38639db35c73cad933afebd3c81d3953a GIT binary patch literal 15080 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 YpXRt`#}82Xb@J~U^2<#|10R+Dzn}^qEC2ui literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..02e9b03187fe20d85466130b56b67ce6d1c7dbbf GIT binary patch literal 16616 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..33fcef5cc3d97848eb36499343e0660e3cc02f08 GIT binary patch literal 16320 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 P5Af*Npux)jyY>G!i{?@( literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_linear_22.hsaco b/machine_interface/tests/libs/resnet34batch4/tem_fused_linear_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..34df40d118703553af915ca063d13e8997d63859 GIT binary patch literal 11440 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2339da1748be3479da1635a899fd960159a7aff0 GIT binary patch literal 6952 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 ca{e2fFF>>_RrPW*U6E;}^E$ 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..778ff70f759f2b815ad5338ac5dba2a2e1e25364 GIT binary patch literal 5480 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 Ua{fms+>Spl2k2IIl-SSzHxZfm;{X5v literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..eab01a1adc592ddd6be23b2dde8e03e6871119bb GIT binary patch literal 6528 zcmeHLS!^4}86M6aS}v(2MN$$&>!4{_Q59<`({`k!Xse*IlcJ7g=V%=y0JEZ2TuKzl zkkl2hBqh6PQ3xs82OE88l@>@-#5tOx4VpHM<%hnwDG((^QJ_W<6e#*`pm`|}_WyTh zXo}8Rzk0ykZ~p81XJ%)IJ5xJ;@&t9crYLcWK;9=VR!5j(^?Jyud__XtBvIfVA^{?U zT7+xLG2etcjEtkg{7{W?A6IrD4;GHZ@5mTun=mn!9tSw?xE+~eYaE8`_?SJu7YmL^ zrdS>xM?wEt;&?po-$VZ@&td;QYd${aXCRJujWy{r0p_yD6B~@B4gbPqj(qGpz;y>~ zQNa5ioWB3`qlBD$#aNoNN`}5@7IS8{^n+(F=|;LxOs4Y7xiWcPH;U=fh4ZiI#@t-d zER~X_f{`+Rp3dfHjqD40ety1WqFX8Rw5eRuSB&hknOw}|=3aJOlC#V6^Jei=2$WkT z@ZTyy_*My`pGt6!57&s}Dz*;SFJ{-1_Tastr;GXJLb7D0m&{x_IiFcG=aM+Q&# z%tQaMsZ%erNmz!?ndLV?N~dyT0C>Ud92-l|uiZ0l@X5Mj7E76Y?uRb^D#47txu7v1 zz^rHM#!GCS!DXWh-t;%e2x5d5=Gt6+i!lb@%OPm2vElh3)<1Pr?62V zH%4QR8HGbkQ|If?O&)}(p!+s?m23gBW$q)qKA%ed9(fib-X)TYG)VoeA8%fKc!SUp zk$mS}?8qh&N46C;dR|dtF3{oVo+I*z=uxa~3VKRo6!aAIE)TV~MbL?2OaPq#I_eRv zZ5ed391}dU1zfRmsv5S;O zsX(m;rM8|5p@nT3@=|RFdy96V#V!cpg>6D(gna+qO?V=;ovq7mDpp}_PHcO%7;sI> zX!BCyp@FLE?Mt|Q1C!hSKukfsAN4&|)gMiGg0ac%P)|%neF*iDsu~(fboLHUZigc= zFY3dnAFZn4kwo{t(MeK&;u;|}O6sStX`~iG^pn~?!~m)FA%;k;zmpDBy^z}nxjSjB z>V&E%@(jV`fXpr-75mNUxsJ{w0)1W61CmM9R`XszSHQ&}{dhDoJ z1r#Rk7QY23-ZLpy0HrV9D?W|(sb9U<<06VEf48!Rc96p$6EgjdC{l9Wui^jp?sa&U zbn3PDXeSNR8E;jX(W(@ER7yldg_0}YQ`Qyjw6) zvPUKLzO9P#uowFI{;tq*RZxxxs`b!jMLz5$uwp_x0;B`{Mf7(oFus4X%o=IS1RCk|Y|zfTe!uGV&`pWH6dy|-Nwasht{=G8#Qkkg0O zwkaRqHr^f)Ie@p%qpC&V8I*=s>O&VQ{cc5l3goC~1Y~$F!xt(AkoUVsSL(ws7e+2r z>LUuNj{=UWFbgZ!2(7_%+_((F?d$d!+@1rs=Rk7~@V(;S*oMvnD+QLY1I}I<>T~S7 z7FHCyu(KymrD6~E=5wg zl#xENP%O_bK6NZTpHC&q>(**%bupjG%+JoIa%-zbc{Tm?nzg=?HP(v@6Gu~eVV(RG zdMc8)A*<+e{a5QGE-2Uo_ox@OZqGDVt-k z?_M<0X31%MJjt6MFTzGWvt*M0yYbLSwp+2xYyq}b*dyHBNc&adru^{;L6_9KUkW`g z_1-0g4oJQC<2@q(RqB(KQ7Mv;Vvk7!X(=`+4eXchR7~kWTpBnh9gu$~4a(=FK4I;w zGyCX-8p-ke=dCym+JqPfDQOm05U z>qR36vx!SKu@jQbnO(|=Fjaso~g+lP(f~P=j$%VD0Ad?-hPgQV8^ouZl7Z-9>?ZLYKOnLk`dnd=4!#no>3plXSmYzHa`gR?<^7siB$D!T#aWJ&&&^OKU&+tHo?Y?Qy zx9iaLbrwH`LQ84)T?QNKSht&=AFz0{sc|Yio?{)7(25q|sj?V9?RNXkEnWv^)2mj9NLlKKxutR!v|3wGC1Qo{Pj%(L&_;Om39ig62;etTr7TbFN^;dV2bPXJ>QCiDV%%rZ8GkbIx7FIUd_>MQJG1V?>5dQP zy4ZY2TL+b!KJ@`;wW7K^e_p6=9deYAqi&dqMbl?pFwKx&XC`!rt3z&bU1&sLZs1vp z**Pgbz0;<5DrL>xXoC19rz<*t_k^E!MYIaV6KhAYwtz0GLDlyl3 z&b1zWmE=asZ+%sMmrIiJt6x38)qOU&`Bl{K@)ygg5$lKjatr!pM9xC}HdB5NxD>BV z16&)gcBZ~s?R-98AFT5r_5)m#CiIE@<6gsZ|CmL@NijEvSks!mA;Ir|7G0a>qPRQX z(rI?zGG|^aNsDqYT{>dTxH+tA>q;zk?Fjj?H@c*#lV;J6JqdgOdQ#u%^`u`+=|u_t zwr%Oge#5m1@PY9t$5zyrWQgKyp*R=aIKGzJI9rN-tUtzqYud82UMN^A#A(6$vu~8a z`rAC;_2k>gFL z1Mkg}+(Ef?(K=_{9?n88LC&RncPNN;?Z&!x6@$25;M-xn{yknUK{4e=fB3xca_LUs zK4h`Vc1M+MV8u4z<L?5142YkL-+Q|tNu+-rx{V=j9!m*%2x@7}(3VcYGm^x(t7ck8h?aTar^vQe&$T(JqFO}6FY&HAR7Ul8KS+x6|x@8Y9*vt5Zs!;>{`@?>(8 z63rxQ?jTu*60Ia_?Ic;J5^W@F+eWf&N*E+F8c5clM1W)g=uwO-;TqNHUfjBXC)0p7 zkgQ$GG6{8Q-vcuF z(Yz4HZU-TM1+w5SDYQLGED9MC3UzR8;0bQ*GDU;*6`?!&lrG`=6h07g3a-Zao6x-X zfA?!}zX$I3KvfU$x8_FLxASK+eeQeT+VBMVDe2+a;tt+#|LblEUw`5`(i0K0%y{tf zzt*O0Zw?rGbL)l&o7*%$#Fw_vn=J^e+o1KEy#e@??GU|zr#75vc&6cLOlc8*o=2Z{ z5P1Ad@WvBJDn3T!QJ8CbrD!)u6#n7R!n<9*2l)dY{~Yp1J$?cC$31=t`6oR7pU8j1 zYv3983E>$xy9S=pTr_NAxz)%Gx47ly@dZh9~+a zokVgpor{e;ob7Y+*;HR&d?Jw>8F^^pz+`G-C_kDWn>;tU|7_oIE^lWiMIo0gWYYYt zDZ+)ZY`Bog4JF_JV|)m>NHmoj&*wAYyd%C3->pi#2jP^a{kypdz8T$5Xl#oAZ5d8v z#+)#_vQwF%Xeyja4u-Rng+wO(klou8&L<1bJ~&$$jmDk4mqa+iX@qld7?T`xzWhod zN&2ErIH@e00O0cR&N4b-GX#4OEF;{O0nOOZY4}eXo0koLpApdO2aNXPMxe{sA2N=Z zG5s0a=+k#v##Y-nvVgMuo>n#w>=)aw^L23aV zFbt=Uo2IuZ9>@LC+nEEn8-*TbLWhl%+VHss82u%HbgkE)_?-MkJ zb5N9_u0Tnn1wC6vdymlyi|H^sjg}6hJ@kJ(YcaRrayr6FGd695CAMxxt_!%1J+92y zZXPj|E$3lR3=Q1~4GW*#B?TwcO0|~Hg}9mdyy`?U4ZVNZf-_I+#ED~8??JoA#&^OR z!+qaLINi0X0TA*ForeiKohdlN9-d6YDW9<8>2W&|%_ju?qr8w4b}lm3AOpsST3e4x!UTBuRhOvO0a_jvH~|6kyU z6^G-I@;}=%odyl_We_k&VN;Fc5*OB+-h;)n@zv~aulEeP$&LwMKc4>x7__g={}Zy` zz(ArLi|LO+&b?a+Z6(9!NQlcp9LMMT_bSM0mgrh!$^N=KTlwR-EcqoctJ&|R038e@ HT5JDbl#FwJ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..314e9f2e746eb807b47f56a32a0d2e193f7baba4 GIT binary patch literal 5480 zcmeHLU2Ggz6+Ux!X1reSuGecTE^eG|Q#T1!JZn2Y4i%-YaDj@XDU?tmkhbI9+1-hE zXSOr5PFz{`CIwMZtNc8qDiVr>1gV<-MFK=cpymMyh4PS;2P7&KArL&GNaO{H<(!#& zHk);zq2V!CJM*1;&iT&$nftqIj~@J#P?R|VQHsG8P^3&SC*^7;5+2q_cL3t}9)T?A zs8;cri_DvFLk44vOFvQ*??0stEQb;!$nuF7ny6q(TO#Nn>lwRvp(-i;ci)H&ne9|c z@&xK{g~xnu-{=1ll*0DiVtL%>pF;O}Ifk^8<6T{qB{Lww}W z{HLEd0`S}$X1!GPO=HpW9INJk`^9sHS!sBMqT6%=_<>=1760^C-!RNl$+LXF;5W>o z^}|ZdT`+5B4YyqOEpqeiXRY`-W67*Ft-_-1lwOZq3JcA0+44RhK>T(CWNtUWUAG$` z_kjVPA?&=jjf&?s8wKC0)Ga3{lCIPQ9jGAvqttKbK7%(``!KKj(u^v{fjXD^w7)d}2H>N&&j zjE9l)QO0lBwVE6vXAOV3zTnngmBEa~5;m+u89E$@x4X@tIgGao~)qZ`aAD3K$S# zHIalFWl$V|))VgotPP|DtR|D085qolx;U(*p!JpaRanDl`bG}R92D8rH2UeKjf{K55i+GAPq+OKxbLiYKU ztH~tvr;-W%aCY@-CIcSYW23q%MpgBf*|F-$?AGca{N_?>cx)nrm_}@ETVLtFI}5Gc zsg?fmEX0R134JiP5>F+e53XF&Qx{`>k7ibtQK7;psQt&TT)LXP7#l!--_XVT28J?A z{X<(4Daw!Tm`Dw6S?ZH=AN&b@3{{6eUh2a*Fn9hvNQrm@>jm)EdkJM`M4(Qft_7!8 z1nIPykrwt-OPpS52>~q?QB|R(BkH)Dv{u6Y1UQK?T6dm1eQ;+C+!+Jm7~r$!@8yAT z0M`*pcSR7LwNWm~eK8^RBNG4dueM8KPTKigIWP0ltpm!Ca({YQi={K8cc+JxES4_} zh^2E_aLhn!R-Ycmt!^BqhmVYYY2fIb1rya6fB(J2eATU6d9H#{bBkszU$YnTjpd-~I(v-isl0Co)+CqoVF_CKUeJeJqS9@ny#HujK~J)(_0tYt6G z?$L(-s*Ox(!w;%L8;|7;RnbObPv*khB;|I+z8Gk#Ziuf5?8E3QCK2$s(pK^2s;U{h zyUNrxbVzg1cCZ}}=I}0*J9uzDH+{gEGN#yhGlp>l-uiamXrp5Pmvbfs6D86y zza`ga#<`AXB=qL!7%pkSDK+kfaLI`U)wEM>Y(!C_Sy}$!E-s0^zLlHk$nTou z_bxHL{HEmh`t3+j6aXuN&YSs+Ewr%QaYEq*$$zTH*pm(KoV_}V^S5*qZC3=HcklRr z87;)`t$!xmzX7jFHzqEN@%w1zvD@vrOY)zVN<2G+eq27!-&axJGeknh^OAo-@)@{X U&i@F7oAKx603ByXiM{-P1A3MBasU7T literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..1d503a84f6cc58d77ff21b8a470a3e14184c17e0 GIT binary patch literal 22336 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a1b45a4ee2ad5bd4946de46838965c8ca48cead8 GIT binary patch literal 7576 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b6ccc6afe0e8a28860292982ec5c28dcf10575fb GIT binary patch literal 17344 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..dda6d7163bfe8f2d1730eb18acdbc35b756334ee GIT binary patch literal 10256 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 NL(!<+OZ;oae*=iT8Cd`T literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f5f3cd413e528423ec8a1e0dd31c72daf2655859 GIT binary patch literal 17048 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 z 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 N+M{FTgX2p5{{wG<@8SRe literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9880709ae10b234c5da46b8c1110b833ba7c26dc GIT binary patch literal 10264 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..7a806045114a62b743c114e160799e91ba34eaf0 GIT binary patch literal 22320 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 Qee`0XfuDgHag4VAKLBl*!vFvP literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a3bde14472fbbefca676fd06511508049583bb8d GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9fa79763a72e70f9dabc118569160bb3d607d263 GIT binary patch literal 11760 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%0AWrMG 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 literal 0 HcmV?d00001 diff --git a/server/src/main.rs b/server/src/main.rs index 590cb43b..b5173b51 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -355,6 +355,10 @@ async fn service( | "/cold/resnet18batch32" | "/cold/resnet18batch64" | "/cold/resnet34" + | "/cold/resnet34batch2" + | "/cold/resnet34batch4" + | "/cold/resnet34batch8" + | "/cold/resnet34batch16" | "/cold/resnet152" => serve_request(true, req, dispatcher).await, "/hot/matmul" | "/hot/matmulstore" @@ -372,6 +376,10 @@ async fn service( | "/hot/resnet18batch32" | "/hot/resnet18batch64" | "/hot/resnet34" + | "/hot/resnet34batch2" + | "/hot/resnet34batch4" + | "/hot/resnet34batch8" + | "/hot/resnet34batch16" | "/hot/resnet152" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( From ef8adbb864af3028d84debeaaec57bd9f17458bf Mon Sep 17 00:00:00 2001 From: alrusso Date: Wed, 11 Dec 2024 13:38:14 +0100 Subject: [PATCH 144/176] ResNet50 added --- server/src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/src/main.rs b/server/src/main.rs index b5173b51..7b50614a 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -359,6 +359,7 @@ async fn service( | "/cold/resnet34batch4" | "/cold/resnet34batch8" | "/cold/resnet34batch16" + | "/cold/resnet50" | "/cold/resnet152" => serve_request(true, req, dispatcher).await, "/hot/matmul" | "/hot/matmulstore" @@ -380,6 +381,7 @@ async fn service( | "/hot/resnet34batch4" | "/hot/resnet34batch8" | "/hot/resnet34batch16" + | "/hot/resnet50" | "/hot/resnet152" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( From 719bc0fd51c87addca78e77177754f6243a7e9d6 Mon Sep 17 00:00:00 2001 From: alrusso Date: Wed, 11 Dec 2024 14:05:04 +0100 Subject: [PATCH 145/176] ResNet50 added --- .../tests/data/test_gpu_resnet50.json | 624 ++++++++++++++++++ ...pool2d_add_miopen_batch_norm_relu_29.hsaco | Bin 0 -> 6872 bytes ..._fused_add_miopen_batch_norm_relu_25.hsaco | Bin 0 -> 6576 bytes ..._fused_add_miopen_batch_norm_relu_28.hsaco | Bin 0 -> 5688 bytes ...sed_conv2d_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 5488 bytes ...sed_conv2d_miopen_batch_norm_relu_22.hsaco | Bin 0 -> 5480 bytes ...sed_conv2d_miopen_batch_norm_relu_26.hsaco | Bin 0 -> 5280 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 7504 bytes ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 19888 bytes ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 16136 bytes ...add_conv2d_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 21616 bytes ...add_conv2d_miopen_batch_norm_relu_21.hsaco | Bin 0 -> 16848 bytes ..._add_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 20608 bytes ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 16648 bytes .../libs/resnet50/tem_fused_conv2d_10.hsaco | Bin 0 -> 8408 bytes .../libs/resnet50/tem_fused_conv2d_24.hsaco | Bin 0 -> 9304 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 14384 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 14968 bytes ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 15776 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 14968 bytes ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin 0 -> 10376 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 8616 bytes ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 10824 bytes ...sed_conv2d_miopen_batch_norm_relu_20.hsaco | Bin 0 -> 10088 bytes ...sed_conv2d_miopen_batch_norm_relu_23.hsaco | Bin 0 -> 10688 bytes ...sed_conv2d_miopen_batch_norm_relu_27.hsaco | Bin 0 -> 8624 bytes ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 10680 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 8192 bytes ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 10296 bytes ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 14696 bytes ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 16072 bytes .../libs/resnet50/tem_fused_linear_30.hsaco | Bin 0 -> 11128 bytes 32 files changed, 624 insertions(+) create mode 100644 machine_interface/tests/data/test_gpu_resnet50.json create mode 100644 machine_interface/tests/libs/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco create mode 100644 machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco create mode 100644 machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco create mode 100644 machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco create mode 100644 machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco create mode 100644 machine_interface/tests/libs/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_10.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_24.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet50/tem_fused_linear_30.hsaco diff --git a/machine_interface/tests/data/test_gpu_resnet50.json b/machine_interface/tests/data/test_gpu_resnet50.json new file mode 100644 index 00000000..73e2c330 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet50.json @@ -0,0 +1,624 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_10.hsaco", "path": "resnet50/tem_fused_conv2d_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_conv2d_24.hsaco", "path": "resnet50/tem_fused_conv2d_24.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "path": "resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "path": "resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "path": "resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "path": "resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco"}, + {"module_name": "tem_fused_linear_30.hsaco", "path": "resnet50/tem_fused_linear_30.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern005"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_10.hsaco", "kernel_name": "kern014"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern015"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern016"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern025"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "kernel_name": "kern026"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern027"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern028"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern029"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "kernel_name": "kern031"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "kernel_name": "kern033"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "kernel_name": "kern050"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "kernel_name": "kern051"}, + {"module_name": "tem_fused_conv2d_24.hsaco", "kernel_name": "kern052"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "kernel_name": "kern053"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "kernel_name": "kern054"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "kernel_name": "kern055"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "kernel_name": "kern056"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "kernel_name": "kern059"}, + {"module_name": "tem_fused_linear_30.hsaco", "kernel_name": "kern060"} + ], + "blueprint": { + "inputs": ["arg320_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_0_conv3_weight", "layer1_0_downsample_0_weight", "layer1_0_bn3_running_mean", "layer1_0_bn3_running_var", "layer1_0_bn3_weight", "layer1_0_bn3_bias", "layer1_0_downsample_1_running_mean", "layer1_0_downsample_1_running_var", "layer1_0_downsample_1_weight", "layer1_0_downsample_1_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer1_1_conv3_weight", "layer1_1_bn3_running_mean", "layer1_1_bn3_running_var", "layer1_1_bn3_weight", "layer1_1_bn3_bias", "layer1_2_conv1_weight", "layer1_2_bn1_running_mean", "layer1_2_bn1_running_var", "layer1_2_bn1_weight", "layer1_2_bn1_bias", "layer1_2_conv2_weight", "layer1_2_bn2_running_mean", "layer1_2_bn2_running_var", "layer1_2_bn2_weight", "layer1_2_bn2_bias", "layer1_2_conv3_weight", "layer1_2_bn3_running_mean", "layer1_2_bn3_running_var", "layer1_2_bn3_weight", "layer1_2_bn3_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_0_weight", "layer2_0_conv3_weight", "layer2_0_bn3_running_mean", "layer2_0_bn3_running_var", "layer2_0_bn3_weight", "layer2_0_bn3_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer2_1_conv3_weight", "layer2_1_bn3_running_mean", "layer2_1_bn3_running_var", "layer2_1_bn3_weight", "layer2_1_bn3_bias", "layer2_2_conv1_weight", "layer2_2_bn1_running_mean", "layer2_2_bn1_running_var", "layer2_2_bn1_weight", "layer2_2_bn1_bias", "layer2_2_conv2_weight", "layer2_2_bn2_running_mean", "layer2_2_bn2_running_var", "layer2_2_bn2_weight", "layer2_2_bn2_bias", "layer2_2_conv3_weight", "layer2_2_bn3_running_mean", "layer2_2_bn3_running_var", "layer2_2_bn3_weight", "layer2_2_bn3_bias", "layer2_3_conv1_weight", "layer2_3_bn1_running_mean", "layer2_3_bn1_running_var", "layer2_3_bn1_weight", "layer2_3_bn1_bias", "layer2_3_conv2_weight", "layer2_3_bn2_running_mean", "layer2_3_bn2_running_var", "layer2_3_bn2_weight", "layer2_3_bn2_bias", "layer2_3_conv3_weight", "layer2_3_bn3_running_mean", "layer2_3_bn3_running_var", "layer2_3_bn3_weight", "layer2_3_bn3_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "var_193", "layer3_0_conv3_weight", "layer3_0_downsample_0_weight", "layer3_0_bn3_running_mean", "layer3_0_bn3_running_var", "layer3_0_bn3_weight", "layer3_0_bn3_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_214", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_223", "layer3_1_conv3_weight", "layer3_1_bn3_running_mean", "layer3_1_bn3_running_var", "layer3_1_bn3_weight", "layer3_1_bn3_bias", "layer3_2_bn1_running_mean", "layer3_2_bn1_running_var", "layer3_2_bn1_weight", "layer3_2_bn1_bias", "var_237", "layer3_2_conv2_weight", "layer3_2_bn2_running_mean", "layer3_2_bn2_running_var", "layer3_2_bn2_weight", "layer3_2_bn2_bias", "var_246", "layer3_2_conv3_weight", "layer3_2_bn3_running_mean", "layer3_2_bn3_running_var", "layer3_2_bn3_weight", "layer3_2_bn3_bias", "layer3_3_bn1_running_mean", "layer3_3_bn1_running_var", "layer3_3_bn1_weight", "layer3_3_bn1_bias", "var_260", "layer3_3_conv2_weight", "layer3_3_bn2_running_mean", "layer3_3_bn2_running_var", "layer3_3_bn2_weight", "layer3_3_bn2_bias", "var_269", "layer3_3_conv3_weight", "layer3_3_bn3_running_mean", "layer3_3_bn3_running_var", "layer3_3_bn3_weight", "layer3_3_bn3_bias", "layer3_4_bn1_running_mean", "layer3_4_bn1_running_var", "layer3_4_bn1_weight", "layer3_4_bn1_bias", "var_283", "layer3_4_conv2_weight", "layer3_4_bn2_running_mean", "layer3_4_bn2_running_var", "layer3_4_bn2_weight", "layer3_4_bn2_bias", "var_292", "layer3_4_conv3_weight", "layer3_4_bn3_running_mean", "layer3_4_bn3_running_var", "layer3_4_bn3_weight", "layer3_4_bn3_bias", "layer3_5_bn1_running_mean", "layer3_5_bn1_running_var", "layer3_5_bn1_weight", "layer3_5_bn1_bias", "var_306", "layer3_5_conv2_weight", "layer3_5_bn2_running_mean", "layer3_5_bn2_running_var", "layer3_5_bn2_weight", "layer3_5_bn2_bias", "var_315", "layer3_5_conv3_weight", "layer3_5_bn3_running_mean", "layer3_5_bn3_running_var", "layer3_5_bn3_weight", "layer3_5_bn3_bias", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "var_329", "layer4_0_conv2_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_0_weight", "layer4_0_bn3_running_mean", "layer4_0_bn3_running_var", "layer4_0_bn3_weight", "layer4_0_bn3_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_350", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "var_356", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "layer4_1_bn3_running_mean", "layer4_1_bn3_running_var", "layer4_1_bn3_weight", "layer4_1_bn3_bias", "var_370", "layer4_2_bn1_running_mean", "layer4_2_bn1_running_var", "layer4_2_bn1_weight", "layer4_2_bn1_bias", "var_376", "layer4_2_conv2_weight", "layer4_2_bn2_running_mean", "layer4_2_bn2_running_var", "layer4_2_bn2_weight", "layer4_2_bn2_bias", "layer4_2_bn3_running_mean", "layer4_2_bn3_running_var", "layer4_2_bn3_weight", "layer4_2_bn3_bias", "var_391", "var_392", "fc_bias", "fc_weight"], + "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf10": {"Absolute": 3211264}, "buf24": {"Absolute": 1605632}, "buf26": {"Absolute": 401408}, "buf30": {"Absolute": 1605632}, "buf34": {"Absolute": 401408}, "buf51": {"Absolute": 200704}, "buf59": {"Absolute": 200704}, "buf90": {"Absolute": 100352}, "buf98": {"Absolute": 100352}, "buf106": {"Absolute": 8192}, "buf108": {"Absolute": 4000}}, + "outputs": ["buf108"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg320_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_9"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf6"}, {"Ptr": "layer1_0_conv3_weight"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_downsample_0_weight"}, {"Ptr": "buf1"}, {"Ptr": "layer1_0_bn3_running_mean"}, {"Ptr": "layer1_0_bn3_running_var"}, {"Ptr": "layer1_0_bn3_weight"}, {"Ptr": "layer1_0_bn3_bias"}, {"Ptr": "layer1_0_downsample_1_running_mean"}, {"Ptr": "layer1_0_downsample_1_running_var"}, {"Ptr": "layer1_0_downsample_1_weight"}, {"Ptr": "layer1_0_downsample_1_bias"}, {"Ptr": "buf10"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf10"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf2"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv3_weight"}, {"Ptr": "layer1_1_bn3_running_mean"}, {"Ptr": "layer1_1_bn3_running_var"}, {"Ptr": "layer1_1_bn3_weight"}, {"Ptr": "layer1_1_bn3_bias"}, {"Ptr": "buf10"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf1"}, {"Ptr": "layer1_2_conv1_weight"}, {"Ptr": "layer1_2_bn1_running_mean"}, {"Ptr": "layer1_2_bn1_running_var"}, {"Ptr": "layer1_2_bn1_weight"}, {"Ptr": "layer1_2_bn1_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf6"}, {"Ptr": "layer1_2_conv2_weight"}, {"Ptr": "layer1_2_bn2_running_mean"}, {"Ptr": "layer1_2_bn2_running_var"}, {"Ptr": "layer1_2_bn2_weight"}, {"Ptr": "layer1_2_bn2_bias"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer1_2_conv3_weight"}, {"Ptr": "layer1_2_bn3_running_mean"}, {"Ptr": "layer1_2_bn3_running_var"}, {"Ptr": "layer1_2_bn3_weight"}, {"Ptr": "layer1_2_bn3_bias"}, {"Ptr": "buf1"}, {"Ptr": "buf10"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf10"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf24"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf10"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf26"}, {"Ptr": "layer2_0_conv3_weight"}, {"Ptr": "layer2_0_bn3_running_mean"}, {"Ptr": "layer2_0_bn3_running_var"}, {"Ptr": "layer2_0_bn3_weight"}, {"Ptr": "layer2_0_bn3_bias"}, {"Ptr": "buf24"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf30"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf26"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer2_1_conv3_weight"}, {"Ptr": "layer2_1_bn3_running_mean"}, {"Ptr": "layer2_1_bn3_running_var"}, {"Ptr": "layer2_1_bn3_weight"}, {"Ptr": "layer2_1_bn3_bias"}, {"Ptr": "buf30"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf24"}, {"Ptr": "layer2_2_conv1_weight"}, {"Ptr": "layer2_2_bn1_running_mean"}, {"Ptr": "layer2_2_bn1_running_var"}, {"Ptr": "layer2_2_bn1_weight"}, {"Ptr": "layer2_2_bn1_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf34"}, {"Ptr": "layer2_2_conv2_weight"}, {"Ptr": "layer2_2_bn2_running_mean"}, {"Ptr": "layer2_2_bn2_running_var"}, {"Ptr": "layer2_2_bn2_weight"}, {"Ptr": "layer2_2_bn2_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf26"}, {"Ptr": "layer2_2_conv3_weight"}, {"Ptr": "layer2_2_bn3_running_mean"}, {"Ptr": "layer2_2_bn3_running_var"}, {"Ptr": "layer2_2_bn3_weight"}, {"Ptr": "layer2_2_bn3_bias"}, {"Ptr": "buf24"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf30"}, {"Ptr": "layer2_3_conv1_weight"}, {"Ptr": "layer2_3_bn1_running_mean"}, {"Ptr": "layer2_3_bn1_running_var"}, {"Ptr": "layer2_3_bn1_weight"}, {"Ptr": "layer2_3_bn1_bias"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf26"}, {"Ptr": "layer2_3_conv2_weight"}, {"Ptr": "layer2_3_bn2_running_mean"}, {"Ptr": "layer2_3_bn2_running_var"}, {"Ptr": "layer2_3_bn2_weight"}, {"Ptr": "layer2_3_bn2_bias"}, {"Ptr": "buf34"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf34"}, {"Ptr": "layer2_3_conv3_weight"}, {"Ptr": "layer2_3_bn3_running_mean"}, {"Ptr": "layer2_3_bn3_running_var"}, {"Ptr": "layer2_3_bn3_weight"}, {"Ptr": "layer2_3_bn3_bias"}, {"Ptr": "buf30"}, {"Ptr": "buf24"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "buf24"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern026", [{"Ptr": "buf2"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf51"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf51"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "var_193"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern028", [{"Ptr": "buf51"}, {"Ptr": "layer3_0_conv3_weight"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern029", [{"Ptr": "buf24"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf2"}, {"Ptr": "layer3_0_bn3_running_mean"}, {"Ptr": "layer3_0_bn3_running_var"}, {"Ptr": "layer3_0_bn3_weight"}, {"Ptr": "layer3_0_bn3_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf51"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_214"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf51"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf59"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_223"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf59"}, {"Ptr": "layer3_1_conv3_weight"}, {"Ptr": "layer3_1_bn3_running_mean"}, {"Ptr": "layer3_1_bn3_running_var"}, {"Ptr": "layer3_1_bn3_weight"}, {"Ptr": "layer3_1_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf59"}, {"Ptr": "layer3_2_bn1_running_mean"}, {"Ptr": "layer3_2_bn1_running_var"}, {"Ptr": "layer3_2_bn1_weight"}, {"Ptr": "layer3_2_bn1_bias"}, {"Ptr": "var_237"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf59"}, {"Ptr": "layer3_2_conv2_weight"}, {"Ptr": "buf51"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf51"}, {"Ptr": "layer3_2_bn2_running_mean"}, {"Ptr": "layer3_2_bn2_running_var"}, {"Ptr": "layer3_2_bn2_weight"}, {"Ptr": "layer3_2_bn2_bias"}, {"Ptr": "var_246"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf51"}, {"Ptr": "layer3_2_conv3_weight"}, {"Ptr": "layer3_2_bn3_running_mean"}, {"Ptr": "layer3_2_bn3_running_var"}, {"Ptr": "layer3_2_bn3_weight"}, {"Ptr": "layer3_2_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf51"}, {"Ptr": "layer3_3_bn1_running_mean"}, {"Ptr": "layer3_3_bn1_running_var"}, {"Ptr": "layer3_3_bn1_weight"}, {"Ptr": "layer3_3_bn1_bias"}, {"Ptr": "var_260"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf51"}, {"Ptr": "layer3_3_conv2_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf59"}, {"Ptr": "layer3_3_bn2_running_mean"}, {"Ptr": "layer3_3_bn2_running_var"}, {"Ptr": "layer3_3_bn2_weight"}, {"Ptr": "layer3_3_bn2_bias"}, {"Ptr": "var_269"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf59"}, {"Ptr": "layer3_3_conv3_weight"}, {"Ptr": "layer3_3_bn3_running_mean"}, {"Ptr": "layer3_3_bn3_running_var"}, {"Ptr": "layer3_3_bn3_weight"}, {"Ptr": "layer3_3_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf59"}, {"Ptr": "layer3_4_bn1_running_mean"}, {"Ptr": "layer3_4_bn1_running_var"}, {"Ptr": "layer3_4_bn1_weight"}, {"Ptr": "layer3_4_bn1_bias"}, {"Ptr": "var_283"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf59"}, {"Ptr": "layer3_4_conv2_weight"}, {"Ptr": "buf51"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf51"}, {"Ptr": "layer3_4_bn2_running_mean"}, {"Ptr": "layer3_4_bn2_running_var"}, {"Ptr": "layer3_4_bn2_weight"}, {"Ptr": "layer3_4_bn2_bias"}, {"Ptr": "var_292"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf51"}, {"Ptr": "layer3_4_conv3_weight"}, {"Ptr": "layer3_4_bn3_running_mean"}, {"Ptr": "layer3_4_bn3_running_var"}, {"Ptr": "layer3_4_bn3_weight"}, {"Ptr": "layer3_4_bn3_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf51"}, {"Ptr": "layer3_5_bn1_running_mean"}, {"Ptr": "layer3_5_bn1_running_var"}, {"Ptr": "layer3_5_bn1_weight"}, {"Ptr": "layer3_5_bn1_bias"}, {"Ptr": "var_306"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern031", [{"Ptr": "buf51"}, {"Ptr": "layer3_5_conv2_weight"}, {"Ptr": "buf59"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern027", [{"Ptr": "buf59"}, {"Ptr": "layer3_5_bn2_running_mean"}, {"Ptr": "layer3_5_bn2_running_var"}, {"Ptr": "layer3_5_bn2_weight"}, {"Ptr": "layer3_5_bn2_bias"}, {"Ptr": "var_315"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern033", [{"Ptr": "buf59"}, {"Ptr": "layer3_5_conv3_weight"}, {"Ptr": "layer3_5_bn3_running_mean"}, {"Ptr": "layer3_5_bn3_running_var"}, {"Ptr": "layer3_5_bn3_weight"}, {"Ptr": "layer3_5_bn3_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern050", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "var_329"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern051", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf90"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern052", [{"Ptr": "buf2"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern053", [{"Ptr": "buf34"}, {"Ptr": "layer4_0_bn3_running_mean"}, {"Ptr": "layer4_0_bn3_running_var"}, {"Ptr": "layer4_0_bn3_weight"}, {"Ptr": "layer4_0_bn3_bias"}, {"Ptr": "buf26"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_350"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern054", [{"Ptr": "buf90"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "var_356"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern055", [{"Ptr": "buf90"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern056", [{"Ptr": "buf34"}, {"Ptr": "buf26"}, {"Ptr": "layer4_1_bn3_running_mean"}, {"Ptr": "layer4_1_bn3_running_var"}, {"Ptr": "layer4_1_bn3_weight"}, {"Ptr": "layer4_1_bn3_bias"}, {"Ptr": "var_370"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern054", [{"Ptr": "buf98"}, {"Ptr": "layer4_2_bn1_running_mean"}, {"Ptr": "layer4_2_bn1_running_var"}, {"Ptr": "layer4_2_bn1_weight"}, {"Ptr": "layer4_2_bn1_bias"}, {"Ptr": "var_376"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern055", [{"Ptr": "buf98"}, {"Ptr": "layer4_2_conv2_weight"}, {"Ptr": "layer4_2_bn2_running_mean"}, {"Ptr": "layer4_2_bn2_running_var"}, {"Ptr": "layer4_2_bn2_weight"}, {"Ptr": "layer4_2_bn2_bias"}, {"Ptr": "buf90"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern059", [{"Ptr": "buf106"}, {"Ptr": "buf26"}, {"Ptr": "layer4_2_bn3_running_mean"}, {"Ptr": "layer4_2_bn3_running_var"}, {"Ptr": "layer4_2_bn3_weight"}, {"Ptr": "layer4_2_bn3_bias"}, {"Ptr": "buf34"}, {"Ptr": "var_391"}, {"Ptr": "var_392"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 32} + }]}, + {"ExecKernel": ["kern060", [{"Ptr": "fc_bias"}, {"Ptr": "buf106"}, {"Ptr": "fc_weight"}, {"Ptr": "buf108"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco b/machine_interface/tests/libs/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..3c3299acec78f5cb75204ea6bd11705466d0cb7a GIT binary patch literal 6872 zcmeHMZHya78J?Zp*{s(-+vjt9$K^iuK1i)3x4t-Odo7{8LQ={#r3F!u2o-1TTYud7 zY}Z~pmk?|x>6fag6oe4{6@&z>TH2~osajE*R0ydGMauQpNmM98LX?VMk*JUmJ>GYB z#&Mj`hDPF7M(2Iz{dnH_p4pvi?c0Ahm85w}yd;wgMB;gbd7fY2>}Bp`sGB1iJfkE+ zR8TAMoA=CD;8`9_pvL`BjlBPs+87v;Koa(3c|0 zi=rHX6!h1^6MWIWZ~VnsblZ20 zXK`}Q-hA7y%}TYhH)YlU*@ zhmu(G-oos8qA?=F>g4;|2YkWew$=|j(mdZJ<~a}j#cvq$xctLyVxVsN-8Vlv{>Pc$ z;1jTtnzQk%j6WG*q*QA_J37T8a#^yQYCoS z08~#ZPd!Gcq0n&r3{kc|5?13X{a{Vb_!I?D13VoFP7?C&`BxN5+BDj1Q?+?o(AN8 zmX!Uv%Tq{8#`deE6~y+}L#NJcOl$O)zq{$y4f5z)@D>o-pn4PVex^Nf?4lkZN}r}H z_XnE#cu?_AL=^`)lQEa`c3>=jJYeMe$?w-feUa%1U>J~+yU({LDW2zR>bMST;I8v+ z(7N)3PBy54W!!qvm?SKQ<>&9Sh`- z$0qYwjyf2d9sukIbj#!M{e8T=t-QP`om@0xBup=?DZX=Zc;95x53$*}aZL5=P$#JK z)VV2jYOxp?;P7;4D%J=Am-#_2bo-2^O8&g2PML~A{seV9CvWm; zI@&`M5NpElV(Gw{i0N+sK&<|WSi|*!yvv_36^49>twZ}ChQ9Urh8h(>%|F}-Y*K08 zs7BlBkB?Du@A)>&XR`F+V{KI>Cx|{x=!cJO==!!ctf#hyZ$!;?CSx}PDukU>6r=U_ zsWWn)N^yQGevOXLA6!8Ga_&sTpPifO1eNWhyjP_fj zuogDR37F4&za)_hYg8eMv`=d)suGuBj3nQ=DcPqrWEgLF$yH>Z?v9=04^G28Ye?t= zc?rf?^2L|`j?uwZHE{LAkc}o4#=Ys=G4u%J} z1pB23grz2tg9a2Vn_!KoI|txXc9iTKK;eM@p#NK7W2ks=P>3W25xufBX%6!EzU!qs z5xU-*=|dn(a<^(5XcTjb2d>cIQ9&D{4ZNMyXI9U zkrLHORN=Ouuws+X5Xo&~qG*+JbqGz!XYDI!CjXep+rq}0 z_bQZ)%3DoEVpH;W_9!x&me(aue6DG5*>KIzHO($LF2C4Z068STBN@Q*FF>}wa1A*K zwnIL}$$yhDcvOC^xxnH-Wy%*=JfX_>m@KNwx0q~Dw)TJ(nm%%lMaS64EQ>>%6_Y+r zVS?cd#}%~!Nr9U}MG3=QAx~W^6E*t_B^aRF4Y+$U_V3?o?3^=a%~|1mCAx7ayx|y^ z+py68<$IZ!rLtoabMZ(Ct^kOcE7i@sRm&6pM7>ibX0^O%ITkS;d)0Bht(8Is)ON92 zPF3IntWe5<-cHwZDJz|>+6^HUO4+i=S79RCH6giyJxZ}q!b-UGY!$9Gh?yy`;N=Oy zs|m+S1LlF?M?$jBGxv)GzC_ujo1C_NRp znREG>bZNct`u| z@3*g_L%-K~`56?tQZGLTwq6~&Z|V0)hdk&!dwuI*LEUV}!^?b^^WjXoED65AHdsZz z+wlVDJ7QvRW3MmXk@f1(^#GrEan2JU#!tx4KnD4}^>1^&__vAh7i9_j85nx1=(_%d y^AB+%ysNo>qI|J_p9j5|JKWWUe{%kt-Ac%da)tU;$Xt#8D*r#!sBq-i%l{80R5h*u literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco b/machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..fd8546e339753c2245a069a49be576fd4ab9387e GIT binary patch literal 6576 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 R%BS(aCBE|}$WUM}|3CKRO?&_V literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d7d420a6c064d669845dba584c3093c534457ef6 GIT binary patch literal 5488 zcmeHLU2Ggz6+SaNv)*0rpVx~W+`8R5ZWF3{)^Xa{L~84bloHix3Q;H(pzZAL>`%Nq zvzeK7?a0`Zl%F7?Qg{gBp{i7=1U3DO1c-`I8wn(o<|Qc)NK`07@LokCFGwus%-pkC z)`5nG$6R^lJNKOPo%^%r-nrN7k1u>)mZW(Zf)au&APJdZUdXL&&O!#l zs8;Zq56oL|Qv_p-2tQI2??07IY=;UXi1vx+o2X$bBLQ@g^^83{UlkYr5Bxi}M77%~ z!IM#cGd$+=_`dWvx9pGaCfnmV|043Z>)fTAL2Aoyk2*}H5C0(Qj6C-P=(>Tn9O7dK z_C4|RVSpFj(wpU)qic(XZ5j>d2QQx0^lHm4l&rSt!fTptSDn+}d`r{IW!rF^g45DV z#!spZtEe~5XjY}-806;Ej~S7(+LGRA8->NXS$;EcDHPk4ieZ0DfXJ-|NZ)FJZMPaA z_pt$9;OW{KxGKHV_0!@?!JoW$wW@8kTLs6cHVxA)RO-t{xj@qkzwmz~{6V@#y-}~4 zk)LnTllud|)SCKoq0-RZ!t<8BD8i!UqW79+>P_Pe{pQm%v%k_>c6~{Ajc(kYM$c+a zHyyI)f{N3sHyR>C&S=g`vuHJ57s0f}GLEZD89EnKdMR&f&+AJ@#kO#G)YJJlMGm?+ zHp6`vYt@oDg+LD`=hRfSvi#X;opW``u${VP{!rqTgb96vLe@+OvtH~Q9|`v;>W6Tp zdt%?27hE#)GlnuPqqGM((oJ4Gf9?36rhXklnI0-+7a{$+{}R&x*QevUO-Q^Qd1Bw$ z;(!WTvnSwfIE6_4{eP73ci}~ha~V_#I^ewrzon=rzi}kzz30Hm4OvcZlI9hVCuI2k zBwN@PYFh|QsI?%Mzp5Q^7ci6eNPOEF-`1yB)KTIk|c@ z9*1Zm9t$7LtX)l~!A5&%Jgms$it?MxSnYUbq?U&FFC~V@CR2!mh+gj0YV?i_cz2yx zjgDp@GMtWuQ@PbhA`Sy^)1N%f>xOG7qlI~3otD$6i^p50^l)?684MNEr zHXPE>nhEb3#!uZi>>55i`jx?F2cMxXJ&8{cI^us_Wk`vTPZ0Ke%w;;!N}*oW{isps zMMb(FrSswwy(#eb0{<#7aJ~L^?Ye83{QZVfQ7`Usmfhu9vr?`eojtbOZdZ#n{1O6!|f7E1-)Un9mmQSb@)0q zuE0fXRgt8BBoiQEp&sMke`n@vR@2CHD6L_Y^hUl>FXme-Zp|`xYrCfNPTe)8@SMJ= zR}ClVM83e?$lG|ZuQv_!bQiqlQaXteMwM&qT!ka|xHqB8#+pYblaCw8mZXVi(jn%%G7^+;9Su~*$bJ*D0mI;N?2?|E3A+@Dv+o>DW0I`*)dIjoL7 zs%9=6x>p^3U(JM;H8mTG<<#N5imZ-@@|q%{;!w`7O;K%U=*zCEgf;nFGR`Lbo^&1S zU{UY}t0-x_!-~?ALZn%!n>e1mIlL3)78ds9cFk$i+B7?FML!OHs(}x3!i5_BU(TDL znU-sSR$ejj3=LYwD|XdI{A=!?p@7yqML^D(a15 zyIRnTMcY{7THUNzEZe$?*}yeFa6oC)P3nYCuh@7m0Ig&->GA<|ws-X+Vhss_6d-2+ zBOd#quM9^<6ovz_@u4WCAVVzZt1NyeOTWIOkt@ou!!U4!ksFEe)YS;X;^ zUdRMH@F5-ZJ+V(S&ZDij%=cDM&f`OT{%-KX?kc(lLG0_mLxRiqrS5v6g^7j#k0QF& zoqxU-J%Tfb&4brk2LWDsp< z0NroOQ)Qu>jacpq2Ru^lRmAloNiWTJ+tY>A{-5F@|)&@ z_0wwIoj2=e4YyM9Epqei<5u#Vv1Ha;R%y|8%5TOlrTJE+VtJnsAbGn1aX34jz4a*5i6?@q#m#BN;=g~*P57IH3b-U^$ z-`%7q_dUNb8s>7TQa6LrG1ps^VbSt?1wWW$HmtMs(I+3A{H4+K>?Jd>I)S@dJ!klx z@i1~euJ}#6UYA4Utl_sC^KSih8O&HLW6Tq zhjQJSl~gkGZwzIcM!66Qq#OV6{c9)wJn^dp%Jic`b{R6NM-SNxaJ@IK+oZ(HQ7G4) zO%AA_IeQY`hEs@?@BgFdFTzVgWY=Y^OQ0#R0pYKIbn*w!DDd4&^fG6JTKJ9-I}}Z= zodK}};N?pv@lDs(PkqoY^wlIJrxJ zgo7I*y^45fL*xi&Hbi#yIs6d*;HeKb#`5Bg-|m`${0l2r(`o3>q*MB#{OZ+Q4m`9c zMs-z;s_Jj@W3?0ct+he;-NnrC*mw>xix_S{wbFlg9>T)OmHuscNDk*x`e0!tnMp$* zT)C)cE+qOM%dIM-LWNOK`;T6^cr|??F@XHOp$j_)hH^{&Lt9cAs*m13o*CM*)FXz1@N9nbl5c??-J61b!Ji{BtY};Hf;OrbwUL9`jw9OkmbO!`XxmY- zQ~!dtOW&hy{j7G+zK6B(CyLtGlUm-=#va!4hqbXswETscX>IuL+Q_6f{E#ZNZHc0x zD%wcmnL<>XpxW-lvw^1ShImn67s`*AM%=)n;>}f6b9i@^rEBPr=78mV&N*ETj>=JR^TI4=2YXTDU!XHcNn zZ0Gfnu^=7U&iOOmgLb-Ou$|Xq#?E+_ad_OzD(pgmbj%Os`ph`XjuLz8Mbs0Y_Y0oT z9Yx0=1N0>DpycvBsWV?_Vq)R{pUAX2{m<8-FQO0iDf63hzBMKP`)r_KSbCa=gE!HU zAM!a zh2@SD3g46bXM2o2)#%RItD`vo$i~rj$IyB9j{hH`h4{Vs=c4@^@alA9;kFomjAkCY y-JZK8|2e6|vqR*^?eqM79rZm!Bx1ZE`R_|U1GmfdcTl()e@+h2ZR{wqm;WD_Z1*An literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco b/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c0fcadcc331209a22b6bf9c8baba2f67b1dcc7ac GIT binary patch literal 5280 zcmeHLU5p!76+ZL3ws+UN*)>gAn$+5Cl&ECKo22UAQBN3sA~HF%2OLe+O&OWMFnKd121VF*oX%tDik3h-XqZ$B+NN8_jng4 zp@Hz2E6;rQo_oG?&i$D?XS{m+9*@uQ+rHn92bDL9`ipm_w+#hJAU& zCr%yv%G2Kjc;Sj!uhc@*ShNDqa>F10=(1tjji6Zen_dL38)jgKue^B0Fe{b73d3U9 zFw52(w(FNn_mbgPtD!||p>xJcT{c>#+q8;{j#qgrQ7M+1)v6VIf`Qci8W_J{1KaM` zK>iaAyuj17Cs9>5PuI^&?P5H69~gGvHyg#!vg?)?6|2sYRVmW+!u#v1th#1YJnaXI!YuY&@4Rk!X5G3(Yd&}Iv0oXDz-gJ0)wjFJ>18AA zZ-?BwNh54Ht}AxPB_nLtOTPOHVa!;p;JEsf?7K;0Gv#gLwAr$%fsezZNax=YdoaSW zS&3b8rch6#oKCZj zICtg+m%90y!a6-h;~mJ8Z07o}KR)}X+21Hwr;7^p3zKm>zKLmojp^9v6SchpJL25A zO#ubu<1D-l7Z54l|5Lf4XC)O%@D9NF?=9pzS1WLStp}Z}KRfs8GqRlRk{=0vaDxVR zQC9OW%JQ_NskMu$J}tvbH_oXttadM~jmq-Mh??3j4P}l%=jo4BSk*6rJPo9SGn1B6 zD|kNcR~7llu$)=Rpspr#0ak|uCnba4&7;pT)X54RvMYirQmSGpTg8rHHx$e?grcID3CySI~}z@ifp* zTFbRMxmT7uIXtC1jgLTH#o0K!hK&c;gE@Gx2OjK!{vP05@sA>*6X`8%!xMvwc%4B- zR5FPeasvPU&z?`!yy)k=@E8+?9)q+++LfKulsYNwiRz!D9x50 zMM)Gmk?%nvsy7OeACzmDW;V-ME1GW53`4(QF7SI7%H~3=9365ROYP9B*=@7YDzy*T zj~#N&>S<@eKGQDSVY%HpxOAXtFSV)%Pq$5@(T3v~u?pAGrz%PR$c}=9g(AS;fA(Cc z`E{$np%|`THr;~jlnRY@RP((9#=f~i=tR~mX3&eKZH37o3Pm19A;6T|saxi+U}jYVjJ4Sx{@=r+d)oznBuZ0){v0Y z66BR-#6%m4$DVugiBl)O#4~VzNb^SzC~cUya77@0PjWY(AKWG`J^oDNbBgh+LXnOe z@D7mD1^@iRVx{giieKcAzF ze2xk;@ff&HxEn7T7xOz53>L=uxV3Q`Y!|SL_VEewd`I|y zmWcuf`L^H>9vxl5x9-AcJAvR2sKKt$L~?=^g~C7+@FV1o<8NdW!XCk6;Q8nF53xcv z2jhQD@WuO()%(6Uj+e2A_g-HKEAI&Y^Fla*NP6s_pTD1?Y+#9F#<=)D@Jig;xUpZB Syn&TF@vjR0c2*QP$p06rx#&{> literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..28fe90624a7452eeb511cc4c46fbaf5eac8ef606 GIT binary patch literal 7504 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b188e052dd34e1043e51815fe23d643464908346 GIT binary patch literal 16848 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

rN+B`6CbYy&+_&>3i6 zlynpyN>+qz;KK`N3njU4f^B<7-cV^k@T^aUK!7$(X0H1zGJeDYN3D_1>H z%=RRp8<6@NRSKkBk%V(Nq%lsEe?rPX9wG0Qa()SOB+QjCz#+}WM14o3zVAoqOP6v! z39~q)xf&;LqwySuoE_sh1Zb1vq4!(6JFUQ$Iu(A`2_N`9$_N9I!0#gTxCNgRG#5%T{4RoSBYG_MtQdD`VO;9M zJHpB~@cmDeKcf6El&>RfJI4C93!M*xwjCt|+XlvL2fc*$FR>q%g1!)?45b3LMeuov zZ?s}r3++3j71b@Y6^&Nh+meqx1O5t`G!(IyD$-}5pYM;RAJTlcW1ibF&!g<{IY`DY zd+P~pR`gri?8NVCqe?yUf4JJp$}T&9jrS3P_$1=Kf8VOF_!~oC`s1Hyl`p-jwLwQ4 zbj+OeV=YI2NyBF~!#CLBIRdE83DDp4RSqeLySyX;@oyez&&p zjh$KzX zPilGbKhpxS?`SjBQ<~rML#;5SRx3z)K)X@Df?-2~T~3x$-4L2t-4yaew(VZU?XSKZ zno)fvR5kdxmK!yw{^f$4V(Jy~3_`bN#p`BG+4u7h!{>#5L`mcOtjIxgf{ddwD-dCRpzTb{;*b2T@^n=d>h712*@?j0y(B1}ld_FL2{6@B8jSS!||B3Ls zE{8u+SPRkri^MTsL@)f$68}hHn}8QsW(xjm=wE4|HJ{sx_Wb{v1AIeh1AMCk_>Be+ zYv(YX-DvoPweh->wbB}VsJL_LyxUt>tz-tx>#*XU0lekD6|7MEba=*nLuz69mC#JI zZCbOM`2mf4>BGJEh6}F_Wf)hl^ct<74&PWYq#9SR**8)9hfim2x_Yg*P}U9T@!t!2 z`A4Bb_8H_(>ND7{hYO*b`{)9d5wG#_P)6a$AN3ZJzI)K`$5-sF)PD5?U+c$LxIU_r zzL{%C-!-A{wom{lpFPX8P1~I|0}95h89;3h04J5X=ZC&BxR1W?oI*a@ z(0tQJN58rvef+Y3Uw$Ou7cw@$-}rZuA3n=t0D26J#X$cJpf~+TNr#U&0&nKA0iTCY z6W(aX0DPMG8+eR>ennx;z}wB3xU8@y;1m-S3*_Ui9FmV;fqzn)lQm(kTHjaP74X}p z{Y|U^xbbtvT@JkQvAwJUzEu9$kXlhb6k3e7=7R@V8DPVsd(i)T!xirhWi-4u)Z0Kl zw0B5tc<++EncCk!oZ0-|rQQlzZ-Ab%M?o+DAXEV#uXyhXy&UUb0o~lkv0D&t!!L$1 zDt_@nZw2YwgMNQ8WN)JO_dJd=b@X90G!z)*^@Cv{cD_HoRBinh*p2a)L zJ@+u@8M#Nirm%@|5)ljNZ$0$WT-4B9RKJGUI1?(XK8u(*7aDvGF>&UyF?#s};iFBL zI2=5C#TYzy&1iz1O+Q6UTpJSfD;GKBF>whoarPsl|J;bt|Jo-;|C#GX1Na->5HV3> z#>5B6yVu_o@}FD~aO7P9KYE)(^3ex|rO#hfSUvRAL(c}l4d}lH^z~OIeMn)r<}qCR zA>r`(cLn~yFD3rA!ic{HTN0gHG<{;leuI4;^`24w>F>(HkeLc0m?#Wz#{tVYgb<#&M zQB!_a=sVv#78Bfuiln|bpzjUXVaCK8XSjW&qxOwReH0U8_Pxm+mgnbkf zx3G`L1Z)}~6YJokQ?b?+^Pfn|ruj$S&*Bhyzd+`F9R9Mf22U(g+-cw~yW?=$jrvOZ zkdf#8tm-|X?CQNCA9xp1!4>X;9B%w271L?l72>E<-ixeBYpNK0x$o$ z#9vkTepmK0iN7N9!20(kewy+qeEhu}_FX{o@pT-MkH5m!^174nqcrzf$mJEwsu<-7 zTF*@29`op#$ccr}&GY_q3P0PF9mHAW-~n+KS%Q8K?zNNe zmp%4@uj1fdu8-=ZFT0xb?GySAChI=ZhdyZiS7QC?EK;@~`u4*PvTr%`?cdAoBOQzP zN9xO3HqO5N$$B>FLmxh@kMF@7Sa0YXZ(r4|?c-+~*px*&pqKo1HT*UUy0W(XF>NYx z{Z!!L1xL20p`HeN!wVL$a0&8#NeK(jlllHx1@(C>96YjpVqAoSLFRl~?gPgZ9vds5 zGcqPR5ffcJChp-e(Sw-i4Gnf8Cc2IpqsI;iA8p#l;b70x#$fNW2H&3^L`*!pSJ0o{ z!y)(GeTa#k=ZyZ|7mWVSlSY5niw55tw}_YsnlW(zG4bNVLjL470bd9S_}q35$w%)v zPCkp6*rTuon4bmEQvz6m{_&mN@VsXveXqjs9mDXQC!~*u1b)X4CB9w34MsK`d|u)Y zD-7R33|G7)@ofsjcYec#r*i0vKpqndIHZ_(nBjX0v^m*4tkr@oA|~b`CW63A9uzTg zM?_3?@tC+%#zYV?5hUO59?HP?ti3@Q6T$8t`<>LjAMXCG z77-HxaXt@jg%5A-y%`f*yX^CzFWCKoZ{F4}u8-=Zk76QN-XrvF{X#Qig6I8Qsc#GP zZGjzTOl;}m_K}V|w?yirm>9Ef%NN?sn0WbWm5i|n`zR)EVIPkP*fc&Smcw726cd^2 z(o$&tk@u51MBdMldEc+HWURrFS&G{MUf=W;$on}AU&ryhpIp5plu}(8a)IajGZeS0 zx+;`Zy*xCy1U_E5#~9rseXdFP++fvSV{rLCgZtXu>(WN|Ngv%Se3bhle5t?cfYHDF zaif396GngKlLq(6Wh;2z_nAHp9~^zMOZfB?odQ1IE8u}14#~$dA0;1zkCP8#4D+BT z2pB~Fw0~tiCh73mOyJr3rO);XJo5(?ejRx}ZE*>A`LwPy|rC@T(BjXVXv1t56gYvkiui75`9F*NIqhufXB!Z9wSAFkvXBk ze8fnBVT>Bfh0iusaX47iY7EY4Gx&Zr8!^&WDd??BIOM*J@ALbM+Kv7>oko9tm(gF) zWAMGQctsldpxcZQe78N?vrx!)l?vEdAz*tMhvdVPTgZnIBTE#Pj`>N49xtF5{kuW; zY?Aa!e8UGkb+h#O3V~04P~v3@T{9eZcSwAp!cu`}Z;^PZLSIx5XLaYW3_yyJbPg#- z7BVldJDCS-mR>Ak#Df@d1NY7rF)|r3GFisRp>sMjrH z#9chc?xps*^*(R$oLK8lmc<@n5(^xf6UkwzQ@~#c)68*rcD$tZW%8N;jaqCitb69MDve*z{(-^fpobK zcvWUae}`igH>3EmII$1dna26>KMU3V(4^{|kOrPZQHoou&JF3+fzY6Ti7}W{X^d7% zpIah)ZZNmX7z`{oxUbFdq>V0@K3XMwl=~ulsXw>g=npg*{eHvf&uKNdPtJ0tkEv^>kxBb>K^k`9}CqLwZPr7EU*HSC*nxVr7T+q+?W)EfbmoAzy%EVn& z*X(?u*EXb{#68pF_%6UTJJ)`4(W;gd-uDXM(Uoha?^?MkBV~4O@5wc*T7*raze({! z>WPg&NO)3wBj;~s^={R(qfUe_97quK+2>FGJGPq5%*J;PsENaonCfF)$ zAIdlm`Qwmx?44LsyU84b6~1dtnwLi7pt#FL+$q@46!6J$WoY2h5(?77)+5_#j0|)J zzOdEG!rGDTrd?qTS85dCunqSzSePBzespym*)~0lFDXvdt-;6rxciEGvCsO^kN}v5 zZ@tIeiG7Cd58@8ib96Te@Oir43itx%3B;f7)?aPi*FaRcOP}ykBeX(?%Nn!hT zAG`0qO($`O=%ojLXiebo4XcyGm#q%W_37#OuB#?HhVDPb;5)ete7}`AJ;zAOEHaK3 z%}Gzn$TvK6mjgK<>Ao38(yCcTJicF!D=I2DnqQEfGPq6byCb|dQ)>OteBf{&Nj9 zpTe9(15Bj$Y&#!|D@u+jT8=4JKxe!d)6=CXe!6!?_vB*{E73Y*u_+$os3*<4%i~Fp zo#HWKF~(TLLUgL9^*H$BC0~5XRO9H>bnmXIQ`6%!rW((bP62J#m3ZQvHnlYxd~whh zJtf&Vnhd_=X{UV>dPMV+*B-a6Ic=~nQ@7_8s|t!jZ3gN z!KMV58s|mFY5-KHb#@~D_hJg0owzDxZS?)oYsjRfC_=Rj2U$9v;O-@V7Sms8E&a2e zLWWxC#gRYML@zZO{h`N#52)B_yq44Rs)T1Hye8pw2|tzag=vESMG0S(@NEe%Nq9}d z&n5g)!WS~7yo9ex__l=CB)l%+R}%hS!tdt_`Nt)ER>Bu0d{x4;5?+w-qJ)91yfeXgB{Kk!{@E)UmB?ZfEb-_6O(owDxQ*ZY%1Z+tJoKw`g;xv2k

ebemdrCcHaF&(sse2t8|&Kg+FI)KIv?sWI@${Zv-9)1 zTY4I2;s3%n)ipPE3nTJsO*8Vk@Q>szn;Y5x@z7wT{BKR8v8@yTSW4r?{T!wj+40U` zx}REP(Wh9wdXZPp_Ueh&@90k3eBGU+I}7wX)u<9Z!5YwutZMgDdXk!1smEpLMe16w z9;f=zuC5J;TB;AQ_eDJ>SC3mqe^b?%Lss=@UnL0_d-ZAR6m+6)TnkF>0BS1(`t(8| z=yj%g|3y)ouWqbF4XiQWs0GH_O2%pdeenZ&YO@|QQ%_xHRe#VI&}UlJd0u_KYKIQ1 z*Q$C4^u<+rY93J!Nn=vg0;S5Ldu^}lsiV60zoW~Clw}sOH=s|psvk295aW)qeq%W5 z-!ZRM$#&~851L)7zhRY7UJ2;cy;f3sCkD9uhMulYF44WJrv$a88~P%3)&S7WG~yKl zn9rbBx1$?a+3VFaRA(iq?Ezx8QPopPRbI0>sR~xr(?hjGRC`LaL9NYcRd>Pm0;~E* z7%??ZUt}HNEn+&xx>{saqbhI3D^_Y|=1t3p9oFsY>-iSd-_HIm+MBo~+1w9i7U~J) z4~x{867;h*fLau$LETDis7+M@iTXlVzZ1(PWD;ma?X&fTsvX*Q!l%aC1F{`P{!{!@ zt?HjJFAJ?D>W;ocs8<43Qrmc3pJr9R2HPUA4S?-yunm9>ZR2rb8gNnKiJR) zIEE8j*dnxr(Hyo^s$sC94R8$C-F#jash3zKM4I$P1G>wq#$%+v53PkQYQLpNcSSaM zso|qraG>7-+3(k(L#Sf}A&dn5j>F08c7Ux6gZ&fOc7W|qU_+b4pCVj`XYIC>tX8AF zx<}m>(48Br)Tn^0FW#wpUe}$g)M(z)q&xTDWK`~R>7IGI6VYe$>rN6Lt0dYobmvSx z@i)3FUr(K_yY|!HL}hIv1yABq=-*;PJ|e{~Te_Z@3*gfeb9C1i`FWb6Pf^eH1vCrh z;Z5cphkMk5CXOyADlo6^RO7!wBH|LU+#4UD>&_ zXYtO?-)f4aWzv@ayOtHH&-C5E%Ka@uBpdZgUN6B)J=<4;`gMjSMV(gnI(Voa_?C7d z>ze)zQqwpQAx>SGYD;tniTnz^IMfromtUb5s#7l$+STU}k)N;tpck+bFd!jZpA`KP zik#~6+;p>!fu(^&BfORM6WhfI#f)J5)74+2)2Cq)taYjXfm?eVsEf4DhPlT$0>ZeJ zbg1>zM-kFb?rEMyO8FS-ni)K%OA5Mq4|4HCfR&HG;xxp7d%tUd=E9@63M6o zQeQTSoA0Oe8u*9N(GFAId=E9DPx6~|Q(iXH_p|)>yiB_J-fBYc1bNeb6VeNwiek!} z@5v?{^Jl4t#xVZL210G7d?`%`o-ruUvA?BbHBrd}Ao;P^ZF6GeK*xTE%#@p80Di}S z%hDL=G2_Mj-LOv4%;$)z=KRsu67=BC2yZjxe=p6-!5p%DU_f8;AK-m^4KQR>@`3`AebO%1- zG38Ad2Gy*OXZ%Mguj3_o{482;qZu*X7<=~iUcF~T!N KfU&<5<^MM^%*c%Z literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..616da2713f4e2f4b9d7e0eb82822ab29ef81bef9 GIT binary patch literal 16648 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_10.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..3255dc825a8645f6b36560fca35c383a532e86e6 GIT binary patch literal 8408 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_24.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_24.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..79a47521866c8ba3835e41326e038dba1462f7b5 GIT binary patch literal 9304 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..add02474e34f15a350f6a37b4eca43628346972b GIT binary patch literal 14384 zcmeHudr(|gdgtkL?`<^=G)>dpG);r9ng+ER)HLlDLNeB1SyB)}fRL;~NS4I=(&8mR zSh6)ugB7gNYBgHL<;X9gcrr6p9%q7Nk290Z>XC7(ysVuSc4|vgaiylVX1DT3YHL zs4X#`6fl)XFed426V0)w?gk)Jfluz;@f&SVGxoywx`unTiLU60zVVU1p^5);>ATUc zfwA#pJ)@^aCY|4kc8w2A{Pwx;MZ0=?$NMHGj!lep_4IvvU}&_vYv?=C(f+xLHgPwI6)hz@t1 zKGr|fHF@mW(eV?8TSz{#AQ?uwhWoxl2^EXQ{wO*&J~-7i*|+R?MXTS9PAunI@PFLM56P-9S+&wz2%rm@zj5P0|LHBUE^{GF^^H#qj*eWhn9EdOOe_A9z$IZd8TX@$CAu&R zkWY6IV^KHgY;lhz8@l|sXt_GmOeH$>;g9}i=Fd0&S6Z^hvK4ZYtt!R{u!keDO8jpj z>P+Q)v+|2bUCXunKD&rOs9*m-6zg2cr5Bj2UY563e1p|h%%W~*mXF!=DVAaBTW`$% z_WpLzeBDWzvll4jgM#H@wXUTn7(uIwujqNZn-|r*>8TFjW#YPn!@s$ZFNGw z$+xV3J<%DKp_2ohLT*oa<%W2m(;rsWY_FTQ*@Fv-j<6N-T*yTmHqHVafp8)Gd*vPR z`5Z^k2Dt-rdCjgmp_9XzS8j~YJ6%C}O|#B(a?$_a3hln)m0J*(-goYiHF-@N#ih>C z7@*HGWSsmdHVrYTb2eLWj9C`sY@5bv*n))iI1-uSmVp`G?qu&{z})A*#@I*qUf`U~ z)$)*q@sBNArsOF5=Ov3`;WG)YTDI`WEaxHn8f%hg$w@Txu|HRl^P$6~T*(QPfR#W7 zn>0VFovY>H^R;sLVyzWVd(4HD%Zn|x$hqIOhb$Hz;TAa}Sy+U#5AVHz-pcI#dw0AX zOBCqi*xLa8oY@HjoGDqhup;rWqR3&z!ooM|4mi1dZjM{$=D6+r9JgPXi=llP?biS) z_BfCOA2Z^*%U-&b=2}W>_{k?}#(dmBi-F9*H3nJ@R1B02%r?+&V3vV41M>`Y7?^8d zj)6aAo`rAmWU7PB-cGqbdy#UFu?x4y@_=&b{p!uN%$5V(x`mlCW*fU7W2}~9MBe!* z78{UaSp%dtF`ho^3-V6%4f*AxzUBd`4_QF!6V{K9`iLC&Q6H>8>I25rM}3fi6g%?C zN3r9M>!a9lqx6Y*(tq-aYnaOvQw?J|gmK0kgxI3ixfkrWWzrdS$u?lYa8S-69F5D< ze~dn&?k?go>9~t^9Z!+2<0*#DU0uglqU-q9>N-Uwx=ztr=+KzK-g{El@lNPEg(r2L z!il*2b$0Hyd&WKU_sLMZ+nTnX4}}i8LlrGE6%_|F6%`fJNdJQJQ1dMKwOAJ}43vAQ zBAKZesmMTMF)>~dfRI*P|Gp&NG-LddD z#zJX6l9Cap6>)AwJnBi#9!EUs?Rq?0+4N?L$GSo%XzJ`*)~O|(G#^i;`DDtrLN{dU zHZSXLC0#poDl+G9*P+ez(Ah$5w&^-`Y|W|*cQFZnHvvN``|z8pXdHpF1&hnX*C{+Rh?=37Z3 z7!HKg@bbNdefER*u!~GmjEHPNn(Z*k-iOCR|Zt;JI8vlmO6WISi!8_)A3JBM}A1l?v_Ey%l7`XQm;3H=(I zh{q;u=3t{ie+-wNUuiy-vaYtR6Sf_CTe@8uc1hR_;TlOX_58}%5-HnfFBYR;ejAIU zKXn;){?^-nvVL=hUry>F3vrwzOF23|1mqJftLT0h6%F2moBRsLoTyK@H431qA78TDs7 z>^S<-0K`UJ^e30IRE{kt&axeKX|7^yJ8*U4I)dvca^T@OTiJ9KjdPj@Aq(NEz?`p= zJ9RmO%!$i|%Zk~#`PSov$#^L zVryg5^}5dpWL3DLh;4Q`M<92nIK^&*%!kX5D}bvMv8~d}A-&AE-_o2|bD3|ytzp>! zzo*f8LK^$fG~!Bg2V!1jCzD;t!u9aX^*6&AcHtK7Cu!U_^t8)0*f;L;Fjn);ZY|Px zK%VdJRp+|9gEf8K+8A>!guB}07p@-<*WmeBQ_k4Fo`odY#K@+rTbqSX(oi}(jZd0uxG(lQ$F%_b z1rV#1{9mKJB=B|4e63ols5P0IKaM^gKOWq-<;`UA=vLW3TqhR`zkYg8fd3$i^&Qvz z@Y%A7`{G7_{jEc(;?|K=ysKAJPd3PRwK45(@~T!ja8RD_?N{e|d)2aMcgew1JLJsO zsR-_r>CD)q!1zF~Hlw|#%_M)IZEaZiWb0seAdWcWh%>`3iFcg4L$7OhN3Lm%?Yftq z;&^uePU0Ql2ZpcrbYHQ)UcK*lzcqb5gSZnX?d&LU(<`vKmekvST@yHeykEVDKFMmdnnAa`6Vc`9<6h9M-;WEuqdzqG)Mwm# zF?^fJ?=yc80X>;Ij(mSG^&aa4@4=LdZDxPG6fZxn91^sj;W-X|khNgmI^W)78Fa@h+*b^G@8%dQmVdhBt67wacfOh`0g312iTo_2irD{JDtaxh6tTZpDuQp3doLsB z$nM5sneWEJl#l!+7A4<}tM{t}ROb<@k~!z7E9I^2VanvGZn1=)aN-`Qgux_=@4rk2Z+k@y=qI|DBt< zpVz^AM~|xm`g`BGIwf>W+jruMpKRgRhg|SI^A7=9A7QMIbo}MBVetHi9t6_yT9%Hz zd^R0Ruyi}HJ&x@rur0>iSBy1(nX?Du?bvW&zOa_X`h1DAF#I*{n(e%^byg=y+F~>3mPChkpGtZw0oY-Ktk87onFzF1~j~w}1Dt zjyGS{ap5I_UxEI{*9`sBoHfBu6Z|v+8_|9h_g|lkVU%?s>YYJnB{r1wf??zg5LPmHdcuo3GZ8!DtC6KHh@>X|0s(9Hy|%64=P>JeA;nMJ97=W|F7iu%^iiEI|4#;egfr3)echltIa?39@*4)-!C3|9 z$bY6aa8SQbU=3^l?*Z;w;=Y3C0Od<$FZa2T*A*L@8O>FAH^vrpd3Bf-B1haC7Nx?S zO(_p}>nmHB7wEy97w%as3vH}oo;^)d9?G%sqU71rXs0|a+sQ- z_vN!T@Vxo)K-wE+X*Y7-UB%Kapew@CPM|Z)+_T0SNYfgi`#Gnq&b?j`>v7=dF8T51a8~P2%QTVBVpAayF_HkUY4g-(?x^W;rx_401@p-vbuO926kWK@ z*sY%&z)KCw2Rc`ro!}g8KOOl1pQi0J@F1PF0>6s0)`w>-u){+{*aMdNx;@TnggrOx zWy9XOX*j8E!u!W2+=vq=l1Z_z$NNO!cgMo>+K_q?`+8PWu#gzm@HX)Ny@Ko5eA8L{ z7}i1mP!3+&7-yH}+J=Xc`C=cwLvaawUv|Q89d6i}{)!ydki#76xm#s)KDjQUdCC*o ze4;k!DT`@-I{Qg*<{1uap3y2TpGQ*8L?S*Piw8ZMYwLU@k8$RV#p3f-(V*wCc%7Gc zRp3=s#XZ&0y7_P<=q6s6vwU8ca)!h4KxL$krN=&X+i=1Q^xAdw<>=^l;5}ac>_rED z>uBGS=63?;zm`e5bH>oajOG)46Ti=(4?H;H)?w z@9l1!GddBAh!Txn@AudG!2=Jfz%zxi<<>8>qJW<$>b zpV=i|ZQct#uQ!-o=GC&HlMNkK!xtQd0lZPZe~%wW&S)-?3$Y?^(!SQGVclx>61T>9 zdX8ay754SpG$%Ys^z5x#(2UL8&RSQh;_ zEArv~hF_IVATX?|r^F^`8~{>&!851_JSUw>QYv zme$!x&ka4dJI)HdVjb8l597>{9>(cV9>!^3gZ#mGW5N9T`t=z6ItPB817A1?jL&LV z49^29*td&9+ZrkcoBhbB*mX9&`-<|{pJhg=a@vsNrzKHdHw_Ki1WUf9+)B5feL)l-YkoMrxUE3_BsEdOa)90#>hIl#H z7HQ>oM6|)j%fDVMmr%Qd?KqY94gAo+zcl$SUH*ZA_YC|ilaEtUDjyp7X9oVY! z`_RBYGw|mI{+)r7MY^9y|5i^9k5x~Oj`wKz>hDw!YR9^U#!pR5j8>m`mQ9WiPL7V4 zUoEko6VDD!CQpn_^^U}oJ*S6Je>o zl@dG4;^y>A35$}js>=E%CDEj~tT>e2rMOy@L_m35%B@!t(nM5Q_n49&Rw|{_D&Z3v zxF@4ZzLcvfIYIEJfRbI+*-uD$AgxiQ(ke|we}&))YrT>aRoqr-{B5W@>J_&%t|~=R z#m^K^jZ#z&y8W6`E^V?kDZc@yh1MS^iJ;<=20pM#-6A=t5PiGOj@N^r=!yU zfy1Y)w!=#CVI`+hDc)<9UILri$+51a5&kOLlw&M**CT+sdJ3R}LWzRc*aXtA>Ldi$ zsAhAKPLs}DFEw6MD$Bv~V6>$&+aD^W5{AelJ*%RYr7Cvm*{ELIZtaj}r!On(t7P;^Ai$ecT&*ie4EE5)#y$OiRqOPPBsLdE^nbc*}o1{#tiFiPwuMv&Bq;9Q8cII29j~L~~yVI0+ z9~yP)^M?%ml-`+E756%2eINZLCUOeOx?bLCR>>PFG(q~OAPdlX6!nkLs9w*P7D){$R|(F0B8){yVMq#O z_>p0#*P8_Yn&Mgq5e4r;@Yhz<(Z>MDd$6LWN%W_z-)K&6+AE#5%_{y{#q}e_zg2N< zQ~XtmE2#K?uDD`Kfvrq&RVr@V-zo)FGFM8ZJyF?$u5VTawVNov6vIsO9`}DR2L+fr zEMYMpXMm9jg?X}xf2g*H~PRr+hBfM`X=-7sXO_{?ydD72rEQvV05B0=E)T5nWE zew*W`4DoQoxg5)&-~%`&Cle@PL3 zxQ*RuT&;lT)W7MwW)>Y8o$O=L-ZLZkOq)dqMovYwt_h79e~CXi&Z6U^y3zn`M< zq$3J?)Qe(P3^e~g!xWqQQIjTH+EAKi=DycNbNXoeN^RkMTNGo%hI0zW{w9+dHSNuP zuZbZ;-;|s72Ak1_k9?bQbDwOYYABj=Gkz1-LXJ;HmhH`bxrxj9Z1|x*tSsw65YP0F z4=wa!V1q%L@F-mk0oj{o=DIQepXkmy)6&340@!5OQXi<8>*Y>Zr|BGz3XKsJbNq0; zDhhrx6+F{Ewp-`N@BI{?w6Jkoy8u)j{kit?!LDaeTT=&eZnf(Smg)T@eVZ(2mI_(EPb!f85~V9a89- s?VIcOE%43UF;oS##dYdOE19U9?V9X&QTaUk9DF=Y1;_BK%A@xG0=ET^O#lD@ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ff0b37a49ae80a8889278f00dd5356e61f7b1dbd GIT binary patch literal 14968 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 ZkI}C|`5q1)q<@GK8yjA&Y}oGC|G#<^*?a&1 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..0f0288dbfa0cd9c42c60c122e09438c41e98733a GIT binary patch literal 15776 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 U{0%6RFr!>G6^D@WhKRd^?sJ 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..3d7ba62eed64c679f09868ecf4ea9842f2f2bd01 GIT binary patch literal 10376 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 ZCTQ8OWWNPsDgC!rI}&0Ur1(Ah{{v>19}NHi literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f332187a601b91dc224323208f53342a0b6fc3dc GIT binary patch literal 8616 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e105925f14445681ebb7447c34565217ee8624a8 GIT binary patch literal 10088 zcmeHNZE#fAd4BJ`=iI$otya6zqHplBk;Ss0i&zB6Sb)HouVRnlIGKjn7Av&UO00I* zyDJ%c#?m4QNybEAOj6>yk^eZ3;>008nkKCaq@ihlv@=;U(^01U$e(sP)Bfl*)68T# zL4D4>=dOhiwVlQpruAX&KJR%y&c}P+d)~u68h`xQK~+(@RI-akzaT}@0=gvq&5%v( z<$~8i27ar_PdeBPPnRve2XDy695ke!U<%z_wiH=37vEjbB%+4}t zlKP!@V@6g>gOYYC_#eg2v3KV8)Ia6>toeP!{v4lw7Ix0moFRP_6n$C!i2;kU0yoRL zgO2ZAP_2V32;BF?fkWM&Cz^aOHr$uU#mrOjY$~42y*Br*85_uCdrqcDQhDFoW-L39 zdwuFXGuGFajpuSbxlHV2{2K$wbZ;#Aj+yT7&&BifwwW7zDQ>)Lj>eKB@t#wIslM;n zDm}d;{r&OmhcsaPZyUfsKV$?yGzYTjkxWl6J}?|l<$L-EPsjUugb{t;nmi_262_8) z11aNA@8Jvex*wRsvC}>M$ymPUg>?3mY!;HgSKx?LY&iaoaAw=Kt$$%=vV)_se7w}~ zvR>acb0t5AzGqi*nZabzc0Ijg=3X4`O((x48#7P!!M`PwXTE1wmYaOnd?7X(@6V<& zKQYv<@5sf?V{-BQ4^bO9nQ8@y2dm!NI?#Xmk+zr<1f%h6ZZMs?q&OjpNV&HNVU>nx zlJDcc_-&msfVE3F@3S-&`p(k;T7;*sKtaK4{=4^ob><&i|55`j9#Mo`$nGlA3-p0E z?h=2TN}Z!D$L&;?V-+gp%6I8J1|sJ5f1&8pHFMWVZJ8hzRLOlq%xQw@H^lb$7He)f z1O7a1ZmCh94lmKvwbz@ETv|iQEp^`)nMyOaB5;KId6t-GdT^4lkm`CWA@~~w|8vXv zEFtXwWa5uLx0%k~Qr9Y2Q`=tHPBZlHvUTXDSa0Z{jcIBL2Iy~#RL)iCg<6SjRcoJR zuIbu2l`hI0UJbnWGciMa(Y)_=ZD%%sC57dM_u-j?bb=mTOu-hM< zuWJbX;CL_W4%qxU*!5;%cQ88Nv@Ya>-6NLWVO!oL?2bm~gP{;}9kY2@O_e6gXLlW()l^qZo}6}7dMMJAZgqg$<&WsJGHI|}T0;_Nf5*=*G# zs!I=>(AA)O;W@oU15e|6c#Fe3@d2;R;q}@)Eag>=v+%rn>1CpuKc%NtilF~ZlM5Kn zZ;FIAw*tjDFr{KaT~IKN;)K4S;N34yxfc}Vs^YYFLBSSMoUK|=kROZZY8DjiHpTM| z3kq^>acb;H8!Yr5t!UvY>c?Uo{t$3gDIKg5m|fv13801irazK|!n+ zzrJTdxj@u{g^!$#gql@_MKnc^FvW;)#U0TVPsF8oBZlIOlqppaw-ShyD>V_1QWvRE z8X{h$DN?Ddi})0ZTzsv~x%iUprg(vK<^oIR@ zU)Wz=751+Qg#EQOVSjyH*x%R?_OERU`yW~t_A7+AyZKXJpNjkr>{oFf0pcw)1P=mG8lRsi<`y}&MDC2${5tZ{+9cCDbQW0hS$|5*V?4zI)ti5`jN z65SHZBpMQ35_O4OB9o{|R3$1BNn)HPu8#%o%vk#cox7f?#J)idizfCvGS)4&?tdKE zu(;&_>b{1>wnKnA@DCors2diy9wu^ZiIR&^VF%nsv|nI5(PIL)6QPCV;tnD-m|WaR zbWmUi5n4b^hz6PxEhtFrOGwrTGS=$kfO`3mSC z+qCCZ(0^sq6<-GZBb#<#04?@Iv|aw1iq|K(xJ!=nQ9`(&j^i(0kL2QRLf8QJ5aIPm zF773S53q{}uSarmAExh&)4({L@s+IsEyt(Vf|lcR)q|GfV~wEY`1o4Ta(wDTpyl|q z^(wncQ`hUx;NN86!jej3?_#XKCiYaFUeJF{^i%-&3eguPL7!(+UkDIAxkS?~OVHbR zHjs$SR3+vDS6-%}%hPjJS6;4PYMA~7WPzbKrweGWpfWr<9s`dXj|Yzzk8i9gc=_5! zn!Vo8!oqU_@+>jty9rxlh$2INN>uAdMR$ZV53vDq@zcTinDrzY7g zmng-nnpxb8^<=t*Uc+sn$K$oo?W?lT2-H}p*ELwkn$}r}ZTal2{Vs(XHqVA1Qz)^Y zeq20ItuW!^iK*%4f;u&(!k-NOte=^U7TV8QbH*I@i?K5)YZS7Ml8l6`pw41F&W-6( zXYI`SXra^g8Rq`D&@rU!AtCE3$qv}|bFe=@=9W6^XD&ty2QFFtAExnxLdPRzpAoXd zCD|d{{vzxzjd`Wc!!wtog=1f}?2pp;5uxLQ?BDOqUf&>O-6h%Kf4wtteIiWFI7Qr| zhmTWjgu*uoVXdfFMb2X?GBC{|J`2;rht}aSIB{(^{B%ZTI9C;{bCrhkkVt~at%-Tv z2u|vHNGsD58f-LiUUIP^p(9S>ns&Di178E5xr_wPE5S*_2(oe`AMld4|w$0~FB zpno|hp(A|8cxm324hNrs&&%A2dABDx>2?Qsg*(CF4-VVX{K}0Xp)1-Dded%qNa$e? zxN7Nwua>i+Im7VaOaOl_6*Z-5h5v9?6mypTDm+g~_tN293$ZHRXPd@P&F{D4rY=2x@ z#UCO@UVlLR@q398xAaN5?UO63_(a6W*B%g`eBv?Uk^ZQ#{qe>s{@4Y7{IRN*a?Snn zs*`&amultS)$;QydFrm*>*N}dgPnY}JfDgfvGTOYHD$;(B2OdNh%=~iPp($Ssu+tZ zF1=%()DX$@smS5@J{4se{_7_4tk?DdRRZbEbtKY21di^ktxc5c`HakK@E@cKlk`scPX0ZYu!|)Iw`)0*`?U(lv|Ny{-^Tr6zDYX`W|;3j2JZ8gJjgvE@JEAuw}$`x zc=Ue0+vFZJtZUC7=cvTzy*Mjk@-46y!nUmwb)Z+sT94I+HgVM|jX;7hva;B*ZEj4FaZObveCK0brAR3 z)N|mAPwso-2)?HOE{gD<$R_w2WfzB#==@!TBVL)lgssSpj+v7$9mKVORYblNePIQy z;^a|$Os8KhEu|fMCto_)EcG3^V=viM4??u<$esM^U{ESLa%cPwJ_I@L(@OU5OM!!> z_?7L5IV>+5P!T+*eQPj6K^_pg1ih?uEu#gw1&^?I&Ku5qQerrN$0L+QSup_Ir&y|D z4pwpA5Bc{s8OfHzDf!#_y|;2>X@eKOyaFOO`g_^yT1XuuHMGO!u_3KOuSIZ#0CS)4%iny$RlmCAKUU erTu$W?SmhuUx)Jz5Ubfwhinb$Mo0Y~U;Q_b%j{7A literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..dd7d0d8c3d6020dadc4b0c259bdf3cb68cb04cfb GIT binary patch literal 10688 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 I`bX^l7vLf97ytkO literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..a634cc0c3acd44c230b81f7bb563f7bd43497d9d GIT binary patch literal 8624 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..210a8bdd63690e513e4da3f53606d0e0e607c302 GIT binary patch literal 10296 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 Yu1)w$RQ@OZK%*&PO@l37_TMJ_H(NxTx&QzG literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5b2d8a3b8de8f0bc557a3dd4265e945cafecc6e5 GIT binary patch literal 14696 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d2d871afbda8a1a311f9de43ec0c7b73e64e958c GIT binary patch literal 16072 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 literal 205184 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%0D9be#NXU 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 () { size: max_ram, }, ), + #[cfg(feature = "gpu")] + ( + DomainType::Gpu, + MemoryResource::Shared { + id: 0, + size: max_ram, + }, + ), #[cfg(feature = "wasm")] ( DomainType::RWasm, From ad8f8b44ab1b8e4c4fb15f8a487cd92b6eb18ea6 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 17 Mar 2025 16:49:26 +0100 Subject: [PATCH 151/176] fix: like in the main --- machine_interface/src/function_driver/compute_driver/gpu.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 53342392..f6dc1cec 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -298,7 +298,7 @@ fn common_parse( cumulative_size += size; } - let mut context = static_domain.acquire_context(cumulative_size)?; + let mut context = Box::new(static_domain.acquire_context(cumulative_size)?); let mut offset: usize = 0; for i in 0..code_objects.len() { @@ -328,7 +328,7 @@ fn common_parse( Ok(Function { requirements, - context: Arc::new(context), + context: Arc::from(context), config, }) } From 5b66ba6d9034aedaeb0548821a480d2108c0e1e1 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 24 Mar 2025 16:53:59 +0100 Subject: [PATCH 152/176] GPU process working --- .../src/function_driver/compute_driver/gpu.rs | 9 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 498 +++++++++--------- .../compute_driver/gpu/gpu_utils.rs | 70 ++- machine_interface/src/memory_domain.rs | 8 + machine_interface/src/memory_domain/gpu.rs | 130 +++++ .../data/cuda/test_gpu_double_matmul.json | 4 +- .../tests/data/cuda/test_gpu_lstm.json | 208 ++++---- .../tests/data/cuda/test_gpu_resnet18.json | 2 +- .../tests/data/cuda/test_gpu_simple.json | 4 +- .../tests/data/cuda/test_gpu_vit_b_16.json | 50 +- machine_interface/tests/libs/cuda/lstm.cubin | Bin 272992 -> 272992 bytes .../tests/libs/cuda/resnet18.cubin | Bin 208288 -> 208288 bytes .../tests/libs/cuda/vit_b_16.cubin | Bin 116032 -> 154528 bytes 13 files changed, 589 insertions(+), 394 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index f6dc1cec..c20ec406 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -136,15 +136,17 @@ pub fn gpu_run( gpu_api::set_device(gpu_id)?; - let mmu_context = match &context.context { - ContextType::Gpu(ref mmu_context) => mmu_context, + let base = match &context.context { + ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), + #[cfg(feature = "gpu_process")] + ContextType::GpuProcess(ref gpu_process_context) => gpu_process_context.as_ptr(), _ => return Err(DandelionError::ConfigMissmatch), }; /*let ContextType::Gpu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); };*/ - let base = mmu_context.storage.as_ptr(); + // let base = mmu_context.storage.as_ptr(); let config = config.load(base)?; let mut buffer_pool = buffer_pool.lock().unwrap(); @@ -249,6 +251,7 @@ impl EngineLoop for GpuLoop { sender.send(result).unwrap(); }); + // HERE!!! // TODO: add proper error handling mechanisms // Use an mpsc to receive results. If a fault occured, the handler could be registered to put an error on the channel, // while the work thread wouldn't return. This means it would have to be shot down diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index e5d8a084..d518c24f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -5,197 +5,6 @@ use crate::{ memory_domain::Context, }; -pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p163", 7077888, params_path, &mut function_context); - add_buffer("p167", 2359296, params_path, &mut function_context); - add_buffer("p171", 9437184, params_path, &mut function_context); - add_buffer("p173", 9437184, params_path, &mut function_context); - add_buffer("p149", 7077888, params_path, &mut function_context); - add_buffer("p153", 2359296, params_path, &mut function_context); - add_buffer("p157", 9437184, params_path, &mut function_context); - add_buffer("p159", 9437184, params_path, &mut function_context); - add_buffer("p135", 7077888, params_path, &mut function_context); - add_buffer("p139", 2359296, params_path, &mut function_context); - add_buffer("p143", 9437184, params_path, &mut function_context); - add_buffer("p145", 9437184, params_path, &mut function_context); - add_buffer("p121", 7077888, params_path, &mut function_context); - add_buffer("p125", 2359296, params_path, &mut function_context); - add_buffer("p129", 9437184, params_path, &mut function_context); - add_buffer("p131", 9437184, params_path, &mut function_context); - add_buffer("p107", 7077888, params_path, &mut function_context); - add_buffer("p111", 2359296, params_path, &mut function_context); - add_buffer("p115", 9437184, params_path, &mut function_context); - add_buffer("p117", 9437184, params_path, &mut function_context); - add_buffer("p93", 7077888, params_path, &mut function_context); - add_buffer("p97", 2359296, params_path, &mut function_context); - add_buffer("p101", 9437184, params_path, &mut function_context); - add_buffer("p103", 9437184, params_path, &mut function_context); - add_buffer("p79", 7077888, params_path, &mut function_context); - add_buffer("p83", 2359296, params_path, &mut function_context); - add_buffer("p87", 9437184, params_path, &mut function_context); - add_buffer("p89", 9437184, params_path, &mut function_context); - add_buffer("p65", 7077888, params_path, &mut function_context); - add_buffer("p69", 2359296, params_path, &mut function_context); - add_buffer("p73", 9437184, params_path, &mut function_context); - add_buffer("p75", 9437184, params_path, &mut function_context); - add_buffer("p51", 7077888, params_path, &mut function_context); - add_buffer("p55", 2359296, params_path, &mut function_context); - add_buffer("p59", 9437184, params_path, &mut function_context); - add_buffer("p61", 9437184, params_path, &mut function_context); - add_buffer("p37", 7077888, params_path, &mut function_context); - add_buffer("p41", 2359296, params_path, &mut function_context); - add_buffer("p45", 9437184, params_path, &mut function_context); - add_buffer("p47", 9437184, params_path, &mut function_context); - add_buffer("p23", 7077888, params_path, &mut function_context); - add_buffer("p27", 2359296, params_path, &mut function_context); - add_buffer("p31", 9437184, params_path, &mut function_context); - add_buffer("p33", 9437184, params_path, &mut function_context); - add_buffer("p1", 3072, params_path, &mut function_context); - add_buffer("p3", 605184, params_path, &mut function_context); - add_buffer("p164", 9216, params_path, &mut function_context); - add_buffer("p168", 3072, params_path, &mut function_context); - add_buffer("p169", 3072, params_path, &mut function_context); - add_buffer("p170", 3072, params_path, &mut function_context); - add_buffer("p172", 12288, params_path, &mut function_context); - add_buffer("p174", 3072, params_path, &mut function_context); - add_buffer("p175", 3072, params_path, &mut function_context); - add_buffer("p176", 3072, params_path, &mut function_context); - add_buffer("p178", 4000, params_path, &mut function_context); - add_buffer("p0", 2359296, params_path, &mut function_context); - add_buffer("p2", 3072, params_path, &mut function_context); - add_buffer("p4", 3072, params_path, &mut function_context); - add_buffer("p5", 3072, params_path, &mut function_context); - add_buffer("p7", 9216, params_path, &mut function_context); - add_buffer("p8", 8, params_path, &mut function_context); - add_buffer("p9", 4, params_path, &mut function_context); - add_buffer("p10", 8, params_path, &mut function_context); - add_buffer("p11", 4, params_path, &mut function_context); - add_buffer("p12", 8, params_path, &mut function_context); - add_buffer("p14", 3072, params_path, &mut function_context); - add_buffer("p15", 3072, params_path, &mut function_context); - add_buffer("p16", 3072, params_path, &mut function_context); - add_buffer("p18", 12288, params_path, &mut function_context); - add_buffer("p20", 3072, params_path, &mut function_context); - add_buffer("p21", 3072, params_path, &mut function_context); - add_buffer("p22", 3072, params_path, &mut function_context); - add_buffer("p24", 9216, params_path, &mut function_context); - add_buffer("p25", 4, params_path, &mut function_context); - add_buffer("p26", 4, params_path, &mut function_context); - add_buffer("p28", 3072, params_path, &mut function_context); - add_buffer("p29", 3072, params_path, &mut function_context); - add_buffer("p30", 3072, params_path, &mut function_context); - add_buffer("p32", 12288, params_path, &mut function_context); - add_buffer("p34", 3072, params_path, &mut function_context); - add_buffer("p35", 3072, params_path, &mut function_context); - add_buffer("p36", 3072, params_path, &mut function_context); - add_buffer("p38", 9216, params_path, &mut function_context); - add_buffer("p39", 4, params_path, &mut function_context); - add_buffer("p40", 4, params_path, &mut function_context); - add_buffer("p42", 3072, params_path, &mut function_context); - add_buffer("p43", 3072, params_path, &mut function_context); - add_buffer("p44", 3072, params_path, &mut function_context); - add_buffer("p46", 12288, params_path, &mut function_context); - add_buffer("p48", 3072, params_path, &mut function_context); - add_buffer("p49", 3072, params_path, &mut function_context); - add_buffer("p50", 3072, params_path, &mut function_context); - add_buffer("p52", 9216, params_path, &mut function_context); - add_buffer("p53", 4, params_path, &mut function_context); - add_buffer("p54", 4, params_path, &mut function_context); - add_buffer("p56", 3072, params_path, &mut function_context); - add_buffer("p57", 3072, params_path, &mut function_context); - add_buffer("p58", 3072, params_path, &mut function_context); - add_buffer("p60", 12288, params_path, &mut function_context); - add_buffer("p62", 3072, params_path, &mut function_context); - add_buffer("p63", 3072, params_path, &mut function_context); - add_buffer("p64", 3072, params_path, &mut function_context); - add_buffer("p66", 9216, params_path, &mut function_context); - add_buffer("p67", 4, params_path, &mut function_context); - add_buffer("p68", 4, params_path, &mut function_context); - add_buffer("p70", 3072, params_path, &mut function_context); - add_buffer("p71", 3072, params_path, &mut function_context); - add_buffer("p72", 3072, params_path, &mut function_context); - add_buffer("p74", 12288, params_path, &mut function_context); - add_buffer("p76", 3072, params_path, &mut function_context); - add_buffer("p77", 3072, params_path, &mut function_context); - add_buffer("p78", 3072, params_path, &mut function_context); - add_buffer("p80", 9216, params_path, &mut function_context); - add_buffer("p81", 4, params_path, &mut function_context); - add_buffer("p82", 4, params_path, &mut function_context); - add_buffer("p84", 3072, params_path, &mut function_context); - add_buffer("p85", 3072, params_path, &mut function_context); - add_buffer("p86", 3072, params_path, &mut function_context); - add_buffer("p88", 12288, params_path, &mut function_context); - add_buffer("p90", 3072, params_path, &mut function_context); - add_buffer("p91", 3072, params_path, &mut function_context); - add_buffer("p92", 3072, params_path, &mut function_context); - add_buffer("p94", 9216, params_path, &mut function_context); - add_buffer("p95", 4, params_path, &mut function_context); - add_buffer("p96", 4, params_path, &mut function_context); - add_buffer("p98", 3072, params_path, &mut function_context); - add_buffer("p99", 3072, params_path, &mut function_context); - add_buffer("p100", 3072, params_path, &mut function_context); - add_buffer("p102", 12288, params_path, &mut function_context); - add_buffer("p104", 3072, params_path, &mut function_context); - add_buffer("p105", 3072, params_path, &mut function_context); - add_buffer("p106", 3072, params_path, &mut function_context); - add_buffer("p108", 9216, params_path, &mut function_context); - add_buffer("p109", 4, params_path, &mut function_context); - add_buffer("p110", 4, params_path, &mut function_context); - add_buffer("p112", 3072, params_path, &mut function_context); - add_buffer("p113", 3072, params_path, &mut function_context); - add_buffer("p114", 3072, params_path, &mut function_context); - add_buffer("p116", 12288, params_path, &mut function_context); - add_buffer("p118", 3072, params_path, &mut function_context); - add_buffer("p119", 3072, params_path, &mut function_context); - add_buffer("p120", 3072, params_path, &mut function_context); - add_buffer("p122", 9216, params_path, &mut function_context); - add_buffer("p123", 4, params_path, &mut function_context); - add_buffer("p124", 4, params_path, &mut function_context); - add_buffer("p126", 3072, params_path, &mut function_context); - add_buffer("p127", 3072, params_path, &mut function_context); - add_buffer("p128", 3072, params_path, &mut function_context); - add_buffer("p130", 12288, params_path, &mut function_context); - add_buffer("p132", 3072, params_path, &mut function_context); - add_buffer("p133", 3072, params_path, &mut function_context); - add_buffer("p134", 3072, params_path, &mut function_context); - add_buffer("p136", 9216, params_path, &mut function_context); - add_buffer("p137", 4, params_path, &mut function_context); - add_buffer("p138", 4, params_path, &mut function_context); - add_buffer("p140", 3072, params_path, &mut function_context); - add_buffer("p141", 3072, params_path, &mut function_context); - add_buffer("p142", 3072, params_path, &mut function_context); - add_buffer("p144", 12288, params_path, &mut function_context); - add_buffer("p146", 3072, params_path, &mut function_context); - add_buffer("p147", 3072, params_path, &mut function_context); - add_buffer("p148", 3072, params_path, &mut function_context); - add_buffer("p150", 9216, params_path, &mut function_context); - add_buffer("p151", 4, params_path, &mut function_context); - add_buffer("p152", 4, params_path, &mut function_context); - add_buffer("p154", 3072, params_path, &mut function_context); - add_buffer("p155", 3072, params_path, &mut function_context); - add_buffer("p156", 3072, params_path, &mut function_context); - add_buffer("p158", 12288, params_path, &mut function_context); - add_buffer("p160", 3072, params_path, &mut function_context); - add_buffer("p161", 3072, params_path, &mut function_context); - add_buffer("p162", 3072, params_path, &mut function_context); - add_buffer("p165", 4, params_path, &mut function_context); - add_buffer("p166", 4, params_path, &mut function_context); - add_buffer("p6", 7077888, params_path, &mut function_context); - add_buffer("p13", 2359296, params_path, &mut function_context); - add_buffer("p17", 9437184, params_path, &mut function_context); - add_buffer("p19", 9437184, params_path, &mut function_context); - add_buffer("p177", 3072000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/rnn/"; @@ -235,10 +44,77 @@ pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Cont (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; + + add_buffer("test", 16, params_path, &mut function_context); + add_buffer("p0", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; - add_buffer("input", 16, params_path, &mut function_context); + add_buffer("test", 16, params_path, &mut function_context); add_buffer("p0", 80, params_path, &mut function_context); add_buffer("p1", 60, params_path, &mut function_context); @@ -553,52 +429,189 @@ pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Con (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; +pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 589824, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 589824, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 589824, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 1048576, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 1048576, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 1048576, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 4194304, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 4194304, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 16777216, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 16777216, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); + add_buffer("p0", 2359296, params_path, &mut function_context); + add_buffer("p1", 3072, params_path, &mut function_context); + add_buffer("p2", 3072, params_path, &mut function_context); + add_buffer("p3", 605184, params_path, &mut function_context); + add_buffer("p4", 3072, params_path, &mut function_context); + add_buffer("p5", 3072, params_path, &mut function_context); + add_buffer("p6", 7077888, params_path, &mut function_context); + add_buffer("p7", 9216, params_path, &mut function_context); + add_buffer("p8", 8, params_path, &mut function_context); + add_buffer("p9", 4, params_path, &mut function_context); + add_buffer("p10", 8, params_path, &mut function_context); + add_buffer("p11", 4, params_path, &mut function_context); + add_buffer("p12", 8, params_path, &mut function_context); + add_buffer("p13", 2359296, params_path, &mut function_context); + add_buffer("p14", 3072, params_path, &mut function_context); + add_buffer("p15", 3072, params_path, &mut function_context); + add_buffer("p16", 3072, params_path, &mut function_context); + add_buffer("p17", 9437184, params_path, &mut function_context); + add_buffer("p18", 12288, params_path, &mut function_context); + add_buffer("p19", 9437184, params_path, &mut function_context); + add_buffer("p20", 3072, params_path, &mut function_context); + add_buffer("p21", 3072, params_path, &mut function_context); + add_buffer("p22", 3072, params_path, &mut function_context); + add_buffer("p23", 7077888, params_path, &mut function_context); + add_buffer("p24", 9216, params_path, &mut function_context); + add_buffer("p25", 4, params_path, &mut function_context); + add_buffer("p26", 4, params_path, &mut function_context); + add_buffer("p27", 2359296, params_path, &mut function_context); + add_buffer("p28", 3072, params_path, &mut function_context); + add_buffer("p29", 3072, params_path, &mut function_context); + add_buffer("p30", 3072, params_path, &mut function_context); + add_buffer("p31", 9437184, params_path, &mut function_context); + add_buffer("p32", 12288, params_path, &mut function_context); + add_buffer("p33", 9437184, params_path, &mut function_context); + add_buffer("p34", 3072, params_path, &mut function_context); + add_buffer("p35", 3072, params_path, &mut function_context); + add_buffer("p36", 3072, params_path, &mut function_context); + add_buffer("p37", 7077888, params_path, &mut function_context); + add_buffer("p38", 9216, params_path, &mut function_context); + add_buffer("p39", 4, params_path, &mut function_context); + add_buffer("p40", 4, params_path, &mut function_context); + add_buffer("p41", 2359296, params_path, &mut function_context); + add_buffer("p42", 3072, params_path, &mut function_context); + add_buffer("p43", 3072, params_path, &mut function_context); + add_buffer("p44", 3072, params_path, &mut function_context); + add_buffer("p45", 9437184, params_path, &mut function_context); + add_buffer("p46", 12288, params_path, &mut function_context); + add_buffer("p47", 9437184, params_path, &mut function_context); + add_buffer("p48", 3072, params_path, &mut function_context); + add_buffer("p49", 3072, params_path, &mut function_context); + add_buffer("p50", 3072, params_path, &mut function_context); + add_buffer("p51", 7077888, params_path, &mut function_context); + add_buffer("p52", 9216, params_path, &mut function_context); + add_buffer("p53", 4, params_path, &mut function_context); + add_buffer("p54", 4, params_path, &mut function_context); + add_buffer("p55", 2359296, params_path, &mut function_context); + add_buffer("p56", 3072, params_path, &mut function_context); + add_buffer("p57", 3072, params_path, &mut function_context); + add_buffer("p58", 3072, params_path, &mut function_context); + add_buffer("p59", 9437184, params_path, &mut function_context); + add_buffer("p60", 12288, params_path, &mut function_context); + add_buffer("p61", 9437184, params_path, &mut function_context); + add_buffer("p62", 3072, params_path, &mut function_context); + add_buffer("p63", 3072, params_path, &mut function_context); + add_buffer("p64", 3072, params_path, &mut function_context); + add_buffer("p65", 7077888, params_path, &mut function_context); + add_buffer("p66", 9216, params_path, &mut function_context); + add_buffer("p67", 4, params_path, &mut function_context); + add_buffer("p68", 4, params_path, &mut function_context); + add_buffer("p69", 2359296, params_path, &mut function_context); + add_buffer("p70", 3072, params_path, &mut function_context); + add_buffer("p71", 3072, params_path, &mut function_context); + add_buffer("p72", 3072, params_path, &mut function_context); + add_buffer("p73", 9437184, params_path, &mut function_context); + add_buffer("p74", 12288, params_path, &mut function_context); + add_buffer("p75", 9437184, params_path, &mut function_context); + add_buffer("p76", 3072, params_path, &mut function_context); + add_buffer("p77", 3072, params_path, &mut function_context); + add_buffer("p78", 3072, params_path, &mut function_context); + add_buffer("p79", 7077888, params_path, &mut function_context); + add_buffer("p80", 9216, params_path, &mut function_context); + add_buffer("p81", 4, params_path, &mut function_context); + add_buffer("p82", 4, params_path, &mut function_context); + add_buffer("p83", 2359296, params_path, &mut function_context); + add_buffer("p84", 3072, params_path, &mut function_context); + add_buffer("p85", 3072, params_path, &mut function_context); + add_buffer("p86", 3072, params_path, &mut function_context); + add_buffer("p87", 9437184, params_path, &mut function_context); + add_buffer("p88", 12288, params_path, &mut function_context); + add_buffer("p89", 9437184, params_path, &mut function_context); + add_buffer("p90", 3072, params_path, &mut function_context); + add_buffer("p91", 3072, params_path, &mut function_context); + add_buffer("p92", 3072, params_path, &mut function_context); + add_buffer("p93", 7077888, params_path, &mut function_context); + add_buffer("p94", 9216, params_path, &mut function_context); + add_buffer("p95", 4, params_path, &mut function_context); + add_buffer("p96", 4, params_path, &mut function_context); + add_buffer("p97", 2359296, params_path, &mut function_context); + add_buffer("p98", 3072, params_path, &mut function_context); + add_buffer("p99", 3072, params_path, &mut function_context); + add_buffer("p100", 3072, params_path, &mut function_context); + add_buffer("p101", 9437184, params_path, &mut function_context); + add_buffer("p102", 12288, params_path, &mut function_context); + add_buffer("p103", 9437184, params_path, &mut function_context); + add_buffer("p104", 3072, params_path, &mut function_context); + add_buffer("p105", 3072, params_path, &mut function_context); + add_buffer("p106", 3072, params_path, &mut function_context); + add_buffer("p107", 7077888, params_path, &mut function_context); + add_buffer("p108", 9216, params_path, &mut function_context); + add_buffer("p109", 4, params_path, &mut function_context); + add_buffer("p110", 4, params_path, &mut function_context); + add_buffer("p111", 2359296, params_path, &mut function_context); + add_buffer("p112", 3072, params_path, &mut function_context); + add_buffer("p113", 3072, params_path, &mut function_context); + add_buffer("p114", 3072, params_path, &mut function_context); + add_buffer("p115", 9437184, params_path, &mut function_context); + add_buffer("p116", 12288, params_path, &mut function_context); + add_buffer("p117", 9437184, params_path, &mut function_context); + add_buffer("p118", 3072, params_path, &mut function_context); + add_buffer("p119", 3072, params_path, &mut function_context); + add_buffer("p120", 3072, params_path, &mut function_context); + add_buffer("p121", 7077888, params_path, &mut function_context); + add_buffer("p122", 9216, params_path, &mut function_context); + add_buffer("p123", 4, params_path, &mut function_context); + add_buffer("p124", 4, params_path, &mut function_context); + add_buffer("p125", 2359296, params_path, &mut function_context); + add_buffer("p126", 3072, params_path, &mut function_context); + add_buffer("p127", 3072, params_path, &mut function_context); + add_buffer("p128", 3072, params_path, &mut function_context); + add_buffer("p129", 9437184, params_path, &mut function_context); + add_buffer("p130", 12288, params_path, &mut function_context); + add_buffer("p131", 9437184, params_path, &mut function_context); + add_buffer("p132", 3072, params_path, &mut function_context); + add_buffer("p133", 3072, params_path, &mut function_context); + add_buffer("p134", 3072, params_path, &mut function_context); + add_buffer("p135", 7077888, params_path, &mut function_context); + add_buffer("p136", 9216, params_path, &mut function_context); + add_buffer("p137", 4, params_path, &mut function_context); + add_buffer("p138", 4, params_path, &mut function_context); + add_buffer("p139", 2359296, params_path, &mut function_context); + add_buffer("p140", 3072, params_path, &mut function_context); + add_buffer("p141", 3072, params_path, &mut function_context); + add_buffer("p142", 3072, params_path, &mut function_context); + add_buffer("p143", 9437184, params_path, &mut function_context); + add_buffer("p144", 12288, params_path, &mut function_context); + add_buffer("p145", 9437184, params_path, &mut function_context); + add_buffer("p146", 3072, params_path, &mut function_context); + add_buffer("p147", 3072, params_path, &mut function_context); + add_buffer("p148", 3072, params_path, &mut function_context); + add_buffer("p149", 7077888, params_path, &mut function_context); + add_buffer("p150", 9216, params_path, &mut function_context); + add_buffer("p151", 4, params_path, &mut function_context); + add_buffer("p152", 4, params_path, &mut function_context); + add_buffer("p153", 2359296, params_path, &mut function_context); + add_buffer("p154", 3072, params_path, &mut function_context); + add_buffer("p155", 3072, params_path, &mut function_context); + add_buffer("p156", 3072, params_path, &mut function_context); + add_buffer("p157", 9437184, params_path, &mut function_context); + add_buffer("p158", 12288, params_path, &mut function_context); + add_buffer("p159", 9437184, params_path, &mut function_context); + add_buffer("p160", 3072, params_path, &mut function_context); + add_buffer("p161", 3072, params_path, &mut function_context); + add_buffer("p162", 3072, params_path, &mut function_context); + add_buffer("p163", 7077888, params_path, &mut function_context); + add_buffer("p164", 9216, params_path, &mut function_context); + add_buffer("p165", 4, params_path, &mut function_context); + add_buffer("p166", 4, params_path, &mut function_context); + add_buffer("p167", 2359296, params_path, &mut function_context); + add_buffer("p168", 3072, params_path, &mut function_context); + add_buffer("p169", 3072, params_path, &mut function_context); + add_buffer("p170", 3072, params_path, &mut function_context); + add_buffer("p171", 9437184, params_path, &mut function_context); + add_buffer("p172", 12288, params_path, &mut function_context); + add_buffer("p173", 9437184, params_path, &mut function_context); + add_buffer("p174", 3072, params_path, &mut function_context); + add_buffer("p175", 3072, params_path, &mut function_context); + add_buffer("p176", 3072, params_path, &mut function_context); + add_buffer("p177", 3072000, params_path, &mut function_context); + add_buffer("p178", 4000, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 4000; @@ -606,16 +619,3 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } - -pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; - - add_buffer("input", 16, params_path, &mut function_context); - add_buffer("p0", 8, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 8; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index a44c3d7b..0eca1213 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -254,21 +254,73 @@ impl Drop for Worker { pub struct SendContext { pub context_filename: String, pub content: Vec>, + pub offset: i64, pub size: usize, pub state: ContextState, pub occupation: Vec, } -/*impl TryFrom for Context { +pub const GPU_BASE_ADDR: usize = 0x10000; +use crate::memory_domain::gpu::GpuProcessContext; +use nix::sys::mman::shm_open; +use nix::fcntl::OFlag; +use nix::sys::stat::Mode; +use nix::sys::stat::fstat; +use nix::sys::mman::mmap; +use std::num::NonZeroUsize; +use nix::sys::mman::MapFlags; + +#[cfg(feature = "gpu_process")] +impl TryFrom for Context { type Error = DandelionError; fn try_from(value: SendContext) -> Result { + let filename = &value.context_filename; + let shmem_fd = match shm_open(filename.as_str(), OFlag::O_RDWR, Mode::S_IRUSR) { + Err(err) => { + error!("Error opening shared memory file: {}:{}", err, err.desc()); + return Err(DandelionError::FileError); + } + Ok(fd) => fd, + }; + + let size = match fstat(shmem_fd) { + Err(err) => { + error!("Error getting file stats: {}:{}", err, err.desc()); + return Err(DandelionError::FileError); + } + Ok(stat) => stat.st_size as usize, + }; + + let ptr = unsafe { + match mmap( + None, //NonZeroUsize::new(GPU_BASE_ADDR), + NonZeroUsize::new(size).unwrap(), // - GPU_BASE_ADDR).unwrap(), + ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, + MapFlags::MAP_SHARED, + shmem_fd, + value.offset, // + (GPU_BASE_ADDR as i64), + ) { + Err(err) => { + eprintln!( + "Error mapping memory from file {} at address {} with size {} and offset {}: {}:{}", + filename, + GPU_BASE_ADDR, + size - GPU_BASE_ADDR, + value.offset + (GPU_BASE_ADDR as i64), + err, + err.desc() + ); + return Err(DandelionError::MemoryAllocationError); + } + Ok(ptr) => ptr as *mut _, + } + }; + Ok(Self { - context: ContextType::Gpu(Box::new(GpuContext { - storage: MmapMem::alt_open( - &value.context_filename, - ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, - )?, + context: ContextType::GpuProcess(Box::new(GpuProcessContext { + ptr, + size, })), content: value.content, size: value.size, @@ -276,7 +328,7 @@ pub struct SendContext { occupation: value.occupation, }) } -}*/ +} impl TryFrom<&Context> for SendContext { type Error = DandelionError; @@ -290,7 +342,8 @@ impl TryFrom<&Context> for SendContext { // unwrap okay, as Mmu memory is always created as shared so a filename exists context_filename: ctxt.storage.filename().unwrap().to_string(), content: value.content.clone(), - size: value.size, + offset: ctxt.storage.offset(), + size: ctxt.storage.size(), state: value.state.clone(), occupation: value.occupation.clone(), }) @@ -385,6 +438,7 @@ fn manage_worker( break; } else if line.trim().starts_with("__ERROR__") { error!("GPU error: {}", line); + println!("GPU error: {}", line); debt.fulfill(Err(DandelionError::EngineError)); break; } else { diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index a5c188cd..69e29fb5 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -53,6 +53,8 @@ pub enum ContextType { Wasm(Box), #[cfg(feature = "gpu")] Gpu(Box), + #[cfg(feature = "gpu_process")] + GpuProcess(Box), System(Box), } @@ -71,6 +73,8 @@ impl ContextTrait for ContextType { ContextType::Wasm(context) => context.write(offset, data), #[cfg(feature = "gpu")] ContextType::Gpu(context) => context.write(offset, data), + #[cfg(feature = "gpu_process")] + ContextType::GpuProcess(context) => context.write(offset, data), #[cfg(feature = "bytes_context")] ContextType::Bytes(context) => context.write(offset, data), ContextType::System(context) => context.write(offset, data), @@ -89,6 +93,8 @@ impl ContextTrait for ContextType { ContextType::Wasm(context) => context.read(offset, read_buffer), #[cfg(feature = "gpu")] ContextType::Gpu(context) => context.read(offset, read_buffer), + #[cfg(feature = "gpu_process")] + ContextType::GpuProcess(context) => context.read(offset, read_buffer), #[cfg(feature = "bytes_context")] ContextType::Bytes(context) => context.read(offset, read_buffer), ContextType::System(context) => context.read(offset, read_buffer), @@ -107,6 +113,8 @@ impl ContextTrait for ContextType { ContextType::Wasm(context) => context.get_chunk_ref(offset, length), #[cfg(feature = "gpu")] ContextType::Gpu(context) => context.get_chunk_ref(offset, length), + #[cfg(feature = "gpu_process")] + ContextType::GpuProcess(context) => context.get_chunk_ref(offset, length), #[cfg(feature = "bytes_context")] ContextType::Bytes(context) => context.get_chunk_ref(offset, length), ContextType::System(context) => context.get_chunk_ref(offset, length), diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index d8104363..348de295 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -25,6 +25,136 @@ impl ContextTrait for GpuContext { } } +use log::debug; +use nix::sys::mman::shm_open; +use nix::sys::stat::Mode; +use nix::sys::stat::fstat; +use nix::sys::mman::mmap; +use nix::fcntl::OFlag; +use std::num::NonZeroUsize; +use nix::sys::mman::MapFlags; +use dandelion_commons::DandelionError::NotImplemented; +use std::ops::Deref; +use std::ops::DerefMut; + +#[derive(Debug)] +pub struct GpuProcessContext { + // pub storage: MmapMem, + pub ptr: *mut u8, + pub size: usize, +} + +impl GpuProcessContext { + fn size(&self) -> usize { + self.size + } + + pub fn as_ptr(&self) -> *mut u8 { + self.ptr + } + + pub unsafe fn as_slice(&self) -> &[u8] { + std::slice::from_raw_parts(self.as_ptr(), self.size()) + } + + pub unsafe fn as_slice_mut(&mut self) -> &mut [u8] { + std::slice::from_raw_parts_mut(self.as_ptr(), self.size()) + } +} + +impl ContextTrait for GpuProcessContext { + fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { + // check alignment + if offset % core::mem::align_of::() != 0 { + debug!("Misaligned write at offset {}", offset); + return Err(DandelionError::WriteMisaligned); + } + + // check if the write is within bounds + let write_length = data.len() * core::mem::size_of::(); + if offset + write_length > self.size() { + debug!("Write out of bounds at offset {}", offset); + return Err(DandelionError::InvalidWrite); + } + + // write values + unsafe { + let buffer = core::slice::from_raw_parts(data.as_ptr() as *const u8, write_length); + self.as_slice_mut()[offset..offset + buffer.len()].copy_from_slice(&buffer); + } + + Ok(()) + } + + fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { + // check that buffer has proper allighment + if offset % core::mem::align_of::() != 0 { + debug!("Misaligned write at offset {}", offset); + return Err(DandelionError::ReadMisaligned); + } + + let read_size = core::mem::size_of::() * read_buffer.len(); + if offset + read_size > self.size() { + eprintln!( + "InvalidRead in MMM: len {}, offset {}, size {}", + self.size(), + offset, + read_size + ); + debug!("Read out of bounds at offset {}", offset); + return Err(DandelionError::InvalidRead); + } + + // read values, sanitize if necessary + unsafe { + let read_memory = + core::slice::from_raw_parts_mut(read_buffer.as_mut_ptr() as *mut u8, read_size); + read_memory.copy_from_slice(&self.as_slice()[offset..offset + read_size]); + } + + Ok(()) + } + + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + if offset + length > self.size() { + return Err(DandelionError::InvalidRead); + } + return Ok(unsafe { &self.as_slice()[offset..offset + length] }); + } +} + +unsafe impl Send for GpuProcessContext {} +unsafe impl Sync for GpuProcessContext {} + +impl Deref for GpuProcessContext { + type Target = [u8]; + + fn deref(&self) -> &Self::Target { + unsafe { self.as_slice() } + } +} + +impl DerefMut for GpuProcessContext { + fn deref_mut(&mut self) -> &mut Self::Target { + unsafe { self.as_slice_mut() } + } +} + +/*pub const SLAB_SIZE: usize = 1 << 20; +impl Drop for GpuProcessContext { + fn drop(&mut self) { + let start = usize::try_from(unsafe { self.ptr.offset_from(self.origin.ptr) }).unwrap(); + let start_slab = u32::try_from(start / SLAB_SIZE).unwrap(); + let slab_number = u32::try_from(self.size / SLAB_SIZE).unwrap(); + self.origin + .occupation + .lock() + .unwrap() + .insert(start_slab, start_slab + slab_number); + } +}*/ + + #[derive(Debug)] pub struct GpuMemoryDomain { memory_pool: MmapMemPool, diff --git a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json index 5daf035c..d16c1b48 100644 --- a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json +++ b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json @@ -5,11 +5,11 @@ {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"} ], "blueprint": { - "inputs": ["input", "p0", "p1"], + "inputs": ["test", "p0", "p1"], "buffers": {"output": {"Absolute": 12}, "b2": {"Absolute": 20}}, "outputs": ["output"], "control_flow": [ - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "input"}, {"Ptr": "p0"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "test"}, {"Ptr": "p0"}], { "grid_dim_x": {"Absolute": 5}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/data/cuda/test_gpu_lstm.json b/machine_interface/tests/data/cuda/test_gpu_lstm.json index 802d9b83..cf807ad4 100644 --- a/machine_interface/tests/data/cuda/test_gpu_lstm.json +++ b/machine_interface/tests/data/cuda/test_gpu_lstm.json @@ -1,132 +1,132 @@ { "modules": [{"module_name": "lstm.cubin", "path": "cuda/lstm.cubin"}], "kernels": [ - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_3"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_7"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_40_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_2_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_53_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_14"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_22_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_46_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_20_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_3_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_38_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_34_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_48_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_28_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_35_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_14_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_25"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_24_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_2_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_sigmoid_tanh_multiply_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_2"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_3"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_11"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_12_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_17"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_14"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_12"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_3"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_49_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_4e0306112785fa15__kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_54_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_33_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_8_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_4_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_21_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_16"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_43_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_6"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_10_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_1_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_51_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_18"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_39_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_27"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_10"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_26"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_42_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_23"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_47_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_50_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_41_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_2"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_2"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_23"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_4e0306112785fa15__kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_10_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_11_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_12_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_13_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_14_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_15_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_16_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_17_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_18_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_19_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_1_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_20_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_21_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_22_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_23_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_4"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_24_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_25_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_16"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_30_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_20"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_2_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_18_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_26_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_27_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_16_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_28_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_29_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_2_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_30_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_31_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_32_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_33_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_34_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_35_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_36_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_37_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_38_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_39_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_3_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_40_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_41_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_42_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_43_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_44_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_19_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_45_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_46_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_47_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_48_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_49_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_4_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_50_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_51_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_52_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_53_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_54_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_55_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_5_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_6_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_7_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_8_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_9_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_17_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_29_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_10"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_11"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_55_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_12"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_13"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_19"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_21"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_36_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_6_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_8"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_13_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_24"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_14"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_15"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_16"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_17"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_18"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_5_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_19"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_2"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_11_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_37_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_32_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_15"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_31_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_9"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_20"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_21"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_22"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_45_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_15_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_sigmoid_tanh_multiply_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_52_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_23"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_24"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_25"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_26"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_27"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_3"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_4"}, {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_5"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_7_kernel"}, - {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19"} + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_6"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_7"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_8"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_9"} ], "blueprint": { - "inputs": ["input", "p252", "p254", "p256", "p258", "p260", "p262", "p264", "p266", "p268", "p270", "p272", "p274", "p276", "p278", "p280", "p282", "p284", "p286", "p288", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p15", "p17", "p19", "p21", "p23", "p25", "p27", "p29", "p31", "p33", "p35", "p37", "p39", "p41", "p43", "p45", "p47", "p49", "p51", "p53", "p55", "p57", "p58", "p60", "p61", "p63", "p65", "p67", "p69", "p71", "p73", "p75", "p77", "p79", "p81", "p83", "p85", "p87", "p89", "p91", "p93", "p95", "p97", "p116", "p119", "p174", "p14", "p16", "p18", "p20", "p22", "p24", "p99", "p101", "p103", "p105", "p107", "p109", "p111", "p113", "p115", "p118", "p121", "p123", "p125", "p127", "p129", "p131", "p133", "p135", "p137", "p139", "p141", "p143", "p145", "p147", "p149", "p151", "p153", "p155", "p157", "p159", "p161", "p163", "p165", "p167", "p169", "p171", "p173", "p176", "p177", "p179", "p181", "p183", "p185", "p187", "p189", "p191", "p193", "p195", "p197", "p199", "p201", "p203", "p205", "p207", "p209", "p211", "p213", "p215", "p217", "p219", "p221", "p223", "p225", "p227", "p229", "p231", "p232", "p234", "p235", "p237", "p239", "p241", "p243", "p245", "p247", "p249", "p251", "p253", "p255", "p257", "p259", "p261", "p263", "p265", "p267", "p269", "p271", "p273", "p275", "p277", "p291", "p26", "p28", "p30", "p32", "p34", "p36", "p279", "p281", "p283", "p285", "p287", "p289", "p290", "p38", "p40", "p42", "p44", "p46", "p48", "p50", "p52", "p54", "p56", "p59", "p62", "p64", "p66", "p68", "p70", "p72", "p74", "p76", "p78", "p80", "p82", "p84", "p86", "p88", "p90", "p92", "p94", "p96", "p98", "p100", "p102", "p104", "p106", "p108", "p110", "p112", "p114", "p117", "p120", "p122", "p124", "p126", "p128", "p130", "p132", "p134", "p136", "p138", "p140", "p142", "p144", "p146", "p148", "p150", "p152", "p154", "p156", "p158", "p160", "p162", "p164", "p166", "p168", "p170", "p172", "p175", "p178", "p180", "p182", "p184", "p186", "p188", "p190", "p192", "p194", "p196", "p198", "p200", "p202", "p204", "p206", "p208", "p210", "p212", "p214", "p216", "p218", "p220", "p222", "p224", "p226", "p228", "p230", "p233", "p236", "p238", "p240", "p242", "p244", "p246", "p248", "p250"], - "buffers": {"b1": {"Absolute": 512}, "b2": {"Absolute": 2048}, "b3": {"Absolute": 512}, "b4": {"Absolute": 512}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b7": {"Absolute": 512}, "b9": {"Absolute": 512}, "b10": {"Absolute": 512}, "b11": {"Absolute": 512}, "b12": {"Absolute": 512}, "b13": {"Absolute": 512}, "b14": {"Absolute": 512}, "b15": {"Absolute": 512}, "b16": {"Absolute": 512}, "b17": {"Absolute": 512}, "b18": {"Absolute": 512}, "b19": {"Absolute": 512}, "b20": {"Absolute": 512}, "b21": {"Absolute": 512}, "b22": {"Absolute": 512}, "b23": {"Absolute": 512}, "b24": {"Absolute": 512}, "b25": {"Absolute": 512}, "b26": {"Absolute": 512}, "b27": {"Absolute": 512}, "b28": {"Absolute": 512}, "b30": {"Absolute": 2048}, "b33": {"Absolute": 2048}, "b34": {"Absolute": 512}, "b35": {"Absolute": 512}, "b36": {"Absolute": 2048}, "b38": {"Absolute": 512}, "b41": {"Absolute": 2048}, "b44": {"Absolute": 2048}, "b47": {"Absolute": 2048}, "b50": {"Absolute": 2048}, "b53": {"Absolute": 2048}, "b56": {"Absolute": 2048}, "b59": {"Absolute": 2048}, "b62": {"Absolute": 2048}, "b65": {"Absolute": 2048}, "b68": {"Absolute": 2048}, "b71": {"Absolute": 2048}, "b74": {"Absolute": 2048}, "b77": {"Absolute": 2048}, "b80": {"Absolute": 2048}, "b83": {"Absolute": 2048}, "b86": {"Absolute": 2048}, "b89": {"Absolute": 2048}, "b92": {"Absolute": 2048}, "b95": {"Absolute": 2048}, "b98": {"Absolute": 2048}, "b101": {"Absolute": 2048}, "b104": {"Absolute": 2048}, "b107": {"Absolute": 2048}, "b110": {"Absolute": 2048}, "b113": {"Absolute": 2048}, "b116": {"Absolute": 2048}, "output": {"Absolute": 512}}, + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290", "p291"], + "buffers": {"output": {"Absolute": 512}, "b1": {"Absolute": 512}, "b2": {"Absolute": 2048}, "b3": {"Absolute": 512}, "b4": {"Absolute": 512}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b7": {"Absolute": 512}, "b9": {"Absolute": 512}, "b10": {"Absolute": 512}, "b11": {"Absolute": 512}, "b12": {"Absolute": 512}, "b13": {"Absolute": 512}, "b14": {"Absolute": 512}, "b15": {"Absolute": 512}, "b16": {"Absolute": 512}, "b17": {"Absolute": 512}, "b18": {"Absolute": 512}, "b19": {"Absolute": 512}, "b20": {"Absolute": 512}, "b21": {"Absolute": 512}, "b22": {"Absolute": 512}, "b23": {"Absolute": 512}, "b24": {"Absolute": 512}, "b25": {"Absolute": 512}, "b26": {"Absolute": 512}, "b27": {"Absolute": 512}, "b28": {"Absolute": 512}, "b30": {"Absolute": 2048}, "b33": {"Absolute": 2048}, "b34": {"Absolute": 512}, "b35": {"Absolute": 512}, "b36": {"Absolute": 2048}, "b38": {"Absolute": 512}, "b41": {"Absolute": 2048}, "b44": {"Absolute": 2048}, "b47": {"Absolute": 2048}, "b50": {"Absolute": 2048}, "b53": {"Absolute": 2048}, "b56": {"Absolute": 2048}, "b59": {"Absolute": 2048}, "b62": {"Absolute": 2048}, "b65": {"Absolute": 2048}, "b68": {"Absolute": 2048}, "b71": {"Absolute": 2048}, "b74": {"Absolute": 2048}, "b77": {"Absolute": 2048}, "b80": {"Absolute": 2048}, "b83": {"Absolute": 2048}, "b86": {"Absolute": 2048}, "b89": {"Absolute": 2048}, "b92": {"Absolute": 2048}, "b95": {"Absolute": 2048}, "b98": {"Absolute": 2048}, "b101": {"Absolute": 2048}, "b104": {"Absolute": 2048}, "b107": {"Absolute": 2048}, "b110": {"Absolute": 2048}, "b113": {"Absolute": 2048}, "b116": {"Absolute": 2048}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}], { diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet18.json b/machine_interface/tests/data/cuda/test_gpu_resnet18.json index f5ef637f..685f101c 100644 --- a/machine_interface/tests/data/cuda/test_gpu_resnet18.json +++ b/machine_interface/tests/data/cuda/test_gpu_resnet18.json @@ -39,7 +39,7 @@ ], "blueprint": { "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41"], - "buffers": {"b3": {"Absolute": 3211264}, "b4": {"Absolute": 802816}, "b9": {"Absolute": 802816}, "b40": {"Absolute": 100352}, "b45": {"Absolute": 2048}, "b49": {"Absolute": 1806336}, "b50": {"Absolute": 1806336}, "output": {"Absolute": 4000}}, + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 802816}, "b9": {"Absolute": 802816}, "b40": {"Absolute": 100352}, "b45": {"Absolute": 2048}, "b49": {"Absolute": 1806336}, "b50": {"Absolute": 1806336}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { diff --git a/machine_interface/tests/data/cuda/test_gpu_simple.json b/machine_interface/tests/data/cuda/test_gpu_simple.json index 02f6acf8..fdeaee28 100644 --- a/machine_interface/tests/data/cuda/test_gpu_simple.json +++ b/machine_interface/tests/data/cuda/test_gpu_simple.json @@ -4,11 +4,11 @@ {"module_name": "simple.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"} ], "blueprint": { - "inputs": ["input", "p0"], + "inputs": ["test", "p0"], "buffers": {"output": {"Absolute": 8}}, "outputs": ["output"], "control_flow": [ - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "input"}, {"Ptr": "p0"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "test"}, {"Ptr": "p0"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json b/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json index e07e0d20..d23ec103 100644 --- a/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json +++ b/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json @@ -1,46 +1,46 @@ { "modules": [{"module_name": "vit_b_16.cubin", "path": "cuda/vit_b_16.cubin"}], "kernels": [ - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_add_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel_1"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel_1"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_add_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_concatenate_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel"}, {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_take_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, - {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"} + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel_1"} ], "blueprint": { - "inputs": ["input", "p163", "p167", "p171", "p173", "p149", "p153", "p157", "p159", "p135", "p139", "p143", "p145", "p121", "p125", "p129", "p131", "p107", "p111", "p115", "p117", "p93", "p97", "p101", "p103", "p79", "p83", "p87", "p89", "p65", "p69", "p73", "p75", "p51", "p55", "p59", "p61", "p37", "p41", "p45", "p47", "p23", "p27", "p31", "p33", "p1", "p3", "p164", "p168", "p169", "p170", "p172", "p174", "p175", "p176", "p178", "p0", "p2", "p4", "p5", "p7", "p8", "p9", "p10", "p11", "p12", "p14", "p15", "p16", "p18", "p20", "p21", "p22", "p24", "p25", "p26", "p28", "p29", "p30", "p32", "p34", "p35", "p36", "p38", "p39", "p40", "p42", "p43", "p44", "p46", "p48", "p49", "p50", "p52", "p53", "p54", "p56", "p57", "p58", "p60", "p62", "p63", "p64", "p66", "p67", "p68", "p70", "p71", "p72", "p74", "p76", "p77", "p78", "p80", "p81", "p82", "p84", "p85", "p86", "p88", "p90", "p91", "p92", "p94", "p95", "p96", "p98", "p99", "p100", "p102", "p104", "p105", "p106", "p108", "p109", "p110", "p112", "p113", "p114", "p116", "p118", "p119", "p120", "p122", "p123", "p124", "p126", "p127", "p128", "p130", "p132", "p133", "p134", "p136", "p137", "p138", "p140", "p141", "p142", "p144", "p146", "p147", "p148", "p150", "p151", "p152", "p154", "p155", "p156", "p158", "p160", "p161", "p162", "p165", "p166", "p6", "p13", "p17", "p19", "p177"], - "buffers": {"b18": {"Absolute": 605184}, "b185": {"Absolute": 3072}, "b188": {"Absolute": 12288}, "b3": {"Absolute": 1862832}, "b7": {"Absolute": 788}, "b6": {"Absolute": 1862832}, "b12": {"Absolute": 2420736}, "b19": {"Absolute": 2420736}, "b189": {"Absolute": 1863680}, "output": {"Absolute": 4000}}, + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 1862832}, "b6": {"Absolute": 1862832}, "b7": {"Absolute": 788}, "b12": {"Absolute": 2420736}, "b18": {"Absolute": 605184}, "b19": {"Absolute": 2420736}, "b185": {"Absolute": 3072}, "b188": {"Absolute": 12288}, "b189": {"Absolute": 1863680}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { - "grid_dim_x": {"Absolute": 14}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 48}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, diff --git a/machine_interface/tests/libs/cuda/lstm.cubin b/machine_interface/tests/libs/cuda/lstm.cubin index 700c074a9339d03626cf373ff6a1c320245325a5..89a7de387ad9fadc6e597f7b9782ec2d6a3ceb60 100644 GIT binary patch literal 272992 zcmeHw37j28wSH&j&YDSP5&|S_nUDd(mdut#L>M4!vV}dYlSyW>V3uJr2@@8%gor^A zB7z1*jTjYB6cG{J7zGg!0fnddTwY#`KHT1mzVO$F%lyx&?z&xl {Jd+*fD^Y#4^ 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 WRdIsrfFA`CNkUja{8U^a_5A-;D>kSA literal 272992 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 IxHx|PKW~scdjJ3c diff --git a/machine_interface/tests/libs/cuda/resnet18.cubin b/machine_interface/tests/libs/cuda/resnet18.cubin index 2ad8d329742e2bb1ff601557489400dc8da41075..e885a9452039b9e136be046dda64891f14b815fe 100644 GIT binary patch delta 9713 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 D&oj-C diff --git a/machine_interface/tests/libs/cuda/vit_b_16.cubin b/machine_interface/tests/libs/cuda/vit_b_16.cubin index 6e79c039baab1ca986c06c67ce817676c1448e61..b49cfa9b94091d9f21d272e82c37ed7f952be291 100644 GIT binary patch literal 154528 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 H)bsxXlgu1w literal 116032 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 b??VGm$J_G5eaB>R<4j} From 43ec9d86b929277075ff30c5fd19283211d9568e Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Fri, 28 Mar 2025 15:52:13 +0100 Subject: [PATCH 153/176] GpuProcess working --- .../gpu/gpu_tests/cuda_tests.rs | 2 +- .../gpu_tests/cuda_tests/compiled_tests.rs | 13 + .../gpu/gpu_tests/cuda_tests/load_models.rs | 942 +++- .../gpu/gpu_tests/tests_utils.rs | 2 +- .../compute_driver/gpu/gpu_utils.rs | 66 +- .../tests/data/cuda/test_gpu_bert.json | 3423 ++++++++++++++ .../tests/data/cuda/test_gpu_llama.json | 3959 +++++++++++++++++ .../tests/data/cuda/test_gpu_rnn.json | 206 +- machine_interface/tests/libs/cuda/bert.cubin | Bin 0 -> 115168 bytes machine_interface/tests/libs/cuda/llama.cubin | Bin 0 -> 87712 bytes machine_interface/tests/libs/cuda/lstm.cubin | Bin 272992 -> 272992 bytes .../tests/libs/cuda/resnet18.cubin | Bin 208288 -> 208288 bytes machine_interface/tests/libs/cuda/rnn.cubin | Bin 220352 -> 233696 bytes 13 files changed, 8241 insertions(+), 372 deletions(-) create mode 100644 machine_interface/tests/data/cuda/test_gpu_bert.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_llama.json create mode 100644 machine_interface/tests/libs/cuda/bert.cubin create mode 100644 machine_interface/tests/libs/cuda/llama.cubin diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs index e11f257f..f2962add 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs @@ -46,7 +46,7 @@ fn minimal_matmul() { size: (1 << 30), }; let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let drv_init = vec![ComputeResource::GPU(7, 2, 2)]; let (mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs index 976302ce..d5920e81 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs @@ -17,6 +17,7 @@ fn test_all() { test_model("rnn", true); test_model("lstm", true); test_model("vit_b_16", true); + test_model("bert", true); } fn get_function(model_name: &str) -> Option (usize, String, Vec, Context)> { @@ -28,6 +29,8 @@ fn get_function(model_name: &str) -> Option (usize, String, Vec (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/rnn/"; +pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; - add_buffer("input", 3136, params_path, &mut function_context); - add_buffer("p0", 14336, params_path, &mut function_context); - add_buffer("p1", 512, params_path, &mut function_context); - add_buffer("p2", 512, params_path, &mut function_context); - add_buffer("p3", 65536, params_path, &mut function_context); - add_buffer("p4", 512, params_path, &mut function_context); - add_buffer("p5", 65536, params_path, &mut function_context); - add_buffer("p6", 512, params_path, &mut function_context); - add_buffer("p7", 512, params_path, &mut function_context); - add_buffer("p8", 65536, params_path, &mut function_context); - add_buffer("p9", 512, params_path, &mut function_context); - add_buffer("p10", 65536, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 512, params_path, &mut function_context); - add_buffer("p13", 65536, params_path, &mut function_context); - add_buffer("p14", 512, params_path, &mut function_context); - add_buffer("p15", 65536, params_path, &mut function_context); - add_buffer("p16", 512, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 65536, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 65536, params_path, &mut function_context); - add_buffer("p21", 512, params_path, &mut function_context); - add_buffer("p22", 512, params_path, &mut function_context); - add_buffer("p23", 65536, params_path, &mut function_context); - add_buffer("p24", 512, params_path, &mut function_context); - add_buffer("p25", 5120, params_path, &mut function_context); - add_buffer("p26", 40, params_path, &mut function_context); + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 2359296, params_path, &mut function_context); + add_buffer("p1", 3072, params_path, &mut function_context); + add_buffer("p2", 3072, params_path, &mut function_context); + add_buffer("p3", 605184, params_path, &mut function_context); + add_buffer("p4", 3072, params_path, &mut function_context); + add_buffer("p5", 3072, params_path, &mut function_context); + add_buffer("p6", 7077888, params_path, &mut function_context); + add_buffer("p7", 9216, params_path, &mut function_context); + add_buffer("p8", 8, params_path, &mut function_context); + add_buffer("p9", 4, params_path, &mut function_context); + add_buffer("p10", 8, params_path, &mut function_context); + add_buffer("p11", 4, params_path, &mut function_context); + add_buffer("p12", 8, params_path, &mut function_context); + add_buffer("p13", 2359296, params_path, &mut function_context); + add_buffer("p14", 3072, params_path, &mut function_context); + add_buffer("p15", 3072, params_path, &mut function_context); + add_buffer("p16", 3072, params_path, &mut function_context); + add_buffer("p17", 9437184, params_path, &mut function_context); + add_buffer("p18", 12288, params_path, &mut function_context); + add_buffer("p19", 9437184, params_path, &mut function_context); + add_buffer("p20", 3072, params_path, &mut function_context); + add_buffer("p21", 3072, params_path, &mut function_context); + add_buffer("p22", 3072, params_path, &mut function_context); + add_buffer("p23", 7077888, params_path, &mut function_context); + add_buffer("p24", 9216, params_path, &mut function_context); + add_buffer("p25", 4, params_path, &mut function_context); + add_buffer("p26", 4, params_path, &mut function_context); + add_buffer("p27", 2359296, params_path, &mut function_context); + add_buffer("p28", 3072, params_path, &mut function_context); + add_buffer("p29", 3072, params_path, &mut function_context); + add_buffer("p30", 3072, params_path, &mut function_context); + add_buffer("p31", 9437184, params_path, &mut function_context); + add_buffer("p32", 12288, params_path, &mut function_context); + add_buffer("p33", 9437184, params_path, &mut function_context); + add_buffer("p34", 3072, params_path, &mut function_context); + add_buffer("p35", 3072, params_path, &mut function_context); + add_buffer("p36", 3072, params_path, &mut function_context); + add_buffer("p37", 7077888, params_path, &mut function_context); + add_buffer("p38", 9216, params_path, &mut function_context); + add_buffer("p39", 4, params_path, &mut function_context); + add_buffer("p40", 4, params_path, &mut function_context); + add_buffer("p41", 2359296, params_path, &mut function_context); + add_buffer("p42", 3072, params_path, &mut function_context); + add_buffer("p43", 3072, params_path, &mut function_context); + add_buffer("p44", 3072, params_path, &mut function_context); + add_buffer("p45", 9437184, params_path, &mut function_context); + add_buffer("p46", 12288, params_path, &mut function_context); + add_buffer("p47", 9437184, params_path, &mut function_context); + add_buffer("p48", 3072, params_path, &mut function_context); + add_buffer("p49", 3072, params_path, &mut function_context); + add_buffer("p50", 3072, params_path, &mut function_context); + add_buffer("p51", 7077888, params_path, &mut function_context); + add_buffer("p52", 9216, params_path, &mut function_context); + add_buffer("p53", 4, params_path, &mut function_context); + add_buffer("p54", 4, params_path, &mut function_context); + add_buffer("p55", 2359296, params_path, &mut function_context); + add_buffer("p56", 3072, params_path, &mut function_context); + add_buffer("p57", 3072, params_path, &mut function_context); + add_buffer("p58", 3072, params_path, &mut function_context); + add_buffer("p59", 9437184, params_path, &mut function_context); + add_buffer("p60", 12288, params_path, &mut function_context); + add_buffer("p61", 9437184, params_path, &mut function_context); + add_buffer("p62", 3072, params_path, &mut function_context); + add_buffer("p63", 3072, params_path, &mut function_context); + add_buffer("p64", 3072, params_path, &mut function_context); + add_buffer("p65", 7077888, params_path, &mut function_context); + add_buffer("p66", 9216, params_path, &mut function_context); + add_buffer("p67", 4, params_path, &mut function_context); + add_buffer("p68", 4, params_path, &mut function_context); + add_buffer("p69", 2359296, params_path, &mut function_context); + add_buffer("p70", 3072, params_path, &mut function_context); + add_buffer("p71", 3072, params_path, &mut function_context); + add_buffer("p72", 3072, params_path, &mut function_context); + add_buffer("p73", 9437184, params_path, &mut function_context); + add_buffer("p74", 12288, params_path, &mut function_context); + add_buffer("p75", 9437184, params_path, &mut function_context); + add_buffer("p76", 3072, params_path, &mut function_context); + add_buffer("p77", 3072, params_path, &mut function_context); + add_buffer("p78", 3072, params_path, &mut function_context); + add_buffer("p79", 7077888, params_path, &mut function_context); + add_buffer("p80", 9216, params_path, &mut function_context); + add_buffer("p81", 4, params_path, &mut function_context); + add_buffer("p82", 4, params_path, &mut function_context); + add_buffer("p83", 2359296, params_path, &mut function_context); + add_buffer("p84", 3072, params_path, &mut function_context); + add_buffer("p85", 3072, params_path, &mut function_context); + add_buffer("p86", 3072, params_path, &mut function_context); + add_buffer("p87", 9437184, params_path, &mut function_context); + add_buffer("p88", 12288, params_path, &mut function_context); + add_buffer("p89", 9437184, params_path, &mut function_context); + add_buffer("p90", 3072, params_path, &mut function_context); + add_buffer("p91", 3072, params_path, &mut function_context); + add_buffer("p92", 3072, params_path, &mut function_context); + add_buffer("p93", 7077888, params_path, &mut function_context); + add_buffer("p94", 9216, params_path, &mut function_context); + add_buffer("p95", 4, params_path, &mut function_context); + add_buffer("p96", 4, params_path, &mut function_context); + add_buffer("p97", 2359296, params_path, &mut function_context); + add_buffer("p98", 3072, params_path, &mut function_context); + add_buffer("p99", 3072, params_path, &mut function_context); + add_buffer("p100", 3072, params_path, &mut function_context); + add_buffer("p101", 9437184, params_path, &mut function_context); + add_buffer("p102", 12288, params_path, &mut function_context); + add_buffer("p103", 9437184, params_path, &mut function_context); + add_buffer("p104", 3072, params_path, &mut function_context); + add_buffer("p105", 3072, params_path, &mut function_context); + add_buffer("p106", 3072, params_path, &mut function_context); + add_buffer("p107", 7077888, params_path, &mut function_context); + add_buffer("p108", 9216, params_path, &mut function_context); + add_buffer("p109", 4, params_path, &mut function_context); + add_buffer("p110", 4, params_path, &mut function_context); + add_buffer("p111", 2359296, params_path, &mut function_context); + add_buffer("p112", 3072, params_path, &mut function_context); + add_buffer("p113", 3072, params_path, &mut function_context); + add_buffer("p114", 3072, params_path, &mut function_context); + add_buffer("p115", 9437184, params_path, &mut function_context); + add_buffer("p116", 12288, params_path, &mut function_context); + add_buffer("p117", 9437184, params_path, &mut function_context); + add_buffer("p118", 3072, params_path, &mut function_context); + add_buffer("p119", 3072, params_path, &mut function_context); + add_buffer("p120", 3072, params_path, &mut function_context); + add_buffer("p121", 7077888, params_path, &mut function_context); + add_buffer("p122", 9216, params_path, &mut function_context); + add_buffer("p123", 4, params_path, &mut function_context); + add_buffer("p124", 4, params_path, &mut function_context); + add_buffer("p125", 2359296, params_path, &mut function_context); + add_buffer("p126", 3072, params_path, &mut function_context); + add_buffer("p127", 3072, params_path, &mut function_context); + add_buffer("p128", 3072, params_path, &mut function_context); + add_buffer("p129", 9437184, params_path, &mut function_context); + add_buffer("p130", 12288, params_path, &mut function_context); + add_buffer("p131", 9437184, params_path, &mut function_context); + add_buffer("p132", 3072, params_path, &mut function_context); + add_buffer("p133", 3072, params_path, &mut function_context); + add_buffer("p134", 3072, params_path, &mut function_context); + add_buffer("p135", 7077888, params_path, &mut function_context); + add_buffer("p136", 9216, params_path, &mut function_context); + add_buffer("p137", 4, params_path, &mut function_context); + add_buffer("p138", 4, params_path, &mut function_context); + add_buffer("p139", 2359296, params_path, &mut function_context); + add_buffer("p140", 3072, params_path, &mut function_context); + add_buffer("p141", 3072, params_path, &mut function_context); + add_buffer("p142", 3072, params_path, &mut function_context); + add_buffer("p143", 9437184, params_path, &mut function_context); + add_buffer("p144", 12288, params_path, &mut function_context); + add_buffer("p145", 9437184, params_path, &mut function_context); + add_buffer("p146", 3072, params_path, &mut function_context); + add_buffer("p147", 3072, params_path, &mut function_context); + add_buffer("p148", 3072, params_path, &mut function_context); + add_buffer("p149", 7077888, params_path, &mut function_context); + add_buffer("p150", 9216, params_path, &mut function_context); + add_buffer("p151", 4, params_path, &mut function_context); + add_buffer("p152", 4, params_path, &mut function_context); + add_buffer("p153", 2359296, params_path, &mut function_context); + add_buffer("p154", 3072, params_path, &mut function_context); + add_buffer("p155", 3072, params_path, &mut function_context); + add_buffer("p156", 3072, params_path, &mut function_context); + add_buffer("p157", 9437184, params_path, &mut function_context); + add_buffer("p158", 12288, params_path, &mut function_context); + add_buffer("p159", 9437184, params_path, &mut function_context); + add_buffer("p160", 3072, params_path, &mut function_context); + add_buffer("p161", 3072, params_path, &mut function_context); + add_buffer("p162", 3072, params_path, &mut function_context); + add_buffer("p163", 7077888, params_path, &mut function_context); + add_buffer("p164", 9216, params_path, &mut function_context); + add_buffer("p165", 4, params_path, &mut function_context); + add_buffer("p166", 4, params_path, &mut function_context); + add_buffer("p167", 2359296, params_path, &mut function_context); + add_buffer("p168", 3072, params_path, &mut function_context); + add_buffer("p169", 3072, params_path, &mut function_context); + add_buffer("p170", 3072, params_path, &mut function_context); + add_buffer("p171", 9437184, params_path, &mut function_context); + add_buffer("p172", 12288, params_path, &mut function_context); + add_buffer("p173", 9437184, params_path, &mut function_context); + add_buffer("p174", 3072, params_path, &mut function_context); + add_buffer("p175", 3072, params_path, &mut function_context); + add_buffer("p176", 3072, params_path, &mut function_context); + add_buffer("p177", 3072000, params_path, &mut function_context); + add_buffer("p178", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_bert(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/bert/"; + + add_buffer("input_ids", 1024, params_path, &mut function_context); + add_buffer("attention_mask", 1024, params_path, &mut function_context); + add_buffer("p0", 93763584, params_path, &mut function_context); + add_buffer("p1", 393216, params_path, &mut function_context); + add_buffer("p2", 3072, params_path, &mut function_context); + add_buffer("p3", 3072, params_path, &mut function_context); + add_buffer("p4", 2359296, params_path, &mut function_context); + add_buffer("p5", 3072, params_path, &mut function_context); + add_buffer("p6", 4, params_path, &mut function_context); + add_buffer("p7", 2359296, params_path, &mut function_context); + add_buffer("p8", 3072, params_path, &mut function_context); + add_buffer("p9", 4, params_path, &mut function_context); + add_buffer("p10", 2359296, params_path, &mut function_context); + add_buffer("p11", 3072, params_path, &mut function_context); + add_buffer("p12", 2359296, params_path, &mut function_context); + add_buffer("p13", 3072, params_path, &mut function_context); + add_buffer("p14", 3072, params_path, &mut function_context); + add_buffer("p15", 3072, params_path, &mut function_context); + add_buffer("p16", 9437184, params_path, &mut function_context); + add_buffer("p17", 12288, params_path, &mut function_context); + add_buffer("p18", 9437184, params_path, &mut function_context); + add_buffer("p19", 3072, params_path, &mut function_context); + add_buffer("p20", 3072, params_path, &mut function_context); + add_buffer("p21", 3072, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 3072, params_path, &mut function_context); + add_buffer("p24", 4, params_path, &mut function_context); + add_buffer("p25", 2359296, params_path, &mut function_context); + add_buffer("p26", 3072, params_path, &mut function_context); + add_buffer("p27", 4, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 3072, params_path, &mut function_context); + add_buffer("p30", 2359296, params_path, &mut function_context); + add_buffer("p31", 3072, params_path, &mut function_context); + add_buffer("p32", 3072, params_path, &mut function_context); + add_buffer("p33", 3072, params_path, &mut function_context); + add_buffer("p34", 9437184, params_path, &mut function_context); + add_buffer("p35", 12288, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 3072, params_path, &mut function_context); + add_buffer("p38", 3072, params_path, &mut function_context); + add_buffer("p39", 3072, params_path, &mut function_context); + add_buffer("p40", 2359296, params_path, &mut function_context); + add_buffer("p41", 3072, params_path, &mut function_context); + add_buffer("p42", 4, params_path, &mut function_context); + add_buffer("p43", 2359296, params_path, &mut function_context); + add_buffer("p44", 3072, params_path, &mut function_context); + add_buffer("p45", 4, params_path, &mut function_context); + add_buffer("p46", 2359296, params_path, &mut function_context); + add_buffer("p47", 3072, params_path, &mut function_context); + add_buffer("p48", 2359296, params_path, &mut function_context); + add_buffer("p49", 3072, params_path, &mut function_context); + add_buffer("p50", 3072, params_path, &mut function_context); + add_buffer("p51", 3072, params_path, &mut function_context); + add_buffer("p52", 9437184, params_path, &mut function_context); + add_buffer("p53", 12288, params_path, &mut function_context); + add_buffer("p54", 9437184, params_path, &mut function_context); + add_buffer("p55", 3072, params_path, &mut function_context); + add_buffer("p56", 3072, params_path, &mut function_context); + add_buffer("p57", 3072, params_path, &mut function_context); + add_buffer("p58", 2359296, params_path, &mut function_context); + add_buffer("p59", 3072, params_path, &mut function_context); + add_buffer("p60", 4, params_path, &mut function_context); + add_buffer("p61", 2359296, params_path, &mut function_context); + add_buffer("p62", 3072, params_path, &mut function_context); + add_buffer("p63", 4, params_path, &mut function_context); + add_buffer("p64", 2359296, params_path, &mut function_context); + add_buffer("p65", 3072, params_path, &mut function_context); + add_buffer("p66", 2359296, params_path, &mut function_context); + add_buffer("p67", 3072, params_path, &mut function_context); + add_buffer("p68", 3072, params_path, &mut function_context); + add_buffer("p69", 3072, params_path, &mut function_context); + add_buffer("p70", 9437184, params_path, &mut function_context); + add_buffer("p71", 12288, params_path, &mut function_context); + add_buffer("p72", 9437184, params_path, &mut function_context); + add_buffer("p73", 3072, params_path, &mut function_context); + add_buffer("p74", 3072, params_path, &mut function_context); + add_buffer("p75", 3072, params_path, &mut function_context); + add_buffer("p76", 2359296, params_path, &mut function_context); + add_buffer("p77", 3072, params_path, &mut function_context); + add_buffer("p78", 4, params_path, &mut function_context); + add_buffer("p79", 2359296, params_path, &mut function_context); + add_buffer("p80", 3072, params_path, &mut function_context); + add_buffer("p81", 4, params_path, &mut function_context); + add_buffer("p82", 2359296, params_path, &mut function_context); + add_buffer("p83", 3072, params_path, &mut function_context); + add_buffer("p84", 2359296, params_path, &mut function_context); + add_buffer("p85", 3072, params_path, &mut function_context); + add_buffer("p86", 3072, params_path, &mut function_context); + add_buffer("p87", 3072, params_path, &mut function_context); + add_buffer("p88", 9437184, params_path, &mut function_context); + add_buffer("p89", 12288, params_path, &mut function_context); + add_buffer("p90", 9437184, params_path, &mut function_context); + add_buffer("p91", 3072, params_path, &mut function_context); + add_buffer("p92", 3072, params_path, &mut function_context); + add_buffer("p93", 3072, params_path, &mut function_context); + add_buffer("p94", 2359296, params_path, &mut function_context); + add_buffer("p95", 3072, params_path, &mut function_context); + add_buffer("p96", 4, params_path, &mut function_context); + add_buffer("p97", 2359296, params_path, &mut function_context); + add_buffer("p98", 3072, params_path, &mut function_context); + add_buffer("p99", 4, params_path, &mut function_context); + add_buffer("p100", 2359296, params_path, &mut function_context); + add_buffer("p101", 3072, params_path, &mut function_context); + add_buffer("p102", 2359296, params_path, &mut function_context); + add_buffer("p103", 3072, params_path, &mut function_context); + add_buffer("p104", 3072, params_path, &mut function_context); + add_buffer("p105", 3072, params_path, &mut function_context); + add_buffer("p106", 9437184, params_path, &mut function_context); + add_buffer("p107", 12288, params_path, &mut function_context); + add_buffer("p108", 9437184, params_path, &mut function_context); + add_buffer("p109", 3072, params_path, &mut function_context); + add_buffer("p110", 3072, params_path, &mut function_context); + add_buffer("p111", 3072, params_path, &mut function_context); + add_buffer("p112", 2359296, params_path, &mut function_context); + add_buffer("p113", 3072, params_path, &mut function_context); + add_buffer("p114", 4, params_path, &mut function_context); + add_buffer("p115", 2359296, params_path, &mut function_context); + add_buffer("p116", 3072, params_path, &mut function_context); + add_buffer("p117", 4, params_path, &mut function_context); + add_buffer("p118", 2359296, params_path, &mut function_context); + add_buffer("p119", 3072, params_path, &mut function_context); + add_buffer("p120", 2359296, params_path, &mut function_context); + add_buffer("p121", 3072, params_path, &mut function_context); + add_buffer("p122", 3072, params_path, &mut function_context); + add_buffer("p123", 3072, params_path, &mut function_context); + add_buffer("p124", 9437184, params_path, &mut function_context); + add_buffer("p125", 12288, params_path, &mut function_context); + add_buffer("p126", 9437184, params_path, &mut function_context); + add_buffer("p127", 3072, params_path, &mut function_context); + add_buffer("p128", 3072, params_path, &mut function_context); + add_buffer("p129", 3072, params_path, &mut function_context); + add_buffer("p130", 2359296, params_path, &mut function_context); + add_buffer("p131", 3072, params_path, &mut function_context); + add_buffer("p132", 4, params_path, &mut function_context); + add_buffer("p133", 2359296, params_path, &mut function_context); + add_buffer("p134", 3072, params_path, &mut function_context); + add_buffer("p135", 4, params_path, &mut function_context); + add_buffer("p136", 2359296, params_path, &mut function_context); + add_buffer("p137", 3072, params_path, &mut function_context); + add_buffer("p138", 2359296, params_path, &mut function_context); + add_buffer("p139", 3072, params_path, &mut function_context); + add_buffer("p140", 3072, params_path, &mut function_context); + add_buffer("p141", 3072, params_path, &mut function_context); + add_buffer("p142", 9437184, params_path, &mut function_context); + add_buffer("p143", 12288, params_path, &mut function_context); + add_buffer("p144", 9437184, params_path, &mut function_context); + add_buffer("p145", 3072, params_path, &mut function_context); + add_buffer("p146", 3072, params_path, &mut function_context); + add_buffer("p147", 3072, params_path, &mut function_context); + add_buffer("p148", 2359296, params_path, &mut function_context); + add_buffer("p149", 3072, params_path, &mut function_context); + add_buffer("p150", 4, params_path, &mut function_context); + add_buffer("p151", 2359296, params_path, &mut function_context); + add_buffer("p152", 3072, params_path, &mut function_context); + add_buffer("p153", 4, params_path, &mut function_context); + add_buffer("p154", 2359296, params_path, &mut function_context); + add_buffer("p155", 3072, params_path, &mut function_context); + add_buffer("p156", 2359296, params_path, &mut function_context); + add_buffer("p157", 3072, params_path, &mut function_context); + add_buffer("p158", 3072, params_path, &mut function_context); + add_buffer("p159", 3072, params_path, &mut function_context); + add_buffer("p160", 9437184, params_path, &mut function_context); + add_buffer("p161", 12288, params_path, &mut function_context); + add_buffer("p162", 9437184, params_path, &mut function_context); + add_buffer("p163", 3072, params_path, &mut function_context); + add_buffer("p164", 3072, params_path, &mut function_context); + add_buffer("p165", 3072, params_path, &mut function_context); + add_buffer("p166", 2359296, params_path, &mut function_context); + add_buffer("p167", 3072, params_path, &mut function_context); + add_buffer("p168", 4, params_path, &mut function_context); + add_buffer("p169", 2359296, params_path, &mut function_context); + add_buffer("p170", 3072, params_path, &mut function_context); + add_buffer("p171", 4, params_path, &mut function_context); + add_buffer("p172", 2359296, params_path, &mut function_context); + add_buffer("p173", 3072, params_path, &mut function_context); + add_buffer("p174", 2359296, params_path, &mut function_context); + add_buffer("p175", 3072, params_path, &mut function_context); + add_buffer("p176", 3072, params_path, &mut function_context); + add_buffer("p177", 3072, params_path, &mut function_context); + add_buffer("p178", 9437184, params_path, &mut function_context); + add_buffer("p179", 12288, params_path, &mut function_context); + add_buffer("p180", 9437184, params_path, &mut function_context); + add_buffer("p181", 3072, params_path, &mut function_context); + add_buffer("p182", 3072, params_path, &mut function_context); + add_buffer("p183", 3072, params_path, &mut function_context); + add_buffer("p184", 2359296, params_path, &mut function_context); + add_buffer("p185", 3072, params_path, &mut function_context); + add_buffer("p186", 4, params_path, &mut function_context); + add_buffer("p187", 2359296, params_path, &mut function_context); + add_buffer("p188", 3072, params_path, &mut function_context); + add_buffer("p189", 4, params_path, &mut function_context); + add_buffer("p190", 2359296, params_path, &mut function_context); + add_buffer("p191", 3072, params_path, &mut function_context); + add_buffer("p192", 2359296, params_path, &mut function_context); + add_buffer("p193", 3072, params_path, &mut function_context); + add_buffer("p194", 3072, params_path, &mut function_context); + add_buffer("p195", 3072, params_path, &mut function_context); + add_buffer("p196", 9437184, params_path, &mut function_context); + add_buffer("p197", 12288, params_path, &mut function_context); + add_buffer("p198", 9437184, params_path, &mut function_context); + add_buffer("p199", 3072, params_path, &mut function_context); + add_buffer("p200", 3072, params_path, &mut function_context); + add_buffer("p201", 3072, params_path, &mut function_context); + add_buffer("p202", 2359296, params_path, &mut function_context); + add_buffer("p203", 3072, params_path, &mut function_context); + add_buffer("p204", 4, params_path, &mut function_context); + add_buffer("p205", 2359296, params_path, &mut function_context); + add_buffer("p206", 3072, params_path, &mut function_context); + add_buffer("p207", 4, params_path, &mut function_context); + add_buffer("p208", 2359296, params_path, &mut function_context); + add_buffer("p209", 3072, params_path, &mut function_context); + add_buffer("p210", 2359296, params_path, &mut function_context); + add_buffer("p211", 3072, params_path, &mut function_context); + add_buffer("p212", 3072, params_path, &mut function_context); + add_buffer("p213", 3072, params_path, &mut function_context); + add_buffer("p214", 9437184, params_path, &mut function_context); + add_buffer("p215", 12288, params_path, &mut function_context); + add_buffer("p216", 9437184, params_path, &mut function_context); + add_buffer("p217", 3072, params_path, &mut function_context); + add_buffer("p218", 3072, params_path, &mut function_context); + add_buffer("p219", 3072, params_path, &mut function_context); + add_buffer("p220", 2359296, params_path, &mut function_context); + add_buffer("p221", 3072, params_path, &mut function_context); + add_buffer("p222", 3072, params_path, &mut function_context); + add_buffer("p223", 3072, params_path, &mut function_context); + add_buffer("p224", 93763584, params_path, &mut function_context); + add_buffer("p225", 122088, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 15627264; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; + + add_buffer("test", 16, params_path, &mut function_context); + add_buffer("p0", 80, params_path, &mut function_context); + add_buffer("p1", 60, params_path, &mut function_context); let output_name: &str = "output"; - let output_size: usize = 512; + let output_size: usize = 12; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) @@ -98,28 +503,40 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } -pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; - - add_buffer("test", 16, params_path, &mut function_context); - add_buffer("p0", 8, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 8; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - -pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; +pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/rnn/"; - add_buffer("test", 16, params_path, &mut function_context); - add_buffer("p0", 80, params_path, &mut function_context); - add_buffer("p1", 60, params_path, &mut function_context); + add_buffer("input", 3136, params_path, &mut function_context); + add_buffer("p0", 14336, params_path, &mut function_context); + add_buffer("p1", 512, params_path, &mut function_context); + add_buffer("p2", 512, params_path, &mut function_context); + add_buffer("p3", 65536, params_path, &mut function_context); + add_buffer("p4", 512, params_path, &mut function_context); + add_buffer("p5", 65536, params_path, &mut function_context); + add_buffer("p6", 512, params_path, &mut function_context); + add_buffer("p7", 512, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 512, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 512, params_path, &mut function_context); + add_buffer("p13", 65536, params_path, &mut function_context); + add_buffer("p14", 512, params_path, &mut function_context); + add_buffer("p15", 65536, params_path, &mut function_context); + add_buffer("p16", 512, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 65536, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 512, params_path, &mut function_context); + add_buffer("p22", 512, params_path, &mut function_context); + add_buffer("p23", 65536, params_path, &mut function_context); + add_buffer("p24", 512, params_path, &mut function_context); + add_buffer("p25", 5120, params_path, &mut function_context); + add_buffer("p26", 40, params_path, &mut function_context); let output_name: &str = "output"; - let output_size: usize = 12; + let output_size: usize = 512; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) @@ -429,192 +846,253 @@ pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Con (output_size, output_name.to_string(), expected, function_context) } -pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; +pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 2359296, params_path, &mut function_context); - add_buffer("p1", 3072, params_path, &mut function_context); - add_buffer("p2", 3072, params_path, &mut function_context); - add_buffer("p3", 605184, params_path, &mut function_context); - add_buffer("p4", 3072, params_path, &mut function_context); - add_buffer("p5", 3072, params_path, &mut function_context); - add_buffer("p6", 7077888, params_path, &mut function_context); + add_buffer("test", 16, params_path, &mut function_context); + add_buffer("p0", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; + + add_buffer("token_ids", 1024, params_path, &mut function_context); + add_buffer("p0", 1050673152, params_path, &mut function_context); + add_buffer("p1", 8192, params_path, &mut function_context); + add_buffer("p2", 16777216, params_path, &mut function_context); + add_buffer("p3", 9216, params_path, &mut function_context); + add_buffer("p4", 9216, params_path, &mut function_context); + add_buffer("p5", 4194304, params_path, &mut function_context); + add_buffer("p6", 9216, params_path, &mut function_context); add_buffer("p7", 9216, params_path, &mut function_context); - add_buffer("p8", 8, params_path, &mut function_context); - add_buffer("p9", 4, params_path, &mut function_context); - add_buffer("p10", 8, params_path, &mut function_context); - add_buffer("p11", 4, params_path, &mut function_context); - add_buffer("p12", 8, params_path, &mut function_context); - add_buffer("p13", 2359296, params_path, &mut function_context); - add_buffer("p14", 3072, params_path, &mut function_context); - add_buffer("p15", 3072, params_path, &mut function_context); - add_buffer("p16", 3072, params_path, &mut function_context); - add_buffer("p17", 9437184, params_path, &mut function_context); - add_buffer("p18", 12288, params_path, &mut function_context); - add_buffer("p19", 9437184, params_path, &mut function_context); - add_buffer("p20", 3072, params_path, &mut function_context); - add_buffer("p21", 3072, params_path, &mut function_context); - add_buffer("p22", 3072, params_path, &mut function_context); - add_buffer("p23", 7077888, params_path, &mut function_context); - add_buffer("p24", 9216, params_path, &mut function_context); - add_buffer("p25", 4, params_path, &mut function_context); - add_buffer("p26", 4, params_path, &mut function_context); - add_buffer("p27", 2359296, params_path, &mut function_context); - add_buffer("p28", 3072, params_path, &mut function_context); - add_buffer("p29", 3072, params_path, &mut function_context); - add_buffer("p30", 3072, params_path, &mut function_context); - add_buffer("p31", 9437184, params_path, &mut function_context); - add_buffer("p32", 12288, params_path, &mut function_context); - add_buffer("p33", 9437184, params_path, &mut function_context); - add_buffer("p34", 3072, params_path, &mut function_context); - add_buffer("p35", 3072, params_path, &mut function_context); - add_buffer("p36", 3072, params_path, &mut function_context); - add_buffer("p37", 7077888, params_path, &mut function_context); - add_buffer("p38", 9216, params_path, &mut function_context); - add_buffer("p39", 4, params_path, &mut function_context); - add_buffer("p40", 4, params_path, &mut function_context); - add_buffer("p41", 2359296, params_path, &mut function_context); - add_buffer("p42", 3072, params_path, &mut function_context); - add_buffer("p43", 3072, params_path, &mut function_context); - add_buffer("p44", 3072, params_path, &mut function_context); - add_buffer("p45", 9437184, params_path, &mut function_context); - add_buffer("p46", 12288, params_path, &mut function_context); - add_buffer("p47", 9437184, params_path, &mut function_context); - add_buffer("p48", 3072, params_path, &mut function_context); - add_buffer("p49", 3072, params_path, &mut function_context); - add_buffer("p50", 3072, params_path, &mut function_context); - add_buffer("p51", 7077888, params_path, &mut function_context); - add_buffer("p52", 9216, params_path, &mut function_context); - add_buffer("p53", 4, params_path, &mut function_context); - add_buffer("p54", 4, params_path, &mut function_context); - add_buffer("p55", 2359296, params_path, &mut function_context); - add_buffer("p56", 3072, params_path, &mut function_context); - add_buffer("p57", 3072, params_path, &mut function_context); - add_buffer("p58", 3072, params_path, &mut function_context); - add_buffer("p59", 9437184, params_path, &mut function_context); - add_buffer("p60", 12288, params_path, &mut function_context); - add_buffer("p61", 9437184, params_path, &mut function_context); - add_buffer("p62", 3072, params_path, &mut function_context); - add_buffer("p63", 3072, params_path, &mut function_context); - add_buffer("p64", 3072, params_path, &mut function_context); - add_buffer("p65", 7077888, params_path, &mut function_context); - add_buffer("p66", 9216, params_path, &mut function_context); - add_buffer("p67", 4, params_path, &mut function_context); - add_buffer("p68", 4, params_path, &mut function_context); - add_buffer("p69", 2359296, params_path, &mut function_context); - add_buffer("p70", 3072, params_path, &mut function_context); - add_buffer("p71", 3072, params_path, &mut function_context); - add_buffer("p72", 3072, params_path, &mut function_context); - add_buffer("p73", 9437184, params_path, &mut function_context); - add_buffer("p74", 12288, params_path, &mut function_context); - add_buffer("p75", 9437184, params_path, &mut function_context); - add_buffer("p76", 3072, params_path, &mut function_context); - add_buffer("p77", 3072, params_path, &mut function_context); - add_buffer("p78", 3072, params_path, &mut function_context); - add_buffer("p79", 7077888, params_path, &mut function_context); - add_buffer("p80", 9216, params_path, &mut function_context); - add_buffer("p81", 4, params_path, &mut function_context); - add_buffer("p82", 4, params_path, &mut function_context); - add_buffer("p83", 2359296, params_path, &mut function_context); - add_buffer("p84", 3072, params_path, &mut function_context); - add_buffer("p85", 3072, params_path, &mut function_context); - add_buffer("p86", 3072, params_path, &mut function_context); - add_buffer("p87", 9437184, params_path, &mut function_context); - add_buffer("p88", 12288, params_path, &mut function_context); - add_buffer("p89", 9437184, params_path, &mut function_context); - add_buffer("p90", 3072, params_path, &mut function_context); - add_buffer("p91", 3072, params_path, &mut function_context); - add_buffer("p92", 3072, params_path, &mut function_context); - add_buffer("p93", 7077888, params_path, &mut function_context); - add_buffer("p94", 9216, params_path, &mut function_context); - add_buffer("p95", 4, params_path, &mut function_context); - add_buffer("p96", 4, params_path, &mut function_context); - add_buffer("p97", 2359296, params_path, &mut function_context); - add_buffer("p98", 3072, params_path, &mut function_context); - add_buffer("p99", 3072, params_path, &mut function_context); - add_buffer("p100", 3072, params_path, &mut function_context); - add_buffer("p101", 9437184, params_path, &mut function_context); - add_buffer("p102", 12288, params_path, &mut function_context); - add_buffer("p103", 9437184, params_path, &mut function_context); - add_buffer("p104", 3072, params_path, &mut function_context); - add_buffer("p105", 3072, params_path, &mut function_context); - add_buffer("p106", 3072, params_path, &mut function_context); - add_buffer("p107", 7077888, params_path, &mut function_context); - add_buffer("p108", 9216, params_path, &mut function_context); - add_buffer("p109", 4, params_path, &mut function_context); - add_buffer("p110", 4, params_path, &mut function_context); - add_buffer("p111", 2359296, params_path, &mut function_context); - add_buffer("p112", 3072, params_path, &mut function_context); - add_buffer("p113", 3072, params_path, &mut function_context); - add_buffer("p114", 3072, params_path, &mut function_context); - add_buffer("p115", 9437184, params_path, &mut function_context); - add_buffer("p116", 12288, params_path, &mut function_context); - add_buffer("p117", 9437184, params_path, &mut function_context); - add_buffer("p118", 3072, params_path, &mut function_context); - add_buffer("p119", 3072, params_path, &mut function_context); - add_buffer("p120", 3072, params_path, &mut function_context); - add_buffer("p121", 7077888, params_path, &mut function_context); - add_buffer("p122", 9216, params_path, &mut function_context); - add_buffer("p123", 4, params_path, &mut function_context); - add_buffer("p124", 4, params_path, &mut function_context); - add_buffer("p125", 2359296, params_path, &mut function_context); - add_buffer("p126", 3072, params_path, &mut function_context); - add_buffer("p127", 3072, params_path, &mut function_context); - add_buffer("p128", 3072, params_path, &mut function_context); - add_buffer("p129", 9437184, params_path, &mut function_context); - add_buffer("p130", 12288, params_path, &mut function_context); - add_buffer("p131", 9437184, params_path, &mut function_context); - add_buffer("p132", 3072, params_path, &mut function_context); - add_buffer("p133", 3072, params_path, &mut function_context); - add_buffer("p134", 3072, params_path, &mut function_context); - add_buffer("p135", 7077888, params_path, &mut function_context); - add_buffer("p136", 9216, params_path, &mut function_context); - add_buffer("p137", 4, params_path, &mut function_context); - add_buffer("p138", 4, params_path, &mut function_context); - add_buffer("p139", 2359296, params_path, &mut function_context); - add_buffer("p140", 3072, params_path, &mut function_context); - add_buffer("p141", 3072, params_path, &mut function_context); - add_buffer("p142", 3072, params_path, &mut function_context); - add_buffer("p143", 9437184, params_path, &mut function_context); - add_buffer("p144", 12288, params_path, &mut function_context); - add_buffer("p145", 9437184, params_path, &mut function_context); - add_buffer("p146", 3072, params_path, &mut function_context); - add_buffer("p147", 3072, params_path, &mut function_context); - add_buffer("p148", 3072, params_path, &mut function_context); - add_buffer("p149", 7077888, params_path, &mut function_context); - add_buffer("p150", 9216, params_path, &mut function_context); - add_buffer("p151", 4, params_path, &mut function_context); - add_buffer("p152", 4, params_path, &mut function_context); - add_buffer("p153", 2359296, params_path, &mut function_context); - add_buffer("p154", 3072, params_path, &mut function_context); - add_buffer("p155", 3072, params_path, &mut function_context); - add_buffer("p156", 3072, params_path, &mut function_context); - add_buffer("p157", 9437184, params_path, &mut function_context); - add_buffer("p158", 12288, params_path, &mut function_context); - add_buffer("p159", 9437184, params_path, &mut function_context); - add_buffer("p160", 3072, params_path, &mut function_context); - add_buffer("p161", 3072, params_path, &mut function_context); - add_buffer("p162", 3072, params_path, &mut function_context); - add_buffer("p163", 7077888, params_path, &mut function_context); - add_buffer("p164", 9216, params_path, &mut function_context); - add_buffer("p165", 4, params_path, &mut function_context); - add_buffer("p166", 4, params_path, &mut function_context); - add_buffer("p167", 2359296, params_path, &mut function_context); - add_buffer("p168", 3072, params_path, &mut function_context); - add_buffer("p169", 3072, params_path, &mut function_context); - add_buffer("p170", 3072, params_path, &mut function_context); - add_buffer("p171", 9437184, params_path, &mut function_context); - add_buffer("p172", 12288, params_path, &mut function_context); - add_buffer("p173", 9437184, params_path, &mut function_context); - add_buffer("p174", 3072, params_path, &mut function_context); - add_buffer("p175", 3072, params_path, &mut function_context); - add_buffer("p176", 3072, params_path, &mut function_context); - add_buffer("p177", 3072000, params_path, &mut function_context); - add_buffer("p178", 4000, params_path, &mut function_context); + add_buffer("p8", 1296, params_path, &mut function_context); + add_buffer("p9", 4194304, params_path, &mut function_context); + add_buffer("p10", 16777216, params_path, &mut function_context); + add_buffer("p11", 8192, params_path, &mut function_context); + add_buffer("p12", 67108864, params_path, &mut function_context); + add_buffer("p13", 67108864, params_path, &mut function_context); + add_buffer("p14", 67108864, params_path, &mut function_context); + add_buffer("p15", 8192, params_path, &mut function_context); + add_buffer("p16", 16777216, params_path, &mut function_context); + add_buffer("p17", 9216, params_path, &mut function_context); + add_buffer("p18", 9216, params_path, &mut function_context); + add_buffer("p19", 4194304, params_path, &mut function_context); + add_buffer("p20", 9216, params_path, &mut function_context); + add_buffer("p21", 9216, params_path, &mut function_context); + add_buffer("p22", 1296, params_path, &mut function_context); + add_buffer("p23", 4194304, params_path, &mut function_context); + add_buffer("p24", 16777216, params_path, &mut function_context); + add_buffer("p25", 8192, params_path, &mut function_context); + add_buffer("p26", 67108864, params_path, &mut function_context); + add_buffer("p27", 67108864, params_path, &mut function_context); + add_buffer("p28", 67108864, params_path, &mut function_context); + add_buffer("p29", 8192, params_path, &mut function_context); + add_buffer("p30", 16777216, params_path, &mut function_context); + add_buffer("p31", 9216, params_path, &mut function_context); + add_buffer("p32", 9216, params_path, &mut function_context); + add_buffer("p33", 4194304, params_path, &mut function_context); + add_buffer("p34", 9216, params_path, &mut function_context); + add_buffer("p35", 9216, params_path, &mut function_context); + add_buffer("p36", 1296, params_path, &mut function_context); + add_buffer("p37", 4194304, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 8192, params_path, &mut function_context); + add_buffer("p40", 67108864, params_path, &mut function_context); + add_buffer("p41", 67108864, params_path, &mut function_context); + add_buffer("p42", 67108864, params_path, &mut function_context); + add_buffer("p43", 8192, params_path, &mut function_context); + add_buffer("p44", 16777216, params_path, &mut function_context); + add_buffer("p45", 9216, params_path, &mut function_context); + add_buffer("p46", 9216, params_path, &mut function_context); + add_buffer("p47", 4194304, params_path, &mut function_context); + add_buffer("p48", 9216, params_path, &mut function_context); + add_buffer("p49", 9216, params_path, &mut function_context); + add_buffer("p50", 1296, params_path, &mut function_context); + add_buffer("p51", 4194304, params_path, &mut function_context); + add_buffer("p52", 16777216, params_path, &mut function_context); + add_buffer("p53", 8192, params_path, &mut function_context); + add_buffer("p54", 67108864, params_path, &mut function_context); + add_buffer("p55", 67108864, params_path, &mut function_context); + add_buffer("p56", 67108864, params_path, &mut function_context); + add_buffer("p57", 8192, params_path, &mut function_context); + add_buffer("p58", 16777216, params_path, &mut function_context); + add_buffer("p59", 9216, params_path, &mut function_context); + add_buffer("p60", 9216, params_path, &mut function_context); + add_buffer("p61", 4194304, params_path, &mut function_context); + add_buffer("p62", 9216, params_path, &mut function_context); + add_buffer("p63", 9216, params_path, &mut function_context); + add_buffer("p64", 1296, params_path, &mut function_context); + add_buffer("p65", 4194304, params_path, &mut function_context); + add_buffer("p66", 16777216, params_path, &mut function_context); + add_buffer("p67", 8192, params_path, &mut function_context); + add_buffer("p68", 67108864, params_path, &mut function_context); + add_buffer("p69", 67108864, params_path, &mut function_context); + add_buffer("p70", 67108864, params_path, &mut function_context); + add_buffer("p71", 8192, params_path, &mut function_context); + add_buffer("p72", 16777216, params_path, &mut function_context); + add_buffer("p73", 9216, params_path, &mut function_context); + add_buffer("p74", 9216, params_path, &mut function_context); + add_buffer("p75", 4194304, params_path, &mut function_context); + add_buffer("p76", 9216, params_path, &mut function_context); + add_buffer("p77", 9216, params_path, &mut function_context); + add_buffer("p78", 1296, params_path, &mut function_context); + add_buffer("p79", 4194304, params_path, &mut function_context); + add_buffer("p80", 16777216, params_path, &mut function_context); + add_buffer("p81", 8192, params_path, &mut function_context); + add_buffer("p82", 67108864, params_path, &mut function_context); + add_buffer("p83", 67108864, params_path, &mut function_context); + add_buffer("p84", 67108864, params_path, &mut function_context); + add_buffer("p85", 8192, params_path, &mut function_context); + add_buffer("p86", 16777216, params_path, &mut function_context); + add_buffer("p87", 9216, params_path, &mut function_context); + add_buffer("p88", 9216, params_path, &mut function_context); + add_buffer("p89", 4194304, params_path, &mut function_context); + add_buffer("p90", 9216, params_path, &mut function_context); + add_buffer("p91", 9216, params_path, &mut function_context); + add_buffer("p92", 1296, params_path, &mut function_context); + add_buffer("p93", 4194304, params_path, &mut function_context); + add_buffer("p94", 16777216, params_path, &mut function_context); + add_buffer("p95", 8192, params_path, &mut function_context); + add_buffer("p96", 67108864, params_path, &mut function_context); + add_buffer("p97", 67108864, params_path, &mut function_context); + add_buffer("p98", 67108864, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 16777216, params_path, &mut function_context); + add_buffer("p101", 9216, params_path, &mut function_context); + add_buffer("p102", 9216, params_path, &mut function_context); + add_buffer("p103", 4194304, params_path, &mut function_context); + add_buffer("p104", 9216, params_path, &mut function_context); + add_buffer("p105", 9216, params_path, &mut function_context); + add_buffer("p106", 1296, params_path, &mut function_context); + add_buffer("p107", 4194304, params_path, &mut function_context); + add_buffer("p108", 16777216, params_path, &mut function_context); + add_buffer("p109", 8192, params_path, &mut function_context); + add_buffer("p110", 67108864, params_path, &mut function_context); + add_buffer("p111", 67108864, params_path, &mut function_context); + add_buffer("p112", 67108864, params_path, &mut function_context); + add_buffer("p113", 8192, params_path, &mut function_context); + add_buffer("p114", 16777216, params_path, &mut function_context); + add_buffer("p115", 9216, params_path, &mut function_context); + add_buffer("p116", 9216, params_path, &mut function_context); + add_buffer("p117", 4194304, params_path, &mut function_context); + add_buffer("p118", 9216, params_path, &mut function_context); + add_buffer("p119", 9216, params_path, &mut function_context); + add_buffer("p120", 1296, params_path, &mut function_context); + add_buffer("p121", 4194304, params_path, &mut function_context); + add_buffer("p122", 16777216, params_path, &mut function_context); + add_buffer("p123", 8192, params_path, &mut function_context); + add_buffer("p124", 67108864, params_path, &mut function_context); + add_buffer("p125", 67108864, params_path, &mut function_context); + add_buffer("p126", 67108864, params_path, &mut function_context); + add_buffer("p127", 8192, params_path, &mut function_context); + add_buffer("p128", 16777216, params_path, &mut function_context); + add_buffer("p129", 9216, params_path, &mut function_context); + add_buffer("p130", 9216, params_path, &mut function_context); + add_buffer("p131", 4194304, params_path, &mut function_context); + add_buffer("p132", 9216, params_path, &mut function_context); + add_buffer("p133", 9216, params_path, &mut function_context); + add_buffer("p134", 1296, params_path, &mut function_context); + add_buffer("p135", 4194304, params_path, &mut function_context); + add_buffer("p136", 16777216, params_path, &mut function_context); + add_buffer("p137", 8192, params_path, &mut function_context); + add_buffer("p138", 67108864, params_path, &mut function_context); + add_buffer("p139", 67108864, params_path, &mut function_context); + add_buffer("p140", 67108864, params_path, &mut function_context); + add_buffer("p141", 8192, params_path, &mut function_context); + add_buffer("p142", 16777216, params_path, &mut function_context); + add_buffer("p143", 9216, params_path, &mut function_context); + add_buffer("p144", 9216, params_path, &mut function_context); + add_buffer("p145", 4194304, params_path, &mut function_context); + add_buffer("p146", 9216, params_path, &mut function_context); + add_buffer("p147", 9216, params_path, &mut function_context); + add_buffer("p148", 1296, params_path, &mut function_context); + add_buffer("p149", 4194304, params_path, &mut function_context); + add_buffer("p150", 16777216, params_path, &mut function_context); + add_buffer("p151", 8192, params_path, &mut function_context); + add_buffer("p152", 67108864, params_path, &mut function_context); + add_buffer("p153", 67108864, params_path, &mut function_context); + add_buffer("p154", 67108864, params_path, &mut function_context); + add_buffer("p155", 8192, params_path, &mut function_context); + add_buffer("p156", 16777216, params_path, &mut function_context); + add_buffer("p157", 9216, params_path, &mut function_context); + add_buffer("p158", 9216, params_path, &mut function_context); + add_buffer("p159", 4194304, params_path, &mut function_context); + add_buffer("p160", 9216, params_path, &mut function_context); + add_buffer("p161", 9216, params_path, &mut function_context); + add_buffer("p162", 1296, params_path, &mut function_context); + add_buffer("p163", 4194304, params_path, &mut function_context); + add_buffer("p164", 16777216, params_path, &mut function_context); + add_buffer("p165", 8192, params_path, &mut function_context); + add_buffer("p166", 67108864, params_path, &mut function_context); + add_buffer("p167", 67108864, params_path, &mut function_context); + add_buffer("p168", 67108864, params_path, &mut function_context); + add_buffer("p169", 8192, params_path, &mut function_context); + add_buffer("p170", 16777216, params_path, &mut function_context); + add_buffer("p171", 9216, params_path, &mut function_context); + add_buffer("p172", 9216, params_path, &mut function_context); + add_buffer("p173", 4194304, params_path, &mut function_context); + add_buffer("p174", 9216, params_path, &mut function_context); + add_buffer("p175", 9216, params_path, &mut function_context); + add_buffer("p176", 1296, params_path, &mut function_context); + add_buffer("p177", 4194304, params_path, &mut function_context); + add_buffer("p178", 16777216, params_path, &mut function_context); + add_buffer("p179", 8192, params_path, &mut function_context); + add_buffer("p180", 67108864, params_path, &mut function_context); + add_buffer("p181", 67108864, params_path, &mut function_context); + add_buffer("p182", 67108864, params_path, &mut function_context); + add_buffer("p183", 8192, params_path, &mut function_context); + add_buffer("p184", 16777216, params_path, &mut function_context); + add_buffer("p185", 9216, params_path, &mut function_context); + add_buffer("p186", 9216, params_path, &mut function_context); + add_buffer("p187", 4194304, params_path, &mut function_context); + add_buffer("p188", 9216, params_path, &mut function_context); + add_buffer("p189", 9216, params_path, &mut function_context); + add_buffer("p190", 1296, params_path, &mut function_context); + add_buffer("p191", 4194304, params_path, &mut function_context); + add_buffer("p192", 16777216, params_path, &mut function_context); + add_buffer("p193", 8192, params_path, &mut function_context); + add_buffer("p194", 67108864, params_path, &mut function_context); + add_buffer("p195", 67108864, params_path, &mut function_context); + add_buffer("p196", 67108864, params_path, &mut function_context); + add_buffer("p197", 8192, params_path, &mut function_context); + add_buffer("p198", 16777216, params_path, &mut function_context); + add_buffer("p199", 9216, params_path, &mut function_context); + add_buffer("p200", 9216, params_path, &mut function_context); + add_buffer("p201", 4194304, params_path, &mut function_context); + add_buffer("p202", 9216, params_path, &mut function_context); + add_buffer("p203", 9216, params_path, &mut function_context); + add_buffer("p204", 1296, params_path, &mut function_context); + add_buffer("p205", 4194304, params_path, &mut function_context); + add_buffer("p206", 16777216, params_path, &mut function_context); + add_buffer("p207", 8192, params_path, &mut function_context); + add_buffer("p208", 67108864, params_path, &mut function_context); + add_buffer("p209", 67108864, params_path, &mut function_context); + add_buffer("p210", 67108864, params_path, &mut function_context); + add_buffer("p211", 8192, params_path, &mut function_context); + add_buffer("p212", 16777216, params_path, &mut function_context); + add_buffer("p213", 9216, params_path, &mut function_context); + add_buffer("p214", 9216, params_path, &mut function_context); + add_buffer("p215", 4194304, params_path, &mut function_context); + add_buffer("p216", 9216, params_path, &mut function_context); + add_buffer("p217", 9216, params_path, &mut function_context); + add_buffer("p218", 1296, params_path, &mut function_context); + add_buffer("p219", 4194304, params_path, &mut function_context); + add_buffer("p220", 16777216, params_path, &mut function_context); + add_buffer("p221", 8192, params_path, &mut function_context); + add_buffer("p222", 67108864, params_path, &mut function_context); + add_buffer("p223", 67108864, params_path, &mut function_context); + add_buffer("p224", 67108864, params_path, &mut function_context); + add_buffer("p225", 8192, params_path, &mut function_context); + add_buffer("p226", 1050673152, params_path, &mut function_context); let output_name: &str = "output"; - let output_size: usize = 4000; + let output_size: usize = 18468864; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index 04982ea7..0d0185a9 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -13,7 +13,7 @@ use crate::{ pub fn setup_test(filename: &str) -> (Context, FunctionConfig, Box) { let dom_init = MemoryResource::Shared { id: 0, - size: (1 << 32), // TODO : choose a good value for the context size + size: (1 << 38), // TODO : choose a good value for the context size }; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 0eca1213..a1e359fe 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -1,19 +1,34 @@ -use crate::interface::{DandelionSystemData, SizedIntTrait}; +use super::{ + buffer_pool::BufferPool, + config_parsing::Sizing, + gpu_api::{self, DevicePointer}, +}; use crate::{ function_driver::{ComputeResource, FunctionConfig, GpuConfig, WorkDone, WorkQueue, WorkToDo}, - interface::read_output_structs, - memory_domain::{self, gpu::GpuContext, Context, ContextState, ContextTrait, ContextType}, + interface::{read_output_structs, DandelionSystemData, SizedIntTrait}, + memory_domain::{ + self, + gpu::{GpuContext, GpuProcessContext}, + Context, ContextState, ContextTrait, ContextType, + }, util::mmapmem::MmapMem, DataSet, Position, }; use dandelion_commons::{records::RecordPoint, DandelionError, DandelionResult}; use libc::c_void; use log::{debug, error}; -use nix::sys::mman::ProtFlags; +use nix::{ + fcntl::OFlag, + sys::{ + mman::{mmap, shm_open, MapFlags, ProtFlags}, + stat::{fstat, Mode}, + }, +}; use serde::{Deserialize, Serialize}; use std::{ collections::HashMap, io::{BufRead, BufReader, Write}, + num::NonZeroUsize, process::{Child, ChildStdin, ChildStdout, Command, Stdio}, sync::{ atomic::{AtomicBool, Ordering}, @@ -22,13 +37,6 @@ use std::{ thread::spawn, }; -use super::buffer_pool::BufferPool; - -use super::{ - config_parsing::Sizing, - gpu_api::{self, DevicePointer}, -}; - pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context .content @@ -260,16 +268,6 @@ pub struct SendContext { pub occupation: Vec, } -pub const GPU_BASE_ADDR: usize = 0x10000; -use crate::memory_domain::gpu::GpuProcessContext; -use nix::sys::mman::shm_open; -use nix::fcntl::OFlag; -use nix::sys::stat::Mode; -use nix::sys::stat::fstat; -use nix::sys::mman::mmap; -use std::num::NonZeroUsize; -use nix::sys::mman::MapFlags; - #[cfg(feature = "gpu_process")] impl TryFrom for Context { type Error = DandelionError; @@ -294,20 +292,19 @@ impl TryFrom for Context { let ptr = unsafe { match mmap( - None, //NonZeroUsize::new(GPU_BASE_ADDR), - NonZeroUsize::new(size).unwrap(), // - GPU_BASE_ADDR).unwrap(), + None, + NonZeroUsize::new(size).unwrap(), ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, MapFlags::MAP_SHARED, shmem_fd, - value.offset, // + (GPU_BASE_ADDR as i64), + value.offset, ) { Err(err) => { eprintln!( - "Error mapping memory from file {} at address {} with size {} and offset {}: {}:{}", + "Error mapping memory from file {} with size {} and offset {}: {}:{}", filename, - GPU_BASE_ADDR, - size - GPU_BASE_ADDR, - value.offset + (GPU_BASE_ADDR as i64), + size, + value.offset, err, err.desc() ); @@ -318,10 +315,7 @@ impl TryFrom for Context { }; Ok(Self { - context: ContextType::GpuProcess(Box::new(GpuProcessContext { - ptr, - size, - })), + context: ContextType::GpuProcess(Box::new(GpuProcessContext { ptr, size })), content: value.content, size: value.size, state: value.state, @@ -519,9 +513,11 @@ fn manage_worker( } WorkToDo::Shutdown() => { // Return original resources that were given to Engine - debt.fulfill(Ok(WorkDone::Resources(vec![ - ComputeResource::GPU(resources.0, resources.1, resources.2), - ]))); + debt.fulfill(Ok(WorkDone::Resources(vec![ComputeResource::GPU( + resources.0, + resources.1, + resources.2, + )]))); // Inform other threads to shutdown as well when they are done done.swap(true, Ordering::SeqCst); diff --git a/machine_interface/tests/data/cuda/test_gpu_bert.json b/machine_interface/tests/data/cuda/test_gpu_bert.json new file mode 100644 index 00000000..d97b5b02 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_bert.json @@ -0,0 +1,3423 @@ +{ + "modules": [{"module_name": "bert.cubin", "path": "cuda/bert.cubin"}], + "kernels": [ + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_expand_dims_expand_dims_broadcast_to_cast_subtract_cast_where_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_add_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel_1"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_1_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_add_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel"}, + {"module_name": "bert.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel_1"} + ], + "blueprint": { + "inputs": ["input_ids", "attention_mask", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225"], + "buffers": {"output": {"Absolute": 15627264}, "b4": {"Absolute": 15627264}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b9": {"Absolute": 786432}, "b13": {"Absolute": 393216}, "b20": {"Absolute": 393216}, "b235": {"Absolute": 8192}, "b236": {"Absolute": 786432}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_add_kernel", [{"Ptr": "b4"}, {"Ptr": "input_ids"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "b13"}, {"Ptr": "b4"}, {"Ptr": "p5"}, {"Ptr": "p6"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b4"}, {"Ptr": "b13"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_expand_dims_expand_dims_broadcast_to_cast_subtract_cast_where_kernel", [{"Ptr": "b13"}, {"Ptr": "attention_mask"}], { + "grid_dim_x": {"Absolute": 16}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p10"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b20"}, {"Ptr": "output"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b20"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "p13"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b20"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b20"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p14"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b20"}, {"Ptr": "output"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p19"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p26"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p30"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p31"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p32"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p34"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p37"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p38"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p41"}, {"Ptr": "p42"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p44"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p48"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p49"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p54"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p55"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p59"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p67"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p72"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p73"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p76"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p77"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p84"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p85"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p90"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p91"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p95"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p103"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p108"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p109"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p110"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p113"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p116"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p121"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p122"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p126"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p127"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p128"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p131"}, {"Ptr": "p132"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p134"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p139"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p140"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p144"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p145"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p149"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p152"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p156"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p157"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p158"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p160"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p163"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p164"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p167"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p170"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p174"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p175"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p176"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p180"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p181"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p182"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p185"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p190"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p192"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p193"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p194"}, {"Ptr": "p195"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b20"}, {"Ptr": "p196"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "p198"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p199"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b4"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p200"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p202"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p203"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p206"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b9"}, {"Ptr": "output"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b236"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b236"}, {"Ptr": "b235"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b13"}, {"Ptr": "b20"}, {"Ptr": "p208"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b4"}, {"Ptr": "b13"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b13"}, {"Ptr": "b9"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b9"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b13"}, {"Ptr": "b9"}, {"Ptr": "p210"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "b13"}, {"Ptr": "p211"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_kernel", [{"Ptr": "b13"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p212"}, {"Ptr": "p213"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b13"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b4"}, {"Ptr": "output"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b20"}, {"Ptr": "b4"}, {"Ptr": "p216"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b9"}, {"Ptr": "b20"}, {"Ptr": "p217"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b9"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b9"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b20"}, {"Ptr": "b9"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p218"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b13"}, {"Ptr": "b20"}, {"Ptr": "p220"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_kernel", [{"Ptr": "b20"}, {"Ptr": "b13"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b20"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b5"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b235"}, {"Ptr": "b20"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b13"}, {"Ptr": "b20"}, {"Ptr": "b5"}, {"Ptr": "b6"}, {"Ptr": "p222"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 96}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b13"}, {"Ptr": "p224"}], { + "grid_dim_x": {"Absolute": 30522}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_1_kernel", [{"Ptr": "output"}, {"Ptr": "b4"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_llama.json b/machine_interface/tests/data/cuda/test_gpu_llama.json new file mode 100644 index 00000000..8b22fc24 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_llama.json @@ -0,0 +1,3959 @@ +{ + "modules": [{"module_name": "llama.cubin", "path": "cuda/llama.cubin"}], + "kernels": [ + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_strided_slice_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_4_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_where_divide_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"} + ], + "blueprint": { + "inputs": ["token_ids", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226"], + "buffers": {"output": {"Absolute": 18468864}, "b2": {"Absolute": 1179648}, "b3": {"Absolute": 144}, "b5": {"Absolute": 294912}, "b8": {"Absolute": 1179648}, "b12": {"Absolute": 294912}, "b234": {"Absolute": 8192}, "b235": {"Absolute": 167936}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_strided_slice_kernel", [{"Ptr": "b2"}, {"Ptr": "token_ids"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p6"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p8"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p10"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p17"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p30"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p31"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p34"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p42"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p45"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p54"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p59"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p68"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p72"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p73"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p76"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p80"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p84"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p87"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p90"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p101"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p108"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p110"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p115"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p118"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p122"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p126"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p127"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p128"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p129"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p132"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p139"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p140"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p143"}, {"Ptr": "p144"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p145"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p152"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p156"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p157"}, {"Ptr": "p158"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p160"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p164"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p170"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p171"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p174"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p176"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p180"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p182"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p185"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p190"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p192"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p194"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p195"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p196"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p198"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p199"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p202"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p208"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p210"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p212"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p213"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 18}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p216"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p218"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 41}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 9}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p220"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p222"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p224"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p226"}], { + "grid_dim_x": {"Absolute": 128256}, + "grid_dim_y": {"Absolute": 36}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_rnn.json b/machine_interface/tests/data/cuda/test_gpu_rnn.json index f04fa074..19e1734e 100644 --- a/machine_interface/tests/data/cuda/test_gpu_rnn.json +++ b/machine_interface/tests/data/cuda/test_gpu_rnn.json @@ -1,129 +1,129 @@ { "modules": [{"module_name": "rnn.cubin", "path": "cuda/rnn.cubin"}], "kernels": [ - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_35_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_9"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_16"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_24"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_50_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_12"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_27"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_33_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_add_tanh_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_tanh_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_tanh_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_10_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_49_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_7"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_5"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_8_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_10"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_34_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_14"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_39_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_55_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_24_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_20"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_30_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_18"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_53_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_21"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_20_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_38_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_5_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_8"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_54_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_11_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_12_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_13_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_14_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_15_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_16_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_17_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_18_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_19_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_20_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_21_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_22_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_23_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_24_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_25_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_26_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_12_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_27_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_28_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_29_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_2_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_30_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_31_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_32_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_33_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_34_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_35_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_36_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_37_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_38_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_39_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_3_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_40_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_41_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_22"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_21_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_23"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_44_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_42_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_43_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_25"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_44_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_45_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_46_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_47_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_48_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_49_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_4_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_7_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_6"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_18_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_40_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_50_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_51_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_25_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_27_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_52_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_53_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_54_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_55_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_5_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_6_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_19_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_28_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_4"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_46_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_13"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_tanh_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_15_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_37_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_31_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_48_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_22_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_7_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_8_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_9_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_kernel"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_19"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_11"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_42_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_2_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_45_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_11"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_32_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_13"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_tanh_1_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_3_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_1_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_14_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_15"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_36_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_15"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_add_tanh_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_3"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_17_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_22"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_26"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_9_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_17"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_26"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_47_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_1"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_5"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_transpose_take_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_16_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_11_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6"}, {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_7"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_52_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_29_kernel"}, - {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_2"} + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_transpose_take_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_1"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_10"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_11"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_12"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_13"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_14"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_15"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_16"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_17"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_18"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_19"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_2"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_20"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_21"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_22"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_23"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_24"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_25"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_26"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_27"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_3"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_4"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_5"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_6"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_7"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_8"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_9"} ], "blueprint": { "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26"], - "buffers": {"b1": {"Absolute": 512}, "b2": {"Absolute": 512}, "b3": {"Absolute": 512}, "b4": {"Absolute": 512}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b7": {"Absolute": 512}, "b8": {"Absolute": 512}, "b9": {"Absolute": 512}, "b10": {"Absolute": 512}, "b11": {"Absolute": 512}, "b12": {"Absolute": 512}, "b13": {"Absolute": 512}, "b14": {"Absolute": 512}, "b15": {"Absolute": 512}, "b16": {"Absolute": 512}, "b17": {"Absolute": 512}, "b18": {"Absolute": 512}, "b19": {"Absolute": 512}, "b20": {"Absolute": 512}, "b21": {"Absolute": 512}, "b22": {"Absolute": 512}, "b23": {"Absolute": 512}, "b25": {"Absolute": 512}, "b26": {"Absolute": 512}, "b27": {"Absolute": 512}, "b28": {"Absolute": 512}, "b29": {"Absolute": 512}, "b32": {"Absolute": 512}, "b36": {"Absolute": 512}, "b37": {"Absolute": 512}, "b38": {"Absolute": 512}, "b39": {"Absolute": 512}, "b40": {"Absolute": 512}, "b41": {"Absolute": 512}, "b42": {"Absolute": 512}, "b43": {"Absolute": 512}, "b44": {"Absolute": 512}, "b45": {"Absolute": 512}, "b46": {"Absolute": 512}, "b47": {"Absolute": 512}, "b48": {"Absolute": 512}, "b49": {"Absolute": 512}, "b50": {"Absolute": 512}, "b51": {"Absolute": 512}, "b52": {"Absolute": 512}, "b53": {"Absolute": 512}, "b54": {"Absolute": 512}, "b55": {"Absolute": 512}, "b56": {"Absolute": 512}, "b57": {"Absolute": 512}, "b58": {"Absolute": 512}, "b59": {"Absolute": 512}, "b60": {"Absolute": 512}, "b61": {"Absolute": 512}, "b62": {"Absolute": 512}, "output": {"Absolute": 512}}, + "buffers": {"output": {"Absolute": 512}, "b1": {"Absolute": 512}, "b2": {"Absolute": 512}, "b3": {"Absolute": 512}, "b4": {"Absolute": 512}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b7": {"Absolute": 512}, "b8": {"Absolute": 512}, "b9": {"Absolute": 512}, "b10": {"Absolute": 512}, "b11": {"Absolute": 512}, "b12": {"Absolute": 512}, "b13": {"Absolute": 512}, "b14": {"Absolute": 512}, "b15": {"Absolute": 512}, "b16": {"Absolute": 512}, "b17": {"Absolute": 512}, "b18": {"Absolute": 512}, "b19": {"Absolute": 512}, "b20": {"Absolute": 512}, "b21": {"Absolute": 512}, "b22": {"Absolute": 512}, "b23": {"Absolute": 512}, "b25": {"Absolute": 512}, "b26": {"Absolute": 512}, "b27": {"Absolute": 512}, "b28": {"Absolute": 512}, "b29": {"Absolute": 512}, "b32": {"Absolute": 512}, "b36": {"Absolute": 512}, "b37": {"Absolute": 512}, "b38": {"Absolute": 512}, "b39": {"Absolute": 512}, "b40": {"Absolute": 512}, "b41": {"Absolute": 512}, "b42": {"Absolute": 512}, "b43": {"Absolute": 512}, "b44": {"Absolute": 512}, "b45": {"Absolute": 512}, "b46": {"Absolute": 512}, "b47": {"Absolute": 512}, "b48": {"Absolute": 512}, "b49": {"Absolute": 512}, "b50": {"Absolute": 512}, "b51": {"Absolute": 512}, "b52": {"Absolute": 512}, "b53": {"Absolute": 512}, "b54": {"Absolute": 512}, "b55": {"Absolute": 512}, "b56": {"Absolute": 512}, "b57": {"Absolute": 512}, "b58": {"Absolute": 512}, "b59": {"Absolute": 512}, "b60": {"Absolute": 512}, "b61": {"Absolute": 512}, "b62": {"Absolute": 512}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}], { diff --git a/machine_interface/tests/libs/cuda/bert.cubin b/machine_interface/tests/libs/cuda/bert.cubin new file mode 100644 index 0000000000000000000000000000000000000000..9baeed232339d1022819ac97089edddd3ec9fb24 GIT binary patch literal 115168 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 PAc177ms4?Z%K85R0$WRr literal 272992 zcmeHw37j28wSH&j&YDSP5&|S_nUDd(mdut#L>M4!vV}dYlSyW>V3uJr2@@8%gor^A zB7z1*jTjYB6cG{J7zGg!0fnddTwY#`KHT1mzVO$F%lyx&?z&xl {Jd+*fD^Y#4^ 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 WRdIsrfFA`CNkUja{8U^a_5A-;D>kSA diff --git a/machine_interface/tests/libs/cuda/resnet18.cubin b/machine_interface/tests/libs/cuda/resnet18.cubin index e885a9452039b9e136be046dda64891f14b815fe..4548a5d09bce0b33e55c74ea1cca0cda68960be7 100644 GIT binary patch delta 10161 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 diff --git a/machine_interface/tests/libs/cuda/rnn.cubin b/machine_interface/tests/libs/cuda/rnn.cubin index 74e96a7e103104618b62740c0e6f66bb5e278d5b..e0ba28e6baf5315dc7dea7c8f052228f2beaa971 100644 GIT binary patch literal 233696 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 Ub4|d)n9{>OV literal 220352 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 F{{zuv1R?+c From 16d22ba1a64ea6da2ad684d4c04c20b59d289924 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Tue, 1 Apr 2025 15:35:07 +0200 Subject: [PATCH 154/176] Llama 3.2 1B added --- .../compute_driver/compute_driver_tests.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 4 +- .../gpu_tests/cuda_tests/compiled_tests.rs | 2 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 445 ++- .../gpu/gpu_tests/tests_utils.rs | 2 +- .../tests/data/cuda/test_gpu_llama.json | 1764 ++++---- .../tests/data/cuda/test_gpu_llm.json | 3552 +++++++++++++++++ .../tests/data/cuda/test_gpu_test.json | 261 +- machine_interface/tests/libs/cuda/llama.cubin | Bin 87712 -> 105632 bytes machine_interface/tests/libs/cuda/llm.cubin | Bin 0 -> 373416 bytes machine_interface/tests/libs/cuda/test.cubin | Bin 0 -> 26976 bytes 11 files changed, 5049 insertions(+), 983 deletions(-) create mode 100644 machine_interface/tests/data/cuda/test_gpu_llm.json create mode 100644 machine_interface/tests/libs/cuda/llm.cubin create mode 100644 machine_interface/tests/libs/cuda/test.cubin diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 146244d5..e574f7ae 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -66,7 +66,7 @@ pub(crate) mod compute_driver_tests { .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function - .load(&domain, 0x4002_0000) // TODO : choose a good value for the context size + .load(&domain, 0x1_8002_0000) // TODO(GPU) : choose a good value for the context size .expect("Should be able to load function"); return (function_context, function.config, queue); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index c20ec406..e142b838 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -206,8 +206,8 @@ const Gi: usize = 1 << 30; // TODO: add adaptive amount of other GPUs are used: // MI210 - 64GiB => 60 * Gi -// RTX 3090 - 24GiB => 20 * Gi -const VRAM_SIZE: usize = 20 * Gi; +// RTX 3090 - 24GiB => 23 * Gi +const VRAM_SIZE: usize = 23 * Gi; impl EngineLoop for GpuLoop { fn init(resource: ComputeResource) -> DandelionResult> { diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs index d5920e81..3dc6597f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs @@ -89,5 +89,5 @@ fn bert() { #[test] fn llama() { - test_model("llama", false); + test_model("llama", true); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index e61661f3..5dc6bacf 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -859,6 +859,25 @@ pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, C (output_size, output_name.to_string(), expected, function_context) } +pub fn load_test(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/test/"; + + add_buffer("input", 28, params_path, &mut function_context); + add_buffer("p0", 16, params_path, &mut function_context); + add_buffer("p1", 196, params_path, &mut function_context); + add_buffer("p2", 28, params_path, &mut function_context); + add_buffer("p3", 16, params_path, &mut function_context); + add_buffer("p4", 16, params_path, &mut function_context); + add_buffer("p5", 16, params_path, &mut function_context); + add_buffer("p6", 16, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 28; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; @@ -866,12 +885,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p0", 1050673152, params_path, &mut function_context); add_buffer("p1", 8192, params_path, &mut function_context); add_buffer("p2", 16777216, params_path, &mut function_context); - add_buffer("p3", 9216, params_path, &mut function_context); - add_buffer("p4", 9216, params_path, &mut function_context); + add_buffer("p3", 32768, params_path, &mut function_context); + add_buffer("p4", 32768, params_path, &mut function_context); add_buffer("p5", 4194304, params_path, &mut function_context); - add_buffer("p6", 9216, params_path, &mut function_context); - add_buffer("p7", 9216, params_path, &mut function_context); - add_buffer("p8", 1296, params_path, &mut function_context); + add_buffer("p6", 32768, params_path, &mut function_context); + add_buffer("p7", 32768, params_path, &mut function_context); + add_buffer("p8", 16384, params_path, &mut function_context); add_buffer("p9", 4194304, params_path, &mut function_context); add_buffer("p10", 16777216, params_path, &mut function_context); add_buffer("p11", 8192, params_path, &mut function_context); @@ -880,12 +899,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p14", 67108864, params_path, &mut function_context); add_buffer("p15", 8192, params_path, &mut function_context); add_buffer("p16", 16777216, params_path, &mut function_context); - add_buffer("p17", 9216, params_path, &mut function_context); - add_buffer("p18", 9216, params_path, &mut function_context); + add_buffer("p17", 32768, params_path, &mut function_context); + add_buffer("p18", 32768, params_path, &mut function_context); add_buffer("p19", 4194304, params_path, &mut function_context); - add_buffer("p20", 9216, params_path, &mut function_context); - add_buffer("p21", 9216, params_path, &mut function_context); - add_buffer("p22", 1296, params_path, &mut function_context); + add_buffer("p20", 32768, params_path, &mut function_context); + add_buffer("p21", 32768, params_path, &mut function_context); + add_buffer("p22", 16384, params_path, &mut function_context); add_buffer("p23", 4194304, params_path, &mut function_context); add_buffer("p24", 16777216, params_path, &mut function_context); add_buffer("p25", 8192, params_path, &mut function_context); @@ -894,12 +913,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p28", 67108864, params_path, &mut function_context); add_buffer("p29", 8192, params_path, &mut function_context); add_buffer("p30", 16777216, params_path, &mut function_context); - add_buffer("p31", 9216, params_path, &mut function_context); - add_buffer("p32", 9216, params_path, &mut function_context); + add_buffer("p31", 32768, params_path, &mut function_context); + add_buffer("p32", 32768, params_path, &mut function_context); add_buffer("p33", 4194304, params_path, &mut function_context); - add_buffer("p34", 9216, params_path, &mut function_context); - add_buffer("p35", 9216, params_path, &mut function_context); - add_buffer("p36", 1296, params_path, &mut function_context); + add_buffer("p34", 32768, params_path, &mut function_context); + add_buffer("p35", 32768, params_path, &mut function_context); + add_buffer("p36", 16384, params_path, &mut function_context); add_buffer("p37", 4194304, params_path, &mut function_context); add_buffer("p38", 16777216, params_path, &mut function_context); add_buffer("p39", 8192, params_path, &mut function_context); @@ -908,12 +927,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p42", 67108864, params_path, &mut function_context); add_buffer("p43", 8192, params_path, &mut function_context); add_buffer("p44", 16777216, params_path, &mut function_context); - add_buffer("p45", 9216, params_path, &mut function_context); - add_buffer("p46", 9216, params_path, &mut function_context); + add_buffer("p45", 32768, params_path, &mut function_context); + add_buffer("p46", 32768, params_path, &mut function_context); add_buffer("p47", 4194304, params_path, &mut function_context); - add_buffer("p48", 9216, params_path, &mut function_context); - add_buffer("p49", 9216, params_path, &mut function_context); - add_buffer("p50", 1296, params_path, &mut function_context); + add_buffer("p48", 32768, params_path, &mut function_context); + add_buffer("p49", 32768, params_path, &mut function_context); + add_buffer("p50", 16384, params_path, &mut function_context); add_buffer("p51", 4194304, params_path, &mut function_context); add_buffer("p52", 16777216, params_path, &mut function_context); add_buffer("p53", 8192, params_path, &mut function_context); @@ -922,12 +941,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p56", 67108864, params_path, &mut function_context); add_buffer("p57", 8192, params_path, &mut function_context); add_buffer("p58", 16777216, params_path, &mut function_context); - add_buffer("p59", 9216, params_path, &mut function_context); - add_buffer("p60", 9216, params_path, &mut function_context); + add_buffer("p59", 32768, params_path, &mut function_context); + add_buffer("p60", 32768, params_path, &mut function_context); add_buffer("p61", 4194304, params_path, &mut function_context); - add_buffer("p62", 9216, params_path, &mut function_context); - add_buffer("p63", 9216, params_path, &mut function_context); - add_buffer("p64", 1296, params_path, &mut function_context); + add_buffer("p62", 32768, params_path, &mut function_context); + add_buffer("p63", 32768, params_path, &mut function_context); + add_buffer("p64", 16384, params_path, &mut function_context); add_buffer("p65", 4194304, params_path, &mut function_context); add_buffer("p66", 16777216, params_path, &mut function_context); add_buffer("p67", 8192, params_path, &mut function_context); @@ -936,12 +955,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p70", 67108864, params_path, &mut function_context); add_buffer("p71", 8192, params_path, &mut function_context); add_buffer("p72", 16777216, params_path, &mut function_context); - add_buffer("p73", 9216, params_path, &mut function_context); - add_buffer("p74", 9216, params_path, &mut function_context); + add_buffer("p73", 32768, params_path, &mut function_context); + add_buffer("p74", 32768, params_path, &mut function_context); add_buffer("p75", 4194304, params_path, &mut function_context); - add_buffer("p76", 9216, params_path, &mut function_context); - add_buffer("p77", 9216, params_path, &mut function_context); - add_buffer("p78", 1296, params_path, &mut function_context); + add_buffer("p76", 32768, params_path, &mut function_context); + add_buffer("p77", 32768, params_path, &mut function_context); + add_buffer("p78", 16384, params_path, &mut function_context); add_buffer("p79", 4194304, params_path, &mut function_context); add_buffer("p80", 16777216, params_path, &mut function_context); add_buffer("p81", 8192, params_path, &mut function_context); @@ -950,12 +969,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p84", 67108864, params_path, &mut function_context); add_buffer("p85", 8192, params_path, &mut function_context); add_buffer("p86", 16777216, params_path, &mut function_context); - add_buffer("p87", 9216, params_path, &mut function_context); - add_buffer("p88", 9216, params_path, &mut function_context); + add_buffer("p87", 32768, params_path, &mut function_context); + add_buffer("p88", 32768, params_path, &mut function_context); add_buffer("p89", 4194304, params_path, &mut function_context); - add_buffer("p90", 9216, params_path, &mut function_context); - add_buffer("p91", 9216, params_path, &mut function_context); - add_buffer("p92", 1296, params_path, &mut function_context); + add_buffer("p90", 32768, params_path, &mut function_context); + add_buffer("p91", 32768, params_path, &mut function_context); + add_buffer("p92", 16384, params_path, &mut function_context); add_buffer("p93", 4194304, params_path, &mut function_context); add_buffer("p94", 16777216, params_path, &mut function_context); add_buffer("p95", 8192, params_path, &mut function_context); @@ -964,12 +983,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p98", 67108864, params_path, &mut function_context); add_buffer("p99", 8192, params_path, &mut function_context); add_buffer("p100", 16777216, params_path, &mut function_context); - add_buffer("p101", 9216, params_path, &mut function_context); - add_buffer("p102", 9216, params_path, &mut function_context); + add_buffer("p101", 32768, params_path, &mut function_context); + add_buffer("p102", 32768, params_path, &mut function_context); add_buffer("p103", 4194304, params_path, &mut function_context); - add_buffer("p104", 9216, params_path, &mut function_context); - add_buffer("p105", 9216, params_path, &mut function_context); - add_buffer("p106", 1296, params_path, &mut function_context); + add_buffer("p104", 32768, params_path, &mut function_context); + add_buffer("p105", 32768, params_path, &mut function_context); + add_buffer("p106", 16384, params_path, &mut function_context); add_buffer("p107", 4194304, params_path, &mut function_context); add_buffer("p108", 16777216, params_path, &mut function_context); add_buffer("p109", 8192, params_path, &mut function_context); @@ -978,12 +997,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p112", 67108864, params_path, &mut function_context); add_buffer("p113", 8192, params_path, &mut function_context); add_buffer("p114", 16777216, params_path, &mut function_context); - add_buffer("p115", 9216, params_path, &mut function_context); - add_buffer("p116", 9216, params_path, &mut function_context); + add_buffer("p115", 32768, params_path, &mut function_context); + add_buffer("p116", 32768, params_path, &mut function_context); add_buffer("p117", 4194304, params_path, &mut function_context); - add_buffer("p118", 9216, params_path, &mut function_context); - add_buffer("p119", 9216, params_path, &mut function_context); - add_buffer("p120", 1296, params_path, &mut function_context); + add_buffer("p118", 32768, params_path, &mut function_context); + add_buffer("p119", 32768, params_path, &mut function_context); + add_buffer("p120", 16384, params_path, &mut function_context); add_buffer("p121", 4194304, params_path, &mut function_context); add_buffer("p122", 16777216, params_path, &mut function_context); add_buffer("p123", 8192, params_path, &mut function_context); @@ -992,12 +1011,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p126", 67108864, params_path, &mut function_context); add_buffer("p127", 8192, params_path, &mut function_context); add_buffer("p128", 16777216, params_path, &mut function_context); - add_buffer("p129", 9216, params_path, &mut function_context); - add_buffer("p130", 9216, params_path, &mut function_context); + add_buffer("p129", 32768, params_path, &mut function_context); + add_buffer("p130", 32768, params_path, &mut function_context); add_buffer("p131", 4194304, params_path, &mut function_context); - add_buffer("p132", 9216, params_path, &mut function_context); - add_buffer("p133", 9216, params_path, &mut function_context); - add_buffer("p134", 1296, params_path, &mut function_context); + add_buffer("p132", 32768, params_path, &mut function_context); + add_buffer("p133", 32768, params_path, &mut function_context); + add_buffer("p134", 16384, params_path, &mut function_context); add_buffer("p135", 4194304, params_path, &mut function_context); add_buffer("p136", 16777216, params_path, &mut function_context); add_buffer("p137", 8192, params_path, &mut function_context); @@ -1006,12 +1025,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p140", 67108864, params_path, &mut function_context); add_buffer("p141", 8192, params_path, &mut function_context); add_buffer("p142", 16777216, params_path, &mut function_context); - add_buffer("p143", 9216, params_path, &mut function_context); - add_buffer("p144", 9216, params_path, &mut function_context); + add_buffer("p143", 32768, params_path, &mut function_context); + add_buffer("p144", 32768, params_path, &mut function_context); add_buffer("p145", 4194304, params_path, &mut function_context); - add_buffer("p146", 9216, params_path, &mut function_context); - add_buffer("p147", 9216, params_path, &mut function_context); - add_buffer("p148", 1296, params_path, &mut function_context); + add_buffer("p146", 32768, params_path, &mut function_context); + add_buffer("p147", 32768, params_path, &mut function_context); + add_buffer("p148", 16384, params_path, &mut function_context); add_buffer("p149", 4194304, params_path, &mut function_context); add_buffer("p150", 16777216, params_path, &mut function_context); add_buffer("p151", 8192, params_path, &mut function_context); @@ -1020,12 +1039,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p154", 67108864, params_path, &mut function_context); add_buffer("p155", 8192, params_path, &mut function_context); add_buffer("p156", 16777216, params_path, &mut function_context); - add_buffer("p157", 9216, params_path, &mut function_context); - add_buffer("p158", 9216, params_path, &mut function_context); + add_buffer("p157", 32768, params_path, &mut function_context); + add_buffer("p158", 32768, params_path, &mut function_context); add_buffer("p159", 4194304, params_path, &mut function_context); - add_buffer("p160", 9216, params_path, &mut function_context); - add_buffer("p161", 9216, params_path, &mut function_context); - add_buffer("p162", 1296, params_path, &mut function_context); + add_buffer("p160", 32768, params_path, &mut function_context); + add_buffer("p161", 32768, params_path, &mut function_context); + add_buffer("p162", 16384, params_path, &mut function_context); add_buffer("p163", 4194304, params_path, &mut function_context); add_buffer("p164", 16777216, params_path, &mut function_context); add_buffer("p165", 8192, params_path, &mut function_context); @@ -1034,12 +1053,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p168", 67108864, params_path, &mut function_context); add_buffer("p169", 8192, params_path, &mut function_context); add_buffer("p170", 16777216, params_path, &mut function_context); - add_buffer("p171", 9216, params_path, &mut function_context); - add_buffer("p172", 9216, params_path, &mut function_context); + add_buffer("p171", 32768, params_path, &mut function_context); + add_buffer("p172", 32768, params_path, &mut function_context); add_buffer("p173", 4194304, params_path, &mut function_context); - add_buffer("p174", 9216, params_path, &mut function_context); - add_buffer("p175", 9216, params_path, &mut function_context); - add_buffer("p176", 1296, params_path, &mut function_context); + add_buffer("p174", 32768, params_path, &mut function_context); + add_buffer("p175", 32768, params_path, &mut function_context); + add_buffer("p176", 16384, params_path, &mut function_context); add_buffer("p177", 4194304, params_path, &mut function_context); add_buffer("p178", 16777216, params_path, &mut function_context); add_buffer("p179", 8192, params_path, &mut function_context); @@ -1048,12 +1067,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p182", 67108864, params_path, &mut function_context); add_buffer("p183", 8192, params_path, &mut function_context); add_buffer("p184", 16777216, params_path, &mut function_context); - add_buffer("p185", 9216, params_path, &mut function_context); - add_buffer("p186", 9216, params_path, &mut function_context); + add_buffer("p185", 32768, params_path, &mut function_context); + add_buffer("p186", 32768, params_path, &mut function_context); add_buffer("p187", 4194304, params_path, &mut function_context); - add_buffer("p188", 9216, params_path, &mut function_context); - add_buffer("p189", 9216, params_path, &mut function_context); - add_buffer("p190", 1296, params_path, &mut function_context); + add_buffer("p188", 32768, params_path, &mut function_context); + add_buffer("p189", 32768, params_path, &mut function_context); + add_buffer("p190", 16384, params_path, &mut function_context); add_buffer("p191", 4194304, params_path, &mut function_context); add_buffer("p192", 16777216, params_path, &mut function_context); add_buffer("p193", 8192, params_path, &mut function_context); @@ -1062,12 +1081,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p196", 67108864, params_path, &mut function_context); add_buffer("p197", 8192, params_path, &mut function_context); add_buffer("p198", 16777216, params_path, &mut function_context); - add_buffer("p199", 9216, params_path, &mut function_context); - add_buffer("p200", 9216, params_path, &mut function_context); + add_buffer("p199", 32768, params_path, &mut function_context); + add_buffer("p200", 32768, params_path, &mut function_context); add_buffer("p201", 4194304, params_path, &mut function_context); - add_buffer("p202", 9216, params_path, &mut function_context); - add_buffer("p203", 9216, params_path, &mut function_context); - add_buffer("p204", 1296, params_path, &mut function_context); + add_buffer("p202", 32768, params_path, &mut function_context); + add_buffer("p203", 32768, params_path, &mut function_context); + add_buffer("p204", 16384, params_path, &mut function_context); add_buffer("p205", 4194304, params_path, &mut function_context); add_buffer("p206", 16777216, params_path, &mut function_context); add_buffer("p207", 8192, params_path, &mut function_context); @@ -1076,12 +1095,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p210", 67108864, params_path, &mut function_context); add_buffer("p211", 8192, params_path, &mut function_context); add_buffer("p212", 16777216, params_path, &mut function_context); - add_buffer("p213", 9216, params_path, &mut function_context); - add_buffer("p214", 9216, params_path, &mut function_context); + add_buffer("p213", 32768, params_path, &mut function_context); + add_buffer("p214", 32768, params_path, &mut function_context); add_buffer("p215", 4194304, params_path, &mut function_context); - add_buffer("p216", 9216, params_path, &mut function_context); - add_buffer("p217", 9216, params_path, &mut function_context); - add_buffer("p218", 1296, params_path, &mut function_context); + add_buffer("p216", 32768, params_path, &mut function_context); + add_buffer("p217", 32768, params_path, &mut function_context); + add_buffer("p218", 16384, params_path, &mut function_context); add_buffer("p219", 4194304, params_path, &mut function_context); add_buffer("p220", 16777216, params_path, &mut function_context); add_buffer("p221", 8192, params_path, &mut function_context); @@ -1092,7 +1111,271 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co add_buffer("p226", 1050673152, params_path, &mut function_context); let output_name: &str = "output"; - let output_size: usize = 18468864; + let output_size: usize = 65667072; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_llm(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llm/"; + + add_buffer("token_ids", 1024, params_path, &mut function_context); + add_buffer("p0", 16, params_path, &mut function_context); + add_buffer("p1", 8, params_path, &mut function_context); + add_buffer("p2", 16, params_path, &mut function_context); + add_buffer("p3", 8, params_path, &mut function_context); + add_buffer("p4", 16, params_path, &mut function_context); + add_buffer("p5", 8, params_path, &mut function_context); + add_buffer("p6", 16, params_path, &mut function_context); + add_buffer("p7", 8, params_path, &mut function_context); + add_buffer("p8", 16, params_path, &mut function_context); + add_buffer("p9", 8, params_path, &mut function_context); + add_buffer("p10", 16, params_path, &mut function_context); + add_buffer("p11", 8, params_path, &mut function_context); + add_buffer("p12", 16, params_path, &mut function_context); + add_buffer("p13", 8, params_path, &mut function_context); + add_buffer("p14", 16, params_path, &mut function_context); + add_buffer("p15", 8, params_path, &mut function_context); + add_buffer("p16", 16, params_path, &mut function_context); + add_buffer("p17", 8, params_path, &mut function_context); + add_buffer("p18", 16, params_path, &mut function_context); + add_buffer("p19", 8, params_path, &mut function_context); + add_buffer("p20", 16, params_path, &mut function_context); + add_buffer("p21", 8, params_path, &mut function_context); + add_buffer("p22", 16, params_path, &mut function_context); + add_buffer("p23", 8, params_path, &mut function_context); + add_buffer("p24", 16, params_path, &mut function_context); + add_buffer("p25", 8, params_path, &mut function_context); + add_buffer("p26", 16, params_path, &mut function_context); + add_buffer("p27", 8, params_path, &mut function_context); + add_buffer("p28", 16, params_path, &mut function_context); + add_buffer("p29", 8, params_path, &mut function_context); + add_buffer("p30", 16, params_path, &mut function_context); + add_buffer("p31", 8, params_path, &mut function_context); + add_buffer("p32", 16, params_path, &mut function_context); + add_buffer("p33", 8, params_path, &mut function_context); + add_buffer("p34", 16, params_path, &mut function_context); + add_buffer("p35", 8, params_path, &mut function_context); + add_buffer("p36", 16, params_path, &mut function_context); + add_buffer("p37", 8, params_path, &mut function_context); + add_buffer("p38", 16, params_path, &mut function_context); + add_buffer("p39", 8, params_path, &mut function_context); + add_buffer("p40", 16, params_path, &mut function_context); + add_buffer("p41", 8, params_path, &mut function_context); + add_buffer("p42", 16, params_path, &mut function_context); + add_buffer("p43", 8, params_path, &mut function_context); + add_buffer("p44", 16, params_path, &mut function_context); + add_buffer("p45", 8, params_path, &mut function_context); + add_buffer("p46", 16, params_path, &mut function_context); + add_buffer("p47", 8, params_path, &mut function_context); + add_buffer("p48", 16, params_path, &mut function_context); + add_buffer("p49", 8, params_path, &mut function_context); + add_buffer("p50", 16, params_path, &mut function_context); + add_buffer("p51", 8, params_path, &mut function_context); + add_buffer("p52", 16, params_path, &mut function_context); + add_buffer("p53", 8, params_path, &mut function_context); + add_buffer("p54", 16, params_path, &mut function_context); + add_buffer("p55", 8, params_path, &mut function_context); + add_buffer("p56", 16, params_path, &mut function_context); + add_buffer("p57", 8, params_path, &mut function_context); + add_buffer("p58", 16, params_path, &mut function_context); + add_buffer("p59", 8, params_path, &mut function_context); + add_buffer("p60", 16, params_path, &mut function_context); + add_buffer("p61", 8, params_path, &mut function_context); + add_buffer("p62", 16, params_path, &mut function_context); + add_buffer("p63", 8, params_path, &mut function_context); + add_buffer("p64", 16, params_path, &mut function_context); + add_buffer("p65", 8, params_path, &mut function_context); + add_buffer("p66", 16, params_path, &mut function_context); + add_buffer("p67", 8, params_path, &mut function_context); + add_buffer("p68", 16, params_path, &mut function_context); + add_buffer("p69", 8, params_path, &mut function_context); + add_buffer("p70", 16, params_path, &mut function_context); + add_buffer("p71", 8, params_path, &mut function_context); + add_buffer("p72", 16, params_path, &mut function_context); + add_buffer("p73", 8, params_path, &mut function_context); + add_buffer("p74", 16, params_path, &mut function_context); + add_buffer("p75", 8, params_path, &mut function_context); + add_buffer("p76", 16, params_path, &mut function_context); + add_buffer("p77", 8, params_path, &mut function_context); + add_buffer("p78", 16, params_path, &mut function_context); + add_buffer("p79", 8, params_path, &mut function_context); + add_buffer("p80", 16, params_path, &mut function_context); + add_buffer("p81", 8, params_path, &mut function_context); + add_buffer("p82", 16, params_path, &mut function_context); + add_buffer("p83", 8, params_path, &mut function_context); + add_buffer("p84", 16, params_path, &mut function_context); + add_buffer("p85", 8, params_path, &mut function_context); + add_buffer("p86", 16, params_path, &mut function_context); + add_buffer("p87", 8, params_path, &mut function_context); + add_buffer("p88", 16, params_path, &mut function_context); + add_buffer("p89", 8, params_path, &mut function_context); + add_buffer("p90", 16, params_path, &mut function_context); + add_buffer("p91", 8, params_path, &mut function_context); + add_buffer("p92", 16, params_path, &mut function_context); + add_buffer("p93", 8, params_path, &mut function_context); + add_buffer("p94", 16, params_path, &mut function_context); + add_buffer("p95", 8, params_path, &mut function_context); + add_buffer("p96", 16, params_path, &mut function_context); + add_buffer("p97", 8, params_path, &mut function_context); + add_buffer("p98", 16, params_path, &mut function_context); + add_buffer("p99", 8, params_path, &mut function_context); + add_buffer("p100", 16, params_path, &mut function_context); + add_buffer("p101", 8, params_path, &mut function_context); + add_buffer("p102", 16, params_path, &mut function_context); + add_buffer("p103", 8, params_path, &mut function_context); + add_buffer("p104", 16, params_path, &mut function_context); + add_buffer("p105", 8, params_path, &mut function_context); + add_buffer("p106", 16, params_path, &mut function_context); + add_buffer("p107", 8, params_path, &mut function_context); + add_buffer("p108", 16, params_path, &mut function_context); + add_buffer("p109", 8, params_path, &mut function_context); + add_buffer("p110", 16, params_path, &mut function_context); + add_buffer("p111", 8, params_path, &mut function_context); + add_buffer("p112", 16, params_path, &mut function_context); + add_buffer("p113", 8, params_path, &mut function_context); + add_buffer("p114", 16, params_path, &mut function_context); + add_buffer("p115", 8, params_path, &mut function_context); + add_buffer("p116", 16, params_path, &mut function_context); + add_buffer("p117", 8, params_path, &mut function_context); + add_buffer("p118", 16, params_path, &mut function_context); + add_buffer("p119", 8, params_path, &mut function_context); + add_buffer("p120", 16, params_path, &mut function_context); + add_buffer("p121", 8, params_path, &mut function_context); + add_buffer("p122", 16, params_path, &mut function_context); + add_buffer("p123", 8, params_path, &mut function_context); + add_buffer("p124", 16, params_path, &mut function_context); + add_buffer("p125", 8, params_path, &mut function_context); + add_buffer("p126", 16, params_path, &mut function_context); + add_buffer("p127", 8, params_path, &mut function_context); + add_buffer("p128", 16, params_path, &mut function_context); + add_buffer("p129", 8, params_path, &mut function_context); + add_buffer("p130", 16, params_path, &mut function_context); + add_buffer("p131", 8, params_path, &mut function_context); + add_buffer("p132", 16, params_path, &mut function_context); + add_buffer("p133", 8, params_path, &mut function_context); + add_buffer("p134", 16, params_path, &mut function_context); + add_buffer("p135", 8, params_path, &mut function_context); + add_buffer("p136", 16, params_path, &mut function_context); + add_buffer("p137", 8, params_path, &mut function_context); + add_buffer("p138", 16, params_path, &mut function_context); + add_buffer("p139", 8, params_path, &mut function_context); + add_buffer("p140", 16, params_path, &mut function_context); + add_buffer("p141", 8, params_path, &mut function_context); + add_buffer("p142", 16, params_path, &mut function_context); + add_buffer("p143", 8, params_path, &mut function_context); + add_buffer("p144", 16, params_path, &mut function_context); + add_buffer("p145", 8, params_path, &mut function_context); + add_buffer("p146", 16, params_path, &mut function_context); + add_buffer("p147", 8, params_path, &mut function_context); + add_buffer("p148", 16, params_path, &mut function_context); + add_buffer("p149", 8, params_path, &mut function_context); + add_buffer("p150", 16, params_path, &mut function_context); + add_buffer("p151", 8, params_path, &mut function_context); + add_buffer("p152", 16, params_path, &mut function_context); + add_buffer("p153", 8, params_path, &mut function_context); + add_buffer("p154", 16, params_path, &mut function_context); + add_buffer("p155", 8, params_path, &mut function_context); + add_buffer("p156", 16, params_path, &mut function_context); + add_buffer("p157", 8, params_path, &mut function_context); + add_buffer("p158", 16, params_path, &mut function_context); + add_buffer("p159", 8, params_path, &mut function_context); + add_buffer("p160", 16, params_path, &mut function_context); + add_buffer("p161", 8, params_path, &mut function_context); + add_buffer("p162", 16, params_path, &mut function_context); + add_buffer("p163", 8, params_path, &mut function_context); + add_buffer("p164", 16, params_path, &mut function_context); + add_buffer("p165", 8, params_path, &mut function_context); + add_buffer("p166", 16, params_path, &mut function_context); + add_buffer("p167", 8, params_path, &mut function_context); + add_buffer("p168", 16, params_path, &mut function_context); + add_buffer("p169", 8, params_path, &mut function_context); + add_buffer("p170", 16, params_path, &mut function_context); + add_buffer("p171", 8, params_path, &mut function_context); + add_buffer("p172", 16, params_path, &mut function_context); + add_buffer("p173", 8, params_path, &mut function_context); + add_buffer("p174", 16, params_path, &mut function_context); + add_buffer("p175", 8, params_path, &mut function_context); + add_buffer("p176", 16, params_path, &mut function_context); + add_buffer("p177", 8, params_path, &mut function_context); + add_buffer("p178", 16, params_path, &mut function_context); + add_buffer("p179", 8, params_path, &mut function_context); + add_buffer("p180", 16, params_path, &mut function_context); + add_buffer("p181", 8, params_path, &mut function_context); + add_buffer("p182", 16, params_path, &mut function_context); + add_buffer("p183", 8, params_path, &mut function_context); + add_buffer("p184", 16, params_path, &mut function_context); + add_buffer("p185", 8, params_path, &mut function_context); + add_buffer("p186", 16, params_path, &mut function_context); + add_buffer("p187", 8, params_path, &mut function_context); + add_buffer("p188", 16, params_path, &mut function_context); + add_buffer("p189", 8, params_path, &mut function_context); + add_buffer("p190", 16, params_path, &mut function_context); + add_buffer("p191", 8, params_path, &mut function_context); + add_buffer("p192", 16, params_path, &mut function_context); + add_buffer("p193", 8, params_path, &mut function_context); + add_buffer("p194", 16, params_path, &mut function_context); + add_buffer("p195", 8, params_path, &mut function_context); + add_buffer("p196", 16, params_path, &mut function_context); + add_buffer("p197", 8, params_path, &mut function_context); + add_buffer("p198", 16, params_path, &mut function_context); + add_buffer("p199", 8, params_path, &mut function_context); + add_buffer("p200", 16, params_path, &mut function_context); + add_buffer("p201", 8, params_path, &mut function_context); + add_buffer("p202", 16, params_path, &mut function_context); + add_buffer("p203", 8, params_path, &mut function_context); + add_buffer("p204", 16, params_path, &mut function_context); + add_buffer("p205", 8, params_path, &mut function_context); + add_buffer("p206", 16, params_path, &mut function_context); + add_buffer("p207", 8, params_path, &mut function_context); + add_buffer("p208", 16, params_path, &mut function_context); + add_buffer("p209", 8, params_path, &mut function_context); + add_buffer("p210", 16, params_path, &mut function_context); + add_buffer("p211", 8, params_path, &mut function_context); + add_buffer("p212", 16, params_path, &mut function_context); + add_buffer("p213", 8, params_path, &mut function_context); + add_buffer("p214", 16, params_path, &mut function_context); + add_buffer("p215", 8, params_path, &mut function_context); + add_buffer("p216", 16, params_path, &mut function_context); + add_buffer("p217", 8, params_path, &mut function_context); + add_buffer("p218", 16, params_path, &mut function_context); + add_buffer("p219", 8, params_path, &mut function_context); + add_buffer("p220", 16, params_path, &mut function_context); + add_buffer("p221", 8, params_path, &mut function_context); + add_buffer("p222", 16, params_path, &mut function_context); + add_buffer("p223", 8, params_path, &mut function_context); + add_buffer("p224", 16, params_path, &mut function_context); + add_buffer("p225", 8, params_path, &mut function_context); + add_buffer("p226", 16, params_path, &mut function_context); + add_buffer("p227", 8, params_path, &mut function_context); + add_buffer("p228", 16, params_path, &mut function_context); + add_buffer("p229", 8, params_path, &mut function_context); + add_buffer("p230", 16, params_path, &mut function_context); + add_buffer("p231", 8, params_path, &mut function_context); + add_buffer("p232", 16, params_path, &mut function_context); + add_buffer("p233", 8, params_path, &mut function_context); + add_buffer("p234", 16, params_path, &mut function_context); + add_buffer("p235", 8, params_path, &mut function_context); + add_buffer("p236", 16, params_path, &mut function_context); + add_buffer("p237", 8, params_path, &mut function_context); + add_buffer("p238", 16, params_path, &mut function_context); + add_buffer("p239", 8, params_path, &mut function_context); + add_buffer("p240", 16, params_path, &mut function_context); + add_buffer("p241", 8, params_path, &mut function_context); + add_buffer("p242", 16, params_path, &mut function_context); + add_buffer("p243", 8, params_path, &mut function_context); + add_buffer("p244", 16, params_path, &mut function_context); + add_buffer("p245", 8, params_path, &mut function_context); + add_buffer("p246", 16, params_path, &mut function_context); + add_buffer("p247", 8, params_path, &mut function_context); + add_buffer("p248", 16, params_path, &mut function_context); + add_buffer("p249", 8, params_path, &mut function_context); + add_buffer("p250", 16, params_path, &mut function_context); + add_buffer("p251", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 1024; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index 0d0185a9..3881136e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -13,7 +13,7 @@ use crate::{ pub fn setup_test(filename: &str) -> (Context, FunctionConfig, Box) { let dom_init = MemoryResource::Shared { id: 0, - size: (1 << 38), // TODO : choose a good value for the context size + size: (1 << 38), // TODO(GPU) : choose a good value for the context size }; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; diff --git a/machine_interface/tests/data/cuda/test_gpu_llama.json b/machine_interface/tests/data/cuda/test_gpu_llama.json index 8b22fc24..4a5d74af 100644 --- a/machine_interface/tests/data/cuda/test_gpu_llama.json +++ b/machine_interface/tests/data/cuda/test_gpu_llama.json @@ -1,7 +1,7 @@ { "modules": [{"module_name": "llama.cubin", "path": "cuda/llama.cubin"}], "kernels": [ - {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_strided_slice_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_kernel"}, {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel"}, {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, @@ -27,11 +27,11 @@ ], "blueprint": { "inputs": ["token_ids", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226"], - "buffers": {"output": {"Absolute": 18468864}, "b2": {"Absolute": 1179648}, "b3": {"Absolute": 144}, "b5": {"Absolute": 294912}, "b8": {"Absolute": 1179648}, "b12": {"Absolute": 294912}, "b234": {"Absolute": 8192}, "b235": {"Absolute": 167936}}, + "buffers": {"output": {"Absolute": 65667072}, "b2": {"Absolute": 1048576}, "b3": {"Absolute": 512}, "b5": {"Absolute": 1048576}, "b8": {"Absolute": 4194304}, "b12": {"Absolute": 4194304}, "b234": {"Absolute": 16384}, "b235": {"Absolute": 2097152}}, "outputs": ["output"], "control_flow": [ - {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_strided_slice_kernel", [{"Ptr": "b2"}, {"Ptr": "token_ids"}, {"Ptr": "p0"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_kernel", [{"Ptr": "b2"}, {"Ptr": "token_ids"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -40,7 +40,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -49,7 +49,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -59,7 +59,7 @@ }]}, {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p2"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, @@ -67,7 +67,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -76,7 +76,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -86,7 +86,7 @@ }]}, {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p5"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, @@ -94,7 +94,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 18}, + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -103,7 +103,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p6"}, {"Ptr": "p7"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -112,16 +112,16 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p8"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -129,8 +129,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -138,8 +138,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -148,7 +148,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -157,7 +157,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -165,17 +165,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p9"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -183,17 +183,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -201,9 +201,9 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p10"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p10"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, @@ -211,7 +211,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -220,7 +220,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -228,8 +228,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p11"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -237,25 +237,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p12"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p13"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "p13"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -264,17 +264,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p14"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p14"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -282,8 +282,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -291,8 +291,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p15"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -300,17 +300,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p16"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p16"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -318,8 +318,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p17"}, {"Ptr": "p18"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p17"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -327,17 +327,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p19"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p19"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -345,8 +345,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -354,17 +354,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p22"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -372,8 +372,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -381,8 +381,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -391,7 +391,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -400,7 +400,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 41}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -408,17 +408,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p23"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p23"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -426,17 +426,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -444,17 +444,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p24"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p24"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -462,8 +462,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -471,8 +471,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p25"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -480,25 +480,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p26"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p26"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p27"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -507,17 +507,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p28"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p28"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -525,8 +525,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -534,8 +534,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p29"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -543,17 +543,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p30"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p30"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -561,8 +561,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p31"}, {"Ptr": "p32"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p31"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -570,17 +570,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p33"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p33"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -588,8 +588,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p34"}, {"Ptr": "p35"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p34"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -597,17 +597,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p36"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -615,8 +615,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -624,8 +624,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -634,7 +634,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -642,8 +642,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -651,17 +651,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p37"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p37"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -669,17 +669,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -687,17 +687,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p38"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -705,8 +705,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -714,8 +714,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p39"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -723,25 +723,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p40"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p40"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p41"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p41"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -750,17 +750,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p42"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -768,8 +768,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -777,8 +777,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p43"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -786,17 +786,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p44"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p44"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -804,8 +804,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p45"}, {"Ptr": "p46"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p45"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -813,17 +813,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p47"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p47"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -831,8 +831,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -840,17 +840,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p50"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -858,8 +858,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -867,8 +867,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -877,7 +877,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -885,8 +885,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -894,17 +894,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p51"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p51"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -912,17 +912,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -930,17 +930,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p52"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p52"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -948,8 +948,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -957,8 +957,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p53"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -966,25 +966,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p54"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p54"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p55"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p55"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -993,17 +993,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p56"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p56"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1012,7 +1012,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1020,8 +1020,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p57"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1029,17 +1029,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p58"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p58"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1047,8 +1047,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p59"}, {"Ptr": "p60"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p59"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1056,17 +1056,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p61"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p61"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1074,8 +1074,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1083,17 +1083,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p64"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1101,8 +1101,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1110,8 +1110,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1120,7 +1120,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1129,7 +1129,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 41}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1137,17 +1137,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p65"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p65"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1155,17 +1155,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1173,17 +1173,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p66"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p66"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1191,8 +1191,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1200,8 +1200,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p67"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1209,25 +1209,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p68"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p68"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p69"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p69"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1236,17 +1236,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p70"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p70"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1254,8 +1254,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1263,8 +1263,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p71"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1272,17 +1272,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p72"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p72"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1290,8 +1290,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p73"}, {"Ptr": "p74"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p73"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1299,9 +1299,9 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p75"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p75"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, @@ -1309,7 +1309,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 18}, + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1318,7 +1318,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p76"}, {"Ptr": "p77"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1326,17 +1326,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p78"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1344,8 +1344,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1353,8 +1353,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1363,7 +1363,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1371,8 +1371,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1380,17 +1380,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p79"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p79"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1398,17 +1398,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1416,17 +1416,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p80"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p80"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1434,8 +1434,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1443,8 +1443,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p81"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1452,25 +1452,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p82"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p82"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p83"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p83"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1479,17 +1479,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p84"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p84"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1497,8 +1497,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1506,8 +1506,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p85"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1515,17 +1515,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p86"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p86"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1533,8 +1533,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p87"}, {"Ptr": "p88"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p87"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1542,17 +1542,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p89"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p89"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1560,8 +1560,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p90"}, {"Ptr": "p91"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p90"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1569,17 +1569,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p92"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1587,8 +1587,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1596,8 +1596,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1606,7 +1606,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1614,8 +1614,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1623,17 +1623,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p93"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p93"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1641,17 +1641,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1659,17 +1659,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p94"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1677,8 +1677,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1686,8 +1686,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p95"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1695,25 +1695,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p96"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p96"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p97"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p97"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1722,17 +1722,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p98"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p98"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1740,8 +1740,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1749,8 +1749,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p99"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1758,17 +1758,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p100"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p100"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1776,8 +1776,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p101"}, {"Ptr": "p102"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p101"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1785,17 +1785,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p103"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p103"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1803,8 +1803,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1812,17 +1812,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p106"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1830,8 +1830,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1839,8 +1839,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1849,7 +1849,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1858,7 +1858,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 41}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1866,17 +1866,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p107"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p107"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1884,17 +1884,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1902,17 +1902,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p108"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p108"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1920,8 +1920,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1929,8 +1929,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p109"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1938,25 +1938,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p110"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p110"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p111"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p111"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1965,17 +1965,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p112"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p112"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1983,8 +1983,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -1992,8 +1992,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p113"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2001,17 +2001,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p114"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p114"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2019,8 +2019,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p115"}, {"Ptr": "p116"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p115"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2028,17 +2028,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p117"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p117"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2046,8 +2046,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p118"}, {"Ptr": "p119"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p118"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2055,17 +2055,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p120"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2073,8 +2073,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2082,8 +2082,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2092,7 +2092,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2100,8 +2100,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2109,17 +2109,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p121"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p121"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2127,17 +2127,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2145,17 +2145,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p122"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p122"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2163,8 +2163,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2172,8 +2172,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p123"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2181,25 +2181,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p124"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p124"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p125"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p125"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2208,17 +2208,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p126"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p126"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2226,8 +2226,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2235,8 +2235,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p127"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p127"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2244,17 +2244,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p128"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p128"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2262,8 +2262,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p129"}, {"Ptr": "p130"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p129"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2271,17 +2271,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p131"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p131"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2289,8 +2289,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p132"}, {"Ptr": "p133"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p132"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2298,17 +2298,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p134"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2316,8 +2316,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2325,8 +2325,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2335,7 +2335,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2343,8 +2343,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2352,17 +2352,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p135"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p135"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2370,17 +2370,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2388,17 +2388,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p136"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p136"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2406,8 +2406,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2415,8 +2415,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p137"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2424,25 +2424,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p138"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p138"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p139"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p139"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2451,17 +2451,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p140"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p140"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2470,7 +2470,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2478,8 +2478,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p141"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2487,17 +2487,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p142"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p142"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2505,8 +2505,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p143"}, {"Ptr": "p144"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p143"}, {"Ptr": "p144"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2514,17 +2514,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p145"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p145"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2532,8 +2532,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2541,17 +2541,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p148"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2559,8 +2559,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2568,8 +2568,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2578,7 +2578,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2587,7 +2587,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 41}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2595,17 +2595,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p149"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p149"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2613,17 +2613,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2631,17 +2631,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p150"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p150"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2649,8 +2649,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2658,8 +2658,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p151"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2667,25 +2667,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p152"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p152"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p153"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p153"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2694,17 +2694,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p154"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p154"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2712,8 +2712,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2721,8 +2721,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p155"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2730,17 +2730,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p156"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p156"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2748,8 +2748,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p157"}, {"Ptr": "p158"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p157"}, {"Ptr": "p158"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2757,9 +2757,9 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p159"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p159"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, @@ -2767,7 +2767,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 18}, + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2776,7 +2776,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p160"}, {"Ptr": "p161"}], { - "grid_dim_x": {"Absolute": 72}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2784,17 +2784,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p162"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2802,8 +2802,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2811,8 +2811,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2821,7 +2821,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2829,8 +2829,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2838,17 +2838,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p163"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p163"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2856,17 +2856,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2874,17 +2874,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p164"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p164"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2892,8 +2892,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2901,8 +2901,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p165"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2910,25 +2910,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p166"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p166"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p167"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p167"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2937,17 +2937,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p168"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p168"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2955,8 +2955,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -2964,8 +2964,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p169"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2973,17 +2973,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p170"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p170"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2991,8 +2991,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p171"}, {"Ptr": "p172"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p171"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3000,17 +3000,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p173"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p173"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3018,8 +3018,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p174"}, {"Ptr": "p175"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p174"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3027,17 +3027,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "p176"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p176"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3045,8 +3045,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3054,8 +3054,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3064,7 +3064,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3072,8 +3072,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3081,17 +3081,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p177"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p177"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3099,17 +3099,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3117,17 +3117,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p178"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p178"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3135,8 +3135,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3144,8 +3144,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p179"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3153,25 +3153,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p180"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p180"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p181"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p181"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3180,17 +3180,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p182"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p182"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3198,8 +3198,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3207,8 +3207,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p183"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3216,17 +3216,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p184"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p184"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3234,8 +3234,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p185"}, {"Ptr": "p186"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p185"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3243,17 +3243,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p187"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p187"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3261,8 +3261,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3270,17 +3270,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p190"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p190"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3288,8 +3288,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3297,8 +3297,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3307,7 +3307,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3316,7 +3316,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 41}, + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3324,17 +3324,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p191"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p191"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3342,17 +3342,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3360,17 +3360,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p192"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p192"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3378,8 +3378,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3387,8 +3387,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p193"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3396,25 +3396,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p194"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p194"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p195"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p195"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "b8"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3423,17 +3423,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p196"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p196"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3441,8 +3441,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3450,8 +3450,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p197"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3459,17 +3459,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p198"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p198"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3477,8 +3477,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p199"}, {"Ptr": "p200"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p199"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3486,17 +3486,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p201"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p201"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3504,8 +3504,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p202"}, {"Ptr": "p203"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p202"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3513,17 +3513,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p204"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3531,8 +3531,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3540,8 +3540,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3550,7 +3550,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3558,8 +3558,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3567,17 +3567,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p205"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p205"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3585,17 +3585,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3603,17 +3603,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p206"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p206"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3621,8 +3621,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3630,8 +3630,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p207"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3639,25 +3639,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p208"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p208"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p209"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p209"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3666,17 +3666,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p210"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p210"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3684,8 +3684,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3693,8 +3693,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p211"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3702,17 +3702,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p212"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p212"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3720,8 +3720,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p213"}, {"Ptr": "p214"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p213"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3729,17 +3729,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p215"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p215"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 18}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3747,8 +3747,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p216"}, {"Ptr": "p217"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p216"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3756,17 +3756,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 9}, - "grid_dim_y": {"Absolute": 9}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 4}, - "block_dim_y": {"Absolute": 4}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p218"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p218"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3774,8 +3774,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3783,8 +3783,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3793,7 +3793,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3801,8 +3801,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 41}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3810,17 +3810,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p219"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p219"}], { "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3828,17 +3828,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 9}, + "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 32}, "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 4}, + "block_dim_y": {"Absolute": 8}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3846,17 +3846,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p220"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p220"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3864,8 +3864,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3873,8 +3873,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p221"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3882,25 +3882,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p222"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p222"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b12"}, {"Ptr": "p223"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p223"}], { "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3909,17 +3909,17 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p224"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p224"}], { "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3928,7 +3928,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 2}, + "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -3936,8 +3936,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p225"}], { - "grid_dim_x": {"Absolute": 72}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3945,9 +3945,9 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "p226"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p226"}], { "grid_dim_x": {"Absolute": 128256}, - "grid_dim_y": {"Absolute": 36}, + "grid_dim_y": {"Absolute": 128}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 64}, "block_dim_y": {"Absolute": 1}, diff --git a/machine_interface/tests/data/cuda/test_gpu_llm.json b/machine_interface/tests/data/cuda/test_gpu_llm.json new file mode 100644 index 00000000..641f50b9 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_llm.json @@ -0,0 +1,3552 @@ +{ + "modules": [{"module_name": "llm.cubin", "path": "cuda/llm.cubin"}], + "kernels": [ + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_equal_logical_not_where_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__100_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__101_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__102_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__103_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__104_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__105_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__106_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__107_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__108_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__109_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__10_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__110_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__111_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__112_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__113_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__114_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__115_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__116_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__117_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__118_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__119_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__11_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__120_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__121_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__122_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__123_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__124_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__125_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__12_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__13_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__14_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__15_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__16_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__17_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__18_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__19_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__1_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__20_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__21_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__22_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__23_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__24_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__25_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__26_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__27_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__28_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__29_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__2_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__30_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__31_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__32_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__33_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__34_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__35_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__36_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__37_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__38_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__39_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__3_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__40_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__41_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__42_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__43_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__44_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__45_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__46_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__47_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__48_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__49_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__4_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__50_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__51_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__52_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__53_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__54_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__55_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__56_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__57_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__58_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__59_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__5_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__60_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__61_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__62_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__63_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__64_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__65_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__66_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__67_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__68_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__69_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__6_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__70_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__71_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__72_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__73_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__74_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__75_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__76_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__77_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__78_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__79_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__7_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__80_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__81_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__82_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__83_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__84_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__85_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__86_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__87_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__88_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__89_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__8_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__90_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__91_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__92_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__93_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__94_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__95_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__96_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__97_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__98_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__99_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__9_kernel"}, + {"module_name": "llm.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__kernel"} + ], + "blueprint": { + "inputs": ["token_ids", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251"], + "buffers": {"output": {"Absolute": 1024}, "b4": {"Absolute": 8}, "b5": {"Absolute": 1024}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_equal_logical_not_where_kernel", [{"Ptr": "output"}, {"Ptr": "token_ids"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p0"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__1_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p2"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__2_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p4"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__3_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p6"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__4_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p8"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__5_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p10"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__6_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p12"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__7_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p14"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__8_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p16"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__9_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p18"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__10_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p20"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__11_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p22"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__12_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p24"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__13_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p26"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__14_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p28"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__15_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p30"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__16_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p32"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__17_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p34"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__18_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p36"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__19_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p38"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__20_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p40"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__21_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p42"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__22_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p44"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__23_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p46"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__24_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p48"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__25_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p50"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__26_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p52"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__27_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p54"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__28_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p56"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__29_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p58"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__30_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p60"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__31_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p62"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__32_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p64"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__33_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p66"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__34_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p68"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__35_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p70"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__36_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p72"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__37_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p74"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__38_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p76"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__39_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p78"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__40_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p80"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__41_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p82"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__42_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p84"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__43_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p86"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__44_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p88"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__45_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p90"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__46_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p92"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__47_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p94"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__48_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p96"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__49_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p98"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__50_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p100"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__51_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p102"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__52_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p104"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__53_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p106"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__54_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p108"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__55_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p110"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__56_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p112"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__57_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p114"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__58_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p116"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__59_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p118"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__60_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p120"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__61_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p122"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__62_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p124"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__63_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p127"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p126"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__64_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p128"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__65_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p130"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__66_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p132"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__67_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p134"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__68_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p136"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__69_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p139"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p138"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__70_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p140"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__71_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p142"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__72_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p145"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p144"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__73_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p146"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__74_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p148"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__75_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p150"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__76_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p152"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__77_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p154"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__78_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p157"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p156"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__79_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p158"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__80_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p160"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__81_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p162"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__82_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p164"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__83_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p166"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__84_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p168"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__85_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p170"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__86_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p172"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__87_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p174"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__88_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p176"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__89_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p178"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__90_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p180"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__91_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p182"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__92_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p184"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__93_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p186"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__94_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p188"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__95_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p190"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__96_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p192"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__97_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p195"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p194"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__98_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p196"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__99_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p199"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p198"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__100_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p200"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__101_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p202"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__102_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p204"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__103_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p206"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__104_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p208"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__105_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p210"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__106_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p213"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p212"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__107_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p214"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__108_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p216"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__109_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p218"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__110_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p220"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__111_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p222"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__112_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p224"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__113_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p227"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p226"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__114_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p229"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p228"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__115_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p230"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__116_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p233"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p232"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__117_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p234"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__118_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p237"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p236"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__119_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p239"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p238"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__120_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p241"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p240"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__121_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p243"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p242"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__122_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p245"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p244"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__123_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p247"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p246"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__124_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "output"}, {"Ptr": "p249"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p248"}, {"Ptr": "b4"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_where_reshape_broadcast_to_broadcast_to_reshap_ea80fd4c09035e54__125_kernel", [{"Ptr": "b4"}, {"Ptr": "token_ids"}, {"Ptr": "b5"}, {"Ptr": "p251"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p250"}, {"Ptr": "b4"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_test.json b/machine_interface/tests/data/cuda/test_gpu_test.json index a179f01e..042be4be 100644 --- a/machine_interface/tests/data/cuda/test_gpu_test.json +++ b/machine_interface/tests/data/cuda/test_gpu_test.json @@ -1,25 +1,256 @@ { - "modules": [ - { "module_name": "kernelCheck.cubin", "path": "kernelCheck.cubin" }, - { "module_name": "kernelCheck.ptx", "path": "kernelCheck.ptx" } - ], - "kernels": [ - { "module_name": "kernelCheck.cubin", "kernel_name": "self_add" } + "modules": [{"module_name": "test.cubin", "path": "cuda/test.cubin"}], + "kernels": [ + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_argmax_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_equal_logical_not_where_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__1_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__2_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__3_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__4_kernel"}, + {"module_name": "test.cubin", "kernel_name": "tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__kernel"} ], "blueprint": { - "inputs": ["A"], - "buffers": {}, - "outputs": ["A"], + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6"], + "buffers": {"output": {"Absolute": 28}, "b1": {"Absolute": 28}, "b6": {"Absolute": 28}}, + "outputs": ["output"], "control_flow": [ - {"ExecKernel": ["self_add", [{"Ptr": "A"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, + {"ExecKernel": ["tvmgen_default_fused_equal_logical_not_where_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b1"}, {"Ptr": "p1"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_argmax_kernel", [{"Ptr": "output"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__kernel", [{"Ptr": "output"}, {"Ptr": "input"}, {"Ptr": "b1"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b1"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p0"}, {"Ptr": "output"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b6"}, {"Ptr": "p1"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_argmax_kernel", [{"Ptr": "b1"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__1_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}, {"Ptr": "b6"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b6"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p3"}, {"Ptr": "b1"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "output"}, {"Ptr": "p1"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_argmax_kernel", [{"Ptr": "b6"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__2_kernel", [{"Ptr": "b6"}, {"Ptr": "input"}, {"Ptr": "output"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p4"}, {"Ptr": "b6"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b1"}, {"Ptr": "p1"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_argmax_kernel", [{"Ptr": "output"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__3_kernel", [{"Ptr": "output"}, {"Ptr": "input"}, {"Ptr": "b1"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b1"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p5"}, {"Ptr": "output"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b6"}, {"Ptr": "p1"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_argmax_kernel", [{"Ptr": "b1"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_equal_logical_not_take_cast_where_reshape_broadcast_to_broadcast_to_r_b7dc2b146cd96eaf__4_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}, {"Ptr": "b6"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b6"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p6"}, {"Ptr": "b1"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]} ] - } + } } \ No newline at end of file diff --git a/machine_interface/tests/libs/cuda/llama.cubin b/machine_interface/tests/libs/cuda/llama.cubin index b5e27faa6fd71a6adebac12cbe5c1dc7f5b99fef..b80f4a9d44297c075c2c955cbfc1f6590dbfe32a 100644 GIT binary patch literal 105632 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 literal 87712 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≥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 p_f`F1?&QTpnTa#wENTAq$t@~p?tUD38u|Pf|Fe Date: Thu, 10 Apr 2025 14:39:53 +0200 Subject: [PATCH 155/176] Llama KV compiled, not storing into keys/values --- .../gpu_tests/cuda_tests/compiled_tests.rs | 57 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 818 ++- .../gpu/gpu_tests/load_utils.rs | 1 + .../gpu/gpu_tests/tests_utils.rs | 44 +- .../tests/data/cuda/test_gpu_llama-full.json | 3981 ++++++++++++ .../data/cuda/test_gpu_llama_kv-full-old.json | 5149 ++++++++++++++++ .../data/cuda/test_gpu_llama_kv-full.json | 5486 +++++++++++++++++ .../tests/data/cuda/test_gpu_llama_kv.json | 5454 ++++++++++++++++ machine_interface/tests/libs/cuda/llama.cubin | Bin 105632 -> 105632 bytes .../tests/libs/cuda/llama_kv.cubin | Bin 0 -> 110496 bytes .../tests/libs/cuda/llm_inference.cubin | Bin 0 -> 14944 bytes 11 files changed, 20734 insertions(+), 256 deletions(-) create mode 100644 machine_interface/tests/data/cuda/test_gpu_llama-full.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_llama_kv.json create mode 100644 machine_interface/tests/libs/cuda/llama_kv.cubin create mode 100644 machine_interface/tests/libs/cuda/llm_inference.cubin diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs index 3dc6597f..b33f229d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs @@ -2,7 +2,7 @@ use crate::{ function_driver::compute_driver::gpu::gpu_tests::{ cuda_tests::load_models::*, get_driver, - tests_utils::{compare_result, execute_test, get_result, setup_test}, + tests_utils::{compare_result, execute_test, get_result, get_resulti32, get_resulti64, setup_test}, GPU_LOCK, }, memory_domain::Context, @@ -31,6 +31,7 @@ fn get_function(model_name: &str) -> Option (usize, String, Vec (usize, String, Vec, Con (output_size, output_name.to_string(), expected, function_context) } -pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; - - add_buffer("test", 16, params_path, &mut function_context); - add_buffer("p0", 8, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 8; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_test(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/test/"; @@ -878,245 +865,6 @@ pub fn load_test(mut function_context: Context) -> (usize, String, Vec, Con (output_size, output_name.to_string(), expected, function_context) } -pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; - - add_buffer("token_ids", 1024, params_path, &mut function_context); - add_buffer("p0", 1050673152, params_path, &mut function_context); - add_buffer("p1", 8192, params_path, &mut function_context); - add_buffer("p2", 16777216, params_path, &mut function_context); - add_buffer("p3", 32768, params_path, &mut function_context); - add_buffer("p4", 32768, params_path, &mut function_context); - add_buffer("p5", 4194304, params_path, &mut function_context); - add_buffer("p6", 32768, params_path, &mut function_context); - add_buffer("p7", 32768, params_path, &mut function_context); - add_buffer("p8", 16384, params_path, &mut function_context); - add_buffer("p9", 4194304, params_path, &mut function_context); - add_buffer("p10", 16777216, params_path, &mut function_context); - add_buffer("p11", 8192, params_path, &mut function_context); - add_buffer("p12", 67108864, params_path, &mut function_context); - add_buffer("p13", 67108864, params_path, &mut function_context); - add_buffer("p14", 67108864, params_path, &mut function_context); - add_buffer("p15", 8192, params_path, &mut function_context); - add_buffer("p16", 16777216, params_path, &mut function_context); - add_buffer("p17", 32768, params_path, &mut function_context); - add_buffer("p18", 32768, params_path, &mut function_context); - add_buffer("p19", 4194304, params_path, &mut function_context); - add_buffer("p20", 32768, params_path, &mut function_context); - add_buffer("p21", 32768, params_path, &mut function_context); - add_buffer("p22", 16384, params_path, &mut function_context); - add_buffer("p23", 4194304, params_path, &mut function_context); - add_buffer("p24", 16777216, params_path, &mut function_context); - add_buffer("p25", 8192, params_path, &mut function_context); - add_buffer("p26", 67108864, params_path, &mut function_context); - add_buffer("p27", 67108864, params_path, &mut function_context); - add_buffer("p28", 67108864, params_path, &mut function_context); - add_buffer("p29", 8192, params_path, &mut function_context); - add_buffer("p30", 16777216, params_path, &mut function_context); - add_buffer("p31", 32768, params_path, &mut function_context); - add_buffer("p32", 32768, params_path, &mut function_context); - add_buffer("p33", 4194304, params_path, &mut function_context); - add_buffer("p34", 32768, params_path, &mut function_context); - add_buffer("p35", 32768, params_path, &mut function_context); - add_buffer("p36", 16384, params_path, &mut function_context); - add_buffer("p37", 4194304, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p39", 8192, params_path, &mut function_context); - add_buffer("p40", 67108864, params_path, &mut function_context); - add_buffer("p41", 67108864, params_path, &mut function_context); - add_buffer("p42", 67108864, params_path, &mut function_context); - add_buffer("p43", 8192, params_path, &mut function_context); - add_buffer("p44", 16777216, params_path, &mut function_context); - add_buffer("p45", 32768, params_path, &mut function_context); - add_buffer("p46", 32768, params_path, &mut function_context); - add_buffer("p47", 4194304, params_path, &mut function_context); - add_buffer("p48", 32768, params_path, &mut function_context); - add_buffer("p49", 32768, params_path, &mut function_context); - add_buffer("p50", 16384, params_path, &mut function_context); - add_buffer("p51", 4194304, params_path, &mut function_context); - add_buffer("p52", 16777216, params_path, &mut function_context); - add_buffer("p53", 8192, params_path, &mut function_context); - add_buffer("p54", 67108864, params_path, &mut function_context); - add_buffer("p55", 67108864, params_path, &mut function_context); - add_buffer("p56", 67108864, params_path, &mut function_context); - add_buffer("p57", 8192, params_path, &mut function_context); - add_buffer("p58", 16777216, params_path, &mut function_context); - add_buffer("p59", 32768, params_path, &mut function_context); - add_buffer("p60", 32768, params_path, &mut function_context); - add_buffer("p61", 4194304, params_path, &mut function_context); - add_buffer("p62", 32768, params_path, &mut function_context); - add_buffer("p63", 32768, params_path, &mut function_context); - add_buffer("p64", 16384, params_path, &mut function_context); - add_buffer("p65", 4194304, params_path, &mut function_context); - add_buffer("p66", 16777216, params_path, &mut function_context); - add_buffer("p67", 8192, params_path, &mut function_context); - add_buffer("p68", 67108864, params_path, &mut function_context); - add_buffer("p69", 67108864, params_path, &mut function_context); - add_buffer("p70", 67108864, params_path, &mut function_context); - add_buffer("p71", 8192, params_path, &mut function_context); - add_buffer("p72", 16777216, params_path, &mut function_context); - add_buffer("p73", 32768, params_path, &mut function_context); - add_buffer("p74", 32768, params_path, &mut function_context); - add_buffer("p75", 4194304, params_path, &mut function_context); - add_buffer("p76", 32768, params_path, &mut function_context); - add_buffer("p77", 32768, params_path, &mut function_context); - add_buffer("p78", 16384, params_path, &mut function_context); - add_buffer("p79", 4194304, params_path, &mut function_context); - add_buffer("p80", 16777216, params_path, &mut function_context); - add_buffer("p81", 8192, params_path, &mut function_context); - add_buffer("p82", 67108864, params_path, &mut function_context); - add_buffer("p83", 67108864, params_path, &mut function_context); - add_buffer("p84", 67108864, params_path, &mut function_context); - add_buffer("p85", 8192, params_path, &mut function_context); - add_buffer("p86", 16777216, params_path, &mut function_context); - add_buffer("p87", 32768, params_path, &mut function_context); - add_buffer("p88", 32768, params_path, &mut function_context); - add_buffer("p89", 4194304, params_path, &mut function_context); - add_buffer("p90", 32768, params_path, &mut function_context); - add_buffer("p91", 32768, params_path, &mut function_context); - add_buffer("p92", 16384, params_path, &mut function_context); - add_buffer("p93", 4194304, params_path, &mut function_context); - add_buffer("p94", 16777216, params_path, &mut function_context); - add_buffer("p95", 8192, params_path, &mut function_context); - add_buffer("p96", 67108864, params_path, &mut function_context); - add_buffer("p97", 67108864, params_path, &mut function_context); - add_buffer("p98", 67108864, params_path, &mut function_context); - add_buffer("p99", 8192, params_path, &mut function_context); - add_buffer("p100", 16777216, params_path, &mut function_context); - add_buffer("p101", 32768, params_path, &mut function_context); - add_buffer("p102", 32768, params_path, &mut function_context); - add_buffer("p103", 4194304, params_path, &mut function_context); - add_buffer("p104", 32768, params_path, &mut function_context); - add_buffer("p105", 32768, params_path, &mut function_context); - add_buffer("p106", 16384, params_path, &mut function_context); - add_buffer("p107", 4194304, params_path, &mut function_context); - add_buffer("p108", 16777216, params_path, &mut function_context); - add_buffer("p109", 8192, params_path, &mut function_context); - add_buffer("p110", 67108864, params_path, &mut function_context); - add_buffer("p111", 67108864, params_path, &mut function_context); - add_buffer("p112", 67108864, params_path, &mut function_context); - add_buffer("p113", 8192, params_path, &mut function_context); - add_buffer("p114", 16777216, params_path, &mut function_context); - add_buffer("p115", 32768, params_path, &mut function_context); - add_buffer("p116", 32768, params_path, &mut function_context); - add_buffer("p117", 4194304, params_path, &mut function_context); - add_buffer("p118", 32768, params_path, &mut function_context); - add_buffer("p119", 32768, params_path, &mut function_context); - add_buffer("p120", 16384, params_path, &mut function_context); - add_buffer("p121", 4194304, params_path, &mut function_context); - add_buffer("p122", 16777216, params_path, &mut function_context); - add_buffer("p123", 8192, params_path, &mut function_context); - add_buffer("p124", 67108864, params_path, &mut function_context); - add_buffer("p125", 67108864, params_path, &mut function_context); - add_buffer("p126", 67108864, params_path, &mut function_context); - add_buffer("p127", 8192, params_path, &mut function_context); - add_buffer("p128", 16777216, params_path, &mut function_context); - add_buffer("p129", 32768, params_path, &mut function_context); - add_buffer("p130", 32768, params_path, &mut function_context); - add_buffer("p131", 4194304, params_path, &mut function_context); - add_buffer("p132", 32768, params_path, &mut function_context); - add_buffer("p133", 32768, params_path, &mut function_context); - add_buffer("p134", 16384, params_path, &mut function_context); - add_buffer("p135", 4194304, params_path, &mut function_context); - add_buffer("p136", 16777216, params_path, &mut function_context); - add_buffer("p137", 8192, params_path, &mut function_context); - add_buffer("p138", 67108864, params_path, &mut function_context); - add_buffer("p139", 67108864, params_path, &mut function_context); - add_buffer("p140", 67108864, params_path, &mut function_context); - add_buffer("p141", 8192, params_path, &mut function_context); - add_buffer("p142", 16777216, params_path, &mut function_context); - add_buffer("p143", 32768, params_path, &mut function_context); - add_buffer("p144", 32768, params_path, &mut function_context); - add_buffer("p145", 4194304, params_path, &mut function_context); - add_buffer("p146", 32768, params_path, &mut function_context); - add_buffer("p147", 32768, params_path, &mut function_context); - add_buffer("p148", 16384, params_path, &mut function_context); - add_buffer("p149", 4194304, params_path, &mut function_context); - add_buffer("p150", 16777216, params_path, &mut function_context); - add_buffer("p151", 8192, params_path, &mut function_context); - add_buffer("p152", 67108864, params_path, &mut function_context); - add_buffer("p153", 67108864, params_path, &mut function_context); - add_buffer("p154", 67108864, params_path, &mut function_context); - add_buffer("p155", 8192, params_path, &mut function_context); - add_buffer("p156", 16777216, params_path, &mut function_context); - add_buffer("p157", 32768, params_path, &mut function_context); - add_buffer("p158", 32768, params_path, &mut function_context); - add_buffer("p159", 4194304, params_path, &mut function_context); - add_buffer("p160", 32768, params_path, &mut function_context); - add_buffer("p161", 32768, params_path, &mut function_context); - add_buffer("p162", 16384, params_path, &mut function_context); - add_buffer("p163", 4194304, params_path, &mut function_context); - add_buffer("p164", 16777216, params_path, &mut function_context); - add_buffer("p165", 8192, params_path, &mut function_context); - add_buffer("p166", 67108864, params_path, &mut function_context); - add_buffer("p167", 67108864, params_path, &mut function_context); - add_buffer("p168", 67108864, params_path, &mut function_context); - add_buffer("p169", 8192, params_path, &mut function_context); - add_buffer("p170", 16777216, params_path, &mut function_context); - add_buffer("p171", 32768, params_path, &mut function_context); - add_buffer("p172", 32768, params_path, &mut function_context); - add_buffer("p173", 4194304, params_path, &mut function_context); - add_buffer("p174", 32768, params_path, &mut function_context); - add_buffer("p175", 32768, params_path, &mut function_context); - add_buffer("p176", 16384, params_path, &mut function_context); - add_buffer("p177", 4194304, params_path, &mut function_context); - add_buffer("p178", 16777216, params_path, &mut function_context); - add_buffer("p179", 8192, params_path, &mut function_context); - add_buffer("p180", 67108864, params_path, &mut function_context); - add_buffer("p181", 67108864, params_path, &mut function_context); - add_buffer("p182", 67108864, params_path, &mut function_context); - add_buffer("p183", 8192, params_path, &mut function_context); - add_buffer("p184", 16777216, params_path, &mut function_context); - add_buffer("p185", 32768, params_path, &mut function_context); - add_buffer("p186", 32768, params_path, &mut function_context); - add_buffer("p187", 4194304, params_path, &mut function_context); - add_buffer("p188", 32768, params_path, &mut function_context); - add_buffer("p189", 32768, params_path, &mut function_context); - add_buffer("p190", 16384, params_path, &mut function_context); - add_buffer("p191", 4194304, params_path, &mut function_context); - add_buffer("p192", 16777216, params_path, &mut function_context); - add_buffer("p193", 8192, params_path, &mut function_context); - add_buffer("p194", 67108864, params_path, &mut function_context); - add_buffer("p195", 67108864, params_path, &mut function_context); - add_buffer("p196", 67108864, params_path, &mut function_context); - add_buffer("p197", 8192, params_path, &mut function_context); - add_buffer("p198", 16777216, params_path, &mut function_context); - add_buffer("p199", 32768, params_path, &mut function_context); - add_buffer("p200", 32768, params_path, &mut function_context); - add_buffer("p201", 4194304, params_path, &mut function_context); - add_buffer("p202", 32768, params_path, &mut function_context); - add_buffer("p203", 32768, params_path, &mut function_context); - add_buffer("p204", 16384, params_path, &mut function_context); - add_buffer("p205", 4194304, params_path, &mut function_context); - add_buffer("p206", 16777216, params_path, &mut function_context); - add_buffer("p207", 8192, params_path, &mut function_context); - add_buffer("p208", 67108864, params_path, &mut function_context); - add_buffer("p209", 67108864, params_path, &mut function_context); - add_buffer("p210", 67108864, params_path, &mut function_context); - add_buffer("p211", 8192, params_path, &mut function_context); - add_buffer("p212", 16777216, params_path, &mut function_context); - add_buffer("p213", 32768, params_path, &mut function_context); - add_buffer("p214", 32768, params_path, &mut function_context); - add_buffer("p215", 4194304, params_path, &mut function_context); - add_buffer("p216", 32768, params_path, &mut function_context); - add_buffer("p217", 32768, params_path, &mut function_context); - add_buffer("p218", 16384, params_path, &mut function_context); - add_buffer("p219", 4194304, params_path, &mut function_context); - add_buffer("p220", 16777216, params_path, &mut function_context); - add_buffer("p221", 8192, params_path, &mut function_context); - add_buffer("p222", 67108864, params_path, &mut function_context); - add_buffer("p223", 67108864, params_path, &mut function_context); - add_buffer("p224", 67108864, params_path, &mut function_context); - add_buffer("p225", 8192, params_path, &mut function_context); - add_buffer("p226", 1050673152, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 65667072; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_llm(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llm/"; @@ -1380,3 +1128,569 @@ pub fn load_llm(mut function_context: Context) -> (usize, String, Vec, Cont (output_size, output_name.to_string(), expected, function_context) } + +pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Context) { + add_number("times", 87, &mut function_context); + + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; + + add_buffer("token_ids", 1024, params_path, &mut function_context); + add_buffer("p0", 1050673152, params_path, &mut function_context); + add_buffer("p1", 8192, params_path, &mut function_context); + add_buffer("p2", 16777216, params_path, &mut function_context); + add_buffer("p3", 32768, params_path, &mut function_context); + add_buffer("p4", 32768, params_path, &mut function_context); + add_buffer("p5", 4194304, params_path, &mut function_context); + add_buffer("p6", 32768, params_path, &mut function_context); + add_buffer("p7", 32768, params_path, &mut function_context); + add_buffer("p8", 16384, params_path, &mut function_context); + add_buffer("p9", 4194304, params_path, &mut function_context); + add_buffer("p10", 16777216, params_path, &mut function_context); + add_buffer("p11", 8192, params_path, &mut function_context); + add_buffer("p12", 67108864, params_path, &mut function_context); + add_buffer("p13", 67108864, params_path, &mut function_context); + add_buffer("p14", 67108864, params_path, &mut function_context); + add_buffer("p15", 8192, params_path, &mut function_context); + add_buffer("p16", 16777216, params_path, &mut function_context); + add_buffer("p17", 32768, params_path, &mut function_context); + add_buffer("p18", 32768, params_path, &mut function_context); + add_buffer("p19", 4194304, params_path, &mut function_context); + add_buffer("p20", 32768, params_path, &mut function_context); + add_buffer("p21", 32768, params_path, &mut function_context); + add_buffer("p22", 16384, params_path, &mut function_context); + add_buffer("p23", 4194304, params_path, &mut function_context); + add_buffer("p24", 16777216, params_path, &mut function_context); + add_buffer("p25", 8192, params_path, &mut function_context); + add_buffer("p26", 67108864, params_path, &mut function_context); + add_buffer("p27", 67108864, params_path, &mut function_context); + add_buffer("p28", 67108864, params_path, &mut function_context); + add_buffer("p29", 8192, params_path, &mut function_context); + add_buffer("p30", 16777216, params_path, &mut function_context); + add_buffer("p31", 32768, params_path, &mut function_context); + add_buffer("p32", 32768, params_path, &mut function_context); + add_buffer("p33", 4194304, params_path, &mut function_context); + add_buffer("p34", 32768, params_path, &mut function_context); + add_buffer("p35", 32768, params_path, &mut function_context); + add_buffer("p36", 16384, params_path, &mut function_context); + add_buffer("p37", 4194304, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 8192, params_path, &mut function_context); + add_buffer("p40", 67108864, params_path, &mut function_context); + add_buffer("p41", 67108864, params_path, &mut function_context); + add_buffer("p42", 67108864, params_path, &mut function_context); + add_buffer("p43", 8192, params_path, &mut function_context); + add_buffer("p44", 16777216, params_path, &mut function_context); + add_buffer("p45", 32768, params_path, &mut function_context); + add_buffer("p46", 32768, params_path, &mut function_context); + add_buffer("p47", 4194304, params_path, &mut function_context); + add_buffer("p48", 32768, params_path, &mut function_context); + add_buffer("p49", 32768, params_path, &mut function_context); + add_buffer("p50", 16384, params_path, &mut function_context); + add_buffer("p51", 4194304, params_path, &mut function_context); + add_buffer("p52", 16777216, params_path, &mut function_context); + add_buffer("p53", 8192, params_path, &mut function_context); + add_buffer("p54", 67108864, params_path, &mut function_context); + add_buffer("p55", 67108864, params_path, &mut function_context); + add_buffer("p56", 67108864, params_path, &mut function_context); + add_buffer("p57", 8192, params_path, &mut function_context); + add_buffer("p58", 16777216, params_path, &mut function_context); + add_buffer("p59", 32768, params_path, &mut function_context); + add_buffer("p60", 32768, params_path, &mut function_context); + add_buffer("p61", 4194304, params_path, &mut function_context); + add_buffer("p62", 32768, params_path, &mut function_context); + add_buffer("p63", 32768, params_path, &mut function_context); + add_buffer("p64", 16384, params_path, &mut function_context); + add_buffer("p65", 4194304, params_path, &mut function_context); + add_buffer("p66", 16777216, params_path, &mut function_context); + add_buffer("p67", 8192, params_path, &mut function_context); + add_buffer("p68", 67108864, params_path, &mut function_context); + add_buffer("p69", 67108864, params_path, &mut function_context); + add_buffer("p70", 67108864, params_path, &mut function_context); + add_buffer("p71", 8192, params_path, &mut function_context); + add_buffer("p72", 16777216, params_path, &mut function_context); + add_buffer("p73", 32768, params_path, &mut function_context); + add_buffer("p74", 32768, params_path, &mut function_context); + add_buffer("p75", 4194304, params_path, &mut function_context); + add_buffer("p76", 32768, params_path, &mut function_context); + add_buffer("p77", 32768, params_path, &mut function_context); + add_buffer("p78", 16384, params_path, &mut function_context); + add_buffer("p79", 4194304, params_path, &mut function_context); + add_buffer("p80", 16777216, params_path, &mut function_context); + add_buffer("p81", 8192, params_path, &mut function_context); + add_buffer("p82", 67108864, params_path, &mut function_context); + add_buffer("p83", 67108864, params_path, &mut function_context); + add_buffer("p84", 67108864, params_path, &mut function_context); + add_buffer("p85", 8192, params_path, &mut function_context); + add_buffer("p86", 16777216, params_path, &mut function_context); + add_buffer("p87", 32768, params_path, &mut function_context); + add_buffer("p88", 32768, params_path, &mut function_context); + add_buffer("p89", 4194304, params_path, &mut function_context); + add_buffer("p90", 32768, params_path, &mut function_context); + add_buffer("p91", 32768, params_path, &mut function_context); + add_buffer("p92", 16384, params_path, &mut function_context); + add_buffer("p93", 4194304, params_path, &mut function_context); + add_buffer("p94", 16777216, params_path, &mut function_context); + add_buffer("p95", 8192, params_path, &mut function_context); + add_buffer("p96", 67108864, params_path, &mut function_context); + add_buffer("p97", 67108864, params_path, &mut function_context); + add_buffer("p98", 67108864, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 16777216, params_path, &mut function_context); + add_buffer("p101", 32768, params_path, &mut function_context); + add_buffer("p102", 32768, params_path, &mut function_context); + add_buffer("p103", 4194304, params_path, &mut function_context); + add_buffer("p104", 32768, params_path, &mut function_context); + add_buffer("p105", 32768, params_path, &mut function_context); + add_buffer("p106", 16384, params_path, &mut function_context); + add_buffer("p107", 4194304, params_path, &mut function_context); + add_buffer("p108", 16777216, params_path, &mut function_context); + add_buffer("p109", 8192, params_path, &mut function_context); + add_buffer("p110", 67108864, params_path, &mut function_context); + add_buffer("p111", 67108864, params_path, &mut function_context); + add_buffer("p112", 67108864, params_path, &mut function_context); + add_buffer("p113", 8192, params_path, &mut function_context); + add_buffer("p114", 16777216, params_path, &mut function_context); + add_buffer("p115", 32768, params_path, &mut function_context); + add_buffer("p116", 32768, params_path, &mut function_context); + add_buffer("p117", 4194304, params_path, &mut function_context); + add_buffer("p118", 32768, params_path, &mut function_context); + add_buffer("p119", 32768, params_path, &mut function_context); + add_buffer("p120", 16384, params_path, &mut function_context); + add_buffer("p121", 4194304, params_path, &mut function_context); + add_buffer("p122", 16777216, params_path, &mut function_context); + add_buffer("p123", 8192, params_path, &mut function_context); + add_buffer("p124", 67108864, params_path, &mut function_context); + add_buffer("p125", 67108864, params_path, &mut function_context); + add_buffer("p126", 67108864, params_path, &mut function_context); + add_buffer("p127", 8192, params_path, &mut function_context); + add_buffer("p128", 16777216, params_path, &mut function_context); + add_buffer("p129", 32768, params_path, &mut function_context); + add_buffer("p130", 32768, params_path, &mut function_context); + add_buffer("p131", 4194304, params_path, &mut function_context); + add_buffer("p132", 32768, params_path, &mut function_context); + add_buffer("p133", 32768, params_path, &mut function_context); + add_buffer("p134", 16384, params_path, &mut function_context); + add_buffer("p135", 4194304, params_path, &mut function_context); + add_buffer("p136", 16777216, params_path, &mut function_context); + add_buffer("p137", 8192, params_path, &mut function_context); + add_buffer("p138", 67108864, params_path, &mut function_context); + add_buffer("p139", 67108864, params_path, &mut function_context); + add_buffer("p140", 67108864, params_path, &mut function_context); + add_buffer("p141", 8192, params_path, &mut function_context); + add_buffer("p142", 16777216, params_path, &mut function_context); + add_buffer("p143", 32768, params_path, &mut function_context); + add_buffer("p144", 32768, params_path, &mut function_context); + add_buffer("p145", 4194304, params_path, &mut function_context); + add_buffer("p146", 32768, params_path, &mut function_context); + add_buffer("p147", 32768, params_path, &mut function_context); + add_buffer("p148", 16384, params_path, &mut function_context); + add_buffer("p149", 4194304, params_path, &mut function_context); + add_buffer("p150", 16777216, params_path, &mut function_context); + add_buffer("p151", 8192, params_path, &mut function_context); + add_buffer("p152", 67108864, params_path, &mut function_context); + add_buffer("p153", 67108864, params_path, &mut function_context); + add_buffer("p154", 67108864, params_path, &mut function_context); + add_buffer("p155", 8192, params_path, &mut function_context); + add_buffer("p156", 16777216, params_path, &mut function_context); + add_buffer("p157", 32768, params_path, &mut function_context); + add_buffer("p158", 32768, params_path, &mut function_context); + add_buffer("p159", 4194304, params_path, &mut function_context); + add_buffer("p160", 32768, params_path, &mut function_context); + add_buffer("p161", 32768, params_path, &mut function_context); + add_buffer("p162", 16384, params_path, &mut function_context); + add_buffer("p163", 4194304, params_path, &mut function_context); + add_buffer("p164", 16777216, params_path, &mut function_context); + add_buffer("p165", 8192, params_path, &mut function_context); + add_buffer("p166", 67108864, params_path, &mut function_context); + add_buffer("p167", 67108864, params_path, &mut function_context); + add_buffer("p168", 67108864, params_path, &mut function_context); + add_buffer("p169", 8192, params_path, &mut function_context); + add_buffer("p170", 16777216, params_path, &mut function_context); + add_buffer("p171", 32768, params_path, &mut function_context); + add_buffer("p172", 32768, params_path, &mut function_context); + add_buffer("p173", 4194304, params_path, &mut function_context); + add_buffer("p174", 32768, params_path, &mut function_context); + add_buffer("p175", 32768, params_path, &mut function_context); + add_buffer("p176", 16384, params_path, &mut function_context); + add_buffer("p177", 4194304, params_path, &mut function_context); + add_buffer("p178", 16777216, params_path, &mut function_context); + add_buffer("p179", 8192, params_path, &mut function_context); + add_buffer("p180", 67108864, params_path, &mut function_context); + add_buffer("p181", 67108864, params_path, &mut function_context); + add_buffer("p182", 67108864, params_path, &mut function_context); + add_buffer("p183", 8192, params_path, &mut function_context); + add_buffer("p184", 16777216, params_path, &mut function_context); + add_buffer("p185", 32768, params_path, &mut function_context); + add_buffer("p186", 32768, params_path, &mut function_context); + add_buffer("p187", 4194304, params_path, &mut function_context); + add_buffer("p188", 32768, params_path, &mut function_context); + add_buffer("p189", 32768, params_path, &mut function_context); + add_buffer("p190", 16384, params_path, &mut function_context); + add_buffer("p191", 4194304, params_path, &mut function_context); + add_buffer("p192", 16777216, params_path, &mut function_context); + add_buffer("p193", 8192, params_path, &mut function_context); + add_buffer("p194", 67108864, params_path, &mut function_context); + add_buffer("p195", 67108864, params_path, &mut function_context); + add_buffer("p196", 67108864, params_path, &mut function_context); + add_buffer("p197", 8192, params_path, &mut function_context); + add_buffer("p198", 16777216, params_path, &mut function_context); + add_buffer("p199", 32768, params_path, &mut function_context); + add_buffer("p200", 32768, params_path, &mut function_context); + add_buffer("p201", 4194304, params_path, &mut function_context); + add_buffer("p202", 32768, params_path, &mut function_context); + add_buffer("p203", 32768, params_path, &mut function_context); + add_buffer("p204", 16384, params_path, &mut function_context); + add_buffer("p205", 4194304, params_path, &mut function_context); + add_buffer("p206", 16777216, params_path, &mut function_context); + add_buffer("p207", 8192, params_path, &mut function_context); + add_buffer("p208", 67108864, params_path, &mut function_context); + add_buffer("p209", 67108864, params_path, &mut function_context); + add_buffer("p210", 67108864, params_path, &mut function_context); + add_buffer("p211", 8192, params_path, &mut function_context); + add_buffer("p212", 16777216, params_path, &mut function_context); + add_buffer("p213", 32768, params_path, &mut function_context); + add_buffer("p214", 32768, params_path, &mut function_context); + add_buffer("p215", 4194304, params_path, &mut function_context); + add_buffer("p216", 32768, params_path, &mut function_context); + add_buffer("p217", 32768, params_path, &mut function_context); + add_buffer("p218", 16384, params_path, &mut function_context); + add_buffer("p219", 4194304, params_path, &mut function_context); + add_buffer("p220", 16777216, params_path, &mut function_context); + add_buffer("p221", 8192, params_path, &mut function_context); + add_buffer("p222", 67108864, params_path, &mut function_context); + add_buffer("p223", 67108864, params_path, &mut function_context); + add_buffer("p224", 67108864, params_path, &mut function_context); + add_buffer("p225", 8192, params_path, &mut function_context); + add_buffer("p226", 1050673152, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 65667072; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; + + add_buffer("test", 16, params_path, &mut function_context); + add_buffer("p0", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; + + add_buffer("token_ids", 1024, params_path, &mut function_context); + + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama_kv/"; + + // add_buffer("token_id", 8, params_path, &mut function_context); + // add_buffer("index", 8, params_path, &mut function_context); + add_buffer("keys", 16777216, params_path, &mut function_context); + add_buffer("values", 16777216, params_path, &mut function_context); + add_buffer("cos", 65536, params_path, &mut function_context); + add_buffer("sin", 65536, params_path, &mut function_context); + add_buffer("p0", 1024, params_path, &mut function_context); + add_buffer("p1", 1024, params_path, &mut function_context); + add_buffer("p2", 1024, params_path, &mut function_context); + add_buffer("p3", 1024, params_path, &mut function_context); + add_buffer("p4", 1024, params_path, &mut function_context); + add_buffer("p5", 1024, params_path, &mut function_context); + add_buffer("p6", 1024, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 1024, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 1024, params_path, &mut function_context); + add_buffer("p11", 1024, params_path, &mut function_context); + add_buffer("p12", 1024, params_path, &mut function_context); + add_buffer("p13", 1024, params_path, &mut function_context); + add_buffer("p14", 1024, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 1050673152, params_path, &mut function_context); + add_buffer("p17", 8192, params_path, &mut function_context); + add_buffer("p18", 16777216, params_path, &mut function_context); + add_buffer("p19", 8, params_path, &mut function_context); + add_buffer("p20", 16384, params_path, &mut function_context); + add_buffer("p21", 16384, params_path, &mut function_context); + add_buffer("p22", 16384, params_path, &mut function_context); + add_buffer("p23", 4194304, params_path, &mut function_context); + add_buffer("p24", 16384, params_path, &mut function_context); + add_buffer("p25", 16384, params_path, &mut function_context); + add_buffer("p26", 16384, params_path, &mut function_context); + add_buffer("p27", 16384, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 16777216, params_path, &mut function_context); + add_buffer("p30", 8192, params_path, &mut function_context); + add_buffer("p31", 67108864, params_path, &mut function_context); + add_buffer("p32", 67108864, params_path, &mut function_context); + add_buffer("p33", 67108864, params_path, &mut function_context); + add_buffer("p34", 8192, params_path, &mut function_context); + add_buffer("p35", 16777216, params_path, &mut function_context); + add_buffer("p36", 8, params_path, &mut function_context); + add_buffer("p37", 16384, params_path, &mut function_context); + add_buffer("p38", 16384, params_path, &mut function_context); + add_buffer("p39", 16384, params_path, &mut function_context); + add_buffer("p40", 4194304, params_path, &mut function_context); + add_buffer("p41", 16384, params_path, &mut function_context); + add_buffer("p42", 16384, params_path, &mut function_context); + add_buffer("p43", 16384, params_path, &mut function_context); + add_buffer("p44", 16384, params_path, &mut function_context); + add_buffer("p45", 4194304, params_path, &mut function_context); + add_buffer("p46", 16777216, params_path, &mut function_context); + add_buffer("p47", 8192, params_path, &mut function_context); + add_buffer("p48", 67108864, params_path, &mut function_context); + add_buffer("p49", 67108864, params_path, &mut function_context); + add_buffer("p50", 67108864, params_path, &mut function_context); + add_buffer("p51", 8192, params_path, &mut function_context); + add_buffer("p52", 16777216, params_path, &mut function_context); + add_buffer("p53", 8, params_path, &mut function_context); + add_buffer("p54", 16384, params_path, &mut function_context); + add_buffer("p55", 16384, params_path, &mut function_context); + add_buffer("p56", 16384, params_path, &mut function_context); + add_buffer("p57", 4194304, params_path, &mut function_context); + add_buffer("p58", 16384, params_path, &mut function_context); + add_buffer("p59", 16384, params_path, &mut function_context); + add_buffer("p60", 16384, params_path, &mut function_context); + add_buffer("p61", 16384, params_path, &mut function_context); + add_buffer("p62", 4194304, params_path, &mut function_context); + add_buffer("p63", 16777216, params_path, &mut function_context); + add_buffer("p64", 8192, params_path, &mut function_context); + add_buffer("p65", 67108864, params_path, &mut function_context); + add_buffer("p66", 67108864, params_path, &mut function_context); + add_buffer("p67", 67108864, params_path, &mut function_context); + add_buffer("p68", 8192, params_path, &mut function_context); + add_buffer("p69", 16777216, params_path, &mut function_context); + add_buffer("p70", 8, params_path, &mut function_context); + add_buffer("p71", 16384, params_path, &mut function_context); + add_buffer("p72", 16384, params_path, &mut function_context); + add_buffer("p73", 16384, params_path, &mut function_context); + add_buffer("p74", 4194304, params_path, &mut function_context); + add_buffer("p75", 16384, params_path, &mut function_context); + add_buffer("p76", 16384, params_path, &mut function_context); + add_buffer("p77", 16384, params_path, &mut function_context); + add_buffer("p78", 16384, params_path, &mut function_context); + add_buffer("p79", 4194304, params_path, &mut function_context); + add_buffer("p80", 16777216, params_path, &mut function_context); + add_buffer("p81", 8192, params_path, &mut function_context); + add_buffer("p82", 67108864, params_path, &mut function_context); + add_buffer("p83", 67108864, params_path, &mut function_context); + add_buffer("p84", 67108864, params_path, &mut function_context); + add_buffer("p85", 8192, params_path, &mut function_context); + add_buffer("p86", 16777216, params_path, &mut function_context); + add_buffer("p87", 8, params_path, &mut function_context); + add_buffer("p88", 16384, params_path, &mut function_context); + add_buffer("p89", 16384, params_path, &mut function_context); + add_buffer("p90", 16384, params_path, &mut function_context); + add_buffer("p91", 4194304, params_path, &mut function_context); + add_buffer("p92", 16384, params_path, &mut function_context); + add_buffer("p93", 16384, params_path, &mut function_context); + add_buffer("p94", 16384, params_path, &mut function_context); + add_buffer("p95", 16384, params_path, &mut function_context); + add_buffer("p96", 4194304, params_path, &mut function_context); + add_buffer("p97", 16777216, params_path, &mut function_context); + add_buffer("p98", 8192, params_path, &mut function_context); + add_buffer("p99", 67108864, params_path, &mut function_context); + add_buffer("p100", 67108864, params_path, &mut function_context); + add_buffer("p101", 67108864, params_path, &mut function_context); + add_buffer("p102", 8192, params_path, &mut function_context); + add_buffer("p103", 16777216, params_path, &mut function_context); + add_buffer("p104", 8, params_path, &mut function_context); + add_buffer("p105", 16384, params_path, &mut function_context); + add_buffer("p106", 16384, params_path, &mut function_context); + add_buffer("p107", 16384, params_path, &mut function_context); + add_buffer("p108", 4194304, params_path, &mut function_context); + add_buffer("p109", 16384, params_path, &mut function_context); + add_buffer("p110", 16384, params_path, &mut function_context); + add_buffer("p111", 16384, params_path, &mut function_context); + add_buffer("p112", 16384, params_path, &mut function_context); + add_buffer("p113", 4194304, params_path, &mut function_context); + add_buffer("p114", 16777216, params_path, &mut function_context); + add_buffer("p115", 8192, params_path, &mut function_context); + add_buffer("p116", 67108864, params_path, &mut function_context); + add_buffer("p117", 67108864, params_path, &mut function_context); + add_buffer("p118", 67108864, params_path, &mut function_context); + add_buffer("p119", 8192, params_path, &mut function_context); + add_buffer("p120", 16777216, params_path, &mut function_context); + add_buffer("p121", 8, params_path, &mut function_context); + add_buffer("p122", 16384, params_path, &mut function_context); + add_buffer("p123", 16384, params_path, &mut function_context); + add_buffer("p124", 16384, params_path, &mut function_context); + add_buffer("p125", 4194304, params_path, &mut function_context); + add_buffer("p126", 16384, params_path, &mut function_context); + add_buffer("p127", 16384, params_path, &mut function_context); + add_buffer("p128", 16384, params_path, &mut function_context); + add_buffer("p129", 16384, params_path, &mut function_context); + add_buffer("p130", 4194304, params_path, &mut function_context); + add_buffer("p131", 16777216, params_path, &mut function_context); + add_buffer("p132", 8192, params_path, &mut function_context); + add_buffer("p133", 67108864, params_path, &mut function_context); + add_buffer("p134", 67108864, params_path, &mut function_context); + add_buffer("p135", 67108864, params_path, &mut function_context); + add_buffer("p136", 8192, params_path, &mut function_context); + add_buffer("p137", 16777216, params_path, &mut function_context); + add_buffer("p138", 8, params_path, &mut function_context); + add_buffer("p139", 16384, params_path, &mut function_context); + add_buffer("p140", 16384, params_path, &mut function_context); + add_buffer("p141", 16384, params_path, &mut function_context); + add_buffer("p142", 4194304, params_path, &mut function_context); + add_buffer("p143", 16384, params_path, &mut function_context); + add_buffer("p144", 16384, params_path, &mut function_context); + add_buffer("p145", 16384, params_path, &mut function_context); + add_buffer("p146", 16384, params_path, &mut function_context); + add_buffer("p147", 4194304, params_path, &mut function_context); + add_buffer("p148", 16777216, params_path, &mut function_context); + add_buffer("p149", 8192, params_path, &mut function_context); + add_buffer("p150", 67108864, params_path, &mut function_context); + add_buffer("p151", 67108864, params_path, &mut function_context); + add_buffer("p152", 67108864, params_path, &mut function_context); + add_buffer("p153", 8192, params_path, &mut function_context); + add_buffer("p154", 16777216, params_path, &mut function_context); + add_buffer("p155", 8, params_path, &mut function_context); + add_buffer("p156", 16384, params_path, &mut function_context); + add_buffer("p157", 16384, params_path, &mut function_context); + add_buffer("p158", 16384, params_path, &mut function_context); + add_buffer("p159", 4194304, params_path, &mut function_context); + add_buffer("p160", 16384, params_path, &mut function_context); + add_buffer("p161", 16384, params_path, &mut function_context); + add_buffer("p162", 16384, params_path, &mut function_context); + add_buffer("p163", 16384, params_path, &mut function_context); + add_buffer("p164", 4194304, params_path, &mut function_context); + add_buffer("p165", 16777216, params_path, &mut function_context); + add_buffer("p166", 8192, params_path, &mut function_context); + add_buffer("p167", 67108864, params_path, &mut function_context); + add_buffer("p168", 67108864, params_path, &mut function_context); + add_buffer("p169", 67108864, params_path, &mut function_context); + add_buffer("p170", 8192, params_path, &mut function_context); + add_buffer("p171", 16777216, params_path, &mut function_context); + add_buffer("p172", 8, params_path, &mut function_context); + add_buffer("p173", 16384, params_path, &mut function_context); + add_buffer("p174", 16384, params_path, &mut function_context); + add_buffer("p175", 16384, params_path, &mut function_context); + add_buffer("p176", 4194304, params_path, &mut function_context); + add_buffer("p177", 16384, params_path, &mut function_context); + add_buffer("p178", 16384, params_path, &mut function_context); + add_buffer("p179", 16384, params_path, &mut function_context); + add_buffer("p180", 16384, params_path, &mut function_context); + add_buffer("p181", 4194304, params_path, &mut function_context); + add_buffer("p182", 16777216, params_path, &mut function_context); + add_buffer("p183", 8192, params_path, &mut function_context); + add_buffer("p184", 67108864, params_path, &mut function_context); + add_buffer("p185", 67108864, params_path, &mut function_context); + add_buffer("p186", 67108864, params_path, &mut function_context); + add_buffer("p187", 8192, params_path, &mut function_context); + add_buffer("p188", 16777216, params_path, &mut function_context); + add_buffer("p189", 8, params_path, &mut function_context); + add_buffer("p190", 16384, params_path, &mut function_context); + add_buffer("p191", 16384, params_path, &mut function_context); + add_buffer("p192", 16384, params_path, &mut function_context); + add_buffer("p193", 4194304, params_path, &mut function_context); + add_buffer("p194", 16384, params_path, &mut function_context); + add_buffer("p195", 16384, params_path, &mut function_context); + add_buffer("p196", 16384, params_path, &mut function_context); + add_buffer("p197", 16384, params_path, &mut function_context); + add_buffer("p198", 4194304, params_path, &mut function_context); + add_buffer("p199", 16777216, params_path, &mut function_context); + add_buffer("p200", 8192, params_path, &mut function_context); + add_buffer("p201", 67108864, params_path, &mut function_context); + add_buffer("p202", 67108864, params_path, &mut function_context); + add_buffer("p203", 67108864, params_path, &mut function_context); + add_buffer("p204", 8192, params_path, &mut function_context); + add_buffer("p205", 16777216, params_path, &mut function_context); + add_buffer("p206", 8, params_path, &mut function_context); + add_buffer("p207", 16384, params_path, &mut function_context); + add_buffer("p208", 16384, params_path, &mut function_context); + add_buffer("p209", 16384, params_path, &mut function_context); + add_buffer("p210", 4194304, params_path, &mut function_context); + add_buffer("p211", 16384, params_path, &mut function_context); + add_buffer("p212", 16384, params_path, &mut function_context); + add_buffer("p213", 16384, params_path, &mut function_context); + add_buffer("p214", 16384, params_path, &mut function_context); + add_buffer("p215", 4194304, params_path, &mut function_context); + add_buffer("p216", 16777216, params_path, &mut function_context); + add_buffer("p217", 8192, params_path, &mut function_context); + add_buffer("p218", 67108864, params_path, &mut function_context); + add_buffer("p219", 67108864, params_path, &mut function_context); + add_buffer("p220", 67108864, params_path, &mut function_context); + add_buffer("p221", 8192, params_path, &mut function_context); + add_buffer("p222", 16777216, params_path, &mut function_context); + add_buffer("p223", 8, params_path, &mut function_context); + add_buffer("p224", 16384, params_path, &mut function_context); + add_buffer("p225", 16384, params_path, &mut function_context); + add_buffer("p226", 16384, params_path, &mut function_context); + add_buffer("p227", 4194304, params_path, &mut function_context); + add_buffer("p228", 16384, params_path, &mut function_context); + add_buffer("p229", 16384, params_path, &mut function_context); + add_buffer("p230", 16384, params_path, &mut function_context); + add_buffer("p231", 16384, params_path, &mut function_context); + add_buffer("p232", 4194304, params_path, &mut function_context); + add_buffer("p233", 16777216, params_path, &mut function_context); + add_buffer("p234", 8192, params_path, &mut function_context); + add_buffer("p235", 67108864, params_path, &mut function_context); + add_buffer("p236", 67108864, params_path, &mut function_context); + add_buffer("p237", 67108864, params_path, &mut function_context); + add_buffer("p238", 8192, params_path, &mut function_context); + add_buffer("p239", 16777216, params_path, &mut function_context); + add_buffer("p240", 8, params_path, &mut function_context); + add_buffer("p241", 16384, params_path, &mut function_context); + add_buffer("p242", 16384, params_path, &mut function_context); + add_buffer("p243", 16384, params_path, &mut function_context); + add_buffer("p244", 4194304, params_path, &mut function_context); + add_buffer("p245", 16384, params_path, &mut function_context); + add_buffer("p246", 16384, params_path, &mut function_context); + add_buffer("p247", 16384, params_path, &mut function_context); + add_buffer("p248", 16384, params_path, &mut function_context); + add_buffer("p249", 4194304, params_path, &mut function_context); + add_buffer("p250", 16777216, params_path, &mut function_context); + add_buffer("p251", 8192, params_path, &mut function_context); + add_buffer("p252", 67108864, params_path, &mut function_context); + add_buffer("p253", 67108864, params_path, &mut function_context); + add_buffer("p254", 67108864, params_path, &mut function_context); + add_buffer("p255", 8192, params_path, &mut function_context); + add_buffer("p256", 16777216, params_path, &mut function_context); + add_buffer("p257", 8, params_path, &mut function_context); + add_buffer("p258", 16384, params_path, &mut function_context); + add_buffer("p259", 16384, params_path, &mut function_context); + add_buffer("p260", 16384, params_path, &mut function_context); + add_buffer("p261", 4194304, params_path, &mut function_context); + add_buffer("p262", 16384, params_path, &mut function_context); + add_buffer("p263", 16384, params_path, &mut function_context); + add_buffer("p264", 16384, params_path, &mut function_context); + add_buffer("p265", 16384, params_path, &mut function_context); + add_buffer("p266", 4194304, params_path, &mut function_context); + add_buffer("p267", 16777216, params_path, &mut function_context); + add_buffer("p268", 8192, params_path, &mut function_context); + add_buffer("p269", 67108864, params_path, &mut function_context); + add_buffer("p270", 67108864, params_path, &mut function_context); + add_buffer("p271", 67108864, params_path, &mut function_context); + add_buffer("p272", 8192, params_path, &mut function_context); + add_buffer("p273", 16777216, params_path, &mut function_context); + add_buffer("p274", 8, params_path, &mut function_context); + add_buffer("p275", 16384, params_path, &mut function_context); + add_buffer("p276", 16384, params_path, &mut function_context); + add_buffer("p277", 16384, params_path, &mut function_context); + add_buffer("p278", 4194304, params_path, &mut function_context); + add_buffer("p279", 16384, params_path, &mut function_context); + add_buffer("p280", 16384, params_path, &mut function_context); + add_buffer("p281", 16384, params_path, &mut function_context); + add_buffer("p282", 16384, params_path, &mut function_context); + add_buffer("p283", 4194304, params_path, &mut function_context); + add_buffer("p284", 16777216, params_path, &mut function_context); + add_buffer("p285", 8192, params_path, &mut function_context); + add_buffer("p286", 67108864, params_path, &mut function_context); + add_buffer("p287", 67108864, params_path, &mut function_context); + add_buffer("p288", 67108864, params_path, &mut function_context); + add_buffer("p289", 8192, params_path, &mut function_context); + add_buffer("p290", 1050673152, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 1048576; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs index 44ec5e36..7a1262fd 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs @@ -73,3 +73,4 @@ pub fn add_buffer(name: &str, size: usize, path: &str, function_context: &mut Co }], })); } + diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index 3881136e..47d91518 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -16,7 +16,7 @@ pub fn setup_test(filename: &str) -> (Context, FunctionConfig, Box) { size: (1 << 38), // TODO(GPU) : choose a good value for the context size }; let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let drv_init = vec![ComputeResource::GPU(7, 2, 2)]; prepare_engine_and_function::(filename, dom_init, &driver, drv_init) } @@ -75,6 +75,48 @@ pub fn get_result(result_context: Context, output_size: usize, asserts: bool) -> read_buffer } +pub fn get_resulti32(result_context: Context, output_size: usize, asserts: bool) -> Vec { + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + if asserts { + assert_eq!(output_size, position.size, "Checking for size of output"); + } else { + println!( + "Expected output size: {output_size}\t\tActual size: {0}", + position.size + ); + } + let mut read_buffer = vec![0i32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + read_buffer +} + +pub fn get_resulti64(result_context: Context, output_size: usize, asserts: bool) -> Vec { + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + if asserts { + assert_eq!(output_size, position.size, "Checking for size of output"); + } else { + println!( + "Expected output size: {output_size}\t\tActual size: {0}", + position.size + ); + } + let mut read_buffer = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + read_buffer +} + pub fn compare_result(expected: Vec, read_buffer: Vec, asserts: bool) { const DELTA: f32 = 0.003; for (should, is) in expected.iter().zip(read_buffer.iter()) { diff --git a/machine_interface/tests/data/cuda/test_gpu_llama-full.json b/machine_interface/tests/data/cuda/test_gpu_llama-full.json new file mode 100644 index 00000000..ae344d5d --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_llama-full.json @@ -0,0 +1,3981 @@ +{ + "modules": [{"module_name": "llama.cubin", "path": "cuda/llama.cubin"}, {"module_name": "llm_inference.cubin", "path": "cuda/llm_inference.cubin"}], + "kernels": [ + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_4_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_reshape_where_divide_kernel"}, + {"module_name": "llama.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, + {"module_name": "llm_inference.cubin", "kernel_name": "initialize_index_from_token_ids"}, + {"module_name": "llm_inference.cubin", "kernel_name": "indexed_argmax_logits_and_append"} + ], + "blueprint": { + "inputs": ["token_ids", "times", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226"], + "buffers": {"index": {"Absolute": 8}, "output": {"Absolute": 65667072}, "b2": {"Absolute": 1048576}, "b3": {"Absolute": 512}, "b5": {"Absolute": 1048576}, "b8": {"Absolute": 4194304}, "b12": {"Absolute": 4194304}, "b234": {"Absolute": 16384}, "b235": {"Absolute": 2097152}}, + "outputs": ["token_ids"], + "control_flow": [ + {"ExecKernel": ["initialize_index_from_token_ids", [{"Ptr": "token_ids"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"Repeat": [{"FromInput": {"bufname": "times", "idx": 0}}, [ + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_kernel", [{"Ptr": "b2"}, {"Ptr": "token_ids"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p6"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}, {"Ptr": "p8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p10"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "output"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p17"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p30"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p31"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p34"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p42"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p45"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p54"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p59"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p68"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p72"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p73"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p76"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p80"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p84"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p87"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p90"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p101"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p108"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p110"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p115"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p118"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p122"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p126"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p127"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p128"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p129"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p132"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p139"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p140"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p143"}, {"Ptr": "p144"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p145"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p152"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p156"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p157"}, {"Ptr": "p158"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p160"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p164"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p170"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p171"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p174"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p176"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p180"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p182"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p185"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p190"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p192"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p194"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p195"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p196"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p198"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "p199"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b5"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p202"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "b12"}, {"Ptr": "b8"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b5"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "p208"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "output"}, {"Ptr": "b12"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b2"}, {"Ptr": "output"}, {"Ptr": "p210"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b12"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p212"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p213"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_98b283a43dfeffd8__kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p216"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_where_divide_kernel", [{"Ptr": "output"}, {"Ptr": "b8"}, {"Ptr": "p218"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b235"}, {"Ptr": "b234"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b235"}, {"Ptr": "b234"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_transpose_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p220"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p222"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "output"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b5"}, {"Ptr": "b12"}, {"Ptr": "p224"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "output"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b5"}, {"Ptr": "p226"}], { + "grid_dim_x": {"Absolute": 128256}, + "grid_dim_y": {"Absolute": 128}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["indexed_argmax_logits_and_append", [{"Ptr": "output"}, {"Ptr": "index"}, {"Ptr": "token_ids"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ]]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json new file mode 100644 index 00000000..de132f61 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json @@ -0,0 +1,5149 @@ +{ + "modules": [{"module_name": "llama_kv.cubin", "path": "cuda/llama_kv.cubin"}, {"module_name": "llm_inference.cubin", "path": "cuda/llm_inference.cubin"}], + "kernels": [ + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_divide_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_4_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_2_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_1_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_transpose_reshape_transpose_kernel"}, + {"module_name": "llm_inference.cubin", "kernel_name": "initialize_index"}, + {"module_name": "llm_inference.cubin", "kernel_name": "extract_token_from_tokens"}, + {"module_name": "llm_inference.cubin", "kernel_name": "argmax_logits_and_append"} + ], + "blueprint": { + "inputs": ["token_ids", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290", "p291", "p292", "p293", "p294", "p295", "p296", "p297", "p298", "p299", "p300", "p301", "p302", "p303", "p304", "p305", "p306"], + "buffers": {"index": {"Absolute": 8}, "token_id": {"Absolute": 8}, "output": {"Absolute": 1048576}, "b2": {"Absolute": 32768}, "b3": {"Absolute": 4}, "b5": {"Absolute": 32768}, "b7": {"Absolute": 16384}, "b8": {"Absolute": 32768}, "b14": {"Absolute": 8192}, "b18": {"Absolute": 1048576}, "b316": {"Absolute": 4096}, "b317": {"Absolute": 16384}}, + "outputs": ["token_ids"], + "control_flow": [ + {"ExecKernel": ["initialize_index", [{"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"Repeat": [{"Absolute": 128}, [ + {"ExecKernel": ["extract_token_from_tokens", [{"Ptr": "token_ids"}, {"Ptr": "index"}, {"Ptr": "token_id"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_kernel", [{"Ptr": "b2"}, {"Ptr": "token_id"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b8"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p6"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p10"}, {"Ptr": "p11"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p12"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p13"}, {"Ptr": "b5"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p20"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p27"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p24"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p25"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p29"}, {"Ptr": "p30"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p31"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p32"}, {"Ptr": "b7"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p34"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p41"}, {"Ptr": "p42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p46"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p43"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p44"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p48"}, {"Ptr": "p49"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p50"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p51"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p54"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p60"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p65"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p62"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p63"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p67"}, {"Ptr": "p68"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p69"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p70"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p72"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p76"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p79"}, {"Ptr": "p80"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p84"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p81"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p82"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p86"}, {"Ptr": "p87"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p90"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p88"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p89"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p103"}, {"Ptr": "p104"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p100"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p101"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p105"}, {"Ptr": "p106"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p107"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p108"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p110"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p117"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p122"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p119"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p120"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p124"}, {"Ptr": "p125"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p128"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p126"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p127"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p132"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p136"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p140"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p141"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p138"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p139"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p143"}, {"Ptr": "p144"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p145"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p146"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p152"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p155"}, {"Ptr": "p156"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p160"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p157"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p158"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p162"}, {"Ptr": "p163"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p164"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p165"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p170"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p174"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p179"}, {"Ptr": "p180"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p176"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p177"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p181"}, {"Ptr": "p182"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p183"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p184"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p188"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p190"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p192"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p193"}, {"Ptr": "p194"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p198"}, {"Ptr": "p199"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p195"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p196"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p200"}, {"Ptr": "p201"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p202"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p203"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p208"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p210"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p212"}, {"Ptr": "p213"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p216"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p217"}, {"Ptr": "p218"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p214"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p215"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p219"}, {"Ptr": "p220"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p221"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p222"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p224"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p226"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p227"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p228"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p229"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p230"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p231"}, {"Ptr": "p232"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p235"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p236"}, {"Ptr": "p237"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p233"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p234"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p238"}, {"Ptr": "p239"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p242"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p240"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p241"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p243"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p244"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p245"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p246"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p247"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p248"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p249"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p250"}, {"Ptr": "p251"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p254"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p255"}, {"Ptr": "p256"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p252"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p253"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p257"}, {"Ptr": "p258"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p261"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p259"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p260"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p262"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p263"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p264"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p265"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p266"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p267"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p268"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p269"}, {"Ptr": "p270"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p273"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p274"}, {"Ptr": "p275"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p271"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p272"}, {"Ptr": "b2"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p276"}, {"Ptr": "p277"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p280"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p278"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p279"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p281"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p282"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p283"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p284"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p285"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p286"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p287"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p288"}, {"Ptr": "p289"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p292"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p293"}, {"Ptr": "p294"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p290"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p291"}, {"Ptr": "b8"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4096}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p295"}, {"Ptr": "p296"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p299"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p297"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p298"}, {"Ptr": "b14"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p300"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p301"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p302"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p303"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p304"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p305"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b14"}, {"Ptr": "p306"}], { + "grid_dim_x": {"Absolute": 128256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["argmax_logits_and_append", [{"Ptr": "output"}, {"Ptr": "index"}, {"Ptr": "token_ids"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ]]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json new file mode 100644 index 00000000..c4919e4b --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json @@ -0,0 +1,5486 @@ +{ + "modules": [{"module_name": "llama_kv.cubin", "path": "cuda/llama_kv.cubin"}, {"module_name": "llm_inference.cubin", "path": "cuda/llm_inference.cubin"}], + "kernels": [ + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_add_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_concatenate_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_greater_equal_reshape_where_divide_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_4_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_2_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_expand_dims_expand_dims_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_transpose_reshape_transpose_kernel"}, + {"module_name": "llm_inference.cubin", "kernel_name": "initialize_index"}, + {"module_name": "llm_inference.cubin", "kernel_name": "extract_token_from_tokens"}, + {"module_name": "llm_inference.cubin", "kernel_name": "argmax_logits_and_append"} + ], + "blueprint": { + "inputs": ["token_ids", "keys", "values", "cos", "sin", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290"], + "buffers": {"token_id": {"Absolute": 8}, "index": {"Absolute": 8}, "output": {"Absolute": 1048576}, "b7": {"Absolute": 8}, "b24": {"Absolute": 8192}, "b25": {"Absolute": 8}, "b27": {"Absolute": 32768}, "b29": {"Absolute": 32768}, "b30": {"Absolute": 16384}, "b31": {"Absolute": 256}, "b32": {"Absolute": 256}, "b38": {"Absolute": 65536}, "b40": {"Absolute": 8192}, "b41": {"Absolute": 8192}, "b42": {"Absolute": 1048576}, "b48": {"Absolute": 1048576}, "b311": {"Absolute": 4096}, "b312": {"Absolute": 16384}}, + "outputs": ["token_ids", "keys"], + "control_flow": [ + {"ExecKernel": ["initialize_index", [{"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"Repeat": [{"Absolute": 128}, [ + {"ExecKernel": ["extract_token_from_tokens", [{"Ptr": "token_ids"}, {"Ptr": "index"}, {"Ptr": "token_id"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_add_kernel", [{"Ptr": "b7"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_kernel", [{"Ptr": "b24"}, {"Ptr": "token_id"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b30"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_less_add_where_kernel", [{"Ptr": "b25"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_expand_dims_expand_dims_kernel", [{"Ptr": "b31"}, {"Ptr": "cos"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_expand_dims_expand_dims_kernel", [{"Ptr": "b32"}, {"Ptr": "sin"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b29"}, {"Ptr": "b30"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel", [{"Ptr": "b30"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b30"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p15"}, {"Ptr": "b7"}, {"Ptr": "b38"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "b42"}, {"Ptr": "values"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p25"}, {"Ptr": "p26"}, {"Ptr": "b30"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p30"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p34"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p37"}, {"Ptr": "p38"}, {"Ptr": "b30"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b38"}, {"Ptr": "p14"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p42"}, {"Ptr": "p43"}, {"Ptr": "b30"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p48"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p54"}, {"Ptr": "p55"}, {"Ptr": "b30"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p13"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p59"}, {"Ptr": "p60"}, {"Ptr": "b30"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p62"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p68"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p71"}, {"Ptr": "p72"}, {"Ptr": "b30"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p12"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "b30"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p80"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p84"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p88"}, {"Ptr": "p89"}, {"Ptr": "b30"}, {"Ptr": "p90"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p11"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p93"}, {"Ptr": "p94"}, {"Ptr": "b30"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p104"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p105"}, {"Ptr": "p106"}, {"Ptr": "b30"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p108"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p10"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p104"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p110"}, {"Ptr": "p111"}, {"Ptr": "b30"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p122"}, {"Ptr": "p123"}, {"Ptr": "b30"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p9"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p126"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p127"}, {"Ptr": "p128"}, {"Ptr": "b30"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p132"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p139"}, {"Ptr": "p140"}, {"Ptr": "b30"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p8"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p144"}, {"Ptr": "p145"}, {"Ptr": "b30"}, {"Ptr": "p146"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p152"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p156"}, {"Ptr": "p157"}, {"Ptr": "b30"}, {"Ptr": "p158"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p7"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p160"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p161"}, {"Ptr": "p162"}, {"Ptr": "b30"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p164"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p170"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p173"}, {"Ptr": "p174"}, {"Ptr": "b30"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p176"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p6"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p178"}, {"Ptr": "p179"}, {"Ptr": "b30"}, {"Ptr": "p180"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p182"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p188"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p190"}, {"Ptr": "p191"}, {"Ptr": "b30"}, {"Ptr": "p192"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p5"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p194"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p195"}, {"Ptr": "p196"}, {"Ptr": "b30"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p198"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p199"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p202"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p207"}, {"Ptr": "p208"}, {"Ptr": "b30"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p210"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p4"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p212"}, {"Ptr": "p213"}, {"Ptr": "b30"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p216"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p218"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p220"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p222"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p224"}, {"Ptr": "p225"}, {"Ptr": "b30"}, {"Ptr": "p226"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p227"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p3"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p228"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p229"}, {"Ptr": "p230"}, {"Ptr": "b30"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p232"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p233"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p235"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p236"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p237"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p238"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p239"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p240"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p241"}, {"Ptr": "p242"}, {"Ptr": "b30"}, {"Ptr": "p243"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p244"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p2"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p245"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p240"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p246"}, {"Ptr": "p247"}, {"Ptr": "b30"}, {"Ptr": "p248"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p249"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p250"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p251"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p252"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p253"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p254"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p255"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p256"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p258"}, {"Ptr": "p259"}, {"Ptr": "b30"}, {"Ptr": "p260"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p261"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p1"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p262"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p263"}, {"Ptr": "p264"}, {"Ptr": "b30"}, {"Ptr": "p265"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p266"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p267"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p268"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p269"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p270"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p271"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p272"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p273"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p274"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p275"}, {"Ptr": "p276"}, {"Ptr": "b30"}, {"Ptr": "p277"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p278"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p0"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p279"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p274"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p280"}, {"Ptr": "p281"}, {"Ptr": "b30"}, {"Ptr": "p282"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p283"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p284"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p285"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p286"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p287"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p288"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b7"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b7"}, {"Ptr": "b40"}, {"Ptr": "p289"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "p290"}], { + "grid_dim_x": {"Absolute": 128256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["argmax_logits_and_append", [{"Ptr": "output"}, {"Ptr": "index"}, {"Ptr": "token_ids"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ]]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_llama_kv.json b/machine_interface/tests/data/cuda/test_gpu_llama_kv.json new file mode 100644 index 00000000..384a638c --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_llama_kv.json @@ -0,0 +1,5454 @@ +{ + "modules": [{"module_name": "llama_kv.cubin", "path": "cuda/llama_kv.cubin"}], + "kernels": [ + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_add_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_concatenate_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_greater_equal_reshape_where_divide_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_4_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_2_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_expand_dims_expand_dims_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_transpose_reshape_transpose_kernel"} + ], + "blueprint": { + "inputs": ["token_id", "index", "keys", "values", "cos", "sin", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290"], + "buffers": {"output": {"Absolute": 1048576}, "b7": {"Absolute": 8}, "b24": {"Absolute": 8192}, "b25": {"Absolute": 8}, "b27": {"Absolute": 32768}, "b29": {"Absolute": 32768}, "b30": {"Absolute": 16384}, "b31": {"Absolute": 256}, "b32": {"Absolute": 256}, "b38": {"Absolute": 65536}, "b40": {"Absolute": 8192}, "b41": {"Absolute": 8192}, "b42": {"Absolute": 1048576}, "b48": {"Absolute": 1048576}, "b311": {"Absolute": 4096}, "b312": {"Absolute": 16384}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_add_kernel", [{"Ptr": "b7"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_kernel", [{"Ptr": "b24"}, {"Ptr": "token_id"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b30"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_less_add_where_kernel", [{"Ptr": "b25"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_expand_dims_expand_dims_kernel", [{"Ptr": "b31"}, {"Ptr": "cos"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_expand_dims_expand_dims_kernel", [{"Ptr": "b32"}, {"Ptr": "sin"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b29"}, {"Ptr": "b30"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel", [{"Ptr": "b30"}, {"Ptr": "index"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b30"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p15"}, {"Ptr": "b7"}, {"Ptr": "b38"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "b42"}, {"Ptr": "values"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p25"}, {"Ptr": "p26"}, {"Ptr": "b30"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p30"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p34"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p37"}, {"Ptr": "p38"}, {"Ptr": "b30"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b38"}, {"Ptr": "p14"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p42"}, {"Ptr": "p43"}, {"Ptr": "b30"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p48"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p54"}, {"Ptr": "p55"}, {"Ptr": "b30"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p13"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p59"}, {"Ptr": "p60"}, {"Ptr": "b30"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p62"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p68"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p71"}, {"Ptr": "p72"}, {"Ptr": "b30"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p12"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "b30"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p80"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p84"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p88"}, {"Ptr": "p89"}, {"Ptr": "b30"}, {"Ptr": "p90"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p11"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p93"}, {"Ptr": "p94"}, {"Ptr": "b30"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p104"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p105"}, {"Ptr": "p106"}, {"Ptr": "b30"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p108"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p10"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p104"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p110"}, {"Ptr": "p111"}, {"Ptr": "b30"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p122"}, {"Ptr": "p123"}, {"Ptr": "b30"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p9"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p126"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p127"}, {"Ptr": "p128"}, {"Ptr": "b30"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p132"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p139"}, {"Ptr": "p140"}, {"Ptr": "b30"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p8"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p144"}, {"Ptr": "p145"}, {"Ptr": "b30"}, {"Ptr": "p146"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p152"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p156"}, {"Ptr": "p157"}, {"Ptr": "b30"}, {"Ptr": "p158"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p7"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p160"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p161"}, {"Ptr": "p162"}, {"Ptr": "b30"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p164"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p170"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p173"}, {"Ptr": "p174"}, {"Ptr": "b30"}, {"Ptr": "p175"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p176"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p6"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p178"}, {"Ptr": "p179"}, {"Ptr": "b30"}, {"Ptr": "p180"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p182"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p186"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p188"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p190"}, {"Ptr": "p191"}, {"Ptr": "b30"}, {"Ptr": "p192"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p5"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p194"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p195"}, {"Ptr": "p196"}, {"Ptr": "b30"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p198"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p199"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p202"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p204"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p207"}, {"Ptr": "p208"}, {"Ptr": "b30"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p210"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p4"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p206"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p212"}, {"Ptr": "p213"}, {"Ptr": "b30"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p216"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p218"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p220"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p222"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p224"}, {"Ptr": "p225"}, {"Ptr": "b30"}, {"Ptr": "p226"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p227"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p3"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p228"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p229"}, {"Ptr": "p230"}, {"Ptr": "b30"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p232"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p233"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p234"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p235"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p236"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p237"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p238"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p239"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p240"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p241"}, {"Ptr": "p242"}, {"Ptr": "b30"}, {"Ptr": "p243"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p244"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p2"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p245"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p240"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p246"}, {"Ptr": "p247"}, {"Ptr": "b30"}, {"Ptr": "p248"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p249"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p250"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p251"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p252"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p253"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p254"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p255"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p256"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p258"}, {"Ptr": "p259"}, {"Ptr": "b30"}, {"Ptr": "p260"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p261"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p1"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p262"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p263"}, {"Ptr": "p264"}, {"Ptr": "b30"}, {"Ptr": "p265"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p266"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p267"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p268"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p269"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p270"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p271"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p272"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p273"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p274"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p275"}, {"Ptr": "p276"}, {"Ptr": "b30"}, {"Ptr": "p277"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p278"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p0"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p279"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p274"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p280"}, {"Ptr": "p281"}, {"Ptr": "b30"}, {"Ptr": "p282"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p283"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 262144}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p284"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p285"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p286"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p287"}], { + "grid_dim_x": {"Absolute": 8192}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 8}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p288"}], { + "grid_dim_x": {"Absolute": 2048}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b7"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b7"}, {"Ptr": "b40"}, {"Ptr": "p289"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "p290"}], { + "grid_dim_x": {"Absolute": 128256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/cuda/llama.cubin b/machine_interface/tests/libs/cuda/llama.cubin index b80f4a9d44297c075c2c955cbfc1f6590dbfe32a..1fe6d3dbf8751f2a142865640214078f0b4fdc89 100644 GIT binary patch delta 6899 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 diff --git a/machine_interface/tests/libs/cuda/llama_kv.cubin b/machine_interface/tests/libs/cuda/llama_kv.cubin new file mode 100644 index 0000000000000000000000000000000000000000..c9f1329b65bf4f185368f960686b466a88afe99c GIT binary patch literal 110496 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͂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 DK7@NN literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/llm_inference.cubin b/machine_interface/tests/libs/cuda/llm_inference.cubin new file mode 100644 index 0000000000000000000000000000000000000000..44b88315477409611ab5d1fd28e8fa72244ec895 GIT binary patch literal 14944 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 literal 0 HcmV?d00001 From f1509f62a05fb364c32d87921fae7c0337e06fee Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 16 Apr 2025 17:05:17 +0200 Subject: [PATCH 156/176] Llama KV full functional + using flexbuffers to register large functions (such as Llama KV) --- .../gpu_tests/cuda_tests/compiled_tests.rs | 32 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 944 ++- .../data/cuda/test_gpu_double_matmul.json | 4 +- .../data/cuda/test_gpu_llama_kv-full-old.json | 5149 ----------------- .../data/cuda/test_gpu_llama_kv-full.json | 1556 ++--- .../tests/data/cuda/test_gpu_llama_kv.json | 1535 ++--- .../tests/libs/cuda/double_matmul.cubin | Bin 6304 -> 6304 bytes .../tests/libs/cuda/llama_kv.cubin | Bin 110496 -> 109408 bytes .../tests/libs/cuda/llm_inference.cubin | Bin 14944 -> 18080 bytes .../tests/libs/cuda/resnet18.cubin | Bin 208288 -> 208288 bytes server/Cargo.toml | 97 +- server/src/main.rs | 31 +- 12 files changed, 2028 insertions(+), 7320 deletions(-) delete mode 100644 machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs index b33f229d..fee1872a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs @@ -119,16 +119,16 @@ fn one_kv_llama() { } #[test] -fn full_kv_llama() { +fn hand_kv_llama() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/cuda/test_gpu_llama_kv-full.json", + "{}/tests/data/cuda/test_gpu_llama_kv.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); let (mut output_size, mut output_name, expected, function_context) = load_llama_kv(function_context); output_size = 16777216; // 1024; - output_name = "keys".to_string(); // "token_ids".to_string(); + output_name = "b41".to_string(); // "token_ids".to_string(); let result_context = execute_test(function_context, config, queue, &output_name); @@ -142,3 +142,29 @@ fn full_kv_llama() { drop(lock); } + +#[test] +fn full_kv_llama() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/cuda/test_gpu_llama_kv-full.json", + env!("CARGO_MANIFEST_DIR") + ); + let (function_context, config, queue) = setup_test(&filename); + let (mut output_size, mut output_name, expected, function_context) = full_load_llama_kv(function_context); + output_size = 1024; + output_name = "token_ids".to_string(); + + let result_context = execute_test(function_context, config, queue, &output_name); + + let read_buffer = get_resulti64(result_context, output_size, false); + println!("{:?}", read_buffer); + /*let read_buffer = get_result(result_context, output_size, false); + for i in 5000..5100 { // 16777216 / 4 { + if read_buffer[i] != 0.0 { + println!("{} - {:?}, ", i, read_buffer[i]); + } + }*/ + + drop(lock); +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 4a572ae5..84b6cb93 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -435,74 +435,6 @@ pub fn load_bert(mut function_context: Context) -> (usize, String, Vec, Con (output_size, output_name.to_string(), expected, function_context) } -pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; - - add_buffer("test", 16, params_path, &mut function_context); - add_buffer("p0", 80, params_path, &mut function_context); - add_buffer("p1", 60, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 12; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - -pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 589824, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 589824, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 589824, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 1048576, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 1048576, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 1048576, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 4194304, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 4194304, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 16777216, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 16777216, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/rnn/"; @@ -1370,28 +1302,421 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co (output_size, output_name.to_string(), expected, function_context) } -pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; +pub fn full_load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; - add_buffer("test", 16, params_path, &mut function_context); - add_buffer("p0", 8, params_path, &mut function_context); + add_buffer("token_ids", 1024, params_path, &mut function_context); + + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama_kv/"; + + add_buffer("keys", 16777216, params_path, &mut function_context); + add_buffer("values", 16777216, params_path, &mut function_context); + add_buffer("cos", 65536, params_path, &mut function_context); + add_buffer("sin", 65536, params_path, &mut function_context); + add_buffer("p0", 1024, params_path, &mut function_context); + add_buffer("p1", 1024, params_path, &mut function_context); + add_buffer("p2", 1024, params_path, &mut function_context); + add_buffer("p3", 1024, params_path, &mut function_context); + add_buffer("p4", 1024, params_path, &mut function_context); + add_buffer("p5", 1024, params_path, &mut function_context); + add_buffer("p6", 1024, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 1024, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 1024, params_path, &mut function_context); + add_buffer("p11", 1024, params_path, &mut function_context); + add_buffer("p12", 1024, params_path, &mut function_context); + add_buffer("p13", 1024, params_path, &mut function_context); + add_buffer("p14", 1024, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 1050673152, params_path, &mut function_context); + add_buffer("p17", 8192, params_path, &mut function_context); + add_buffer("p18", 16777216, params_path, &mut function_context); + add_buffer("p19", 16384, params_path, &mut function_context); + add_buffer("p20", 16384, params_path, &mut function_context); + add_buffer("p21", 16384, params_path, &mut function_context); + add_buffer("p22", 16384, params_path, &mut function_context); + add_buffer("p23", 4194304, params_path, &mut function_context); + add_buffer("p24", 8, params_path, &mut function_context); + add_buffer("p25", 16384, params_path, &mut function_context); + add_buffer("p26", 16384, params_path, &mut function_context); + add_buffer("p27", 16384, params_path, &mut function_context); + add_buffer("p28", 16384, params_path, &mut function_context); + add_buffer("p29", 16384, params_path, &mut function_context); + add_buffer("p30", 4194304, params_path, &mut function_context); + add_buffer("p31", 16777216, params_path, &mut function_context); + add_buffer("p32", 8192, params_path, &mut function_context); + add_buffer("p33", 67108864, params_path, &mut function_context); + add_buffer("p34", 67108864, params_path, &mut function_context); + add_buffer("p35", 67108864, params_path, &mut function_context); + add_buffer("p36", 8192, params_path, &mut function_context); + add_buffer("p37", 16777216, params_path, &mut function_context); + add_buffer("p38", 16384, params_path, &mut function_context); + add_buffer("p39", 16384, params_path, &mut function_context); + add_buffer("p40", 16384, params_path, &mut function_context); + add_buffer("p41", 16384, params_path, &mut function_context); + add_buffer("p42", 4194304, params_path, &mut function_context); + add_buffer("p43", 8, params_path, &mut function_context); + add_buffer("p44", 16384, params_path, &mut function_context); + add_buffer("p45", 16384, params_path, &mut function_context); + add_buffer("p46", 16384, params_path, &mut function_context); + add_buffer("p47", 16384, params_path, &mut function_context); + add_buffer("p48", 16384, params_path, &mut function_context); + add_buffer("p49", 4194304, params_path, &mut function_context); + add_buffer("p50", 16777216, params_path, &mut function_context); + add_buffer("p51", 8192, params_path, &mut function_context); + add_buffer("p52", 67108864, params_path, &mut function_context); + add_buffer("p53", 67108864, params_path, &mut function_context); + add_buffer("p54", 67108864, params_path, &mut function_context); + add_buffer("p55", 8192, params_path, &mut function_context); + add_buffer("p56", 16777216, params_path, &mut function_context); + add_buffer("p57", 16384, params_path, &mut function_context); + add_buffer("p58", 16384, params_path, &mut function_context); + add_buffer("p59", 16384, params_path, &mut function_context); + add_buffer("p60", 16384, params_path, &mut function_context); + add_buffer("p61", 4194304, params_path, &mut function_context); + add_buffer("p62", 8, params_path, &mut function_context); + add_buffer("p63", 16384, params_path, &mut function_context); + add_buffer("p64", 16384, params_path, &mut function_context); + add_buffer("p65", 16384, params_path, &mut function_context); + add_buffer("p66", 16384, params_path, &mut function_context); + add_buffer("p67", 16384, params_path, &mut function_context); + add_buffer("p68", 4194304, params_path, &mut function_context); + add_buffer("p69", 16777216, params_path, &mut function_context); + add_buffer("p70", 8192, params_path, &mut function_context); + add_buffer("p71", 67108864, params_path, &mut function_context); + add_buffer("p72", 67108864, params_path, &mut function_context); + add_buffer("p73", 67108864, params_path, &mut function_context); + add_buffer("p74", 8192, params_path, &mut function_context); + add_buffer("p75", 16777216, params_path, &mut function_context); + add_buffer("p76", 16384, params_path, &mut function_context); + add_buffer("p77", 16384, params_path, &mut function_context); + add_buffer("p78", 16384, params_path, &mut function_context); + add_buffer("p79", 16384, params_path, &mut function_context); + add_buffer("p80", 4194304, params_path, &mut function_context); + add_buffer("p81", 8, params_path, &mut function_context); + add_buffer("p82", 16384, params_path, &mut function_context); + add_buffer("p83", 16384, params_path, &mut function_context); + add_buffer("p84", 16384, params_path, &mut function_context); + add_buffer("p85", 16384, params_path, &mut function_context); + add_buffer("p86", 16384, params_path, &mut function_context); + add_buffer("p87", 4194304, params_path, &mut function_context); + add_buffer("p88", 16777216, params_path, &mut function_context); + add_buffer("p89", 8192, params_path, &mut function_context); + add_buffer("p90", 67108864, params_path, &mut function_context); + add_buffer("p91", 67108864, params_path, &mut function_context); + add_buffer("p92", 67108864, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 16777216, params_path, &mut function_context); + add_buffer("p95", 16384, params_path, &mut function_context); + add_buffer("p96", 16384, params_path, &mut function_context); + add_buffer("p97", 16384, params_path, &mut function_context); + add_buffer("p98", 16384, params_path, &mut function_context); + add_buffer("p99", 4194304, params_path, &mut function_context); + add_buffer("p100", 8, params_path, &mut function_context); + add_buffer("p101", 16384, params_path, &mut function_context); + add_buffer("p102", 16384, params_path, &mut function_context); + add_buffer("p103", 16384, params_path, &mut function_context); + add_buffer("p104", 16384, params_path, &mut function_context); + add_buffer("p105", 16384, params_path, &mut function_context); + add_buffer("p106", 4194304, params_path, &mut function_context); + add_buffer("p107", 16777216, params_path, &mut function_context); + add_buffer("p108", 8192, params_path, &mut function_context); + add_buffer("p109", 67108864, params_path, &mut function_context); + add_buffer("p110", 67108864, params_path, &mut function_context); + add_buffer("p111", 67108864, params_path, &mut function_context); + add_buffer("p112", 8192, params_path, &mut function_context); + add_buffer("p113", 16777216, params_path, &mut function_context); + add_buffer("p114", 16384, params_path, &mut function_context); + add_buffer("p115", 16384, params_path, &mut function_context); + add_buffer("p116", 16384, params_path, &mut function_context); + add_buffer("p117", 16384, params_path, &mut function_context); + add_buffer("p118", 4194304, params_path, &mut function_context); + add_buffer("p119", 8, params_path, &mut function_context); + add_buffer("p120", 16384, params_path, &mut function_context); + add_buffer("p121", 16384, params_path, &mut function_context); + add_buffer("p122", 16384, params_path, &mut function_context); + add_buffer("p123", 16384, params_path, &mut function_context); + add_buffer("p124", 16384, params_path, &mut function_context); + add_buffer("p125", 4194304, params_path, &mut function_context); + add_buffer("p126", 16777216, params_path, &mut function_context); + add_buffer("p127", 8192, params_path, &mut function_context); + add_buffer("p128", 67108864, params_path, &mut function_context); + add_buffer("p129", 67108864, params_path, &mut function_context); + add_buffer("p130", 67108864, params_path, &mut function_context); + add_buffer("p131", 8192, params_path, &mut function_context); + add_buffer("p132", 16777216, params_path, &mut function_context); + add_buffer("p133", 16384, params_path, &mut function_context); + add_buffer("p134", 16384, params_path, &mut function_context); + add_buffer("p135", 16384, params_path, &mut function_context); + add_buffer("p136", 16384, params_path, &mut function_context); + add_buffer("p137", 4194304, params_path, &mut function_context); + add_buffer("p138", 8, params_path, &mut function_context); + add_buffer("p139", 16384, params_path, &mut function_context); + add_buffer("p140", 16384, params_path, &mut function_context); + add_buffer("p141", 16384, params_path, &mut function_context); + add_buffer("p142", 16384, params_path, &mut function_context); + add_buffer("p143", 16384, params_path, &mut function_context); + add_buffer("p144", 4194304, params_path, &mut function_context); + add_buffer("p145", 16777216, params_path, &mut function_context); + add_buffer("p146", 8192, params_path, &mut function_context); + add_buffer("p147", 67108864, params_path, &mut function_context); + add_buffer("p148", 67108864, params_path, &mut function_context); + add_buffer("p149", 67108864, params_path, &mut function_context); + add_buffer("p150", 8192, params_path, &mut function_context); + add_buffer("p151", 16777216, params_path, &mut function_context); + add_buffer("p152", 16384, params_path, &mut function_context); + add_buffer("p153", 16384, params_path, &mut function_context); + add_buffer("p154", 16384, params_path, &mut function_context); + add_buffer("p155", 16384, params_path, &mut function_context); + add_buffer("p156", 4194304, params_path, &mut function_context); + add_buffer("p157", 8, params_path, &mut function_context); + add_buffer("p158", 16384, params_path, &mut function_context); + add_buffer("p159", 16384, params_path, &mut function_context); + add_buffer("p160", 16384, params_path, &mut function_context); + add_buffer("p161", 16384, params_path, &mut function_context); + add_buffer("p162", 16384, params_path, &mut function_context); + add_buffer("p163", 4194304, params_path, &mut function_context); + add_buffer("p164", 16777216, params_path, &mut function_context); + add_buffer("p165", 8192, params_path, &mut function_context); + add_buffer("p166", 67108864, params_path, &mut function_context); + add_buffer("p167", 67108864, params_path, &mut function_context); + add_buffer("p168", 67108864, params_path, &mut function_context); + add_buffer("p169", 8192, params_path, &mut function_context); + add_buffer("p170", 16777216, params_path, &mut function_context); + add_buffer("p171", 16384, params_path, &mut function_context); + add_buffer("p172", 16384, params_path, &mut function_context); + add_buffer("p173", 16384, params_path, &mut function_context); + add_buffer("p174", 16384, params_path, &mut function_context); + add_buffer("p175", 4194304, params_path, &mut function_context); + add_buffer("p176", 8, params_path, &mut function_context); + add_buffer("p177", 16384, params_path, &mut function_context); + add_buffer("p178", 16384, params_path, &mut function_context); + add_buffer("p179", 16384, params_path, &mut function_context); + add_buffer("p180", 16384, params_path, &mut function_context); + add_buffer("p181", 16384, params_path, &mut function_context); + add_buffer("p182", 4194304, params_path, &mut function_context); + add_buffer("p183", 16777216, params_path, &mut function_context); + add_buffer("p184", 8192, params_path, &mut function_context); + add_buffer("p185", 67108864, params_path, &mut function_context); + add_buffer("p186", 67108864, params_path, &mut function_context); + add_buffer("p187", 67108864, params_path, &mut function_context); + add_buffer("p188", 8192, params_path, &mut function_context); + add_buffer("p189", 16777216, params_path, &mut function_context); + add_buffer("p190", 16384, params_path, &mut function_context); + add_buffer("p191", 16384, params_path, &mut function_context); + add_buffer("p192", 16384, params_path, &mut function_context); + add_buffer("p193", 16384, params_path, &mut function_context); + add_buffer("p194", 4194304, params_path, &mut function_context); + add_buffer("p195", 8, params_path, &mut function_context); + add_buffer("p196", 16384, params_path, &mut function_context); + add_buffer("p197", 16384, params_path, &mut function_context); + add_buffer("p198", 16384, params_path, &mut function_context); + add_buffer("p199", 16384, params_path, &mut function_context); + add_buffer("p200", 16384, params_path, &mut function_context); + add_buffer("p201", 4194304, params_path, &mut function_context); + add_buffer("p202", 16777216, params_path, &mut function_context); + add_buffer("p203", 8192, params_path, &mut function_context); + add_buffer("p204", 67108864, params_path, &mut function_context); + add_buffer("p205", 67108864, params_path, &mut function_context); + add_buffer("p206", 67108864, params_path, &mut function_context); + add_buffer("p207", 8192, params_path, &mut function_context); + add_buffer("p208", 16777216, params_path, &mut function_context); + add_buffer("p209", 16384, params_path, &mut function_context); + add_buffer("p210", 16384, params_path, &mut function_context); + add_buffer("p211", 16384, params_path, &mut function_context); + add_buffer("p212", 16384, params_path, &mut function_context); + add_buffer("p213", 4194304, params_path, &mut function_context); + add_buffer("p214", 8, params_path, &mut function_context); + add_buffer("p215", 16384, params_path, &mut function_context); + add_buffer("p216", 16384, params_path, &mut function_context); + add_buffer("p217", 16384, params_path, &mut function_context); + add_buffer("p218", 16384, params_path, &mut function_context); + add_buffer("p219", 16384, params_path, &mut function_context); + add_buffer("p220", 4194304, params_path, &mut function_context); + add_buffer("p221", 16777216, params_path, &mut function_context); + add_buffer("p222", 8192, params_path, &mut function_context); + add_buffer("p223", 67108864, params_path, &mut function_context); + add_buffer("p224", 67108864, params_path, &mut function_context); + add_buffer("p225", 67108864, params_path, &mut function_context); + add_buffer("p226", 8192, params_path, &mut function_context); + add_buffer("p227", 16777216, params_path, &mut function_context); + add_buffer("p228", 16384, params_path, &mut function_context); + add_buffer("p229", 16384, params_path, &mut function_context); + add_buffer("p230", 16384, params_path, &mut function_context); + add_buffer("p231", 16384, params_path, &mut function_context); + add_buffer("p232", 4194304, params_path, &mut function_context); + add_buffer("p233", 8, params_path, &mut function_context); + add_buffer("p234", 16384, params_path, &mut function_context); + add_buffer("p235", 16384, params_path, &mut function_context); + add_buffer("p236", 16384, params_path, &mut function_context); + add_buffer("p237", 16384, params_path, &mut function_context); + add_buffer("p238", 16384, params_path, &mut function_context); + add_buffer("p239", 4194304, params_path, &mut function_context); + add_buffer("p240", 16777216, params_path, &mut function_context); + add_buffer("p241", 8192, params_path, &mut function_context); + add_buffer("p242", 67108864, params_path, &mut function_context); + add_buffer("p243", 67108864, params_path, &mut function_context); + add_buffer("p244", 67108864, params_path, &mut function_context); + add_buffer("p245", 8192, params_path, &mut function_context); + add_buffer("p246", 16777216, params_path, &mut function_context); + add_buffer("p247", 16384, params_path, &mut function_context); + add_buffer("p248", 16384, params_path, &mut function_context); + add_buffer("p249", 16384, params_path, &mut function_context); + add_buffer("p250", 16384, params_path, &mut function_context); + add_buffer("p251", 4194304, params_path, &mut function_context); + add_buffer("p252", 8, params_path, &mut function_context); + add_buffer("p253", 16384, params_path, &mut function_context); + add_buffer("p254", 16384, params_path, &mut function_context); + add_buffer("p255", 16384, params_path, &mut function_context); + add_buffer("p256", 16384, params_path, &mut function_context); + add_buffer("p257", 16384, params_path, &mut function_context); + add_buffer("p258", 4194304, params_path, &mut function_context); + add_buffer("p259", 16777216, params_path, &mut function_context); + add_buffer("p260", 8192, params_path, &mut function_context); + add_buffer("p261", 67108864, params_path, &mut function_context); + add_buffer("p262", 67108864, params_path, &mut function_context); + add_buffer("p263", 67108864, params_path, &mut function_context); + add_buffer("p264", 8192, params_path, &mut function_context); + add_buffer("p265", 16777216, params_path, &mut function_context); + add_buffer("p266", 16384, params_path, &mut function_context); + add_buffer("p267", 16384, params_path, &mut function_context); + add_buffer("p268", 16384, params_path, &mut function_context); + add_buffer("p269", 16384, params_path, &mut function_context); + add_buffer("p270", 4194304, params_path, &mut function_context); + add_buffer("p271", 8, params_path, &mut function_context); + add_buffer("p272", 16384, params_path, &mut function_context); + add_buffer("p273", 16384, params_path, &mut function_context); + add_buffer("p274", 16384, params_path, &mut function_context); + add_buffer("p275", 16384, params_path, &mut function_context); + add_buffer("p276", 16384, params_path, &mut function_context); + add_buffer("p277", 4194304, params_path, &mut function_context); + add_buffer("p278", 16777216, params_path, &mut function_context); + add_buffer("p279", 8192, params_path, &mut function_context); + add_buffer("p280", 67108864, params_path, &mut function_context); + add_buffer("p281", 67108864, params_path, &mut function_context); + add_buffer("p282", 67108864, params_path, &mut function_context); + add_buffer("p283", 8192, params_path, &mut function_context); + add_buffer("p284", 16777216, params_path, &mut function_context); + add_buffer("p285", 16384, params_path, &mut function_context); + add_buffer("p286", 16384, params_path, &mut function_context); + add_buffer("p287", 16384, params_path, &mut function_context); + add_buffer("p288", 16384, params_path, &mut function_context); + add_buffer("p289", 4194304, params_path, &mut function_context); + add_buffer("p290", 8, params_path, &mut function_context); + add_buffer("p291", 16384, params_path, &mut function_context); + add_buffer("p292", 16384, params_path, &mut function_context); + add_buffer("p293", 16384, params_path, &mut function_context); + add_buffer("p294", 16384, params_path, &mut function_context); + add_buffer("p295", 16384, params_path, &mut function_context); + add_buffer("p296", 4194304, params_path, &mut function_context); + add_buffer("p297", 16777216, params_path, &mut function_context); + add_buffer("p298", 8192, params_path, &mut function_context); + add_buffer("p299", 67108864, params_path, &mut function_context); + add_buffer("p300", 67108864, params_path, &mut function_context); + add_buffer("p301", 67108864, params_path, &mut function_context); + add_buffer("p302", 8192, params_path, &mut function_context); + add_buffer("p303", 16777216, params_path, &mut function_context); + add_buffer("p304", 16384, params_path, &mut function_context); + add_buffer("p305", 16384, params_path, &mut function_context); + add_buffer("p306", 16384, params_path, &mut function_context); + add_buffer("p307", 16384, params_path, &mut function_context); + add_buffer("p308", 4194304, params_path, &mut function_context); + add_buffer("p309", 8, params_path, &mut function_context); + add_buffer("p310", 16384, params_path, &mut function_context); + add_buffer("p311", 16384, params_path, &mut function_context); + add_buffer("p312", 16384, params_path, &mut function_context); + add_buffer("p313", 16384, params_path, &mut function_context); + add_buffer("p314", 16384, params_path, &mut function_context); + add_buffer("p315", 4194304, params_path, &mut function_context); + add_buffer("p316", 16777216, params_path, &mut function_context); + add_buffer("p317", 8192, params_path, &mut function_context); + add_buffer("p318", 67108864, params_path, &mut function_context); + add_buffer("p319", 67108864, params_path, &mut function_context); + add_buffer("p320", 67108864, params_path, &mut function_context); + add_buffer("p321", 8192, params_path, &mut function_context); + add_buffer("p322", 1050673152, params_path, &mut function_context); let output_name: &str = "output"; - let output_size: usize = 8; + let output_size: usize = 1048576; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); (output_size, output_name.to_string(), expected, function_context) } -pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama/"; +pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; - add_buffer("token_ids", 1024, params_path, &mut function_context); + add_buffer("input", 16, params_path, &mut function_context); + add_buffer("p0", 80, params_path, &mut function_context); + add_buffer("p1", 60, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 12; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama_kv/"; - // add_buffer("token_id", 8, params_path, &mut function_context); - // add_buffer("index", 8, params_path, &mut function_context); + add_buffer("token_id", 8, params_path, &mut function_context); + add_buffer("index", 8, params_path, &mut function_context); add_buffer("keys", 16777216, params_path, &mut function_context); add_buffer("values", 16777216, params_path, &mut function_context); add_buffer("cos", 65536, params_path, &mut function_context); @@ -1415,278 +1740,310 @@ pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, add_buffer("p16", 1050673152, params_path, &mut function_context); add_buffer("p17", 8192, params_path, &mut function_context); add_buffer("p18", 16777216, params_path, &mut function_context); - add_buffer("p19", 8, params_path, &mut function_context); + add_buffer("p19", 16384, params_path, &mut function_context); add_buffer("p20", 16384, params_path, &mut function_context); add_buffer("p21", 16384, params_path, &mut function_context); add_buffer("p22", 16384, params_path, &mut function_context); add_buffer("p23", 4194304, params_path, &mut function_context); - add_buffer("p24", 16384, params_path, &mut function_context); + add_buffer("p24", 8, params_path, &mut function_context); add_buffer("p25", 16384, params_path, &mut function_context); add_buffer("p26", 16384, params_path, &mut function_context); add_buffer("p27", 16384, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p29", 16777216, params_path, &mut function_context); - add_buffer("p30", 8192, params_path, &mut function_context); - add_buffer("p31", 67108864, params_path, &mut function_context); - add_buffer("p32", 67108864, params_path, &mut function_context); + add_buffer("p28", 16384, params_path, &mut function_context); + add_buffer("p29", 16384, params_path, &mut function_context); + add_buffer("p30", 4194304, params_path, &mut function_context); + add_buffer("p31", 16777216, params_path, &mut function_context); + add_buffer("p32", 8192, params_path, &mut function_context); add_buffer("p33", 67108864, params_path, &mut function_context); - add_buffer("p34", 8192, params_path, &mut function_context); - add_buffer("p35", 16777216, params_path, &mut function_context); - add_buffer("p36", 8, params_path, &mut function_context); - add_buffer("p37", 16384, params_path, &mut function_context); + add_buffer("p34", 67108864, params_path, &mut function_context); + add_buffer("p35", 67108864, params_path, &mut function_context); + add_buffer("p36", 8192, params_path, &mut function_context); + add_buffer("p37", 16777216, params_path, &mut function_context); add_buffer("p38", 16384, params_path, &mut function_context); add_buffer("p39", 16384, params_path, &mut function_context); - add_buffer("p40", 4194304, params_path, &mut function_context); + add_buffer("p40", 16384, params_path, &mut function_context); add_buffer("p41", 16384, params_path, &mut function_context); - add_buffer("p42", 16384, params_path, &mut function_context); - add_buffer("p43", 16384, params_path, &mut function_context); + add_buffer("p42", 4194304, params_path, &mut function_context); + add_buffer("p43", 8, params_path, &mut function_context); add_buffer("p44", 16384, params_path, &mut function_context); - add_buffer("p45", 4194304, params_path, &mut function_context); - add_buffer("p46", 16777216, params_path, &mut function_context); - add_buffer("p47", 8192, params_path, &mut function_context); - add_buffer("p48", 67108864, params_path, &mut function_context); - add_buffer("p49", 67108864, params_path, &mut function_context); - add_buffer("p50", 67108864, params_path, &mut function_context); + add_buffer("p45", 16384, params_path, &mut function_context); + add_buffer("p46", 16384, params_path, &mut function_context); + add_buffer("p47", 16384, params_path, &mut function_context); + add_buffer("p48", 16384, params_path, &mut function_context); + add_buffer("p49", 4194304, params_path, &mut function_context); + add_buffer("p50", 16777216, params_path, &mut function_context); add_buffer("p51", 8192, params_path, &mut function_context); - add_buffer("p52", 16777216, params_path, &mut function_context); - add_buffer("p53", 8, params_path, &mut function_context); - add_buffer("p54", 16384, params_path, &mut function_context); - add_buffer("p55", 16384, params_path, &mut function_context); - add_buffer("p56", 16384, params_path, &mut function_context); - add_buffer("p57", 4194304, params_path, &mut function_context); + add_buffer("p52", 67108864, params_path, &mut function_context); + add_buffer("p53", 67108864, params_path, &mut function_context); + add_buffer("p54", 67108864, params_path, &mut function_context); + add_buffer("p55", 8192, params_path, &mut function_context); + add_buffer("p56", 16777216, params_path, &mut function_context); + add_buffer("p57", 16384, params_path, &mut function_context); add_buffer("p58", 16384, params_path, &mut function_context); add_buffer("p59", 16384, params_path, &mut function_context); add_buffer("p60", 16384, params_path, &mut function_context); - add_buffer("p61", 16384, params_path, &mut function_context); - add_buffer("p62", 4194304, params_path, &mut function_context); - add_buffer("p63", 16777216, params_path, &mut function_context); - add_buffer("p64", 8192, params_path, &mut function_context); - add_buffer("p65", 67108864, params_path, &mut function_context); - add_buffer("p66", 67108864, params_path, &mut function_context); - add_buffer("p67", 67108864, params_path, &mut function_context); - add_buffer("p68", 8192, params_path, &mut function_context); + add_buffer("p61", 4194304, params_path, &mut function_context); + add_buffer("p62", 8, params_path, &mut function_context); + add_buffer("p63", 16384, params_path, &mut function_context); + add_buffer("p64", 16384, params_path, &mut function_context); + add_buffer("p65", 16384, params_path, &mut function_context); + add_buffer("p66", 16384, params_path, &mut function_context); + add_buffer("p67", 16384, params_path, &mut function_context); + add_buffer("p68", 4194304, params_path, &mut function_context); add_buffer("p69", 16777216, params_path, &mut function_context); - add_buffer("p70", 8, params_path, &mut function_context); - add_buffer("p71", 16384, params_path, &mut function_context); - add_buffer("p72", 16384, params_path, &mut function_context); - add_buffer("p73", 16384, params_path, &mut function_context); - add_buffer("p74", 4194304, params_path, &mut function_context); - add_buffer("p75", 16384, params_path, &mut function_context); + add_buffer("p70", 8192, params_path, &mut function_context); + add_buffer("p71", 67108864, params_path, &mut function_context); + add_buffer("p72", 67108864, params_path, &mut function_context); + add_buffer("p73", 67108864, params_path, &mut function_context); + add_buffer("p74", 8192, params_path, &mut function_context); + add_buffer("p75", 16777216, params_path, &mut function_context); add_buffer("p76", 16384, params_path, &mut function_context); add_buffer("p77", 16384, params_path, &mut function_context); add_buffer("p78", 16384, params_path, &mut function_context); - add_buffer("p79", 4194304, params_path, &mut function_context); - add_buffer("p80", 16777216, params_path, &mut function_context); - add_buffer("p81", 8192, params_path, &mut function_context); - add_buffer("p82", 67108864, params_path, &mut function_context); - add_buffer("p83", 67108864, params_path, &mut function_context); - add_buffer("p84", 67108864, params_path, &mut function_context); - add_buffer("p85", 8192, params_path, &mut function_context); - add_buffer("p86", 16777216, params_path, &mut function_context); - add_buffer("p87", 8, params_path, &mut function_context); - add_buffer("p88", 16384, params_path, &mut function_context); - add_buffer("p89", 16384, params_path, &mut function_context); - add_buffer("p90", 16384, params_path, &mut function_context); - add_buffer("p91", 4194304, params_path, &mut function_context); - add_buffer("p92", 16384, params_path, &mut function_context); - add_buffer("p93", 16384, params_path, &mut function_context); - add_buffer("p94", 16384, params_path, &mut function_context); + add_buffer("p79", 16384, params_path, &mut function_context); + add_buffer("p80", 4194304, params_path, &mut function_context); + add_buffer("p81", 8, params_path, &mut function_context); + add_buffer("p82", 16384, params_path, &mut function_context); + add_buffer("p83", 16384, params_path, &mut function_context); + add_buffer("p84", 16384, params_path, &mut function_context); + add_buffer("p85", 16384, params_path, &mut function_context); + add_buffer("p86", 16384, params_path, &mut function_context); + add_buffer("p87", 4194304, params_path, &mut function_context); + add_buffer("p88", 16777216, params_path, &mut function_context); + add_buffer("p89", 8192, params_path, &mut function_context); + add_buffer("p90", 67108864, params_path, &mut function_context); + add_buffer("p91", 67108864, params_path, &mut function_context); + add_buffer("p92", 67108864, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 16777216, params_path, &mut function_context); add_buffer("p95", 16384, params_path, &mut function_context); - add_buffer("p96", 4194304, params_path, &mut function_context); - add_buffer("p97", 16777216, params_path, &mut function_context); - add_buffer("p98", 8192, params_path, &mut function_context); - add_buffer("p99", 67108864, params_path, &mut function_context); - add_buffer("p100", 67108864, params_path, &mut function_context); - add_buffer("p101", 67108864, params_path, &mut function_context); - add_buffer("p102", 8192, params_path, &mut function_context); - add_buffer("p103", 16777216, params_path, &mut function_context); - add_buffer("p104", 8, params_path, &mut function_context); + add_buffer("p96", 16384, params_path, &mut function_context); + add_buffer("p97", 16384, params_path, &mut function_context); + add_buffer("p98", 16384, params_path, &mut function_context); + add_buffer("p99", 4194304, params_path, &mut function_context); + add_buffer("p100", 8, params_path, &mut function_context); + add_buffer("p101", 16384, params_path, &mut function_context); + add_buffer("p102", 16384, params_path, &mut function_context); + add_buffer("p103", 16384, params_path, &mut function_context); + add_buffer("p104", 16384, params_path, &mut function_context); add_buffer("p105", 16384, params_path, &mut function_context); - add_buffer("p106", 16384, params_path, &mut function_context); - add_buffer("p107", 16384, params_path, &mut function_context); - add_buffer("p108", 4194304, params_path, &mut function_context); - add_buffer("p109", 16384, params_path, &mut function_context); - add_buffer("p110", 16384, params_path, &mut function_context); - add_buffer("p111", 16384, params_path, &mut function_context); - add_buffer("p112", 16384, params_path, &mut function_context); - add_buffer("p113", 4194304, params_path, &mut function_context); - add_buffer("p114", 16777216, params_path, &mut function_context); - add_buffer("p115", 8192, params_path, &mut function_context); - add_buffer("p116", 67108864, params_path, &mut function_context); - add_buffer("p117", 67108864, params_path, &mut function_context); - add_buffer("p118", 67108864, params_path, &mut function_context); - add_buffer("p119", 8192, params_path, &mut function_context); - add_buffer("p120", 16777216, params_path, &mut function_context); - add_buffer("p121", 8, params_path, &mut function_context); + add_buffer("p106", 4194304, params_path, &mut function_context); + add_buffer("p107", 16777216, params_path, &mut function_context); + add_buffer("p108", 8192, params_path, &mut function_context); + add_buffer("p109", 67108864, params_path, &mut function_context); + add_buffer("p110", 67108864, params_path, &mut function_context); + add_buffer("p111", 67108864, params_path, &mut function_context); + add_buffer("p112", 8192, params_path, &mut function_context); + add_buffer("p113", 16777216, params_path, &mut function_context); + add_buffer("p114", 16384, params_path, &mut function_context); + add_buffer("p115", 16384, params_path, &mut function_context); + add_buffer("p116", 16384, params_path, &mut function_context); + add_buffer("p117", 16384, params_path, &mut function_context); + add_buffer("p118", 4194304, params_path, &mut function_context); + add_buffer("p119", 8, params_path, &mut function_context); + add_buffer("p120", 16384, params_path, &mut function_context); + add_buffer("p121", 16384, params_path, &mut function_context); add_buffer("p122", 16384, params_path, &mut function_context); add_buffer("p123", 16384, params_path, &mut function_context); add_buffer("p124", 16384, params_path, &mut function_context); add_buffer("p125", 4194304, params_path, &mut function_context); - add_buffer("p126", 16384, params_path, &mut function_context); - add_buffer("p127", 16384, params_path, &mut function_context); - add_buffer("p128", 16384, params_path, &mut function_context); - add_buffer("p129", 16384, params_path, &mut function_context); - add_buffer("p130", 4194304, params_path, &mut function_context); - add_buffer("p131", 16777216, params_path, &mut function_context); - add_buffer("p132", 8192, params_path, &mut function_context); - add_buffer("p133", 67108864, params_path, &mut function_context); - add_buffer("p134", 67108864, params_path, &mut function_context); - add_buffer("p135", 67108864, params_path, &mut function_context); - add_buffer("p136", 8192, params_path, &mut function_context); - add_buffer("p137", 16777216, params_path, &mut function_context); + add_buffer("p126", 16777216, params_path, &mut function_context); + add_buffer("p127", 8192, params_path, &mut function_context); + add_buffer("p128", 67108864, params_path, &mut function_context); + add_buffer("p129", 67108864, params_path, &mut function_context); + add_buffer("p130", 67108864, params_path, &mut function_context); + add_buffer("p131", 8192, params_path, &mut function_context); + add_buffer("p132", 16777216, params_path, &mut function_context); + add_buffer("p133", 16384, params_path, &mut function_context); + add_buffer("p134", 16384, params_path, &mut function_context); + add_buffer("p135", 16384, params_path, &mut function_context); + add_buffer("p136", 16384, params_path, &mut function_context); + add_buffer("p137", 4194304, params_path, &mut function_context); add_buffer("p138", 8, params_path, &mut function_context); add_buffer("p139", 16384, params_path, &mut function_context); add_buffer("p140", 16384, params_path, &mut function_context); add_buffer("p141", 16384, params_path, &mut function_context); - add_buffer("p142", 4194304, params_path, &mut function_context); + add_buffer("p142", 16384, params_path, &mut function_context); add_buffer("p143", 16384, params_path, &mut function_context); - add_buffer("p144", 16384, params_path, &mut function_context); - add_buffer("p145", 16384, params_path, &mut function_context); - add_buffer("p146", 16384, params_path, &mut function_context); - add_buffer("p147", 4194304, params_path, &mut function_context); - add_buffer("p148", 16777216, params_path, &mut function_context); - add_buffer("p149", 8192, params_path, &mut function_context); - add_buffer("p150", 67108864, params_path, &mut function_context); - add_buffer("p151", 67108864, params_path, &mut function_context); - add_buffer("p152", 67108864, params_path, &mut function_context); - add_buffer("p153", 8192, params_path, &mut function_context); - add_buffer("p154", 16777216, params_path, &mut function_context); - add_buffer("p155", 8, params_path, &mut function_context); - add_buffer("p156", 16384, params_path, &mut function_context); - add_buffer("p157", 16384, params_path, &mut function_context); + add_buffer("p144", 4194304, params_path, &mut function_context); + add_buffer("p145", 16777216, params_path, &mut function_context); + add_buffer("p146", 8192, params_path, &mut function_context); + add_buffer("p147", 67108864, params_path, &mut function_context); + add_buffer("p148", 67108864, params_path, &mut function_context); + add_buffer("p149", 67108864, params_path, &mut function_context); + add_buffer("p150", 8192, params_path, &mut function_context); + add_buffer("p151", 16777216, params_path, &mut function_context); + add_buffer("p152", 16384, params_path, &mut function_context); + add_buffer("p153", 16384, params_path, &mut function_context); + add_buffer("p154", 16384, params_path, &mut function_context); + add_buffer("p155", 16384, params_path, &mut function_context); + add_buffer("p156", 4194304, params_path, &mut function_context); + add_buffer("p157", 8, params_path, &mut function_context); add_buffer("p158", 16384, params_path, &mut function_context); - add_buffer("p159", 4194304, params_path, &mut function_context); + add_buffer("p159", 16384, params_path, &mut function_context); add_buffer("p160", 16384, params_path, &mut function_context); add_buffer("p161", 16384, params_path, &mut function_context); add_buffer("p162", 16384, params_path, &mut function_context); - add_buffer("p163", 16384, params_path, &mut function_context); - add_buffer("p164", 4194304, params_path, &mut function_context); - add_buffer("p165", 16777216, params_path, &mut function_context); - add_buffer("p166", 8192, params_path, &mut function_context); + add_buffer("p163", 4194304, params_path, &mut function_context); + add_buffer("p164", 16777216, params_path, &mut function_context); + add_buffer("p165", 8192, params_path, &mut function_context); + add_buffer("p166", 67108864, params_path, &mut function_context); add_buffer("p167", 67108864, params_path, &mut function_context); add_buffer("p168", 67108864, params_path, &mut function_context); - add_buffer("p169", 67108864, params_path, &mut function_context); - add_buffer("p170", 8192, params_path, &mut function_context); - add_buffer("p171", 16777216, params_path, &mut function_context); - add_buffer("p172", 8, params_path, &mut function_context); + add_buffer("p169", 8192, params_path, &mut function_context); + add_buffer("p170", 16777216, params_path, &mut function_context); + add_buffer("p171", 16384, params_path, &mut function_context); + add_buffer("p172", 16384, params_path, &mut function_context); add_buffer("p173", 16384, params_path, &mut function_context); add_buffer("p174", 16384, params_path, &mut function_context); - add_buffer("p175", 16384, params_path, &mut function_context); - add_buffer("p176", 4194304, params_path, &mut function_context); + add_buffer("p175", 4194304, params_path, &mut function_context); + add_buffer("p176", 8, params_path, &mut function_context); add_buffer("p177", 16384, params_path, &mut function_context); add_buffer("p178", 16384, params_path, &mut function_context); add_buffer("p179", 16384, params_path, &mut function_context); add_buffer("p180", 16384, params_path, &mut function_context); - add_buffer("p181", 4194304, params_path, &mut function_context); - add_buffer("p182", 16777216, params_path, &mut function_context); - add_buffer("p183", 8192, params_path, &mut function_context); - add_buffer("p184", 67108864, params_path, &mut function_context); + add_buffer("p181", 16384, params_path, &mut function_context); + add_buffer("p182", 4194304, params_path, &mut function_context); + add_buffer("p183", 16777216, params_path, &mut function_context); + add_buffer("p184", 8192, params_path, &mut function_context); add_buffer("p185", 67108864, params_path, &mut function_context); add_buffer("p186", 67108864, params_path, &mut function_context); - add_buffer("p187", 8192, params_path, &mut function_context); - add_buffer("p188", 16777216, params_path, &mut function_context); - add_buffer("p189", 8, params_path, &mut function_context); + add_buffer("p187", 67108864, params_path, &mut function_context); + add_buffer("p188", 8192, params_path, &mut function_context); + add_buffer("p189", 16777216, params_path, &mut function_context); add_buffer("p190", 16384, params_path, &mut function_context); add_buffer("p191", 16384, params_path, &mut function_context); add_buffer("p192", 16384, params_path, &mut function_context); - add_buffer("p193", 4194304, params_path, &mut function_context); - add_buffer("p194", 16384, params_path, &mut function_context); - add_buffer("p195", 16384, params_path, &mut function_context); + add_buffer("p193", 16384, params_path, &mut function_context); + add_buffer("p194", 4194304, params_path, &mut function_context); + add_buffer("p195", 8, params_path, &mut function_context); add_buffer("p196", 16384, params_path, &mut function_context); add_buffer("p197", 16384, params_path, &mut function_context); - add_buffer("p198", 4194304, params_path, &mut function_context); - add_buffer("p199", 16777216, params_path, &mut function_context); - add_buffer("p200", 8192, params_path, &mut function_context); - add_buffer("p201", 67108864, params_path, &mut function_context); - add_buffer("p202", 67108864, params_path, &mut function_context); - add_buffer("p203", 67108864, params_path, &mut function_context); - add_buffer("p204", 8192, params_path, &mut function_context); - add_buffer("p205", 16777216, params_path, &mut function_context); - add_buffer("p206", 8, params_path, &mut function_context); - add_buffer("p207", 16384, params_path, &mut function_context); - add_buffer("p208", 16384, params_path, &mut function_context); + add_buffer("p198", 16384, params_path, &mut function_context); + add_buffer("p199", 16384, params_path, &mut function_context); + add_buffer("p200", 16384, params_path, &mut function_context); + add_buffer("p201", 4194304, params_path, &mut function_context); + add_buffer("p202", 16777216, params_path, &mut function_context); + add_buffer("p203", 8192, params_path, &mut function_context); + add_buffer("p204", 67108864, params_path, &mut function_context); + add_buffer("p205", 67108864, params_path, &mut function_context); + add_buffer("p206", 67108864, params_path, &mut function_context); + add_buffer("p207", 8192, params_path, &mut function_context); + add_buffer("p208", 16777216, params_path, &mut function_context); add_buffer("p209", 16384, params_path, &mut function_context); - add_buffer("p210", 4194304, params_path, &mut function_context); + add_buffer("p210", 16384, params_path, &mut function_context); add_buffer("p211", 16384, params_path, &mut function_context); add_buffer("p212", 16384, params_path, &mut function_context); - add_buffer("p213", 16384, params_path, &mut function_context); - add_buffer("p214", 16384, params_path, &mut function_context); - add_buffer("p215", 4194304, params_path, &mut function_context); - add_buffer("p216", 16777216, params_path, &mut function_context); - add_buffer("p217", 8192, params_path, &mut function_context); - add_buffer("p218", 67108864, params_path, &mut function_context); - add_buffer("p219", 67108864, params_path, &mut function_context); - add_buffer("p220", 67108864, params_path, &mut function_context); - add_buffer("p221", 8192, params_path, &mut function_context); - add_buffer("p222", 16777216, params_path, &mut function_context); - add_buffer("p223", 8, params_path, &mut function_context); - add_buffer("p224", 16384, params_path, &mut function_context); - add_buffer("p225", 16384, params_path, &mut function_context); - add_buffer("p226", 16384, params_path, &mut function_context); - add_buffer("p227", 4194304, params_path, &mut function_context); + add_buffer("p213", 4194304, params_path, &mut function_context); + add_buffer("p214", 8, params_path, &mut function_context); + add_buffer("p215", 16384, params_path, &mut function_context); + add_buffer("p216", 16384, params_path, &mut function_context); + add_buffer("p217", 16384, params_path, &mut function_context); + add_buffer("p218", 16384, params_path, &mut function_context); + add_buffer("p219", 16384, params_path, &mut function_context); + add_buffer("p220", 4194304, params_path, &mut function_context); + add_buffer("p221", 16777216, params_path, &mut function_context); + add_buffer("p222", 8192, params_path, &mut function_context); + add_buffer("p223", 67108864, params_path, &mut function_context); + add_buffer("p224", 67108864, params_path, &mut function_context); + add_buffer("p225", 67108864, params_path, &mut function_context); + add_buffer("p226", 8192, params_path, &mut function_context); + add_buffer("p227", 16777216, params_path, &mut function_context); add_buffer("p228", 16384, params_path, &mut function_context); add_buffer("p229", 16384, params_path, &mut function_context); add_buffer("p230", 16384, params_path, &mut function_context); add_buffer("p231", 16384, params_path, &mut function_context); add_buffer("p232", 4194304, params_path, &mut function_context); - add_buffer("p233", 16777216, params_path, &mut function_context); - add_buffer("p234", 8192, params_path, &mut function_context); - add_buffer("p235", 67108864, params_path, &mut function_context); - add_buffer("p236", 67108864, params_path, &mut function_context); - add_buffer("p237", 67108864, params_path, &mut function_context); - add_buffer("p238", 8192, params_path, &mut function_context); - add_buffer("p239", 16777216, params_path, &mut function_context); - add_buffer("p240", 8, params_path, &mut function_context); - add_buffer("p241", 16384, params_path, &mut function_context); - add_buffer("p242", 16384, params_path, &mut function_context); - add_buffer("p243", 16384, params_path, &mut function_context); - add_buffer("p244", 4194304, params_path, &mut function_context); - add_buffer("p245", 16384, params_path, &mut function_context); - add_buffer("p246", 16384, params_path, &mut function_context); + add_buffer("p233", 8, params_path, &mut function_context); + add_buffer("p234", 16384, params_path, &mut function_context); + add_buffer("p235", 16384, params_path, &mut function_context); + add_buffer("p236", 16384, params_path, &mut function_context); + add_buffer("p237", 16384, params_path, &mut function_context); + add_buffer("p238", 16384, params_path, &mut function_context); + add_buffer("p239", 4194304, params_path, &mut function_context); + add_buffer("p240", 16777216, params_path, &mut function_context); + add_buffer("p241", 8192, params_path, &mut function_context); + add_buffer("p242", 67108864, params_path, &mut function_context); + add_buffer("p243", 67108864, params_path, &mut function_context); + add_buffer("p244", 67108864, params_path, &mut function_context); + add_buffer("p245", 8192, params_path, &mut function_context); + add_buffer("p246", 16777216, params_path, &mut function_context); add_buffer("p247", 16384, params_path, &mut function_context); add_buffer("p248", 16384, params_path, &mut function_context); - add_buffer("p249", 4194304, params_path, &mut function_context); - add_buffer("p250", 16777216, params_path, &mut function_context); - add_buffer("p251", 8192, params_path, &mut function_context); - add_buffer("p252", 67108864, params_path, &mut function_context); - add_buffer("p253", 67108864, params_path, &mut function_context); - add_buffer("p254", 67108864, params_path, &mut function_context); - add_buffer("p255", 8192, params_path, &mut function_context); - add_buffer("p256", 16777216, params_path, &mut function_context); - add_buffer("p257", 8, params_path, &mut function_context); - add_buffer("p258", 16384, params_path, &mut function_context); - add_buffer("p259", 16384, params_path, &mut function_context); - add_buffer("p260", 16384, params_path, &mut function_context); - add_buffer("p261", 4194304, params_path, &mut function_context); - add_buffer("p262", 16384, params_path, &mut function_context); - add_buffer("p263", 16384, params_path, &mut function_context); - add_buffer("p264", 16384, params_path, &mut function_context); - add_buffer("p265", 16384, params_path, &mut function_context); - add_buffer("p266", 4194304, params_path, &mut function_context); - add_buffer("p267", 16777216, params_path, &mut function_context); - add_buffer("p268", 8192, params_path, &mut function_context); - add_buffer("p269", 67108864, params_path, &mut function_context); - add_buffer("p270", 67108864, params_path, &mut function_context); - add_buffer("p271", 67108864, params_path, &mut function_context); - add_buffer("p272", 8192, params_path, &mut function_context); - add_buffer("p273", 16777216, params_path, &mut function_context); - add_buffer("p274", 8, params_path, &mut function_context); + add_buffer("p249", 16384, params_path, &mut function_context); + add_buffer("p250", 16384, params_path, &mut function_context); + add_buffer("p251", 4194304, params_path, &mut function_context); + add_buffer("p252", 8, params_path, &mut function_context); + add_buffer("p253", 16384, params_path, &mut function_context); + add_buffer("p254", 16384, params_path, &mut function_context); + add_buffer("p255", 16384, params_path, &mut function_context); + add_buffer("p256", 16384, params_path, &mut function_context); + add_buffer("p257", 16384, params_path, &mut function_context); + add_buffer("p258", 4194304, params_path, &mut function_context); + add_buffer("p259", 16777216, params_path, &mut function_context); + add_buffer("p260", 8192, params_path, &mut function_context); + add_buffer("p261", 67108864, params_path, &mut function_context); + add_buffer("p262", 67108864, params_path, &mut function_context); + add_buffer("p263", 67108864, params_path, &mut function_context); + add_buffer("p264", 8192, params_path, &mut function_context); + add_buffer("p265", 16777216, params_path, &mut function_context); + add_buffer("p266", 16384, params_path, &mut function_context); + add_buffer("p267", 16384, params_path, &mut function_context); + add_buffer("p268", 16384, params_path, &mut function_context); + add_buffer("p269", 16384, params_path, &mut function_context); + add_buffer("p270", 4194304, params_path, &mut function_context); + add_buffer("p271", 8, params_path, &mut function_context); + add_buffer("p272", 16384, params_path, &mut function_context); + add_buffer("p273", 16384, params_path, &mut function_context); + add_buffer("p274", 16384, params_path, &mut function_context); add_buffer("p275", 16384, params_path, &mut function_context); add_buffer("p276", 16384, params_path, &mut function_context); - add_buffer("p277", 16384, params_path, &mut function_context); - add_buffer("p278", 4194304, params_path, &mut function_context); - add_buffer("p279", 16384, params_path, &mut function_context); - add_buffer("p280", 16384, params_path, &mut function_context); - add_buffer("p281", 16384, params_path, &mut function_context); - add_buffer("p282", 16384, params_path, &mut function_context); - add_buffer("p283", 4194304, params_path, &mut function_context); + add_buffer("p277", 4194304, params_path, &mut function_context); + add_buffer("p278", 16777216, params_path, &mut function_context); + add_buffer("p279", 8192, params_path, &mut function_context); + add_buffer("p280", 67108864, params_path, &mut function_context); + add_buffer("p281", 67108864, params_path, &mut function_context); + add_buffer("p282", 67108864, params_path, &mut function_context); + add_buffer("p283", 8192, params_path, &mut function_context); add_buffer("p284", 16777216, params_path, &mut function_context); - add_buffer("p285", 8192, params_path, &mut function_context); - add_buffer("p286", 67108864, params_path, &mut function_context); - add_buffer("p287", 67108864, params_path, &mut function_context); - add_buffer("p288", 67108864, params_path, &mut function_context); - add_buffer("p289", 8192, params_path, &mut function_context); - add_buffer("p290", 1050673152, params_path, &mut function_context); + add_buffer("p285", 16384, params_path, &mut function_context); + add_buffer("p286", 16384, params_path, &mut function_context); + add_buffer("p287", 16384, params_path, &mut function_context); + add_buffer("p288", 16384, params_path, &mut function_context); + add_buffer("p289", 4194304, params_path, &mut function_context); + add_buffer("p290", 8, params_path, &mut function_context); + add_buffer("p291", 16384, params_path, &mut function_context); + add_buffer("p292", 16384, params_path, &mut function_context); + add_buffer("p293", 16384, params_path, &mut function_context); + add_buffer("p294", 16384, params_path, &mut function_context); + add_buffer("p295", 16384, params_path, &mut function_context); + add_buffer("p296", 4194304, params_path, &mut function_context); + add_buffer("p297", 16777216, params_path, &mut function_context); + add_buffer("p298", 8192, params_path, &mut function_context); + add_buffer("p299", 67108864, params_path, &mut function_context); + add_buffer("p300", 67108864, params_path, &mut function_context); + add_buffer("p301", 67108864, params_path, &mut function_context); + add_buffer("p302", 8192, params_path, &mut function_context); + add_buffer("p303", 16777216, params_path, &mut function_context); + add_buffer("p304", 16384, params_path, &mut function_context); + add_buffer("p305", 16384, params_path, &mut function_context); + add_buffer("p306", 16384, params_path, &mut function_context); + add_buffer("p307", 16384, params_path, &mut function_context); + add_buffer("p308", 4194304, params_path, &mut function_context); + add_buffer("p309", 8, params_path, &mut function_context); + add_buffer("p310", 16384, params_path, &mut function_context); + add_buffer("p311", 16384, params_path, &mut function_context); + add_buffer("p312", 16384, params_path, &mut function_context); + add_buffer("p313", 16384, params_path, &mut function_context); + add_buffer("p314", 16384, params_path, &mut function_context); + add_buffer("p315", 4194304, params_path, &mut function_context); + add_buffer("p316", 16777216, params_path, &mut function_context); + add_buffer("p317", 8192, params_path, &mut function_context); + add_buffer("p318", 67108864, params_path, &mut function_context); + add_buffer("p319", 67108864, params_path, &mut function_context); + add_buffer("p320", 67108864, params_path, &mut function_context); + add_buffer("p321", 8192, params_path, &mut function_context); + add_buffer("p322", 1050673152, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 1048576; @@ -1694,3 +2051,16 @@ pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } + +pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; + + add_buffer("test", 16, params_path, &mut function_context); + add_buffer("p0", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json index d16c1b48..5daf035c 100644 --- a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json +++ b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json @@ -5,11 +5,11 @@ {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"} ], "blueprint": { - "inputs": ["test", "p0", "p1"], + "inputs": ["input", "p0", "p1"], "buffers": {"output": {"Absolute": 12}, "b2": {"Absolute": 20}}, "outputs": ["output"], "control_flow": [ - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "test"}, {"Ptr": "p0"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "input"}, {"Ptr": "p0"}], { "grid_dim_x": {"Absolute": 5}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json deleted file mode 100644 index de132f61..00000000 --- a/machine_interface/tests/data/cuda/test_gpu_llama_kv-full-old.json +++ /dev/null @@ -1,5149 +0,0 @@ -{ - "modules": [{"module_name": "llama_kv.cubin", "path": "cuda/llama_kv.cubin"}, {"module_name": "llm_inference.cubin", "path": "cuda/llm_inference.cubin"}], - "kernels": [ - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_divide_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_less_add_where_take_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_multiply_sum_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_3_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_4_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_2_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_1_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_1_kernel_1"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_transpose_reshape_transpose_kernel"}, - {"module_name": "llm_inference.cubin", "kernel_name": "initialize_index"}, - {"module_name": "llm_inference.cubin", "kernel_name": "extract_token_from_tokens"}, - {"module_name": "llm_inference.cubin", "kernel_name": "argmax_logits_and_append"} - ], - "blueprint": { - "inputs": ["token_ids", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290", "p291", "p292", "p293", "p294", "p295", "p296", "p297", "p298", "p299", "p300", "p301", "p302", "p303", "p304", "p305", "p306"], - "buffers": {"index": {"Absolute": 8}, "token_id": {"Absolute": 8}, "output": {"Absolute": 1048576}, "b2": {"Absolute": 32768}, "b3": {"Absolute": 4}, "b5": {"Absolute": 32768}, "b7": {"Absolute": 16384}, "b8": {"Absolute": 32768}, "b14": {"Absolute": 8192}, "b18": {"Absolute": 1048576}, "b316": {"Absolute": 4096}, "b317": {"Absolute": 16384}}, - "outputs": ["token_ids"], - "control_flow": [ - {"ExecKernel": ["initialize_index", [{"Ptr": "index"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"Repeat": [{"Absolute": 128}, [ - {"ExecKernel": ["extract_token_from_tokens", [{"Ptr": "token_ids"}, {"Ptr": "index"}, {"Ptr": "token_id"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_less_add_where_take_kernel", [{"Ptr": "b2"}, {"Ptr": "token_id"}, {"Ptr": "p0"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p2"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b8"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p7"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p6"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p10"}, {"Ptr": "p11"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}, {"Ptr": "p14"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p12"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p13"}, {"Ptr": "b5"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p15"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p16"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p17"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p18"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p19"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p20"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "p21"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p26"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p27"}, {"Ptr": "p28"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p24"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p25"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p29"}, {"Ptr": "p30"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p33"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p31"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p32"}, {"Ptr": "b7"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p34"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p35"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p36"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p37"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p38"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p39"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p40"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p41"}, {"Ptr": "p42"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p45"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p46"}, {"Ptr": "p47"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p43"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p44"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p48"}, {"Ptr": "p49"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p52"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p50"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p51"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p53"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p54"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p55"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p56"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p57"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p58"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p59"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p60"}, {"Ptr": "p61"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p64"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p65"}, {"Ptr": "p66"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p62"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p63"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p67"}, {"Ptr": "p68"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p71"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p69"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p70"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p72"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p73"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p74"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p75"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p76"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p77"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p78"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p79"}, {"Ptr": "p80"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p83"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p84"}, {"Ptr": "p85"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p81"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p82"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p86"}, {"Ptr": "p87"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p90"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p88"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p89"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p91"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p92"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p93"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p94"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p95"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p96"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p97"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p102"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p103"}, {"Ptr": "p104"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p100"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p101"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p105"}, {"Ptr": "p106"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p109"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p107"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p108"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p110"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p111"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p112"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p113"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p114"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p115"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p116"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p117"}, {"Ptr": "p118"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p121"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p122"}, {"Ptr": "p123"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p119"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p120"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p124"}, {"Ptr": "p125"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p128"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p126"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p127"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p129"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p130"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p131"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p132"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p133"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p134"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p135"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p136"}, {"Ptr": "p137"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p140"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p141"}, {"Ptr": "p142"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p138"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p139"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p143"}, {"Ptr": "p144"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p147"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p145"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p146"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p148"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p149"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p150"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p151"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p152"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p153"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p154"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p155"}, {"Ptr": "p156"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p159"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p160"}, {"Ptr": "p161"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p157"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p158"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p162"}, {"Ptr": "p163"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p166"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p164"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p165"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p167"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p168"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p169"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p170"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p171"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p172"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p173"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p174"}, {"Ptr": "p175"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p178"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p179"}, {"Ptr": "p180"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p176"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p177"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p181"}, {"Ptr": "p182"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p185"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p183"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p184"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p186"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p187"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p188"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p189"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p190"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p191"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p192"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p193"}, {"Ptr": "p194"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p197"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p198"}, {"Ptr": "p199"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p195"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p196"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p200"}, {"Ptr": "p201"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p204"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p202"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p203"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p205"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p206"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p207"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p208"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p209"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p210"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p211"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p212"}, {"Ptr": "p213"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p216"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p217"}, {"Ptr": "p218"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p214"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p215"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p219"}, {"Ptr": "p220"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p223"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p221"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p222"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p224"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p225"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p226"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p227"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p228"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p229"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p230"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p231"}, {"Ptr": "p232"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p235"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p236"}, {"Ptr": "p237"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p233"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p234"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p238"}, {"Ptr": "p239"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p242"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p240"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p241"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p243"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p244"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p245"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p246"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p247"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p248"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p249"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p250"}, {"Ptr": "p251"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p254"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p255"}, {"Ptr": "p256"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p252"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p253"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p257"}, {"Ptr": "p258"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p261"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p259"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p260"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p262"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p263"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p264"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p265"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p266"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p267"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p268"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p269"}, {"Ptr": "p270"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p273"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p274"}, {"Ptr": "p275"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p271"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p272"}, {"Ptr": "b2"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p276"}, {"Ptr": "p277"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b2"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p280"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p278"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p279"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p281"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p282"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "p283"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p284"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b8"}, {"Ptr": "b2"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b8"}, {"Ptr": "p285"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b2"}, {"Ptr": "p286"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "p287"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b7"}, {"Ptr": "b5"}, {"Ptr": "p288"}, {"Ptr": "p289"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p292"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 512}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_952a6aac93b0ef86__kernel", [{"Ptr": "b8"}, {"Ptr": "b5"}, {"Ptr": "p293"}, {"Ptr": "p294"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p290"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p291"}, {"Ptr": "b8"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4096}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_1_kernel_1", [{"Ptr": "p295"}, {"Ptr": "p296"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_divide_kernel", [{"Ptr": "b8"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b317"}, {"Ptr": "b316"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b317"}, {"Ptr": "b316"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 4}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p299"}], { - "grid_dim_x": {"Absolute": 512}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_broadcast_to_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "p297"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 262144}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "p298"}, {"Ptr": "b14"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b18"}, {"Ptr": "output"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "b18"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 8}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b14"}, {"Ptr": "b7"}, {"Ptr": "p300"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b7"}, {"Ptr": "b14"}, {"Ptr": "b2"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "p301"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "p302"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b5"}, {"Ptr": "b14"}, {"Ptr": "p303"}], { - "grid_dim_x": {"Absolute": 8192}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b2"}, {"Ptr": "b8"}, {"Ptr": "b5"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b14"}, {"Ptr": "b2"}, {"Ptr": "p304"}], { - "grid_dim_x": {"Absolute": 2048}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b8"}, {"Ptr": "b14"}, {"Ptr": "b7"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b3"}, {"Ptr": "b8"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b14"}, {"Ptr": "b3"}, {"Ptr": "b8"}, {"Ptr": "p305"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b14"}, {"Ptr": "p306"}], { - "grid_dim_x": {"Absolute": 128256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["argmax_logits_and_append", [{"Ptr": "output"}, {"Ptr": "index"}, {"Ptr": "token_ids"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 128}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]} - ]]} - ] - } -} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json index c4919e4b..db314b3e 100644 --- a/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json +++ b/machine_interface/tests/data/cuda/test_gpu_llama_kv-full.json @@ -24,7 +24,6 @@ {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_2_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, @@ -32,16 +31,17 @@ {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_expand_dims_expand_dims_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_transpose_reshape_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_transpose_reshape_transpose_kernel"}, {"module_name": "llm_inference.cubin", "kernel_name": "initialize_index"}, {"module_name": "llm_inference.cubin", "kernel_name": "extract_token_from_tokens"}, - {"module_name": "llm_inference.cubin", "kernel_name": "argmax_logits_and_append"} + {"module_name": "llm_inference.cubin", "kernel_name": "argmax_logits_and_append"}, + {"module_name": "llm_inference.cubin", "kernel_name": "duplicate_cache"} ], "blueprint": { - "inputs": ["token_ids", "keys", "values", "cos", "sin", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290"], - "buffers": {"token_id": {"Absolute": 8}, "index": {"Absolute": 8}, "output": {"Absolute": 1048576}, "b7": {"Absolute": 8}, "b24": {"Absolute": 8192}, "b25": {"Absolute": 8}, "b27": {"Absolute": 32768}, "b29": {"Absolute": 32768}, "b30": {"Absolute": 16384}, "b31": {"Absolute": 256}, "b32": {"Absolute": 256}, "b38": {"Absolute": 65536}, "b40": {"Absolute": 8192}, "b41": {"Absolute": 8192}, "b42": {"Absolute": 1048576}, "b48": {"Absolute": 1048576}, "b311": {"Absolute": 4096}, "b312": {"Absolute": 16384}}, - "outputs": ["token_ids", "keys"], + "inputs": ["token_ids", "keys", "values", "cos", "sin", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290", "p291", "p292", "p293", "p294", "p295", "p296", "p297", "p298", "p299", "p300", "p301", "p302", "p303", "p304", "p305", "p306", "p307", "p308", "p309", "p310", "p311", "p312", "p313", "p314", "p315", "p316", "p317", "p318", "p319", "p320", "p321", "p322"], + "buffers": {"token_id": {"Absolute": 8}, "index": {"Absolute": 8}, "output": {"Absolute": 1048576}, "tmp_keys": {"Absolute": 16777216}, "tmp_values": {"Absolute": 16777216}, "b7": {"Absolute": 8}, "b24": {"Absolute": 32768}, "b25": {"Absolute": 8}, "b27": {"Absolute": 32768}, "b29": {"Absolute": 32768}, "b30": {"Absolute": 16384}, "b31": {"Absolute": 256}, "b32": {"Absolute": 256}, "b39": {"Absolute": 16384}, "b40": {"Absolute": 8192}, "b62": {"Absolute": 16777216}, "b343": {"Absolute": 4096}, "b344": {"Absolute": 16384}}, + "outputs": ["token_ids"], "control_flow": [ {"ExecKernel": ["initialize_index", [{"Ptr": "index"}], { "grid_dim_x": {"Absolute": 1}, @@ -152,15 +152,6 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p19"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel", [{"Ptr": "b30"}, {"Ptr": "index"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, @@ -170,8 +161,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b30"}, {"Ptr": "p22"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p19"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b30"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -179,7 +170,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p23"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "p23"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -188,7 +179,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -197,7 +188,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -206,8 +197,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "keys"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -215,7 +206,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b39"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -224,7 +215,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p24"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -233,7 +224,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -242,7 +233,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p15"}, {"Ptr": "b7"}, {"Ptr": "b38"}, {"Ptr": "p24"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p15"}, {"Ptr": "b7"}, {"Ptr": "b39"}, {"Ptr": "p25"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -251,7 +242,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -260,7 +251,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -269,7 +260,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -278,7 +269,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -287,17 +278,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "b42"}, {"Ptr": "values"}, {"Ptr": "p19"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p25"}, {"Ptr": "p26"}, {"Ptr": "b30"}, {"Ptr": "p27"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "p28"}, {"Ptr": "b30"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -305,7 +287,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "p28"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p30"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -314,7 +296,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -323,8 +305,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "values"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -332,7 +314,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -341,7 +323,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p24"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -350,7 +332,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -359,7 +341,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -368,7 +350,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "p31"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -377,7 +359,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -386,7 +368,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -395,7 +377,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p30"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -404,7 +386,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "p31"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p33"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -413,7 +395,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p32"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "p34"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -422,7 +404,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -431,7 +413,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "p33"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p35"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -440,7 +422,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -449,7 +431,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -458,7 +440,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p34"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p36"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -467,7 +449,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p35"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "p37"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -476,7 +458,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -485,7 +467,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -494,8 +476,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p36"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p38"}, {"Ptr": "p39"}, {"Ptr": "p40"}, {"Ptr": "b30"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -503,16 +485,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p37"}, {"Ptr": "p38"}, {"Ptr": "b30"}, {"Ptr": "p39"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p40"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p42"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -521,7 +494,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -530,7 +503,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -539,8 +512,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -548,7 +521,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -557,7 +530,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p43"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -566,7 +539,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -575,7 +548,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b38"}, {"Ptr": "p14"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p41"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p14"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p44"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -584,7 +557,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -593,7 +566,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -602,7 +575,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -611,7 +584,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -620,8 +593,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p36"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p45"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b30"}, {"Ptr": "p48"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -629,16 +602,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p42"}, {"Ptr": "p43"}, {"Ptr": "b30"}, {"Ptr": "p44"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p45"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p49"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -647,7 +611,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -656,8 +620,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -665,7 +629,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b39"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -674,7 +638,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p43"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -683,7 +647,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -692,7 +656,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -701,7 +665,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p46"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p50"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -710,7 +674,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -719,7 +683,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -728,7 +692,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p47"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p51"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -737,7 +701,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p48"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p52"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -746,7 +710,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p49"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p53"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -755,7 +719,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -764,7 +728,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p50"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p54"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -773,7 +737,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -782,7 +746,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -791,7 +755,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p51"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p55"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -800,7 +764,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p52"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p56"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -809,7 +773,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -818,7 +782,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -827,17 +791,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p53"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p54"}, {"Ptr": "p55"}, {"Ptr": "b30"}, {"Ptr": "p56"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p57"}, {"Ptr": "p58"}, {"Ptr": "p59"}, {"Ptr": "b30"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -845,7 +800,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p57"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p61"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -854,7 +809,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -863,7 +818,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -872,8 +827,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -881,7 +836,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -890,7 +845,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p62"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -899,7 +854,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -908,7 +863,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p13"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p58"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p13"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p63"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -917,7 +872,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -926,7 +881,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -935,7 +890,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -944,7 +899,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -953,17 +908,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p53"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p59"}, {"Ptr": "p60"}, {"Ptr": "b30"}, {"Ptr": "p61"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p64"}, {"Ptr": "p65"}, {"Ptr": "p66"}, {"Ptr": "b30"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -971,7 +917,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p62"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p68"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -980,7 +926,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -989,8 +935,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -998,7 +944,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1007,7 +953,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p62"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1016,7 +962,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1025,7 +971,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1034,7 +980,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p63"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p69"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1043,7 +989,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1052,7 +998,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1061,7 +1007,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p64"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p70"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1070,7 +1016,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p65"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p71"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1079,7 +1025,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p66"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p72"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1088,7 +1034,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1097,7 +1043,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p67"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p73"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1106,7 +1052,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1115,7 +1061,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1124,7 +1070,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p68"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p74"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1133,7 +1079,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p69"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p75"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1142,7 +1088,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1151,7 +1097,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1160,8 +1106,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p70"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "p78"}, {"Ptr": "b30"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1169,16 +1115,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p71"}, {"Ptr": "p72"}, {"Ptr": "b30"}, {"Ptr": "p73"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p74"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p80"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1187,7 +1124,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1196,7 +1133,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1205,8 +1142,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1214,7 +1151,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1223,7 +1160,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p81"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1232,7 +1169,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1241,7 +1178,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p12"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p75"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p12"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p82"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1250,7 +1187,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1259,7 +1196,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1268,7 +1205,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1277,7 +1214,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1286,8 +1223,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p70"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p83"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b30"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1295,16 +1232,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "b30"}, {"Ptr": "p78"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p79"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p87"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1313,7 +1241,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1322,8 +1250,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1331,7 +1259,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1340,7 +1268,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p81"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1349,7 +1277,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1358,7 +1286,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1367,7 +1295,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p80"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p88"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1376,7 +1304,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1385,7 +1313,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1394,7 +1322,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p81"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p89"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1403,7 +1331,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p82"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p90"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1412,7 +1340,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p83"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p91"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1421,7 +1349,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1430,7 +1358,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p84"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p92"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1439,7 +1367,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1448,7 +1376,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1457,7 +1385,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p85"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p93"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1466,7 +1394,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p86"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p94"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1475,7 +1403,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1484,7 +1412,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1493,8 +1421,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p87"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p95"}, {"Ptr": "p96"}, {"Ptr": "p97"}, {"Ptr": "b30"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1502,16 +1430,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p88"}, {"Ptr": "p89"}, {"Ptr": "b30"}, {"Ptr": "p90"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p91"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p99"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1538,8 +1457,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1547,7 +1466,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1556,7 +1475,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p100"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1565,7 +1484,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1574,7 +1493,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p11"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p92"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p11"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p101"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1583,7 +1502,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1592,7 +1511,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1601,7 +1520,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1610,7 +1529,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1619,17 +1538,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p87"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p93"}, {"Ptr": "p94"}, {"Ptr": "b30"}, {"Ptr": "p95"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p102"}, {"Ptr": "p103"}, {"Ptr": "p104"}, {"Ptr": "b30"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1637,7 +1547,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p96"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p106"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1646,7 +1556,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1655,8 +1565,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1664,7 +1574,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1673,7 +1583,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p100"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1682,7 +1592,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1691,7 +1601,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1700,7 +1610,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p97"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p107"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1709,7 +1619,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1718,7 +1628,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1727,7 +1637,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p98"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p108"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1736,7 +1646,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p99"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p109"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1745,7 +1655,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p100"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p110"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1754,7 +1664,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1763,7 +1673,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p101"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p111"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1772,7 +1682,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1781,7 +1691,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1790,7 +1700,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p102"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p112"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1799,7 +1709,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p103"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p113"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1808,7 +1718,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1817,7 +1727,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1826,17 +1736,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p104"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p105"}, {"Ptr": "p106"}, {"Ptr": "b30"}, {"Ptr": "p107"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p114"}, {"Ptr": "p115"}, {"Ptr": "p116"}, {"Ptr": "b30"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1844,7 +1745,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p108"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p118"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1853,7 +1754,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1862,7 +1763,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1871,8 +1772,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1880,7 +1781,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1889,7 +1790,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p119"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1898,7 +1799,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1907,7 +1808,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p10"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p109"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p10"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p120"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1916,7 +1817,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1925,7 +1826,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1934,7 +1835,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1943,7 +1844,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1952,8 +1853,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p104"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p121"}, {"Ptr": "p122"}, {"Ptr": "p123"}, {"Ptr": "b30"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1961,16 +1862,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p110"}, {"Ptr": "p111"}, {"Ptr": "b30"}, {"Ptr": "p112"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p113"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p125"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1979,7 +1871,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1988,8 +1880,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1997,7 +1889,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2006,7 +1898,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p119"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2015,7 +1907,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2024,7 +1916,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2033,7 +1925,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p114"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p126"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2042,7 +1934,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2051,7 +1943,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2060,7 +1952,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p115"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p127"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2069,7 +1961,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p116"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p128"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2078,7 +1970,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p117"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p129"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2087,7 +1979,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2096,7 +1988,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p118"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p130"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2105,7 +1997,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2114,7 +2006,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2123,7 +2015,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p119"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p131"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2132,7 +2024,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p120"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p132"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2141,7 +2033,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2150,7 +2042,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2159,17 +2051,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p121"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p122"}, {"Ptr": "p123"}, {"Ptr": "b30"}, {"Ptr": "p124"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p133"}, {"Ptr": "p134"}, {"Ptr": "p135"}, {"Ptr": "b30"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2177,7 +2060,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p125"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p137"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2186,7 +2069,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2195,7 +2078,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2204,8 +2087,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2213,7 +2096,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2222,7 +2105,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p138"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2231,7 +2114,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2240,7 +2123,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p9"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p126"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p9"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p139"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2249,7 +2132,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2258,7 +2141,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2267,7 +2150,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2276,7 +2159,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2285,8 +2168,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p121"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p140"}, {"Ptr": "p141"}, {"Ptr": "p142"}, {"Ptr": "b30"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2294,16 +2177,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p127"}, {"Ptr": "p128"}, {"Ptr": "b30"}, {"Ptr": "p129"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p130"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p144"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2312,7 +2186,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2321,8 +2195,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2330,7 +2204,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2339,7 +2213,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p138"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2348,7 +2222,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2357,7 +2231,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2366,7 +2240,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p131"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p145"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2375,7 +2249,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2384,7 +2258,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2393,7 +2267,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p132"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p146"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2402,7 +2276,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p133"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p147"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2411,7 +2285,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p134"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p148"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2420,7 +2294,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2429,7 +2303,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p135"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p149"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2438,7 +2312,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2447,7 +2321,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2456,7 +2330,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p136"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p150"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2465,7 +2339,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p137"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p151"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2474,7 +2348,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2483,7 +2357,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2492,17 +2366,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p138"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p139"}, {"Ptr": "p140"}, {"Ptr": "b30"}, {"Ptr": "p141"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p152"}, {"Ptr": "p153"}, {"Ptr": "p154"}, {"Ptr": "b30"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2510,7 +2375,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p142"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p156"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2519,7 +2384,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2528,7 +2393,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2537,8 +2402,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2546,7 +2411,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2555,7 +2420,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p157"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2564,7 +2429,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2573,7 +2438,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p8"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p143"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p8"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p158"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2582,7 +2447,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2591,7 +2456,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2600,7 +2465,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2609,7 +2474,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2618,8 +2483,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p138"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p159"}, {"Ptr": "p160"}, {"Ptr": "p161"}, {"Ptr": "b30"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2627,16 +2492,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p144"}, {"Ptr": "p145"}, {"Ptr": "b30"}, {"Ptr": "p146"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p147"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p163"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2645,7 +2501,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2654,8 +2510,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2663,7 +2519,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2672,7 +2528,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p157"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2681,7 +2537,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2690,7 +2546,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2699,7 +2555,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p148"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p164"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2708,7 +2564,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2717,7 +2573,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2726,7 +2582,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p149"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p165"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2735,7 +2591,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p150"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p166"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2744,7 +2600,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p151"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p167"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2753,7 +2609,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2762,7 +2618,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p152"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p168"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2771,7 +2627,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2780,7 +2636,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2789,7 +2645,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p153"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p169"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2798,7 +2654,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p154"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p170"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2807,7 +2663,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2816,7 +2672,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2825,17 +2681,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p155"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p156"}, {"Ptr": "p157"}, {"Ptr": "b30"}, {"Ptr": "p158"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p171"}, {"Ptr": "p172"}, {"Ptr": "p173"}, {"Ptr": "b30"}, {"Ptr": "p174"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2843,7 +2690,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p159"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p175"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2852,7 +2699,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2861,7 +2708,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2870,8 +2717,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2879,7 +2726,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2888,7 +2735,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p176"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2897,7 +2744,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2906,7 +2753,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p7"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p160"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p7"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p177"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2915,7 +2762,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2924,7 +2771,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2933,7 +2780,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2942,7 +2789,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2951,8 +2798,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p155"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p178"}, {"Ptr": "p179"}, {"Ptr": "p180"}, {"Ptr": "b30"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2960,16 +2807,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p161"}, {"Ptr": "p162"}, {"Ptr": "b30"}, {"Ptr": "p163"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p164"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p182"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2978,7 +2816,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2987,8 +2825,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2996,7 +2834,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3005,7 +2843,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p176"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3014,7 +2852,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3023,7 +2861,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3032,7 +2870,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p165"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p183"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3041,7 +2879,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3050,7 +2888,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3059,7 +2897,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p166"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p184"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3068,7 +2906,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p167"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p185"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3077,7 +2915,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p168"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p186"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3086,7 +2924,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3095,7 +2933,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p169"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p187"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3104,7 +2942,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3113,7 +2951,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3122,7 +2960,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p170"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p188"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3131,7 +2969,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p171"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p189"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3140,7 +2978,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3149,7 +2987,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3158,17 +2996,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p172"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p173"}, {"Ptr": "p174"}, {"Ptr": "b30"}, {"Ptr": "p175"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p190"}, {"Ptr": "p191"}, {"Ptr": "p192"}, {"Ptr": "b30"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3176,7 +3005,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p176"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p194"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3185,7 +3014,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3194,7 +3023,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3203,8 +3032,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3212,7 +3041,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3221,7 +3050,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p195"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3230,7 +3059,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3239,7 +3068,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p6"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p177"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p6"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p196"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3248,7 +3077,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3257,7 +3086,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3266,7 +3095,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3275,7 +3104,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3284,8 +3113,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p172"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p197"}, {"Ptr": "p198"}, {"Ptr": "p199"}, {"Ptr": "b30"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3293,16 +3122,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p178"}, {"Ptr": "p179"}, {"Ptr": "b30"}, {"Ptr": "p180"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p181"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p201"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3311,7 +3131,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3320,8 +3140,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3329,7 +3149,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3338,7 +3158,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p195"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3347,7 +3167,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3356,7 +3176,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3365,7 +3185,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p182"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p202"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3374,7 +3194,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3383,7 +3203,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3392,7 +3212,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p183"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p203"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3401,7 +3221,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p184"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p204"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3410,7 +3230,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p185"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p205"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3419,7 +3239,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3428,7 +3248,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p186"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p206"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3437,7 +3257,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3446,7 +3266,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3455,7 +3275,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p187"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p207"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3464,7 +3284,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p188"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p208"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3473,7 +3293,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3482,7 +3302,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3491,17 +3311,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p189"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p190"}, {"Ptr": "p191"}, {"Ptr": "b30"}, {"Ptr": "p192"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p209"}, {"Ptr": "p210"}, {"Ptr": "p211"}, {"Ptr": "b30"}, {"Ptr": "p212"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3509,7 +3320,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p193"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p213"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3536,8 +3347,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3545,7 +3356,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3554,7 +3365,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p214"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3563,7 +3374,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3572,7 +3383,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p5"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p194"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p5"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p215"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3581,7 +3392,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3590,7 +3401,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3599,7 +3410,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3608,7 +3419,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3617,8 +3428,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p189"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p216"}, {"Ptr": "p217"}, {"Ptr": "p218"}, {"Ptr": "b30"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3626,16 +3437,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p195"}, {"Ptr": "p196"}, {"Ptr": "b30"}, {"Ptr": "p197"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p198"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p220"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3644,7 +3446,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3653,8 +3455,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3662,7 +3464,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3671,7 +3473,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p214"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3680,7 +3482,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3689,7 +3491,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3698,7 +3500,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p199"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p221"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3707,7 +3509,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3716,7 +3518,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3725,7 +3527,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p200"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p222"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3734,7 +3536,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p201"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p223"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3743,7 +3545,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p202"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p224"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3752,7 +3554,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3761,7 +3563,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p203"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p225"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3770,7 +3572,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3779,7 +3581,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3788,7 +3590,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p204"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p226"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3797,7 +3599,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p205"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p227"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3806,7 +3608,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3815,7 +3617,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3824,8 +3626,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p206"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p228"}, {"Ptr": "p229"}, {"Ptr": "p230"}, {"Ptr": "b30"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3833,16 +3635,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p207"}, {"Ptr": "p208"}, {"Ptr": "b30"}, {"Ptr": "p209"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p210"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p232"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3851,7 +3644,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3860,7 +3653,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3869,8 +3662,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3878,7 +3671,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3887,7 +3680,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p233"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3896,7 +3689,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3905,7 +3698,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p4"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p211"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p4"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p234"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3914,7 +3707,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3923,7 +3716,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3932,7 +3725,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3941,7 +3734,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3950,17 +3743,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p206"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p212"}, {"Ptr": "p213"}, {"Ptr": "b30"}, {"Ptr": "p214"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p235"}, {"Ptr": "p236"}, {"Ptr": "p237"}, {"Ptr": "b30"}, {"Ptr": "p238"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3968,7 +3752,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p215"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p239"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3977,7 +3761,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3986,8 +3770,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3995,7 +3779,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4004,7 +3788,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p233"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4013,7 +3797,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4022,7 +3806,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4031,7 +3815,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p216"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p240"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4040,7 +3824,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4049,7 +3833,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4058,7 +3842,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p217"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p241"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4067,7 +3851,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p218"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p242"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4076,7 +3860,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p219"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p243"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4085,7 +3869,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4094,7 +3878,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p220"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p244"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4103,7 +3887,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4112,7 +3896,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4121,7 +3905,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p221"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p245"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4130,7 +3914,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p222"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p246"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4139,7 +3923,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4148,7 +3932,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4157,8 +3941,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p223"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p247"}, {"Ptr": "p248"}, {"Ptr": "p249"}, {"Ptr": "b30"}, {"Ptr": "p250"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4166,16 +3950,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p224"}, {"Ptr": "p225"}, {"Ptr": "b30"}, {"Ptr": "p226"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p227"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p251"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4184,7 +3959,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4193,7 +3968,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4202,8 +3977,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4211,7 +3986,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4220,7 +3995,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p252"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4229,7 +4004,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4238,7 +4013,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p3"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p228"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p3"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p253"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4247,7 +4022,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4256,7 +4031,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4265,7 +4040,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4274,7 +4049,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4283,17 +4058,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p223"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p229"}, {"Ptr": "p230"}, {"Ptr": "b30"}, {"Ptr": "p231"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p254"}, {"Ptr": "p255"}, {"Ptr": "p256"}, {"Ptr": "b30"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4301,7 +4067,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p232"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p258"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4310,7 +4076,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4319,8 +4085,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4328,7 +4094,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4337,7 +4103,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p252"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4346,7 +4112,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4355,7 +4121,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4364,7 +4130,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p233"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p259"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4373,7 +4139,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4382,7 +4148,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4391,7 +4157,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p234"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p260"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4400,7 +4166,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p235"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p261"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4409,7 +4175,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p236"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p262"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4418,7 +4184,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4427,7 +4193,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p237"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p263"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4436,7 +4202,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4445,7 +4211,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4454,7 +4220,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p238"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p264"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4463,7 +4229,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p239"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p265"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4472,7 +4238,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4481,7 +4247,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4490,17 +4256,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p240"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p241"}, {"Ptr": "p242"}, {"Ptr": "b30"}, {"Ptr": "p243"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p266"}, {"Ptr": "p267"}, {"Ptr": "p268"}, {"Ptr": "b30"}, {"Ptr": "p269"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4508,7 +4265,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p244"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p270"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4517,7 +4274,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4526,7 +4283,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4535,8 +4292,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4544,7 +4301,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4553,7 +4310,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p271"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4562,7 +4319,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4571,7 +4328,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p2"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p245"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p2"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p272"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4580,7 +4337,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4589,7 +4346,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4598,7 +4355,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4607,7 +4364,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4616,8 +4373,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p240"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p273"}, {"Ptr": "p274"}, {"Ptr": "p275"}, {"Ptr": "b30"}, {"Ptr": "p276"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4625,16 +4382,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p246"}, {"Ptr": "p247"}, {"Ptr": "b30"}, {"Ptr": "p248"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p249"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p277"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4643,7 +4391,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4652,8 +4400,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4661,7 +4409,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4670,7 +4418,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p271"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4679,7 +4427,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4688,7 +4436,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4697,7 +4445,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p250"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p278"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4706,7 +4454,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4715,7 +4463,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4724,7 +4472,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p251"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p279"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4733,7 +4481,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p252"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p280"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4742,7 +4490,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p253"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p281"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4751,7 +4499,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4760,7 +4508,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p254"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p282"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4769,7 +4517,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4778,7 +4526,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4787,7 +4535,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p255"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p283"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4796,7 +4544,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p256"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p284"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4805,7 +4553,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4814,7 +4562,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4823,8 +4571,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p257"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p285"}, {"Ptr": "p286"}, {"Ptr": "p287"}, {"Ptr": "b30"}, {"Ptr": "p288"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4832,16 +4580,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p258"}, {"Ptr": "p259"}, {"Ptr": "b30"}, {"Ptr": "p260"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p261"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p289"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4850,7 +4589,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4859,7 +4598,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4868,8 +4607,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4877,7 +4616,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4886,7 +4625,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p290"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4895,7 +4634,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4904,7 +4643,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p1"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p262"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p1"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p291"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4913,7 +4652,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4922,7 +4661,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4931,7 +4670,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4940,7 +4679,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4949,8 +4688,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p257"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p292"}, {"Ptr": "p293"}, {"Ptr": "p294"}, {"Ptr": "b30"}, {"Ptr": "p295"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4958,16 +4697,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p263"}, {"Ptr": "p264"}, {"Ptr": "b30"}, {"Ptr": "p265"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p266"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p296"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4976,7 +4706,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4985,8 +4715,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4994,7 +4724,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5003,7 +4733,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p290"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5012,7 +4742,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -5021,7 +4751,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5030,7 +4760,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p267"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p297"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5039,7 +4769,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5048,7 +4778,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5057,7 +4787,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p268"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p298"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5066,7 +4796,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p269"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p299"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5075,7 +4805,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p270"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p300"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5084,7 +4814,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5093,7 +4823,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p271"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p301"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5102,7 +4832,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5111,7 +4841,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5120,7 +4850,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p272"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p302"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5129,7 +4859,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p273"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p303"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5138,7 +4868,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5147,7 +4877,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5156,8 +4886,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p274"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p304"}, {"Ptr": "p305"}, {"Ptr": "p306"}, {"Ptr": "b30"}, {"Ptr": "p307"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -5165,16 +4895,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p275"}, {"Ptr": "p276"}, {"Ptr": "b30"}, {"Ptr": "p277"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p278"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p308"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5183,7 +4904,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5192,7 +4913,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5201,8 +4922,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -5210,7 +4931,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5219,7 +4940,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p309"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5228,7 +4949,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -5237,7 +4958,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p0"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p279"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p0"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p310"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5246,7 +4967,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5255,7 +4976,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5264,7 +4985,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5273,7 +4994,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5282,17 +5003,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p274"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p280"}, {"Ptr": "p281"}, {"Ptr": "b30"}, {"Ptr": "p282"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p311"}, {"Ptr": "p312"}, {"Ptr": "p313"}, {"Ptr": "b30"}, {"Ptr": "p314"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -5300,7 +5012,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p283"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p315"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5309,7 +5021,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5318,8 +5030,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -5327,7 +5039,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5336,7 +5048,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p309"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5345,7 +5057,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -5354,7 +5066,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b30"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5363,7 +5075,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p284"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b30"}, {"Ptr": "p316"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5372,7 +5084,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5381,7 +5093,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5390,7 +5102,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p285"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p317"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5399,7 +5111,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p286"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p318"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5408,7 +5120,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p287"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p319"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5417,7 +5129,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5426,7 +5138,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p288"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p320"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5435,7 +5147,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b30"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5444,7 +5156,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b7"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b7"}, {"Ptr": "b30"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5453,7 +5165,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b7"}, {"Ptr": "b40"}, {"Ptr": "p289"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b7"}, {"Ptr": "b30"}, {"Ptr": "p321"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5462,7 +5174,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "p290"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "p322"}], { "grid_dim_x": {"Absolute": 128256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5479,6 +5191,24 @@ "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["duplicate_cache", [{"Ptr": "keys"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["duplicate_cache", [{"Ptr": "values"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} }]} ]]} ] diff --git a/machine_interface/tests/data/cuda/test_gpu_llama_kv.json b/machine_interface/tests/data/cuda/test_gpu_llama_kv.json index 384a638c..95557cbb 100644 --- a/machine_interface/tests/data/cuda/test_gpu_llama_kv.json +++ b/machine_interface/tests/data/cuda/test_gpu_llama_kv.json @@ -24,7 +24,6 @@ {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_1_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_2_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"}, @@ -32,13 +31,13 @@ {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_scatter_nd_kernel_1"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel"}, {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_expand_dims_expand_dims_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_kernel"}, - {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_transpose_reshape_transpose_kernel"} + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_kernel"}, + {"module_name": "llama_kv.cubin", "kernel_name": "tvmgen_default_fused_take_transpose_reshape_transpose_kernel"} ], "blueprint": { - "inputs": ["token_id", "index", "keys", "values", "cos", "sin", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290"], - "buffers": {"output": {"Absolute": 1048576}, "b7": {"Absolute": 8}, "b24": {"Absolute": 8192}, "b25": {"Absolute": 8}, "b27": {"Absolute": 32768}, "b29": {"Absolute": 32768}, "b30": {"Absolute": 16384}, "b31": {"Absolute": 256}, "b32": {"Absolute": 256}, "b38": {"Absolute": 65536}, "b40": {"Absolute": 8192}, "b41": {"Absolute": 8192}, "b42": {"Absolute": 1048576}, "b48": {"Absolute": 1048576}, "b311": {"Absolute": 4096}, "b312": {"Absolute": 16384}}, - "outputs": ["output"], + "inputs": ["token_id", "index", "keys", "values", "cos", "sin", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290", "p291", "p292", "p293", "p294", "p295", "p296", "p297", "p298", "p299", "p300", "p301", "p302", "p303", "p304", "p305", "p306", "p307", "p308", "p309", "p310", "p311", "p312", "p313", "p314", "p315", "p316", "p317", "p318", "p319", "p320", "p321", "p322"], + "buffers": {"output": {"Absolute": 1048576}, "tmp_keys": {"Absolute": 16777216}, "tmp_values": {"Absolute": 16777216}, "b7": {"Absolute": 8}, "b24": {"Absolute": 32768}, "b25": {"Absolute": 8}, "b27": {"Absolute": 32768}, "b29": {"Absolute": 32768}, "b30": {"Absolute": 16384}, "b31": {"Absolute": 256}, "b32": {"Absolute": 256}, "b39": {"Absolute": 16384}, "b40": {"Absolute": 8192}, "b62": {"Absolute": 16777216}, "b343": {"Absolute": 4096}, "b344": {"Absolute": 16384}}, + "outputs": ["output", "tmp_keys", "tmp_values"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_add_kernel", [{"Ptr": "b7"}, {"Ptr": "index"}], { "grid_dim_x": {"Absolute": 1}, @@ -130,15 +129,6 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p19"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_broadcast_to_expand_dims_kernel", [{"Ptr": "b30"}, {"Ptr": "index"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, @@ -148,8 +138,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b30"}, {"Ptr": "p22"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p19"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b30"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -157,7 +147,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p23"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "p23"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -166,7 +156,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -175,7 +165,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -184,8 +174,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "keys"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -193,7 +183,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b39"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -202,7 +192,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p24"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -211,7 +201,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "output"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -220,7 +210,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p15"}, {"Ptr": "b7"}, {"Ptr": "b38"}, {"Ptr": "p24"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p15"}, {"Ptr": "b7"}, {"Ptr": "b39"}, {"Ptr": "p25"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -229,7 +219,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -238,7 +228,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -247,7 +237,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -256,7 +246,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -265,8 +255,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "b42"}, {"Ptr": "values"}, {"Ptr": "p19"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "p28"}, {"Ptr": "b30"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -274,16 +264,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p25"}, {"Ptr": "p26"}, {"Ptr": "b30"}, {"Ptr": "p27"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "p28"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p30"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -292,7 +273,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -301,8 +282,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "values"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -310,7 +291,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -319,7 +300,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p24"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -328,7 +309,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -337,7 +318,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -346,7 +327,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "p31"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -355,7 +336,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -364,7 +345,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -373,7 +354,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p30"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -382,7 +363,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "p31"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p33"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -391,7 +372,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p32"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "p34"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -400,7 +381,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b38"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -409,7 +390,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "p33"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "p35"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -418,7 +399,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -427,7 +408,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -436,7 +417,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p34"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p36"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -445,7 +426,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p35"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "p37"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -454,7 +435,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -463,7 +444,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -472,8 +453,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p36"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p38"}, {"Ptr": "p39"}, {"Ptr": "p40"}, {"Ptr": "b30"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -481,16 +462,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p37"}, {"Ptr": "p38"}, {"Ptr": "b30"}, {"Ptr": "p39"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p40"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p42"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -499,7 +471,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -508,7 +480,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -517,8 +489,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -526,7 +498,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -535,7 +507,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p43"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -544,7 +516,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -553,7 +525,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b38"}, {"Ptr": "p14"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p41"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p14"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p44"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -562,7 +534,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -571,7 +543,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -580,7 +552,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -589,7 +561,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -598,17 +570,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p36"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p42"}, {"Ptr": "p43"}, {"Ptr": "b30"}, {"Ptr": "p44"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p45"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b30"}, {"Ptr": "p48"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -616,7 +579,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p45"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p49"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -625,7 +588,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -634,8 +597,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -643,7 +606,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b39"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -652,7 +615,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p43"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -661,7 +624,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -670,7 +633,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -679,7 +642,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p46"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p50"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -688,7 +651,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -697,7 +660,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -706,7 +669,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p47"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p51"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -715,7 +678,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p48"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p52"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -724,7 +687,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p49"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p53"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -733,7 +696,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -742,7 +705,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p50"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p54"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -751,7 +714,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -760,7 +723,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -769,7 +732,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p51"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p55"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -778,7 +741,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p52"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p56"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -787,7 +750,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -796,7 +759,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -805,17 +768,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p53"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p54"}, {"Ptr": "p55"}, {"Ptr": "b30"}, {"Ptr": "p56"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p57"}, {"Ptr": "p58"}, {"Ptr": "p59"}, {"Ptr": "b30"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -823,7 +777,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p57"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p61"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -832,7 +786,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -841,7 +795,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -850,8 +804,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -859,7 +813,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -868,7 +822,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p62"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -877,7 +831,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -886,7 +840,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p13"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p58"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p13"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p63"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -895,7 +849,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -904,7 +858,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -913,7 +867,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -922,7 +876,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -931,8 +885,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p53"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p64"}, {"Ptr": "p65"}, {"Ptr": "p66"}, {"Ptr": "b30"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -940,16 +894,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p59"}, {"Ptr": "p60"}, {"Ptr": "b30"}, {"Ptr": "p61"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p62"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p68"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -958,7 +903,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -967,8 +912,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -976,7 +921,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -985,7 +930,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p62"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -994,7 +939,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1003,7 +948,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1012,7 +957,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p63"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p69"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1021,7 +966,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1030,7 +975,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1039,7 +984,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p64"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p70"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1048,7 +993,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p65"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p71"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1057,7 +1002,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p66"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p72"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1066,7 +1011,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1075,7 +1020,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p67"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p73"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1084,7 +1029,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1093,7 +1038,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1102,7 +1047,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p68"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p74"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1111,7 +1056,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p69"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p75"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1120,7 +1065,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1129,7 +1074,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1138,8 +1083,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p70"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "p78"}, {"Ptr": "b30"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1147,16 +1092,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p71"}, {"Ptr": "p72"}, {"Ptr": "b30"}, {"Ptr": "p73"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p74"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p80"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1165,7 +1101,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1174,7 +1110,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1183,8 +1119,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1192,7 +1128,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1201,7 +1137,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p81"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1210,7 +1146,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1219,7 +1155,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p12"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p75"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p12"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p82"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1228,7 +1164,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1237,7 +1173,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1246,7 +1182,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1255,7 +1191,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1264,17 +1200,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p70"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "b30"}, {"Ptr": "p78"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p83"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b30"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1282,7 +1209,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p79"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p87"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1291,7 +1218,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1300,8 +1227,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1309,7 +1236,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1318,7 +1245,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p81"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1327,7 +1254,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1336,7 +1263,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1345,7 +1272,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p80"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p88"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1354,7 +1281,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1363,7 +1290,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1372,7 +1299,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p81"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p89"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1381,7 +1308,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p82"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p90"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1390,7 +1317,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p83"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p91"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1399,7 +1326,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1408,7 +1335,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p84"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p92"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1417,7 +1344,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1426,7 +1353,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1435,7 +1362,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p85"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p93"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1444,7 +1371,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p86"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p94"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1453,7 +1380,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1462,7 +1389,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1471,8 +1398,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p87"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p95"}, {"Ptr": "p96"}, {"Ptr": "p97"}, {"Ptr": "b30"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1480,16 +1407,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p88"}, {"Ptr": "p89"}, {"Ptr": "b30"}, {"Ptr": "p90"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p91"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p99"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1516,8 +1434,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1525,7 +1443,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1534,7 +1452,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p100"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1543,7 +1461,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1552,7 +1470,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p11"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p92"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p11"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p101"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1561,7 +1479,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1570,7 +1488,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1579,7 +1497,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1588,7 +1506,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1597,8 +1515,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p87"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p102"}, {"Ptr": "p103"}, {"Ptr": "p104"}, {"Ptr": "b30"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1606,16 +1524,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p93"}, {"Ptr": "p94"}, {"Ptr": "b30"}, {"Ptr": "p95"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p96"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p106"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1624,7 +1533,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1633,8 +1542,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1642,7 +1551,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1651,7 +1560,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p100"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1660,7 +1569,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1669,7 +1578,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1678,7 +1587,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p97"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p107"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1687,7 +1596,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1696,7 +1605,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1705,7 +1614,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p98"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p108"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1714,7 +1623,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p99"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p109"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1723,7 +1632,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p100"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p110"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1732,7 +1641,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1741,7 +1650,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p101"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p111"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1750,7 +1659,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1759,7 +1668,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1768,7 +1677,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p102"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p112"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1777,7 +1686,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p103"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p113"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1786,7 +1695,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1795,7 +1704,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1804,8 +1713,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p104"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p114"}, {"Ptr": "p115"}, {"Ptr": "p116"}, {"Ptr": "b30"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1813,16 +1722,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p105"}, {"Ptr": "p106"}, {"Ptr": "b30"}, {"Ptr": "p107"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p108"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p118"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1831,7 +1731,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1840,7 +1740,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1849,8 +1749,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1858,7 +1758,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1867,7 +1767,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p119"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1876,7 +1776,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -1885,7 +1785,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p10"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p109"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p10"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p120"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1894,7 +1794,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1903,7 +1803,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1912,7 +1812,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1921,7 +1821,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1930,17 +1830,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p104"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p110"}, {"Ptr": "p111"}, {"Ptr": "b30"}, {"Ptr": "p112"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p121"}, {"Ptr": "p122"}, {"Ptr": "p123"}, {"Ptr": "b30"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -1948,7 +1839,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p113"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p125"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1957,7 +1848,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1966,8 +1857,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -1975,7 +1866,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1984,7 +1875,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p119"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -1993,7 +1884,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2002,7 +1893,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2011,7 +1902,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p114"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p126"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2020,7 +1911,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2029,7 +1920,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2038,7 +1929,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p115"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p127"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2047,7 +1938,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p116"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p128"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2056,7 +1947,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p117"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p129"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2065,7 +1956,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2074,7 +1965,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p118"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p130"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2083,7 +1974,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2092,7 +1983,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2101,7 +1992,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p119"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p131"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2110,7 +2001,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p120"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p132"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2119,7 +2010,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2128,7 +2019,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2137,8 +2028,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p121"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p133"}, {"Ptr": "p134"}, {"Ptr": "p135"}, {"Ptr": "b30"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2146,16 +2037,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p122"}, {"Ptr": "p123"}, {"Ptr": "b30"}, {"Ptr": "p124"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p125"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p137"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2164,7 +2046,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2173,7 +2055,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2182,8 +2064,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2191,7 +2073,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2200,7 +2082,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p138"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2209,7 +2091,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2218,7 +2100,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p9"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p126"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p9"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p139"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2227,7 +2109,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2236,7 +2118,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2245,7 +2127,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2254,7 +2136,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2263,17 +2145,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p121"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p127"}, {"Ptr": "p128"}, {"Ptr": "b30"}, {"Ptr": "p129"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p140"}, {"Ptr": "p141"}, {"Ptr": "p142"}, {"Ptr": "b30"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2281,7 +2154,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p130"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p144"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2290,7 +2163,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2299,8 +2172,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2308,7 +2181,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2317,7 +2190,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p138"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2326,7 +2199,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2335,7 +2208,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2344,7 +2217,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p131"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p145"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2353,7 +2226,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2362,7 +2235,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2371,7 +2244,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p132"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p146"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2380,7 +2253,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p133"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p147"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2389,7 +2262,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p134"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p148"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2398,7 +2271,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2407,7 +2280,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p135"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p149"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2416,7 +2289,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2425,7 +2298,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2434,7 +2307,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p136"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p150"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2443,7 +2316,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p137"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p151"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2452,7 +2325,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2461,7 +2334,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2470,17 +2343,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p138"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p139"}, {"Ptr": "p140"}, {"Ptr": "b30"}, {"Ptr": "p141"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p152"}, {"Ptr": "p153"}, {"Ptr": "p154"}, {"Ptr": "b30"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2488,7 +2352,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p142"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p156"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2497,7 +2361,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2506,7 +2370,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2515,8 +2379,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2524,7 +2388,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2533,7 +2397,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p157"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2542,7 +2406,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2551,7 +2415,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p8"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p143"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p8"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p158"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2560,7 +2424,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2569,7 +2433,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2578,7 +2442,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2587,7 +2451,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2596,17 +2460,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p138"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p144"}, {"Ptr": "p145"}, {"Ptr": "b30"}, {"Ptr": "p146"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p159"}, {"Ptr": "p160"}, {"Ptr": "p161"}, {"Ptr": "b30"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2614,7 +2469,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p147"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p163"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2623,7 +2478,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2632,8 +2487,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2641,7 +2496,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2650,7 +2505,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p157"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2659,7 +2514,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2668,7 +2523,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2677,7 +2532,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p148"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p164"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2686,7 +2541,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2695,7 +2550,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2704,7 +2559,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p149"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p165"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2713,7 +2568,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p150"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p166"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2722,7 +2577,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p151"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p167"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2731,7 +2586,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2740,7 +2595,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p152"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p168"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2749,7 +2604,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2758,7 +2613,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2767,7 +2622,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p153"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p169"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2776,7 +2631,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p154"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p170"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2785,7 +2640,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2794,7 +2649,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2803,8 +2658,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p155"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p171"}, {"Ptr": "p172"}, {"Ptr": "p173"}, {"Ptr": "b30"}, {"Ptr": "p174"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2812,16 +2667,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p156"}, {"Ptr": "p157"}, {"Ptr": "b30"}, {"Ptr": "p158"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p159"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p175"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2830,7 +2676,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2839,7 +2685,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2848,8 +2694,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2857,7 +2703,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2866,7 +2712,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p176"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2875,7 +2721,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -2884,7 +2730,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p7"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p160"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p7"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p177"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2893,7 +2739,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2902,7 +2748,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2911,7 +2757,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2920,7 +2766,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2929,8 +2775,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p155"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p178"}, {"Ptr": "p179"}, {"Ptr": "p180"}, {"Ptr": "b30"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -2938,16 +2784,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p161"}, {"Ptr": "p162"}, {"Ptr": "b30"}, {"Ptr": "p163"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p164"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p182"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2956,7 +2793,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2965,8 +2802,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -2974,7 +2811,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2983,7 +2820,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p176"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -2992,7 +2829,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3001,7 +2838,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3010,7 +2847,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p165"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p183"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3019,7 +2856,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3028,7 +2865,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3037,7 +2874,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p166"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p184"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3046,7 +2883,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p167"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p185"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3055,7 +2892,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p168"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p186"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3064,7 +2901,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3073,7 +2910,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p169"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p187"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3082,7 +2919,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3091,7 +2928,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3100,7 +2937,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p170"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p188"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3109,7 +2946,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p171"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p189"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3118,7 +2955,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3127,7 +2964,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3136,17 +2973,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p172"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p173"}, {"Ptr": "p174"}, {"Ptr": "b30"}, {"Ptr": "p175"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p190"}, {"Ptr": "p191"}, {"Ptr": "p192"}, {"Ptr": "b30"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3154,7 +2982,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p176"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p194"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3163,7 +2991,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3172,7 +3000,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3181,8 +3009,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3190,7 +3018,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3199,7 +3027,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p195"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3208,7 +3036,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3217,7 +3045,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p6"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p177"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p6"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p196"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3226,7 +3054,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3235,7 +3063,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3244,7 +3072,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3253,7 +3081,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3262,17 +3090,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p172"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p178"}, {"Ptr": "p179"}, {"Ptr": "b30"}, {"Ptr": "p180"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p197"}, {"Ptr": "p198"}, {"Ptr": "p199"}, {"Ptr": "b30"}, {"Ptr": "p200"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3280,7 +3099,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p181"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p201"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3289,7 +3108,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3298,8 +3117,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3307,7 +3126,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3316,7 +3135,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p195"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3325,7 +3144,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3334,7 +3153,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3343,7 +3162,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p182"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p202"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3352,7 +3171,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3361,7 +3180,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3370,7 +3189,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p183"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p203"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3379,7 +3198,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p184"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p204"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3388,7 +3207,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p185"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p205"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3397,7 +3216,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3406,7 +3225,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p186"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p206"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3415,7 +3234,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3424,7 +3243,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3433,7 +3252,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p187"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p207"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3442,7 +3261,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p188"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p208"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3451,7 +3270,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3460,7 +3279,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3469,17 +3288,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p189"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p190"}, {"Ptr": "p191"}, {"Ptr": "b30"}, {"Ptr": "p192"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p209"}, {"Ptr": "p210"}, {"Ptr": "p211"}, {"Ptr": "b30"}, {"Ptr": "p212"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3487,7 +3297,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p193"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p213"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3514,8 +3324,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3523,7 +3333,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3532,7 +3342,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p214"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3541,7 +3351,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3550,7 +3360,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p5"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p194"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p5"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p215"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3559,7 +3369,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3568,7 +3378,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3577,7 +3387,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3586,7 +3396,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3595,17 +3405,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p189"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p195"}, {"Ptr": "p196"}, {"Ptr": "b30"}, {"Ptr": "p197"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p216"}, {"Ptr": "p217"}, {"Ptr": "p218"}, {"Ptr": "b30"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3613,7 +3414,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p198"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p220"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3622,7 +3423,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3631,8 +3432,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3640,7 +3441,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3649,7 +3450,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p214"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3658,7 +3459,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3667,7 +3468,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3676,7 +3477,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p199"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p221"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3685,7 +3486,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3694,7 +3495,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3703,7 +3504,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p200"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p222"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3712,7 +3513,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p201"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p223"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3721,7 +3522,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p202"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p224"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3730,7 +3531,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3739,7 +3540,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p203"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p225"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3748,7 +3549,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3757,7 +3558,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3766,7 +3567,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p204"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p226"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3775,7 +3576,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p205"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p227"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3784,7 +3585,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3793,7 +3594,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3802,17 +3603,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p206"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p207"}, {"Ptr": "p208"}, {"Ptr": "b30"}, {"Ptr": "p209"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p228"}, {"Ptr": "p229"}, {"Ptr": "p230"}, {"Ptr": "b30"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3820,7 +3612,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p210"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p232"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3829,7 +3621,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3838,7 +3630,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3847,8 +3639,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3856,7 +3648,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3865,7 +3657,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p233"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3874,7 +3666,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -3883,7 +3675,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p4"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p211"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p4"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p234"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3892,7 +3684,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3901,7 +3693,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3910,7 +3702,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3919,7 +3711,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3928,17 +3720,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p206"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p212"}, {"Ptr": "p213"}, {"Ptr": "b30"}, {"Ptr": "p214"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p235"}, {"Ptr": "p236"}, {"Ptr": "p237"}, {"Ptr": "b30"}, {"Ptr": "p238"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -3946,7 +3729,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p215"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p239"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3955,7 +3738,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3964,8 +3747,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -3973,7 +3756,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3982,7 +3765,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p233"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -3991,7 +3774,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4000,7 +3783,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4009,7 +3792,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p216"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p240"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4018,7 +3801,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4027,7 +3810,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4036,7 +3819,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p217"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p241"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4045,7 +3828,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p218"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p242"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4054,7 +3837,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p219"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p243"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4063,7 +3846,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4072,7 +3855,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p220"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p244"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4081,7 +3864,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4090,7 +3873,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4099,7 +3882,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p221"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p245"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4108,7 +3891,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p222"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p246"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4117,7 +3900,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4126,7 +3909,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4135,17 +3918,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p223"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p224"}, {"Ptr": "p225"}, {"Ptr": "b30"}, {"Ptr": "p226"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p247"}, {"Ptr": "p248"}, {"Ptr": "p249"}, {"Ptr": "b30"}, {"Ptr": "p250"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4153,7 +3927,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p227"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p251"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4162,7 +3936,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4171,7 +3945,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4180,8 +3954,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4189,7 +3963,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4198,7 +3972,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p252"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4207,7 +3981,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4216,7 +3990,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p3"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p228"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p3"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p253"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4225,7 +3999,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4234,7 +4008,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4243,7 +4017,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4252,7 +4026,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4261,8 +4035,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p223"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p254"}, {"Ptr": "p255"}, {"Ptr": "p256"}, {"Ptr": "b30"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4270,16 +4044,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p229"}, {"Ptr": "p230"}, {"Ptr": "b30"}, {"Ptr": "p231"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p232"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p258"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4288,7 +4053,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4297,8 +4062,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4306,7 +4071,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4315,7 +4080,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p252"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4324,7 +4089,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4333,7 +4098,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4342,7 +4107,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p233"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p259"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4351,7 +4116,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4360,7 +4125,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4369,7 +4134,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p234"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p260"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4378,7 +4143,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p235"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p261"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4387,7 +4152,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p236"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p262"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4396,7 +4161,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4405,7 +4170,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p237"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p263"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4414,7 +4179,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4423,7 +4188,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4432,7 +4197,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p238"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p264"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4441,7 +4206,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p239"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p265"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4450,7 +4215,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4459,7 +4224,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4468,8 +4233,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p240"}], { - "grid_dim_x": {"Absolute": 256}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p266"}, {"Ptr": "p267"}, {"Ptr": "p268"}, {"Ptr": "b30"}, {"Ptr": "p269"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4477,16 +4242,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p241"}, {"Ptr": "p242"}, {"Ptr": "b30"}, {"Ptr": "p243"}], { - "grid_dim_x": {"Absolute": 8}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p244"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p270"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4495,7 +4251,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4504,7 +4260,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4513,8 +4269,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4522,7 +4278,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b29"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4531,7 +4287,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p271"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4540,7 +4296,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4549,7 +4305,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p2"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p245"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p2"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p272"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4558,7 +4314,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4567,7 +4323,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4576,7 +4332,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4585,7 +4341,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4594,17 +4350,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p240"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p246"}, {"Ptr": "p247"}, {"Ptr": "b30"}, {"Ptr": "p248"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p273"}, {"Ptr": "p274"}, {"Ptr": "p275"}, {"Ptr": "b30"}, {"Ptr": "p276"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4612,7 +4359,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p249"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p277"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4621,7 +4368,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4630,8 +4377,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4639,7 +4386,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b24"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4648,7 +4395,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p271"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4657,7 +4404,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4666,7 +4413,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4675,7 +4422,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b41"}, {"Ptr": "b24"}, {"Ptr": "p250"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p278"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4684,7 +4431,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4693,7 +4440,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4702,7 +4449,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p251"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p279"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4711,7 +4458,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p252"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p280"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4720,7 +4467,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p253"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p281"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4729,7 +4476,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4738,7 +4485,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p254"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "p282"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4747,7 +4494,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4756,7 +4503,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4765,7 +4512,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p255"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b27"}, {"Ptr": "p283"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4774,7 +4521,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p256"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p284"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4783,7 +4530,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4792,7 +4539,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4801,17 +4548,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p257"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p258"}, {"Ptr": "p259"}, {"Ptr": "b30"}, {"Ptr": "p260"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p285"}, {"Ptr": "p286"}, {"Ptr": "p287"}, {"Ptr": "b30"}, {"Ptr": "p288"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4819,7 +4557,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p261"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p289"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4828,7 +4566,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4837,7 +4575,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b24"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4846,8 +4584,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4855,7 +4593,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4864,7 +4602,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p290"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4873,7 +4611,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4882,7 +4620,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b29"}, {"Ptr": "p1"}, {"Ptr": "b7"}, {"Ptr": "b27"}, {"Ptr": "p262"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p1"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p291"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4891,7 +4629,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4900,7 +4638,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4909,7 +4647,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4918,7 +4656,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4927,17 +4665,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p257"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p263"}, {"Ptr": "p264"}, {"Ptr": "b30"}, {"Ptr": "p265"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p292"}, {"Ptr": "p293"}, {"Ptr": "p294"}, {"Ptr": "b30"}, {"Ptr": "p295"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -4945,7 +4674,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p266"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p296"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4954,7 +4683,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4963,8 +4692,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_keys"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -4972,7 +4701,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "b62"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4981,7 +4710,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "b62"}, {"Ptr": "p290"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -4990,7 +4719,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -4999,7 +4728,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5008,7 +4737,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p267"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}, {"Ptr": "p297"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5017,7 +4746,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5026,7 +4755,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5035,7 +4764,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b25"}, {"Ptr": "b40"}, {"Ptr": "p268"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p298"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5044,7 +4773,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "p269"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p299"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5053,7 +4782,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "p270"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p300"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5062,7 +4791,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b24"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5071,7 +4800,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p271"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "p301"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5080,7 +4809,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b24"}, {"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5089,7 +4818,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5098,7 +4827,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b25"}, {"Ptr": "b24"}, {"Ptr": "p272"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b29"}, {"Ptr": "p302"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5107,7 +4836,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p273"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p303"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5116,7 +4845,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5125,7 +4854,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_res_1bda687858ca57c0__kernel", [{"Ptr": "b39"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5134,17 +4863,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "keys"}, {"Ptr": "p274"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p275"}, {"Ptr": "p276"}, {"Ptr": "b30"}, {"Ptr": "p277"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p304"}, {"Ptr": "p305"}, {"Ptr": "p306"}, {"Ptr": "b30"}, {"Ptr": "p307"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -5152,7 +4872,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b41"}, {"Ptr": "p278"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p308"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5161,7 +4881,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_1_kernel", [{"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5170,7 +4890,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b29"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_strided_slice_negative_strided_slice_concatenate_multiply_add_exp_c89bec4d53200e45__kernel", [{"Ptr": "b27"}, {"Ptr": "b24"}, {"Ptr": "b31"}, {"Ptr": "b32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5179,8 +4899,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "tmp_values"}, {"Ptr": "tmp_keys"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -5188,7 +4908,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b27"}, {"Ptr": "tmp_keys"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5197,7 +4917,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_transpose_reshape_transpose_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_transpose_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_keys"}, {"Ptr": "p309"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5206,7 +4926,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b24"}, {"Ptr": "b39"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -5215,7 +4935,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b27"}, {"Ptr": "p0"}, {"Ptr": "b7"}, {"Ptr": "b29"}, {"Ptr": "p279"}], { + {"ExecKernel": ["tvmgen_default_fused_greater_equal_reshape_where_divide_kernel", [{"Ptr": "b39"}, {"Ptr": "p0"}, {"Ptr": "b7"}, {"Ptr": "b24"}, {"Ptr": "p310"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5224,7 +4944,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5233,7 +4953,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b27"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5242,7 +4962,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b312"}, {"Ptr": "b311"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b344"}, {"Ptr": "b343"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5251,7 +4971,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b312"}, {"Ptr": "b311"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b344"}, {"Ptr": "b343"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 4}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5260,17 +4980,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_take_kernel", [{"Ptr": "output"}, {"Ptr": "values"}, {"Ptr": "p274"}], { - "grid_dim_x": {"Absolute": 256}, - "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "b38"}, {"Ptr": "p280"}, {"Ptr": "p281"}, {"Ptr": "b30"}, {"Ptr": "p282"}], { - "grid_dim_x": {"Absolute": 8}, + {"ExecKernel": ["tvmgen_default_fused_concatenate_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "p311"}, {"Ptr": "p312"}, {"Ptr": "p313"}, {"Ptr": "b30"}, {"Ptr": "p314"}], { + "grid_dim_x": {"Absolute": 10}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1024}, @@ -5278,7 +4989,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p283"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "p315"}], { "grid_dim_x": {"Absolute": 512}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5287,7 +4998,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_expand_dims_tile_reshape_strided_slice_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5296,8 +5007,8 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "output"}, {"Ptr": "b48"}], { - "grid_dim_x": {"Absolute": 262144}, + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel", [{"Ptr": "b62"}, {"Ptr": "tmp_values"}], { + "grid_dim_x": {"Absolute": 4194304}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 1}, @@ -5305,7 +5016,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "b38"}, {"Ptr": "b41"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_scatter_nd_kernel_1", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "tmp_values"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5314,7 +5025,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_2_kernel", [{"Ptr": "b42"}, {"Ptr": "b48"}], { + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_kernel", [{"Ptr": "output"}, {"Ptr": "tmp_values"}, {"Ptr": "p309"}], { "grid_dim_x": {"Absolute": 256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5323,7 +5034,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "b42"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}, {"Ptr": "output"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 32}, @@ -5332,7 +5043,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b30"}, {"Ptr": "b40"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5341,7 +5052,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b41"}, {"Ptr": "p284"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b40"}, {"Ptr": "b30"}, {"Ptr": "p316"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5350,7 +5061,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b40"}, {"Ptr": "b24"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b40"}, {"Ptr": "b29"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5359,7 +5070,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b25"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5368,7 +5079,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b41"}, {"Ptr": "p285"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b25"}, {"Ptr": "b39"}, {"Ptr": "p317"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5377,7 +5088,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p286"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b24"}, {"Ptr": "b40"}, {"Ptr": "p318"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5386,7 +5097,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b40"}, {"Ptr": "p287"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b27"}, {"Ptr": "b40"}, {"Ptr": "p319"}], { "grid_dim_x": {"Absolute": 8192}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5395,7 +5106,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b38"}, {"Ptr": "b27"}, {"Ptr": "b29"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_sigmoid_multiply_reshape_multiply_reshape_kernel", [{"Ptr": "b29"}, {"Ptr": "b24"}, {"Ptr": "b27"}], { "grid_dim_x": {"Absolute": 8}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5404,7 +5115,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b24"}, {"Ptr": "b38"}, {"Ptr": "p288"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_3_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p320"}], { "grid_dim_x": {"Absolute": 2048}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5413,7 +5124,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b24"}, {"Ptr": "b41"}], { + {"ExecKernel": ["tvmgen_default_fused_reshape_add_kernel", [{"Ptr": "b30"}, {"Ptr": "b40"}, {"Ptr": "b39"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5422,7 +5133,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b7"}, {"Ptr": "b40"}], { + {"ExecKernel": ["tvmgen_default_fused_multiply_sum_kernel", [{"Ptr": "b7"}, {"Ptr": "b30"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5431,7 +5142,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b24"}, {"Ptr": "b7"}, {"Ptr": "b40"}, {"Ptr": "p289"}], { + {"ExecKernel": ["tvmgen_default_fused_sqrt_multiply_add_divide_multiply_reshape_kernel", [{"Ptr": "b40"}, {"Ptr": "b7"}, {"Ptr": "b30"}, {"Ptr": "p321"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -5440,7 +5151,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b24"}, {"Ptr": "p290"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_4_kernel", [{"Ptr": "output"}, {"Ptr": "b40"}, {"Ptr": "p322"}], { "grid_dim_x": {"Absolute": 128256}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/libs/cuda/double_matmul.cubin b/machine_interface/tests/libs/cuda/double_matmul.cubin index cd53db0939a9a3a6d0faeec039d6b57c6da48710..fb43fddf51e0702f5a1a15b3f9e0ce436db39640 100644 GIT binary patch delta 218 zcmZ2rxWI72w8;ugT$2S@k|wWaF`cZ%WH~vFQF(G4Bge#fCnhH|ZGcK&KnTZ8)@L-I zyn)#mC>=G~id7D%gmbb3qw3@~RwK!N1_lOZ27Vxk3Vuz#$SN+W&j^y`LzM#ZIwmu+ zi8H>REXh{RxMcH0Hf6TWCIUXplLSmQZ{hJ_-rOMEz{nUsnNif9F>11-=zqq8lO4tE d8Fx%>6su>{pUfz3&)7fN5lD7yZWNbi1OTkfHHiQK delta 194 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/vit_b_16.cubin b/machine_interface/tests/libs/cuda/vit_b_16.cubin index b49cfa9b94091d9f21d272e82c37ed7f952be291..0d9c03f0e5144d2d3d35e256db9a67aba346f32a 100644 GIT binary patch literal 179872 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%0DP<^QZi4SjF!EH#_;?hxiy=Z2S(y*RYDegnQ-v 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

O3 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 H)bsxXlgu1w diff --git a/server/src/main.rs b/server/src/main.rs index 89139619..eec3b808 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -414,6 +414,7 @@ async fn service( | "/cold/resnet34batch16" | "/cold/resnet50" | "/cold/resnet152" + | "/cold/vit_b_16" | "/cold/llama_kv" => serve_request(true, req, dispatcher).await, "/hot/matmul" | "/hot/matmulstore" @@ -442,6 +443,7 @@ async fn service( | "/hot/resnet34batch16" | "/hot/resnet50" | "/hot/resnet152" + | "/hot/vit_b_16" | "/hot/llama_kv" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( From 845e9b298ea27fbaf0a9ca1206bc56293c379416 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Thu, 26 Jun 2025 11:44:58 +0200 Subject: [PATCH 158/176] added timestamps for GPU specific operations --- README.md | 4 +++- dandelion_commons/src/records.rs | 15 ++++++++++++- machine_interface/src/bin/gpu_worker.rs | 8 +++++-- .../src/function_driver/compute_driver/gpu.rs | 22 ++++++++++++------- .../compute_driver/gpu/gpu_utils.rs | 4 +--- .../src/function_driver/thread_utils.rs | 6 +++-- 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ba50e368..9e673a36 100644 --- a/README.md +++ b/README.md @@ -119,9 +119,11 @@ For testing the C code to interact with Cheri we are using unity which is includ The `gpu_worker` binary required by the `gpu_process` is assumed to be present in corresponding `target` directory: ``` -cargo build --bin gpu_worker --features gpu_process --target $(arch)-unknown-linux-gnu [--release] +cargo build --bin gpu_worker --features $(gpu-arch),gpu_process --target $(arch)-unknown-linux-gnu [--release] ``` +Where `gpu-arch` is either `cuda` or `hip`. + Also make sure that shared memory objects are executable: ``` sudo mount -o remount,exec /dev/shm diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 43dd2986..85039831 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -5,7 +5,7 @@ use std::time::Instant; /// Maximum usize to expect when converting a record point to a usize /// By setting the last element to this explicitly, the compiler will throw an error, /// if there are more than this, because it enumerates from 0 and won't allow a number to be assigned twice. -const LAST_RECORD_POINT: usize = 17; +const LAST_RECORD_POINT: usize = 23; #[repr(usize)] #[derive(Clone, Copy, Debug, PartialEq)] @@ -44,6 +44,19 @@ pub enum RecordPoint { EngineStart, /// End execution of the function on the engine (sync) EngineEnd, + /// --- GPU --- + /// Start GPU inputs and buffers load (sync) + GPULoadStart, + /// End GPU inputs and buffers load (sync) + GPULoadEnd, + /// Start GPU kernel executions (sync) + GPUInferenceStart, + /// End GPU kernel executions (sync) + GPUInferenceEnd, + /// Start GPU output read (sync) + GPUOutputStart, + /// End GPU output read (sync) + GPUOutputEnd, /// Return from execution engine (async) FutureReturn = LAST_RECORD_POINT, } diff --git a/machine_interface/src/bin/gpu_worker.rs b/machine_interface/src/bin/gpu_worker.rs index 8c092048..42f90344 100644 --- a/machine_interface/src/bin/gpu_worker.rs +++ b/machine_interface/src/bin/gpu_worker.rs @@ -1,7 +1,8 @@ use std::io; +use std::time::Instant; use core_affinity::CoreId; -use dandelion_commons::DandelionResult; +use dandelion_commons::{records::Recorder, DandelionResult}; use machine_interface::{ function_driver::{ compute_driver::gpu::{gpu_utils::SendFunctionArgs, GpuLoop}, @@ -51,5 +52,8 @@ fn execute(worker: &mut GpuLoop, inp: String) -> DandelionResult<()> { let config = FunctionConfig::GpuConfig(config); let context: Context = context.try_into()?; - worker.run(config, context, output_sets).map(|_| ()) + // TODO : this recorder is just a placeholder + // Currently, what's measured by the process is lost, and not reported + let recorder = Recorder::new(0, Instant::now()); + worker.run(config, context, output_sets, recorder).map(|_| ()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index e142b838..f6b7c14c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -10,7 +10,7 @@ use crate::{ }; use config_parsing::SYSDATA_OFFSET; use core_affinity::CoreId; -use dandelion_commons::{DandelionError, DandelionResult}; +use dandelion_commons::{records::{RecordPoint, Recorder}, DandelionError, DandelionResult}; use libc::c_void; use std::{ borrow::Borrow, @@ -21,6 +21,7 @@ use std::{ mpsc::{self, Receiver, Sender}, Arc, Mutex, }, + time::Instant, thread::{self, spawn}, }; @@ -128,6 +129,7 @@ pub fn gpu_run( buffer_pool: Arc>, mut context: Context, output_sets: Arc>, + mut recorder: Recorder, ) -> DandelionResult { // Set affinity of worker thread if !core_affinity::set_for_current(CoreId { id: cpu_slot }) { @@ -142,15 +144,12 @@ pub fn gpu_run( ContextType::GpuProcess(ref gpu_process_context) => gpu_process_context.as_ptr(), _ => return Err(DandelionError::ConfigMissmatch), }; - /*let ContextType::Gpu(ref mmu_context) = context.context else { - return Err(DandelionError::ConfigMissmatch); - };*/ - // let base = mmu_context.storage.as_ptr(); let config = config.load(base)?; let mut buffer_pool = buffer_pool.lock().unwrap(); + recorder.record(RecordPoint::GPULoadStart); // Maps from bufname -> (index in buffer pool, size of buffer) let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { @@ -166,7 +165,9 @@ pub fn gpu_run( let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } + recorder.record(RecordPoint::GPULoadEnd); + recorder.record(RecordPoint::GPUInferenceStart); execute( &config.blueprint.control_flow, &buffers, @@ -174,9 +175,11 @@ pub fn gpu_run( &context, &config, )?; + recorder.record(RecordPoint::GPUInferenceEnd); + recorder.record(RecordPoint::GPUOutputStart); // Copy results back into host memory from device memory - unsafe { + unsafe { write_gpu_outputs::( &mut context, config.system_data_struct_offset, @@ -186,6 +189,7 @@ pub fn gpu_run( buffer_pool.borrow(), )? }; + recorder.record(RecordPoint::GPUOutputEnd); // Zero out buffers used by current function buffer_pool.dealloc_all()?; @@ -234,12 +238,15 @@ impl EngineLoop for GpuLoop { config: FunctionConfig, mut context: Context, output_sets: Arc>, + mut recorder: Recorder, ) -> DandelionResult { let FunctionConfig::GpuConfig(config) = config else { return Err(DandelionError::ConfigMissmatch); }; let sysdata_offset = config.system_data_struct_offset; setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; + + let mut subrecorder = recorder.get_sub_recorder(); // Clone for thread let buffer_pool = self.buffers.clone(); @@ -247,11 +254,10 @@ impl EngineLoop for GpuLoop { let cpu_slot = self.cpu_slot; let gpu_id = self.gpu_id; thread::spawn(move || { - let result = gpu_run(cpu_slot, gpu_id, config, buffer_pool, context, output_sets); + let result = gpu_run(cpu_slot, gpu_id, config, buffer_pool, context, output_sets, subrecorder); sender.send(result).unwrap(); }); - // HERE!!! // TODO: add proper error handling mechanisms // Use an mpsc to receive results. If a fault occured, the handler could be registered to put an error on the channel, // while the work thread wouldn't return. This means it would have to be shot down diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index a5e580a8..1fd43bf0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -14,7 +14,7 @@ use crate::{ util::mmapmem::MmapMem, DataSet, Position, }; -use dandelion_commons::{records::RecordPoint, DandelionError, DandelionResult}; +use dandelion_commons::{records::{RecordPoint, Recorder}, DandelionError, DandelionResult}; use libc::c_void; use log::{debug, error}; use nix::{ @@ -402,8 +402,6 @@ fn manage_worker( // Very important to add this newline, as the worker reads line by line task += "\n"; - recorder.record(RecordPoint::EngineStart); - // Write task description to worker process stdin worker .stdin diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 8c7719ed..49466b83 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -3,7 +3,7 @@ use crate::{ memory_domain::{self, Context}, }; use core::marker::Send; -use dandelion_commons::{records::RecordPoint, DandelionResult}; +use dandelion_commons::{records::{RecordPoint, Recorder}, DandelionResult}; use std::thread::spawn; extern crate alloc; @@ -15,6 +15,7 @@ pub trait EngineLoop { config: FunctionConfig, context: Context, output_sets: std::sync::Arc>, + recorder: Recorder, ) -> DandelionResult; } @@ -46,7 +47,8 @@ pub fn run_thread( } => { recorder.record(RecordPoint::EngineStart); - let result = engine_state.run(config, context, output_sets); + let subrecorder = recorder.get_sub_recorder(); + let result = engine_state.run(config, context, output_sets, subrecorder); recorder.record(RecordPoint::EngineEnd); drop(recorder); From da44964fd1619acb82f85f9f106fbf5a0da58ce6 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Thu, 26 Jun 2025 14:38:27 +0200 Subject: [PATCH 159/176] fixes timestamps --- dandelion_commons/src/records.rs | 4 ++-- dispatcher/src/dispatcher.rs | 6 ++---- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 85039831..51c51f60 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -46,9 +46,9 @@ pub enum RecordPoint { EngineEnd, /// --- GPU --- /// Start GPU inputs and buffers load (sync) - GPULoadStart, + GPUTransferStart, /// End GPU inputs and buffers load (sync) - GPULoadEnd, + GPUTransferEnd, /// Start GPU kernel executions (sync) GPUInferenceStart, /// End GPU kernel executions (sync) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 6d59c3ec..e2c80b8d 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -531,6 +531,7 @@ impl Dispatcher { recorder.get_sub_recorder(), ) .await?; + recorder.record(RecordPoint::TransferQueue); // make sure all input sets are there at the correct index let mut static_sets = BTreeSet::new(); for (function_set_index, (in_set_name, metadata_set)) in @@ -562,9 +563,7 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - recorder.record(RecordPoint::TransferQueue); function_context = transfer_queue.enqueu_work(args).await?.get_context(); - recorder.record(RecordPoint::TransferDequeue); function_buffer += 1; } } @@ -608,12 +607,11 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - recorder.record(RecordPoint::TransferQueue); function_context = transfer_queue.enqueu_work(args).await?.get_context(); - recorder.record(RecordPoint::TransferDequeue); function_item += 1; } } + recorder.record(RecordPoint::TransferDequeue); return Ok((function_context, function_config, metadata)); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 1fd43bf0..5e4c59cc 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -380,8 +380,6 @@ fn manage_worker( output_sets, mut recorder, } => { - recorder.record(RecordPoint::EngineStart); - // transform relevant data into serialisable counterparts let FunctionConfig::GpuConfig(config) = config else { debt.fulfill(Err(DandelionError::ConfigMissmatch)); @@ -401,6 +399,8 @@ fn manage_worker( // Very important to add this newline, as the worker reads line by line task += "\n"; + + recorder.record(RecordPoint::EngineStart); // Write task description to worker process stdin worker From 5e3bcdac6151062809306969b477e5edeb6fa2e1 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Thu, 26 Jun 2025 16:48:46 +0200 Subject: [PATCH 160/176] added resnet models + synchronization after kernel calls --- .../src/function_driver/compute_driver/gpu.rs | 8 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 992 ++++++---- .../tests/data/cuda/test_gpu_resnet101.json | 869 ++++++++- .../tests/data/cuda/test_gpu_resnet152.json | 1662 ++++++++++++++++- .../tests/data/cuda/test_gpu_resnet34.json | 680 ++++--- .../tests/libs/cuda/resnet101.cubin | Bin 246816 -> 246816 bytes .../tests/libs/cuda/resnet152.cubin | Bin 246816 -> 246816 bytes .../tests/libs/cuda/resnet34.cubin | Bin 246816 -> 208288 bytes .../tests/libs/cuda/resnet50.cubin | Bin 246816 -> 246816 bytes server/src/main.rs | 2 + 10 files changed, 3460 insertions(+), 753 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index f6b7c14c..bc15b3f0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -119,6 +119,10 @@ fn execute( } } } + + #[cfg(feature = "timestamp")] + gpu_api::synchronize(); + Ok(()) } @@ -149,7 +153,7 @@ pub fn gpu_run( let mut buffer_pool = buffer_pool.lock().unwrap(); - recorder.record(RecordPoint::GPULoadStart); + recorder.record(RecordPoint::GPUTransferStart); // Maps from bufname -> (index in buffer pool, size of buffer) let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { @@ -165,7 +169,7 @@ pub fn gpu_run( let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } - recorder.record(RecordPoint::GPULoadEnd); + recorder.record(RecordPoint::GPUTransferEnd); recorder.record(RecordPoint::GPUInferenceStart); execute( diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 3ac32aaa..4b9fa5ce 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -1874,118 +1874,275 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet50/"; +pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 2359296, params_path, &mut function_context); + add_buffer("p1", 3072, params_path, &mut function_context); + add_buffer("p2", 3072, params_path, &mut function_context); + add_buffer("p3", 605184, params_path, &mut function_context); + add_buffer("p4", 3072, params_path, &mut function_context); + add_buffer("p5", 3072, params_path, &mut function_context); + add_buffer("p6", 7077888, params_path, &mut function_context); + add_buffer("p7", 9216, params_path, &mut function_context); + add_buffer("p8", 8, params_path, &mut function_context); + add_buffer("p9", 4, params_path, &mut function_context); + add_buffer("p10", 8, params_path, &mut function_context); + add_buffer("p11", 4, params_path, &mut function_context); + add_buffer("p12", 8, params_path, &mut function_context); + add_buffer("p13", 2359296, params_path, &mut function_context); + add_buffer("p14", 3072, params_path, &mut function_context); + add_buffer("p15", 3072, params_path, &mut function_context); + add_buffer("p16", 3072, params_path, &mut function_context); + add_buffer("p17", 9437184, params_path, &mut function_context); + add_buffer("p18", 12288, params_path, &mut function_context); + add_buffer("p19", 9437184, params_path, &mut function_context); + add_buffer("p20", 3072, params_path, &mut function_context); + add_buffer("p21", 3072, params_path, &mut function_context); + add_buffer("p22", 3072, params_path, &mut function_context); + add_buffer("p23", 7077888, params_path, &mut function_context); + add_buffer("p24", 9216, params_path, &mut function_context); + add_buffer("p25", 4, params_path, &mut function_context); + add_buffer("p26", 4, params_path, &mut function_context); + add_buffer("p27", 2359296, params_path, &mut function_context); + add_buffer("p28", 3072, params_path, &mut function_context); + add_buffer("p29", 3072, params_path, &mut function_context); + add_buffer("p30", 3072, params_path, &mut function_context); + add_buffer("p31", 9437184, params_path, &mut function_context); + add_buffer("p32", 12288, params_path, &mut function_context); + add_buffer("p33", 9437184, params_path, &mut function_context); + add_buffer("p34", 3072, params_path, &mut function_context); + add_buffer("p35", 3072, params_path, &mut function_context); + add_buffer("p36", 3072, params_path, &mut function_context); + add_buffer("p37", 7077888, params_path, &mut function_context); + add_buffer("p38", 9216, params_path, &mut function_context); + add_buffer("p39", 4, params_path, &mut function_context); + add_buffer("p40", 4, params_path, &mut function_context); + add_buffer("p41", 2359296, params_path, &mut function_context); + add_buffer("p42", 3072, params_path, &mut function_context); + add_buffer("p43", 3072, params_path, &mut function_context); + add_buffer("p44", 3072, params_path, &mut function_context); + add_buffer("p45", 9437184, params_path, &mut function_context); + add_buffer("p46", 12288, params_path, &mut function_context); + add_buffer("p47", 9437184, params_path, &mut function_context); + add_buffer("p48", 3072, params_path, &mut function_context); + add_buffer("p49", 3072, params_path, &mut function_context); + add_buffer("p50", 3072, params_path, &mut function_context); + add_buffer("p51", 7077888, params_path, &mut function_context); + add_buffer("p52", 9216, params_path, &mut function_context); + add_buffer("p53", 4, params_path, &mut function_context); + add_buffer("p54", 4, params_path, &mut function_context); + add_buffer("p55", 2359296, params_path, &mut function_context); + add_buffer("p56", 3072, params_path, &mut function_context); + add_buffer("p57", 3072, params_path, &mut function_context); + add_buffer("p58", 3072, params_path, &mut function_context); + add_buffer("p59", 9437184, params_path, &mut function_context); + add_buffer("p60", 12288, params_path, &mut function_context); + add_buffer("p61", 9437184, params_path, &mut function_context); + add_buffer("p62", 3072, params_path, &mut function_context); + add_buffer("p63", 3072, params_path, &mut function_context); + add_buffer("p64", 3072, params_path, &mut function_context); + add_buffer("p65", 7077888, params_path, &mut function_context); + add_buffer("p66", 9216, params_path, &mut function_context); + add_buffer("p67", 4, params_path, &mut function_context); + add_buffer("p68", 4, params_path, &mut function_context); + add_buffer("p69", 2359296, params_path, &mut function_context); + add_buffer("p70", 3072, params_path, &mut function_context); + add_buffer("p71", 3072, params_path, &mut function_context); + add_buffer("p72", 3072, params_path, &mut function_context); + add_buffer("p73", 9437184, params_path, &mut function_context); + add_buffer("p74", 12288, params_path, &mut function_context); + add_buffer("p75", 9437184, params_path, &mut function_context); + add_buffer("p76", 3072, params_path, &mut function_context); + add_buffer("p77", 3072, params_path, &mut function_context); + add_buffer("p78", 3072, params_path, &mut function_context); + add_buffer("p79", 7077888, params_path, &mut function_context); + add_buffer("p80", 9216, params_path, &mut function_context); + add_buffer("p81", 4, params_path, &mut function_context); + add_buffer("p82", 4, params_path, &mut function_context); + add_buffer("p83", 2359296, params_path, &mut function_context); + add_buffer("p84", 3072, params_path, &mut function_context); + add_buffer("p85", 3072, params_path, &mut function_context); + add_buffer("p86", 3072, params_path, &mut function_context); + add_buffer("p87", 9437184, params_path, &mut function_context); + add_buffer("p88", 12288, params_path, &mut function_context); + add_buffer("p89", 9437184, params_path, &mut function_context); + add_buffer("p90", 3072, params_path, &mut function_context); + add_buffer("p91", 3072, params_path, &mut function_context); + add_buffer("p92", 3072, params_path, &mut function_context); + add_buffer("p93", 7077888, params_path, &mut function_context); + add_buffer("p94", 9216, params_path, &mut function_context); + add_buffer("p95", 4, params_path, &mut function_context); + add_buffer("p96", 4, params_path, &mut function_context); + add_buffer("p97", 2359296, params_path, &mut function_context); + add_buffer("p98", 3072, params_path, &mut function_context); + add_buffer("p99", 3072, params_path, &mut function_context); + add_buffer("p100", 3072, params_path, &mut function_context); + add_buffer("p101", 9437184, params_path, &mut function_context); + add_buffer("p102", 12288, params_path, &mut function_context); + add_buffer("p103", 9437184, params_path, &mut function_context); + add_buffer("p104", 3072, params_path, &mut function_context); + add_buffer("p105", 3072, params_path, &mut function_context); + add_buffer("p106", 3072, params_path, &mut function_context); + add_buffer("p107", 7077888, params_path, &mut function_context); + add_buffer("p108", 9216, params_path, &mut function_context); + add_buffer("p109", 4, params_path, &mut function_context); + add_buffer("p110", 4, params_path, &mut function_context); + add_buffer("p111", 2359296, params_path, &mut function_context); + add_buffer("p112", 3072, params_path, &mut function_context); + add_buffer("p113", 3072, params_path, &mut function_context); + add_buffer("p114", 3072, params_path, &mut function_context); + add_buffer("p115", 9437184, params_path, &mut function_context); + add_buffer("p116", 12288, params_path, &mut function_context); + add_buffer("p117", 9437184, params_path, &mut function_context); + add_buffer("p118", 3072, params_path, &mut function_context); + add_buffer("p119", 3072, params_path, &mut function_context); + add_buffer("p120", 3072, params_path, &mut function_context); + add_buffer("p121", 7077888, params_path, &mut function_context); + add_buffer("p122", 9216, params_path, &mut function_context); + add_buffer("p123", 4, params_path, &mut function_context); + add_buffer("p124", 4, params_path, &mut function_context); + add_buffer("p125", 2359296, params_path, &mut function_context); + add_buffer("p126", 3072, params_path, &mut function_context); + add_buffer("p127", 3072, params_path, &mut function_context); + add_buffer("p128", 3072, params_path, &mut function_context); + add_buffer("p129", 9437184, params_path, &mut function_context); + add_buffer("p130", 12288, params_path, &mut function_context); + add_buffer("p131", 9437184, params_path, &mut function_context); + add_buffer("p132", 3072, params_path, &mut function_context); + add_buffer("p133", 3072, params_path, &mut function_context); + add_buffer("p134", 3072, params_path, &mut function_context); + add_buffer("p135", 7077888, params_path, &mut function_context); + add_buffer("p136", 9216, params_path, &mut function_context); + add_buffer("p137", 4, params_path, &mut function_context); + add_buffer("p138", 4, params_path, &mut function_context); + add_buffer("p139", 2359296, params_path, &mut function_context); + add_buffer("p140", 3072, params_path, &mut function_context); + add_buffer("p141", 3072, params_path, &mut function_context); + add_buffer("p142", 3072, params_path, &mut function_context); + add_buffer("p143", 9437184, params_path, &mut function_context); + add_buffer("p144", 12288, params_path, &mut function_context); + add_buffer("p145", 9437184, params_path, &mut function_context); + add_buffer("p146", 3072, params_path, &mut function_context); + add_buffer("p147", 3072, params_path, &mut function_context); + add_buffer("p148", 3072, params_path, &mut function_context); + add_buffer("p149", 7077888, params_path, &mut function_context); + add_buffer("p150", 9216, params_path, &mut function_context); + add_buffer("p151", 4, params_path, &mut function_context); + add_buffer("p152", 4, params_path, &mut function_context); + add_buffer("p153", 2359296, params_path, &mut function_context); + add_buffer("p154", 3072, params_path, &mut function_context); + add_buffer("p155", 3072, params_path, &mut function_context); + add_buffer("p156", 3072, params_path, &mut function_context); + add_buffer("p157", 9437184, params_path, &mut function_context); + add_buffer("p158", 12288, params_path, &mut function_context); + add_buffer("p159", 9437184, params_path, &mut function_context); + add_buffer("p160", 3072, params_path, &mut function_context); + add_buffer("p161", 3072, params_path, &mut function_context); + add_buffer("p162", 3072, params_path, &mut function_context); + add_buffer("p163", 7077888, params_path, &mut function_context); + add_buffer("p164", 9216, params_path, &mut function_context); + add_buffer("p165", 4, params_path, &mut function_context); + add_buffer("p166", 4, params_path, &mut function_context); + add_buffer("p167", 2359296, params_path, &mut function_context); + add_buffer("p168", 3072, params_path, &mut function_context); + add_buffer("p169", 3072, params_path, &mut function_context); + add_buffer("p170", 3072, params_path, &mut function_context); + add_buffer("p171", 9437184, params_path, &mut function_context); + add_buffer("p172", 12288, params_path, &mut function_context); + add_buffer("p173", 9437184, params_path, &mut function_context); + add_buffer("p174", 3072, params_path, &mut function_context); + add_buffer("p175", 3072, params_path, &mut function_context); + add_buffer("p176", 3072, params_path, &mut function_context); + add_buffer("p177", 3072000, params_path, &mut function_context); + add_buffer("p178", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet34/"; add_buffer("input", 602112, params_path, &mut function_context); add_buffer("p0", 37632, params_path, &mut function_context); add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 16384, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); add_buffer("p3", 256, params_path, &mut function_context); add_buffer("p4", 589824, params_path, &mut function_context); add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 65536, params_path, &mut function_context); - add_buffer("p7", 1024, params_path, &mut function_context); - add_buffer("p8", 65536, params_path, &mut function_context); - add_buffer("p9", 1024, params_path, &mut function_context); - add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 589824, params_path, &mut function_context); add_buffer("p11", 256, params_path, &mut function_context); add_buffer("p12", 589824, params_path, &mut function_context); add_buffer("p13", 256, params_path, &mut function_context); - add_buffer("p14", 65536, params_path, &mut function_context); - add_buffer("p15", 1024, params_path, &mut function_context); - add_buffer("p16", 65536, params_path, &mut function_context); - add_buffer("p17", 256, params_path, &mut function_context); - add_buffer("p18", 589824, params_path, &mut function_context); - add_buffer("p19", 256, params_path, &mut function_context); - add_buffer("p20", 65536, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 131072, params_path, &mut function_context); + add_buffer("p14", 294912, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 32768, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1048576, params_path, &mut function_context); + add_buffer("p21", 512, params_path, &mut function_context); + add_buffer("p22", 1048576, params_path, &mut function_context); add_buffer("p23", 512, params_path, &mut function_context); - add_buffer("p24", 589824, params_path, &mut function_context); + add_buffer("p24", 1048576, params_path, &mut function_context); add_buffer("p25", 512, params_path, &mut function_context); - add_buffer("p26", 262144, params_path, &mut function_context); - add_buffer("p27", 2048, params_path, &mut function_context); - add_buffer("p28", 524288, params_path, &mut function_context); - add_buffer("p29", 2048, params_path, &mut function_context); - add_buffer("p30", 262144, params_path, &mut function_context); + add_buffer("p26", 1048576, params_path, &mut function_context); + add_buffer("p27", 512, params_path, &mut function_context); + add_buffer("p28", 1048576, params_path, &mut function_context); + add_buffer("p29", 512, params_path, &mut function_context); + add_buffer("p30", 1048576, params_path, &mut function_context); add_buffer("p31", 512, params_path, &mut function_context); - add_buffer("p32", 1048576, params_path, &mut function_context); - add_buffer("p33", 512, params_path, &mut function_context); - add_buffer("p34", 262144, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 262144, params_path, &mut function_context); - add_buffer("p37", 512, params_path, &mut function_context); - add_buffer("p38", 1048576, params_path, &mut function_context); - add_buffer("p39", 512, params_path, &mut function_context); - add_buffer("p40", 262144, params_path, &mut function_context); - add_buffer("p41", 2048, params_path, &mut function_context); - add_buffer("p42", 262144, params_path, &mut function_context); - add_buffer("p43", 512, params_path, &mut function_context); - add_buffer("p44", 1048576, params_path, &mut function_context); - add_buffer("p45", 512, params_path, &mut function_context); - add_buffer("p46", 262144, params_path, &mut function_context); - add_buffer("p47", 2048, params_path, &mut function_context); - add_buffer("p48", 524288, params_path, &mut function_context); + add_buffer("p32", 1179648, params_path, &mut function_context); + add_buffer("p33", 1024, params_path, &mut function_context); + add_buffer("p34", 4194304, params_path, &mut function_context); + add_buffer("p35", 1024, params_path, &mut function_context); + add_buffer("p36", 131072, params_path, &mut function_context); + add_buffer("p37", 1024, params_path, &mut function_context); + add_buffer("p38", 4194304, params_path, &mut function_context); + add_buffer("p39", 1024, params_path, &mut function_context); + add_buffer("p40", 4194304, params_path, &mut function_context); + add_buffer("p41", 1024, params_path, &mut function_context); + add_buffer("p42", 4194304, params_path, &mut function_context); + add_buffer("p43", 1024, params_path, &mut function_context); + add_buffer("p44", 4194304, params_path, &mut function_context); + add_buffer("p45", 1024, params_path, &mut function_context); + add_buffer("p46", 4194304, params_path, &mut function_context); + add_buffer("p47", 1024, params_path, &mut function_context); + add_buffer("p48", 4194304, params_path, &mut function_context); add_buffer("p49", 1024, params_path, &mut function_context); - add_buffer("p50", 2359296, params_path, &mut function_context); + add_buffer("p50", 4194304, params_path, &mut function_context); add_buffer("p51", 1024, params_path, &mut function_context); - add_buffer("p52", 1048576, params_path, &mut function_context); - add_buffer("p53", 4096, params_path, &mut function_context); - add_buffer("p54", 2097152, params_path, &mut function_context); - add_buffer("p55", 4096, params_path, &mut function_context); - add_buffer("p56", 1048576, params_path, &mut function_context); + add_buffer("p52", 4194304, params_path, &mut function_context); + add_buffer("p53", 1024, params_path, &mut function_context); + add_buffer("p54", 4194304, params_path, &mut function_context); + add_buffer("p55", 1024, params_path, &mut function_context); + add_buffer("p56", 4194304, params_path, &mut function_context); add_buffer("p57", 1024, params_path, &mut function_context); - add_buffer("p58", 4194304, params_path, &mut function_context); - add_buffer("p59", 1024, params_path, &mut function_context); - add_buffer("p60", 1048576, params_path, &mut function_context); - add_buffer("p61", 4096, params_path, &mut function_context); - add_buffer("p62", 1048576, params_path, &mut function_context); - add_buffer("p63", 1024, params_path, &mut function_context); - add_buffer("p64", 4194304, params_path, &mut function_context); - add_buffer("p65", 1024, params_path, &mut function_context); - add_buffer("p66", 1048576, params_path, &mut function_context); - add_buffer("p67", 4096, params_path, &mut function_context); - add_buffer("p68", 1048576, params_path, &mut function_context); - add_buffer("p69", 1024, params_path, &mut function_context); - add_buffer("p70", 4194304, params_path, &mut function_context); - add_buffer("p71", 1024, params_path, &mut function_context); - add_buffer("p72", 1048576, params_path, &mut function_context); - add_buffer("p73", 4096, params_path, &mut function_context); - add_buffer("p74", 1048576, params_path, &mut function_context); - add_buffer("p75", 1024, params_path, &mut function_context); - add_buffer("p76", 4194304, params_path, &mut function_context); - add_buffer("p77", 1024, params_path, &mut function_context); - add_buffer("p78", 1048576, params_path, &mut function_context); - add_buffer("p79", 4096, params_path, &mut function_context); - add_buffer("p80", 1048576, params_path, &mut function_context); - add_buffer("p81", 1024, params_path, &mut function_context); - add_buffer("p82", 4194304, params_path, &mut function_context); - add_buffer("p83", 1024, params_path, &mut function_context); - add_buffer("p84", 1048576, params_path, &mut function_context); - add_buffer("p85", 4096, params_path, &mut function_context); - add_buffer("p86", 2097152, params_path, &mut function_context); - add_buffer("p87", 2048, params_path, &mut function_context); - add_buffer("p88", 9437184, params_path, &mut function_context); - add_buffer("p89", 2048, params_path, &mut function_context); - add_buffer("p90", 4194304, params_path, &mut function_context); - add_buffer("p91", 8192, params_path, &mut function_context); - add_buffer("p92", 8388608, params_path, &mut function_context); - add_buffer("p93", 8192, params_path, &mut function_context); - add_buffer("p94", 4194304, params_path, &mut function_context); - add_buffer("p95", 2048, params_path, &mut function_context); - add_buffer("p96", 16777216, params_path, &mut function_context); - add_buffer("p97", 2048, params_path, &mut function_context); - add_buffer("p98", 4194304, params_path, &mut function_context); - add_buffer("p99", 8192, params_path, &mut function_context); - add_buffer("p100", 4194304, params_path, &mut function_context); - add_buffer("p101", 2048, params_path, &mut function_context); - add_buffer("p102", 16777216, params_path, &mut function_context); - add_buffer("p103", 2048, params_path, &mut function_context); - add_buffer("p104", 4194304, params_path, &mut function_context); - add_buffer("p105", 8192, params_path, &mut function_context); - add_buffer("p106", 8192000, params_path, &mut function_context); - add_buffer("p107", 4000, params_path, &mut function_context); + add_buffer("p58", 4718592, params_path, &mut function_context); + add_buffer("p59", 2048, params_path, &mut function_context); + add_buffer("p60", 16777216, params_path, &mut function_context); + add_buffer("p61", 2048, params_path, &mut function_context); + add_buffer("p62", 524288, params_path, &mut function_context); + add_buffer("p63", 2048, params_path, &mut function_context); + add_buffer("p64", 16777216, params_path, &mut function_context); + add_buffer("p65", 2048, params_path, &mut function_context); + add_buffer("p66", 16777216, params_path, &mut function_context); + add_buffer("p67", 2048, params_path, &mut function_context); + add_buffer("p68", 16777216, params_path, &mut function_context); + add_buffer("p69", 2048, params_path, &mut function_context); + add_buffer("p70", 16777216, params_path, &mut function_context); + add_buffer("p71", 2048, params_path, &mut function_context); + add_buffer("p72", 2048000, params_path, &mut function_context); + add_buffer("p73", 4000, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 4000; @@ -1994,8 +2151,8 @@ pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet34/"; +pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet101/"; add_buffer("input", 602112, params_path, &mut function_context); add_buffer("p0", 37632, params_path, &mut function_context); @@ -2084,28 +2241,130 @@ pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, add_buffer("p83", 1024, params_path, &mut function_context); add_buffer("p84", 1048576, params_path, &mut function_context); add_buffer("p85", 4096, params_path, &mut function_context); - add_buffer("p86", 2097152, params_path, &mut function_context); - add_buffer("p87", 2048, params_path, &mut function_context); - add_buffer("p88", 9437184, params_path, &mut function_context); - add_buffer("p89", 2048, params_path, &mut function_context); - add_buffer("p90", 4194304, params_path, &mut function_context); - add_buffer("p91", 8192, params_path, &mut function_context); - add_buffer("p92", 8388608, params_path, &mut function_context); - add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p86", 1048576, params_path, &mut function_context); + add_buffer("p87", 1024, params_path, &mut function_context); + add_buffer("p88", 4194304, params_path, &mut function_context); + add_buffer("p89", 1024, params_path, &mut function_context); + add_buffer("p90", 1048576, params_path, &mut function_context); + add_buffer("p91", 4096, params_path, &mut function_context); + add_buffer("p92", 1048576, params_path, &mut function_context); + add_buffer("p93", 1024, params_path, &mut function_context); add_buffer("p94", 4194304, params_path, &mut function_context); - add_buffer("p95", 2048, params_path, &mut function_context); - add_buffer("p96", 16777216, params_path, &mut function_context); - add_buffer("p97", 2048, params_path, &mut function_context); - add_buffer("p98", 4194304, params_path, &mut function_context); - add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p95", 1024, params_path, &mut function_context); + add_buffer("p96", 1048576, params_path, &mut function_context); + add_buffer("p97", 4096, params_path, &mut function_context); + add_buffer("p98", 1048576, params_path, &mut function_context); + add_buffer("p99", 1024, params_path, &mut function_context); add_buffer("p100", 4194304, params_path, &mut function_context); - add_buffer("p101", 2048, params_path, &mut function_context); - add_buffer("p102", 16777216, params_path, &mut function_context); - add_buffer("p103", 2048, params_path, &mut function_context); - add_buffer("p104", 4194304, params_path, &mut function_context); - add_buffer("p105", 8192, params_path, &mut function_context); - add_buffer("p106", 8192000, params_path, &mut function_context); - add_buffer("p107", 4000, params_path, &mut function_context); + add_buffer("p101", 1024, params_path, &mut function_context); + add_buffer("p102", 1048576, params_path, &mut function_context); + add_buffer("p103", 4096, params_path, &mut function_context); + add_buffer("p104", 1048576, params_path, &mut function_context); + add_buffer("p105", 1024, params_path, &mut function_context); + add_buffer("p106", 4194304, params_path, &mut function_context); + add_buffer("p107", 1024, params_path, &mut function_context); + add_buffer("p108", 1048576, params_path, &mut function_context); + add_buffer("p109", 4096, params_path, &mut function_context); + add_buffer("p110", 1048576, params_path, &mut function_context); + add_buffer("p111", 1024, params_path, &mut function_context); + add_buffer("p112", 4194304, params_path, &mut function_context); + add_buffer("p113", 1024, params_path, &mut function_context); + add_buffer("p114", 1048576, params_path, &mut function_context); + add_buffer("p115", 4096, params_path, &mut function_context); + add_buffer("p116", 1048576, params_path, &mut function_context); + add_buffer("p117", 1024, params_path, &mut function_context); + add_buffer("p118", 4194304, params_path, &mut function_context); + add_buffer("p119", 1024, params_path, &mut function_context); + add_buffer("p120", 1048576, params_path, &mut function_context); + add_buffer("p121", 4096, params_path, &mut function_context); + add_buffer("p122", 1048576, params_path, &mut function_context); + add_buffer("p123", 1024, params_path, &mut function_context); + add_buffer("p124", 4194304, params_path, &mut function_context); + add_buffer("p125", 1024, params_path, &mut function_context); + add_buffer("p126", 1048576, params_path, &mut function_context); + add_buffer("p127", 4096, params_path, &mut function_context); + add_buffer("p128", 1048576, params_path, &mut function_context); + add_buffer("p129", 1024, params_path, &mut function_context); + add_buffer("p130", 4194304, params_path, &mut function_context); + add_buffer("p131", 1024, params_path, &mut function_context); + add_buffer("p132", 1048576, params_path, &mut function_context); + add_buffer("p133", 4096, params_path, &mut function_context); + add_buffer("p134", 1048576, params_path, &mut function_context); + add_buffer("p135", 1024, params_path, &mut function_context); + add_buffer("p136", 4194304, params_path, &mut function_context); + add_buffer("p137", 1024, params_path, &mut function_context); + add_buffer("p138", 1048576, params_path, &mut function_context); + add_buffer("p139", 4096, params_path, &mut function_context); + add_buffer("p140", 1048576, params_path, &mut function_context); + add_buffer("p141", 1024, params_path, &mut function_context); + add_buffer("p142", 4194304, params_path, &mut function_context); + add_buffer("p143", 1024, params_path, &mut function_context); + add_buffer("p144", 1048576, params_path, &mut function_context); + add_buffer("p145", 4096, params_path, &mut function_context); + add_buffer("p146", 1048576, params_path, &mut function_context); + add_buffer("p147", 1024, params_path, &mut function_context); + add_buffer("p148", 4194304, params_path, &mut function_context); + add_buffer("p149", 1024, params_path, &mut function_context); + add_buffer("p150", 1048576, params_path, &mut function_context); + add_buffer("p151", 4096, params_path, &mut function_context); + add_buffer("p152", 1048576, params_path, &mut function_context); + add_buffer("p153", 1024, params_path, &mut function_context); + add_buffer("p154", 4194304, params_path, &mut function_context); + add_buffer("p155", 1024, params_path, &mut function_context); + add_buffer("p156", 1048576, params_path, &mut function_context); + add_buffer("p157", 4096, params_path, &mut function_context); + add_buffer("p158", 1048576, params_path, &mut function_context); + add_buffer("p159", 1024, params_path, &mut function_context); + add_buffer("p160", 4194304, params_path, &mut function_context); + add_buffer("p161", 1024, params_path, &mut function_context); + add_buffer("p162", 1048576, params_path, &mut function_context); + add_buffer("p163", 4096, params_path, &mut function_context); + add_buffer("p164", 1048576, params_path, &mut function_context); + add_buffer("p165", 1024, params_path, &mut function_context); + add_buffer("p166", 4194304, params_path, &mut function_context); + add_buffer("p167", 1024, params_path, &mut function_context); + add_buffer("p168", 1048576, params_path, &mut function_context); + add_buffer("p169", 4096, params_path, &mut function_context); + add_buffer("p170", 1048576, params_path, &mut function_context); + add_buffer("p171", 1024, params_path, &mut function_context); + add_buffer("p172", 4194304, params_path, &mut function_context); + add_buffer("p173", 1024, params_path, &mut function_context); + add_buffer("p174", 1048576, params_path, &mut function_context); + add_buffer("p175", 4096, params_path, &mut function_context); + add_buffer("p176", 1048576, params_path, &mut function_context); + add_buffer("p177", 1024, params_path, &mut function_context); + add_buffer("p178", 4194304, params_path, &mut function_context); + add_buffer("p179", 1024, params_path, &mut function_context); + add_buffer("p180", 1048576, params_path, &mut function_context); + add_buffer("p181", 4096, params_path, &mut function_context); + add_buffer("p182", 1048576, params_path, &mut function_context); + add_buffer("p183", 1024, params_path, &mut function_context); + add_buffer("p184", 4194304, params_path, &mut function_context); + add_buffer("p185", 1024, params_path, &mut function_context); + add_buffer("p186", 1048576, params_path, &mut function_context); + add_buffer("p187", 4096, params_path, &mut function_context); + add_buffer("p188", 2097152, params_path, &mut function_context); + add_buffer("p189", 2048, params_path, &mut function_context); + add_buffer("p190", 9437184, params_path, &mut function_context); + add_buffer("p191", 2048, params_path, &mut function_context); + add_buffer("p192", 4194304, params_path, &mut function_context); + add_buffer("p193", 8192, params_path, &mut function_context); + add_buffer("p194", 8388608, params_path, &mut function_context); + add_buffer("p195", 8192, params_path, &mut function_context); + add_buffer("p196", 4194304, params_path, &mut function_context); + add_buffer("p197", 2048, params_path, &mut function_context); + add_buffer("p198", 16777216, params_path, &mut function_context); + add_buffer("p199", 2048, params_path, &mut function_context); + add_buffer("p200", 4194304, params_path, &mut function_context); + add_buffer("p201", 8192, params_path, &mut function_context); + add_buffer("p202", 4194304, params_path, &mut function_context); + add_buffer("p203", 2048, params_path, &mut function_context); + add_buffer("p204", 16777216, params_path, &mut function_context); + add_buffer("p205", 2048, params_path, &mut function_context); + add_buffer("p206", 4194304, params_path, &mut function_context); + add_buffer("p207", 8192, params_path, &mut function_context); + add_buffer("p208", 8192000, params_path, &mut function_context); + add_buffer("p209", 4000, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 4000; @@ -2114,8 +2373,8 @@ pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet101/"; +pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet152/"; add_buffer("input", 602112, params_path, &mut function_context); add_buffer("p0", 37632, params_path, &mut function_context); @@ -2166,37 +2425,37 @@ pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec add_buffer("p45", 512, params_path, &mut function_context); add_buffer("p46", 262144, params_path, &mut function_context); add_buffer("p47", 2048, params_path, &mut function_context); - add_buffer("p48", 524288, params_path, &mut function_context); - add_buffer("p49", 1024, params_path, &mut function_context); - add_buffer("p50", 2359296, params_path, &mut function_context); - add_buffer("p51", 1024, params_path, &mut function_context); - add_buffer("p52", 1048576, params_path, &mut function_context); - add_buffer("p53", 4096, params_path, &mut function_context); - add_buffer("p54", 2097152, params_path, &mut function_context); - add_buffer("p55", 4096, params_path, &mut function_context); + add_buffer("p48", 262144, params_path, &mut function_context); + add_buffer("p49", 512, params_path, &mut function_context); + add_buffer("p50", 1048576, params_path, &mut function_context); + add_buffer("p51", 512, params_path, &mut function_context); + add_buffer("p52", 262144, params_path, &mut function_context); + add_buffer("p53", 2048, params_path, &mut function_context); + add_buffer("p54", 262144, params_path, &mut function_context); + add_buffer("p55", 512, params_path, &mut function_context); add_buffer("p56", 1048576, params_path, &mut function_context); - add_buffer("p57", 1024, params_path, &mut function_context); - add_buffer("p58", 4194304, params_path, &mut function_context); - add_buffer("p59", 1024, params_path, &mut function_context); - add_buffer("p60", 1048576, params_path, &mut function_context); - add_buffer("p61", 4096, params_path, &mut function_context); + add_buffer("p57", 512, params_path, &mut function_context); + add_buffer("p58", 262144, params_path, &mut function_context); + add_buffer("p59", 2048, params_path, &mut function_context); + add_buffer("p60", 262144, params_path, &mut function_context); + add_buffer("p61", 512, params_path, &mut function_context); add_buffer("p62", 1048576, params_path, &mut function_context); - add_buffer("p63", 1024, params_path, &mut function_context); - add_buffer("p64", 4194304, params_path, &mut function_context); - add_buffer("p65", 1024, params_path, &mut function_context); - add_buffer("p66", 1048576, params_path, &mut function_context); - add_buffer("p67", 4096, params_path, &mut function_context); + add_buffer("p63", 512, params_path, &mut function_context); + add_buffer("p64", 262144, params_path, &mut function_context); + add_buffer("p65", 2048, params_path, &mut function_context); + add_buffer("p66", 262144, params_path, &mut function_context); + add_buffer("p67", 512, params_path, &mut function_context); add_buffer("p68", 1048576, params_path, &mut function_context); - add_buffer("p69", 1024, params_path, &mut function_context); - add_buffer("p70", 4194304, params_path, &mut function_context); - add_buffer("p71", 1024, params_path, &mut function_context); - add_buffer("p72", 1048576, params_path, &mut function_context); - add_buffer("p73", 4096, params_path, &mut function_context); - add_buffer("p74", 1048576, params_path, &mut function_context); + add_buffer("p69", 512, params_path, &mut function_context); + add_buffer("p70", 262144, params_path, &mut function_context); + add_buffer("p71", 2048, params_path, &mut function_context); + add_buffer("p72", 524288, params_path, &mut function_context); + add_buffer("p73", 1024, params_path, &mut function_context); + add_buffer("p74", 2359296, params_path, &mut function_context); add_buffer("p75", 1024, params_path, &mut function_context); - add_buffer("p76", 4194304, params_path, &mut function_context); - add_buffer("p77", 1024, params_path, &mut function_context); - add_buffer("p78", 1048576, params_path, &mut function_context); + add_buffer("p76", 1048576, params_path, &mut function_context); + add_buffer("p77", 4096, params_path, &mut function_context); + add_buffer("p78", 2097152, params_path, &mut function_context); add_buffer("p79", 4096, params_path, &mut function_context); add_buffer("p80", 1048576, params_path, &mut function_context); add_buffer("p81", 1024, params_path, &mut function_context); @@ -2204,28 +2463,232 @@ pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec add_buffer("p83", 1024, params_path, &mut function_context); add_buffer("p84", 1048576, params_path, &mut function_context); add_buffer("p85", 4096, params_path, &mut function_context); - add_buffer("p86", 2097152, params_path, &mut function_context); - add_buffer("p87", 2048, params_path, &mut function_context); - add_buffer("p88", 9437184, params_path, &mut function_context); - add_buffer("p89", 2048, params_path, &mut function_context); - add_buffer("p90", 4194304, params_path, &mut function_context); - add_buffer("p91", 8192, params_path, &mut function_context); - add_buffer("p92", 8388608, params_path, &mut function_context); - add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p86", 1048576, params_path, &mut function_context); + add_buffer("p87", 1024, params_path, &mut function_context); + add_buffer("p88", 4194304, params_path, &mut function_context); + add_buffer("p89", 1024, params_path, &mut function_context); + add_buffer("p90", 1048576, params_path, &mut function_context); + add_buffer("p91", 4096, params_path, &mut function_context); + add_buffer("p92", 1048576, params_path, &mut function_context); + add_buffer("p93", 1024, params_path, &mut function_context); add_buffer("p94", 4194304, params_path, &mut function_context); - add_buffer("p95", 2048, params_path, &mut function_context); - add_buffer("p96", 16777216, params_path, &mut function_context); - add_buffer("p97", 2048, params_path, &mut function_context); - add_buffer("p98", 4194304, params_path, &mut function_context); - add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p95", 1024, params_path, &mut function_context); + add_buffer("p96", 1048576, params_path, &mut function_context); + add_buffer("p97", 4096, params_path, &mut function_context); + add_buffer("p98", 1048576, params_path, &mut function_context); + add_buffer("p99", 1024, params_path, &mut function_context); add_buffer("p100", 4194304, params_path, &mut function_context); - add_buffer("p101", 2048, params_path, &mut function_context); - add_buffer("p102", 16777216, params_path, &mut function_context); - add_buffer("p103", 2048, params_path, &mut function_context); - add_buffer("p104", 4194304, params_path, &mut function_context); - add_buffer("p105", 8192, params_path, &mut function_context); - add_buffer("p106", 8192000, params_path, &mut function_context); - add_buffer("p107", 4000, params_path, &mut function_context); + add_buffer("p101", 1024, params_path, &mut function_context); + add_buffer("p102", 1048576, params_path, &mut function_context); + add_buffer("p103", 4096, params_path, &mut function_context); + add_buffer("p104", 1048576, params_path, &mut function_context); + add_buffer("p105", 1024, params_path, &mut function_context); + add_buffer("p106", 4194304, params_path, &mut function_context); + add_buffer("p107", 1024, params_path, &mut function_context); + add_buffer("p108", 1048576, params_path, &mut function_context); + add_buffer("p109", 4096, params_path, &mut function_context); + add_buffer("p110", 1048576, params_path, &mut function_context); + add_buffer("p111", 1024, params_path, &mut function_context); + add_buffer("p112", 4194304, params_path, &mut function_context); + add_buffer("p113", 1024, params_path, &mut function_context); + add_buffer("p114", 1048576, params_path, &mut function_context); + add_buffer("p115", 4096, params_path, &mut function_context); + add_buffer("p116", 1048576, params_path, &mut function_context); + add_buffer("p117", 1024, params_path, &mut function_context); + add_buffer("p118", 4194304, params_path, &mut function_context); + add_buffer("p119", 1024, params_path, &mut function_context); + add_buffer("p120", 1048576, params_path, &mut function_context); + add_buffer("p121", 4096, params_path, &mut function_context); + add_buffer("p122", 1048576, params_path, &mut function_context); + add_buffer("p123", 1024, params_path, &mut function_context); + add_buffer("p124", 4194304, params_path, &mut function_context); + add_buffer("p125", 1024, params_path, &mut function_context); + add_buffer("p126", 1048576, params_path, &mut function_context); + add_buffer("p127", 4096, params_path, &mut function_context); + add_buffer("p128", 1048576, params_path, &mut function_context); + add_buffer("p129", 1024, params_path, &mut function_context); + add_buffer("p130", 4194304, params_path, &mut function_context); + add_buffer("p131", 1024, params_path, &mut function_context); + add_buffer("p132", 1048576, params_path, &mut function_context); + add_buffer("p133", 4096, params_path, &mut function_context); + add_buffer("p134", 1048576, params_path, &mut function_context); + add_buffer("p135", 1024, params_path, &mut function_context); + add_buffer("p136", 4194304, params_path, &mut function_context); + add_buffer("p137", 1024, params_path, &mut function_context); + add_buffer("p138", 1048576, params_path, &mut function_context); + add_buffer("p139", 4096, params_path, &mut function_context); + add_buffer("p140", 1048576, params_path, &mut function_context); + add_buffer("p141", 1024, params_path, &mut function_context); + add_buffer("p142", 4194304, params_path, &mut function_context); + add_buffer("p143", 1024, params_path, &mut function_context); + add_buffer("p144", 1048576, params_path, &mut function_context); + add_buffer("p145", 4096, params_path, &mut function_context); + add_buffer("p146", 1048576, params_path, &mut function_context); + add_buffer("p147", 1024, params_path, &mut function_context); + add_buffer("p148", 4194304, params_path, &mut function_context); + add_buffer("p149", 1024, params_path, &mut function_context); + add_buffer("p150", 1048576, params_path, &mut function_context); + add_buffer("p151", 4096, params_path, &mut function_context); + add_buffer("p152", 1048576, params_path, &mut function_context); + add_buffer("p153", 1024, params_path, &mut function_context); + add_buffer("p154", 4194304, params_path, &mut function_context); + add_buffer("p155", 1024, params_path, &mut function_context); + add_buffer("p156", 1048576, params_path, &mut function_context); + add_buffer("p157", 4096, params_path, &mut function_context); + add_buffer("p158", 1048576, params_path, &mut function_context); + add_buffer("p159", 1024, params_path, &mut function_context); + add_buffer("p160", 4194304, params_path, &mut function_context); + add_buffer("p161", 1024, params_path, &mut function_context); + add_buffer("p162", 1048576, params_path, &mut function_context); + add_buffer("p163", 4096, params_path, &mut function_context); + add_buffer("p164", 1048576, params_path, &mut function_context); + add_buffer("p165", 1024, params_path, &mut function_context); + add_buffer("p166", 4194304, params_path, &mut function_context); + add_buffer("p167", 1024, params_path, &mut function_context); + add_buffer("p168", 1048576, params_path, &mut function_context); + add_buffer("p169", 4096, params_path, &mut function_context); + add_buffer("p170", 1048576, params_path, &mut function_context); + add_buffer("p171", 1024, params_path, &mut function_context); + add_buffer("p172", 4194304, params_path, &mut function_context); + add_buffer("p173", 1024, params_path, &mut function_context); + add_buffer("p174", 1048576, params_path, &mut function_context); + add_buffer("p175", 4096, params_path, &mut function_context); + add_buffer("p176", 1048576, params_path, &mut function_context); + add_buffer("p177", 1024, params_path, &mut function_context); + add_buffer("p178", 4194304, params_path, &mut function_context); + add_buffer("p179", 1024, params_path, &mut function_context); + add_buffer("p180", 1048576, params_path, &mut function_context); + add_buffer("p181", 4096, params_path, &mut function_context); + add_buffer("p182", 1048576, params_path, &mut function_context); + add_buffer("p183", 1024, params_path, &mut function_context); + add_buffer("p184", 4194304, params_path, &mut function_context); + add_buffer("p185", 1024, params_path, &mut function_context); + add_buffer("p186", 1048576, params_path, &mut function_context); + add_buffer("p187", 4096, params_path, &mut function_context); + add_buffer("p188", 1048576, params_path, &mut function_context); + add_buffer("p189", 1024, params_path, &mut function_context); + add_buffer("p190", 4194304, params_path, &mut function_context); + add_buffer("p191", 1024, params_path, &mut function_context); + add_buffer("p192", 1048576, params_path, &mut function_context); + add_buffer("p193", 4096, params_path, &mut function_context); + add_buffer("p194", 1048576, params_path, &mut function_context); + add_buffer("p195", 1024, params_path, &mut function_context); + add_buffer("p196", 4194304, params_path, &mut function_context); + add_buffer("p197", 1024, params_path, &mut function_context); + add_buffer("p198", 1048576, params_path, &mut function_context); + add_buffer("p199", 4096, params_path, &mut function_context); + add_buffer("p200", 1048576, params_path, &mut function_context); + add_buffer("p201", 1024, params_path, &mut function_context); + add_buffer("p202", 4194304, params_path, &mut function_context); + add_buffer("p203", 1024, params_path, &mut function_context); + add_buffer("p204", 1048576, params_path, &mut function_context); + add_buffer("p205", 4096, params_path, &mut function_context); + add_buffer("p206", 1048576, params_path, &mut function_context); + add_buffer("p207", 1024, params_path, &mut function_context); + add_buffer("p208", 4194304, params_path, &mut function_context); + add_buffer("p209", 1024, params_path, &mut function_context); + add_buffer("p210", 1048576, params_path, &mut function_context); + add_buffer("p211", 4096, params_path, &mut function_context); + add_buffer("p212", 1048576, params_path, &mut function_context); + add_buffer("p213", 1024, params_path, &mut function_context); + add_buffer("p214", 4194304, params_path, &mut function_context); + add_buffer("p215", 1024, params_path, &mut function_context); + add_buffer("p216", 1048576, params_path, &mut function_context); + add_buffer("p217", 4096, params_path, &mut function_context); + add_buffer("p218", 1048576, params_path, &mut function_context); + add_buffer("p219", 1024, params_path, &mut function_context); + add_buffer("p220", 4194304, params_path, &mut function_context); + add_buffer("p221", 1024, params_path, &mut function_context); + add_buffer("p222", 1048576, params_path, &mut function_context); + add_buffer("p223", 4096, params_path, &mut function_context); + add_buffer("p224", 1048576, params_path, &mut function_context); + add_buffer("p225", 1024, params_path, &mut function_context); + add_buffer("p226", 4194304, params_path, &mut function_context); + add_buffer("p227", 1024, params_path, &mut function_context); + add_buffer("p228", 1048576, params_path, &mut function_context); + add_buffer("p229", 4096, params_path, &mut function_context); + add_buffer("p230", 1048576, params_path, &mut function_context); + add_buffer("p231", 1024, params_path, &mut function_context); + add_buffer("p232", 4194304, params_path, &mut function_context); + add_buffer("p233", 1024, params_path, &mut function_context); + add_buffer("p234", 1048576, params_path, &mut function_context); + add_buffer("p235", 4096, params_path, &mut function_context); + add_buffer("p236", 1048576, params_path, &mut function_context); + add_buffer("p237", 1024, params_path, &mut function_context); + add_buffer("p238", 4194304, params_path, &mut function_context); + add_buffer("p239", 1024, params_path, &mut function_context); + add_buffer("p240", 1048576, params_path, &mut function_context); + add_buffer("p241", 4096, params_path, &mut function_context); + add_buffer("p242", 1048576, params_path, &mut function_context); + add_buffer("p243", 1024, params_path, &mut function_context); + add_buffer("p244", 4194304, params_path, &mut function_context); + add_buffer("p245", 1024, params_path, &mut function_context); + add_buffer("p246", 1048576, params_path, &mut function_context); + add_buffer("p247", 4096, params_path, &mut function_context); + add_buffer("p248", 1048576, params_path, &mut function_context); + add_buffer("p249", 1024, params_path, &mut function_context); + add_buffer("p250", 4194304, params_path, &mut function_context); + add_buffer("p251", 1024, params_path, &mut function_context); + add_buffer("p252", 1048576, params_path, &mut function_context); + add_buffer("p253", 4096, params_path, &mut function_context); + add_buffer("p254", 1048576, params_path, &mut function_context); + add_buffer("p255", 1024, params_path, &mut function_context); + add_buffer("p256", 4194304, params_path, &mut function_context); + add_buffer("p257", 1024, params_path, &mut function_context); + add_buffer("p258", 1048576, params_path, &mut function_context); + add_buffer("p259", 4096, params_path, &mut function_context); + add_buffer("p260", 1048576, params_path, &mut function_context); + add_buffer("p261", 1024, params_path, &mut function_context); + add_buffer("p262", 4194304, params_path, &mut function_context); + add_buffer("p263", 1024, params_path, &mut function_context); + add_buffer("p264", 1048576, params_path, &mut function_context); + add_buffer("p265", 4096, params_path, &mut function_context); + add_buffer("p266", 1048576, params_path, &mut function_context); + add_buffer("p267", 1024, params_path, &mut function_context); + add_buffer("p268", 4194304, params_path, &mut function_context); + add_buffer("p269", 1024, params_path, &mut function_context); + add_buffer("p270", 1048576, params_path, &mut function_context); + add_buffer("p271", 4096, params_path, &mut function_context); + add_buffer("p272", 1048576, params_path, &mut function_context); + add_buffer("p273", 1024, params_path, &mut function_context); + add_buffer("p274", 4194304, params_path, &mut function_context); + add_buffer("p275", 1024, params_path, &mut function_context); + add_buffer("p276", 1048576, params_path, &mut function_context); + add_buffer("p277", 4096, params_path, &mut function_context); + add_buffer("p278", 1048576, params_path, &mut function_context); + add_buffer("p279", 1024, params_path, &mut function_context); + add_buffer("p280", 4194304, params_path, &mut function_context); + add_buffer("p281", 1024, params_path, &mut function_context); + add_buffer("p282", 1048576, params_path, &mut function_context); + add_buffer("p283", 4096, params_path, &mut function_context); + add_buffer("p284", 1048576, params_path, &mut function_context); + add_buffer("p285", 1024, params_path, &mut function_context); + add_buffer("p286", 4194304, params_path, &mut function_context); + add_buffer("p287", 1024, params_path, &mut function_context); + add_buffer("p288", 1048576, params_path, &mut function_context); + add_buffer("p289", 4096, params_path, &mut function_context); + add_buffer("p290", 2097152, params_path, &mut function_context); + add_buffer("p291", 2048, params_path, &mut function_context); + add_buffer("p292", 9437184, params_path, &mut function_context); + add_buffer("p293", 2048, params_path, &mut function_context); + add_buffer("p294", 4194304, params_path, &mut function_context); + add_buffer("p295", 8192, params_path, &mut function_context); + add_buffer("p296", 8388608, params_path, &mut function_context); + add_buffer("p297", 8192, params_path, &mut function_context); + add_buffer("p298", 4194304, params_path, &mut function_context); + add_buffer("p299", 2048, params_path, &mut function_context); + add_buffer("p300", 16777216, params_path, &mut function_context); + add_buffer("p301", 2048, params_path, &mut function_context); + add_buffer("p302", 4194304, params_path, &mut function_context); + add_buffer("p303", 8192, params_path, &mut function_context); + add_buffer("p304", 4194304, params_path, &mut function_context); + add_buffer("p305", 2048, params_path, &mut function_context); + add_buffer("p306", 16777216, params_path, &mut function_context); + add_buffer("p307", 2048, params_path, &mut function_context); + add_buffer("p308", 4194304, params_path, &mut function_context); + add_buffer("p309", 8192, params_path, &mut function_context); + add_buffer("p310", 8192000, params_path, &mut function_context); + add_buffer("p311", 4000, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 4000; @@ -2234,8 +2697,8 @@ pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet152/"; +pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet50/"; add_buffer("input", 602112, params_path, &mut function_context); add_buffer("p0", 37632, params_path, &mut function_context); @@ -2353,194 +2816,3 @@ pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec (output_size, output_name.to_string(), expected, function_context) } - -pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 2359296, params_path, &mut function_context); - add_buffer("p1", 3072, params_path, &mut function_context); - add_buffer("p2", 3072, params_path, &mut function_context); - add_buffer("p3", 605184, params_path, &mut function_context); - add_buffer("p4", 3072, params_path, &mut function_context); - add_buffer("p5", 3072, params_path, &mut function_context); - add_buffer("p6", 7077888, params_path, &mut function_context); - add_buffer("p7", 9216, params_path, &mut function_context); - add_buffer("p8", 8, params_path, &mut function_context); - add_buffer("p9", 4, params_path, &mut function_context); - add_buffer("p10", 8, params_path, &mut function_context); - add_buffer("p11", 4, params_path, &mut function_context); - add_buffer("p12", 8, params_path, &mut function_context); - add_buffer("p13", 2359296, params_path, &mut function_context); - add_buffer("p14", 3072, params_path, &mut function_context); - add_buffer("p15", 3072, params_path, &mut function_context); - add_buffer("p16", 3072, params_path, &mut function_context); - add_buffer("p17", 9437184, params_path, &mut function_context); - add_buffer("p18", 12288, params_path, &mut function_context); - add_buffer("p19", 9437184, params_path, &mut function_context); - add_buffer("p20", 3072, params_path, &mut function_context); - add_buffer("p21", 3072, params_path, &mut function_context); - add_buffer("p22", 3072, params_path, &mut function_context); - add_buffer("p23", 7077888, params_path, &mut function_context); - add_buffer("p24", 9216, params_path, &mut function_context); - add_buffer("p25", 4, params_path, &mut function_context); - add_buffer("p26", 4, params_path, &mut function_context); - add_buffer("p27", 2359296, params_path, &mut function_context); - add_buffer("p28", 3072, params_path, &mut function_context); - add_buffer("p29", 3072, params_path, &mut function_context); - add_buffer("p30", 3072, params_path, &mut function_context); - add_buffer("p31", 9437184, params_path, &mut function_context); - add_buffer("p32", 12288, params_path, &mut function_context); - add_buffer("p33", 9437184, params_path, &mut function_context); - add_buffer("p34", 3072, params_path, &mut function_context); - add_buffer("p35", 3072, params_path, &mut function_context); - add_buffer("p36", 3072, params_path, &mut function_context); - add_buffer("p37", 7077888, params_path, &mut function_context); - add_buffer("p38", 9216, params_path, &mut function_context); - add_buffer("p39", 4, params_path, &mut function_context); - add_buffer("p40", 4, params_path, &mut function_context); - add_buffer("p41", 2359296, params_path, &mut function_context); - add_buffer("p42", 3072, params_path, &mut function_context); - add_buffer("p43", 3072, params_path, &mut function_context); - add_buffer("p44", 3072, params_path, &mut function_context); - add_buffer("p45", 9437184, params_path, &mut function_context); - add_buffer("p46", 12288, params_path, &mut function_context); - add_buffer("p47", 9437184, params_path, &mut function_context); - add_buffer("p48", 3072, params_path, &mut function_context); - add_buffer("p49", 3072, params_path, &mut function_context); - add_buffer("p50", 3072, params_path, &mut function_context); - add_buffer("p51", 7077888, params_path, &mut function_context); - add_buffer("p52", 9216, params_path, &mut function_context); - add_buffer("p53", 4, params_path, &mut function_context); - add_buffer("p54", 4, params_path, &mut function_context); - add_buffer("p55", 2359296, params_path, &mut function_context); - add_buffer("p56", 3072, params_path, &mut function_context); - add_buffer("p57", 3072, params_path, &mut function_context); - add_buffer("p58", 3072, params_path, &mut function_context); - add_buffer("p59", 9437184, params_path, &mut function_context); - add_buffer("p60", 12288, params_path, &mut function_context); - add_buffer("p61", 9437184, params_path, &mut function_context); - add_buffer("p62", 3072, params_path, &mut function_context); - add_buffer("p63", 3072, params_path, &mut function_context); - add_buffer("p64", 3072, params_path, &mut function_context); - add_buffer("p65", 7077888, params_path, &mut function_context); - add_buffer("p66", 9216, params_path, &mut function_context); - add_buffer("p67", 4, params_path, &mut function_context); - add_buffer("p68", 4, params_path, &mut function_context); - add_buffer("p69", 2359296, params_path, &mut function_context); - add_buffer("p70", 3072, params_path, &mut function_context); - add_buffer("p71", 3072, params_path, &mut function_context); - add_buffer("p72", 3072, params_path, &mut function_context); - add_buffer("p73", 9437184, params_path, &mut function_context); - add_buffer("p74", 12288, params_path, &mut function_context); - add_buffer("p75", 9437184, params_path, &mut function_context); - add_buffer("p76", 3072, params_path, &mut function_context); - add_buffer("p77", 3072, params_path, &mut function_context); - add_buffer("p78", 3072, params_path, &mut function_context); - add_buffer("p79", 7077888, params_path, &mut function_context); - add_buffer("p80", 9216, params_path, &mut function_context); - add_buffer("p81", 4, params_path, &mut function_context); - add_buffer("p82", 4, params_path, &mut function_context); - add_buffer("p83", 2359296, params_path, &mut function_context); - add_buffer("p84", 3072, params_path, &mut function_context); - add_buffer("p85", 3072, params_path, &mut function_context); - add_buffer("p86", 3072, params_path, &mut function_context); - add_buffer("p87", 9437184, params_path, &mut function_context); - add_buffer("p88", 12288, params_path, &mut function_context); - add_buffer("p89", 9437184, params_path, &mut function_context); - add_buffer("p90", 3072, params_path, &mut function_context); - add_buffer("p91", 3072, params_path, &mut function_context); - add_buffer("p92", 3072, params_path, &mut function_context); - add_buffer("p93", 7077888, params_path, &mut function_context); - add_buffer("p94", 9216, params_path, &mut function_context); - add_buffer("p95", 4, params_path, &mut function_context); - add_buffer("p96", 4, params_path, &mut function_context); - add_buffer("p97", 2359296, params_path, &mut function_context); - add_buffer("p98", 3072, params_path, &mut function_context); - add_buffer("p99", 3072, params_path, &mut function_context); - add_buffer("p100", 3072, params_path, &mut function_context); - add_buffer("p101", 9437184, params_path, &mut function_context); - add_buffer("p102", 12288, params_path, &mut function_context); - add_buffer("p103", 9437184, params_path, &mut function_context); - add_buffer("p104", 3072, params_path, &mut function_context); - add_buffer("p105", 3072, params_path, &mut function_context); - add_buffer("p106", 3072, params_path, &mut function_context); - add_buffer("p107", 7077888, params_path, &mut function_context); - add_buffer("p108", 9216, params_path, &mut function_context); - add_buffer("p109", 4, params_path, &mut function_context); - add_buffer("p110", 4, params_path, &mut function_context); - add_buffer("p111", 2359296, params_path, &mut function_context); - add_buffer("p112", 3072, params_path, &mut function_context); - add_buffer("p113", 3072, params_path, &mut function_context); - add_buffer("p114", 3072, params_path, &mut function_context); - add_buffer("p115", 9437184, params_path, &mut function_context); - add_buffer("p116", 12288, params_path, &mut function_context); - add_buffer("p117", 9437184, params_path, &mut function_context); - add_buffer("p118", 3072, params_path, &mut function_context); - add_buffer("p119", 3072, params_path, &mut function_context); - add_buffer("p120", 3072, params_path, &mut function_context); - add_buffer("p121", 7077888, params_path, &mut function_context); - add_buffer("p122", 9216, params_path, &mut function_context); - add_buffer("p123", 4, params_path, &mut function_context); - add_buffer("p124", 4, params_path, &mut function_context); - add_buffer("p125", 2359296, params_path, &mut function_context); - add_buffer("p126", 3072, params_path, &mut function_context); - add_buffer("p127", 3072, params_path, &mut function_context); - add_buffer("p128", 3072, params_path, &mut function_context); - add_buffer("p129", 9437184, params_path, &mut function_context); - add_buffer("p130", 12288, params_path, &mut function_context); - add_buffer("p131", 9437184, params_path, &mut function_context); - add_buffer("p132", 3072, params_path, &mut function_context); - add_buffer("p133", 3072, params_path, &mut function_context); - add_buffer("p134", 3072, params_path, &mut function_context); - add_buffer("p135", 7077888, params_path, &mut function_context); - add_buffer("p136", 9216, params_path, &mut function_context); - add_buffer("p137", 4, params_path, &mut function_context); - add_buffer("p138", 4, params_path, &mut function_context); - add_buffer("p139", 2359296, params_path, &mut function_context); - add_buffer("p140", 3072, params_path, &mut function_context); - add_buffer("p141", 3072, params_path, &mut function_context); - add_buffer("p142", 3072, params_path, &mut function_context); - add_buffer("p143", 9437184, params_path, &mut function_context); - add_buffer("p144", 12288, params_path, &mut function_context); - add_buffer("p145", 9437184, params_path, &mut function_context); - add_buffer("p146", 3072, params_path, &mut function_context); - add_buffer("p147", 3072, params_path, &mut function_context); - add_buffer("p148", 3072, params_path, &mut function_context); - add_buffer("p149", 7077888, params_path, &mut function_context); - add_buffer("p150", 9216, params_path, &mut function_context); - add_buffer("p151", 4, params_path, &mut function_context); - add_buffer("p152", 4, params_path, &mut function_context); - add_buffer("p153", 2359296, params_path, &mut function_context); - add_buffer("p154", 3072, params_path, &mut function_context); - add_buffer("p155", 3072, params_path, &mut function_context); - add_buffer("p156", 3072, params_path, &mut function_context); - add_buffer("p157", 9437184, params_path, &mut function_context); - add_buffer("p158", 12288, params_path, &mut function_context); - add_buffer("p159", 9437184, params_path, &mut function_context); - add_buffer("p160", 3072, params_path, &mut function_context); - add_buffer("p161", 3072, params_path, &mut function_context); - add_buffer("p162", 3072, params_path, &mut function_context); - add_buffer("p163", 7077888, params_path, &mut function_context); - add_buffer("p164", 9216, params_path, &mut function_context); - add_buffer("p165", 4, params_path, &mut function_context); - add_buffer("p166", 4, params_path, &mut function_context); - add_buffer("p167", 2359296, params_path, &mut function_context); - add_buffer("p168", 3072, params_path, &mut function_context); - add_buffer("p169", 3072, params_path, &mut function_context); - add_buffer("p170", 3072, params_path, &mut function_context); - add_buffer("p171", 9437184, params_path, &mut function_context); - add_buffer("p172", 12288, params_path, &mut function_context); - add_buffer("p173", 9437184, params_path, &mut function_context); - add_buffer("p174", 3072, params_path, &mut function_context); - add_buffer("p175", 3072, params_path, &mut function_context); - add_buffer("p176", 3072, params_path, &mut function_context); - add_buffer("p177", 3072000, params_path, &mut function_context); - add_buffer("p178", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet101.json b/machine_interface/tests/data/cuda/test_gpu_resnet101.json index fd6a20b3..e5426c3b 100644 --- a/machine_interface/tests/data/cuda/test_gpu_resnet101.json +++ b/machine_interface/tests/data/cuda/test_gpu_resnet101.json @@ -39,8 +39,8 @@ {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} ], "blueprint": { - "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], - "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b196": {"Absolute": 100352}, "b205": {"Absolute": 100352}, "b217": {"Absolute": 1806336}, "b218": {"Absolute": 1806336}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { @@ -70,7 +70,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -79,7 +79,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p4"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -88,7 +88,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p5"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -124,7 +124,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -133,7 +133,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p12"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -142,7 +142,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p13"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -169,7 +169,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -178,7 +178,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p18"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -187,7 +187,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p19"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -250,7 +250,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -259,7 +259,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -268,7 +268,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p33"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -295,7 +295,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -304,7 +304,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p38"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -313,7 +313,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p39"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -340,7 +340,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -349,7 +349,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p44"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -358,7 +358,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p45"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -421,7 +421,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -430,7 +430,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p58"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -439,7 +439,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p59"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -466,7 +466,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -475,7 +475,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p64"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -484,7 +484,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p65"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -511,7 +511,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -520,7 +520,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p70"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -529,7 +529,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p71"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -556,7 +556,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -565,7 +565,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p76"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -574,7 +574,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p77"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -601,7 +601,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -610,7 +610,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p82"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -619,7 +619,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p83"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -637,7 +637,772 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p96"}, {"Ptr": "p97"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p102"}, {"Ptr": "p103"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p108"}, {"Ptr": "p109"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p110"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p114"}, {"Ptr": "p115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p116"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p120"}, {"Ptr": "p121"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p122"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p126"}, {"Ptr": "p127"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p128"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p132"}, {"Ptr": "p133"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p134"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p138"}, {"Ptr": "p139"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p140"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p144"}, {"Ptr": "p145"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p150"}, {"Ptr": "p151"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p152"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p156"}, {"Ptr": "p157"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p158"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p160"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p162"}, {"Ptr": "p163"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p164"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p168"}, {"Ptr": "p169"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p170"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b218"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p174"}, {"Ptr": "p175"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p176"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b218"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p180"}, {"Ptr": "p181"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p182"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b217"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b218"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p186"}, {"Ptr": "p187"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -646,7 +1411,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b196"}, {"Ptr": "b9"}, {"Ptr": "p190"}, {"Ptr": "p191"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 8}, @@ -655,7 +1420,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p194"}, {"Ptr": "p195"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -664,7 +1429,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b196"}, {"Ptr": "p192"}, {"Ptr": "p193"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 64}, @@ -673,7 +1438,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b196"}, {"Ptr": "b9"}, {"Ptr": "p196"}, {"Ptr": "p197"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -682,7 +1447,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b217"}, {"Ptr": "b196"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -691,7 +1456,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p198"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, @@ -700,7 +1465,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b205"}, {"Ptr": "b218"}, {"Ptr": "p199"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -709,7 +1474,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b205"}, {"Ptr": "p200"}, {"Ptr": "p201"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 64}, @@ -718,7 +1483,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b196"}, {"Ptr": "b4"}, {"Ptr": "p202"}, {"Ptr": "p203"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -727,7 +1492,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b217"}, {"Ptr": "b196"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -736,7 +1501,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b218"}, {"Ptr": "b217"}, {"Ptr": "p204"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, @@ -745,7 +1510,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b205"}, {"Ptr": "b218"}, {"Ptr": "p205"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -754,7 +1519,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b205"}, {"Ptr": "p206"}, {"Ptr": "p207"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 64}, @@ -763,7 +1528,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b217"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -772,7 +1537,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b196"}, {"Ptr": "b217"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -781,7 +1546,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b196"}, {"Ptr": "p208"}, {"Ptr": "p209"}], { "grid_dim_x": {"Absolute": 1000}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet152.json b/machine_interface/tests/data/cuda/test_gpu_resnet152.json index e74b71a3..da97929c 100644 --- a/machine_interface/tests/data/cuda/test_gpu_resnet152.json +++ b/machine_interface/tests/data/cuda/test_gpu_resnet152.json @@ -39,8 +39,8 @@ {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} ], "blueprint": { - "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], - "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107", "p108", "p109", "p110", "p111", "p112", "p113", "p114", "p115", "p116", "p117", "p118", "p119", "p120", "p121", "p122", "p123", "p124", "p125", "p126", "p127", "p128", "p129", "p130", "p131", "p132", "p133", "p134", "p135", "p136", "p137", "p138", "p139", "p140", "p141", "p142", "p143", "p144", "p145", "p146", "p147", "p148", "p149", "p150", "p151", "p152", "p153", "p154", "p155", "p156", "p157", "p158", "p159", "p160", "p161", "p162", "p163", "p164", "p165", "p166", "p167", "p168", "p169", "p170", "p171", "p172", "p173", "p174", "p175", "p176", "p177", "p178", "p179", "p180", "p181", "p182", "p183", "p184", "p185", "p186", "p187", "p188", "p189", "p190", "p191", "p192", "p193", "p194", "p195", "p196", "p197", "p198", "p199", "p200", "p201", "p202", "p203", "p204", "p205", "p206", "p207", "p208", "p209", "p210", "p211", "p212", "p213", "p214", "p215", "p216", "p217", "p218", "p219", "p220", "p221", "p222", "p223", "p224", "p225", "p226", "p227", "p228", "p229", "p230", "p231", "p232", "p233", "p234", "p235", "p236", "p237", "p238", "p239", "p240", "p241", "p242", "p243", "p244", "p245", "p246", "p247", "p248", "p249", "p250", "p251", "p252", "p253", "p254", "p255", "p256", "p257", "p258", "p259", "p260", "p261", "p262", "p263", "p264", "p265", "p266", "p267", "p268", "p269", "p270", "p271", "p272", "p273", "p274", "p275", "p276", "p277", "p278", "p279", "p280", "p281", "p282", "p283", "p284", "p285", "p286", "p287", "p288", "p289", "p290", "p291", "p292", "p293", "p294", "p295", "p296", "p297", "p298", "p299", "p300", "p301", "p302", "p303", "p304", "p305", "p306", "p307", "p308", "p309", "p310", "p311"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b298": {"Absolute": 100352}, "b307": {"Absolute": 100352}, "b319": {"Absolute": 1806336}, "b320": {"Absolute": 1806336}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { @@ -70,7 +70,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -79,7 +79,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p4"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -88,7 +88,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p5"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -124,7 +124,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -133,7 +133,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p12"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -142,7 +142,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p13"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -169,7 +169,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -178,7 +178,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p18"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -187,7 +187,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p19"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -250,7 +250,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -259,7 +259,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p32"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -268,7 +268,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p33"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -295,7 +295,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -304,7 +304,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p38"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -313,7 +313,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p39"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -340,7 +340,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -349,7 +349,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p44"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -358,7 +358,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p45"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -376,7 +376,187 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p58"}, {"Ptr": "p59"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p60"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p62"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p64"}, {"Ptr": "p65"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p68"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p70"}, {"Ptr": "p71"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p72"}, {"Ptr": "p73"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 4}, @@ -385,7 +565,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 4}, @@ -394,7 +574,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 32}, @@ -403,7 +583,1357 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p96"}, {"Ptr": "p97"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p102"}, {"Ptr": "p103"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p108"}, {"Ptr": "p109"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p110"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p114"}, {"Ptr": "p115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p116"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p120"}, {"Ptr": "p121"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p122"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p126"}, {"Ptr": "p127"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p128"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p132"}, {"Ptr": "p133"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p134"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p138"}, {"Ptr": "p139"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p140"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p144"}, {"Ptr": "p145"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p150"}, {"Ptr": "p151"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p152"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p156"}, {"Ptr": "p157"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p158"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p160"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p162"}, {"Ptr": "p163"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p164"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p168"}, {"Ptr": "p169"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p170"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p174"}, {"Ptr": "p175"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p176"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p180"}, {"Ptr": "p181"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p182"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p184"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p186"}, {"Ptr": "p187"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p190"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p192"}, {"Ptr": "p193"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p194"}, {"Ptr": "p195"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p196"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p198"}, {"Ptr": "p199"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p200"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p202"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p204"}, {"Ptr": "p205"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p206"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p208"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p210"}, {"Ptr": "p211"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p212"}, {"Ptr": "p213"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p214"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p216"}, {"Ptr": "p217"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p218"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p220"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p222"}, {"Ptr": "p223"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p224"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p226"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p227"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p228"}, {"Ptr": "p229"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p230"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p232"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p233"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p234"}, {"Ptr": "p235"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p236"}, {"Ptr": "p237"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p238"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p239"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p240"}, {"Ptr": "p241"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p242"}, {"Ptr": "p243"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p244"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p245"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p246"}, {"Ptr": "p247"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p248"}, {"Ptr": "p249"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p250"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p251"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p252"}, {"Ptr": "p253"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p254"}, {"Ptr": "p255"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p256"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p258"}, {"Ptr": "p259"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -412,7 +1942,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p260"}, {"Ptr": "p261"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 8}, @@ -421,7 +1951,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -430,7 +1960,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p262"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -439,7 +1969,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p263"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -448,7 +1978,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p60"}, {"Ptr": "p61"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p264"}, {"Ptr": "p265"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -457,7 +1987,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p266"}, {"Ptr": "p267"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 8}, @@ -466,7 +1996,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -475,7 +2005,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p268"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -484,7 +2014,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p269"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -493,7 +2023,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p270"}, {"Ptr": "p271"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -502,7 +2032,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p272"}, {"Ptr": "p273"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 8}, @@ -511,7 +2041,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -520,7 +2050,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p274"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -529,7 +2059,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b320"}, {"Ptr": "p275"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -538,7 +2068,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p72"}, {"Ptr": "p73"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p276"}, {"Ptr": "p277"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -547,7 +2077,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p278"}, {"Ptr": "p279"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 8}, @@ -556,7 +2086,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -565,7 +2095,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p280"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -574,7 +2104,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b320"}, {"Ptr": "p281"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -583,7 +2113,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p282"}, {"Ptr": "p283"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -592,7 +2122,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p284"}, {"Ptr": "p285"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 8}, @@ -601,7 +2131,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b319"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -610,7 +2140,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p286"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -619,7 +2149,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b320"}, {"Ptr": "p287"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -628,7 +2158,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p288"}, {"Ptr": "p289"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -637,7 +2167,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p290"}, {"Ptr": "p291"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -646,7 +2176,7 @@ "block_dim_z": {"Absolute": 8}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b298"}, {"Ptr": "b9"}, {"Ptr": "p292"}, {"Ptr": "p293"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 8}, @@ -655,7 +2185,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p296"}, {"Ptr": "p297"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -664,7 +2194,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b298"}, {"Ptr": "p294"}, {"Ptr": "p295"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 64}, @@ -673,7 +2203,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b298"}, {"Ptr": "b9"}, {"Ptr": "p298"}, {"Ptr": "p299"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -682,7 +2212,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b319"}, {"Ptr": "b298"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -691,7 +2221,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p300"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, @@ -700,7 +2230,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b307"}, {"Ptr": "b320"}, {"Ptr": "p301"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -709,7 +2239,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b307"}, {"Ptr": "p302"}, {"Ptr": "p303"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 64}, @@ -718,7 +2248,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b298"}, {"Ptr": "b4"}, {"Ptr": "p304"}, {"Ptr": "p305"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -727,7 +2257,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b319"}, {"Ptr": "b298"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -736,7 +2266,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b320"}, {"Ptr": "b319"}, {"Ptr": "p306"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, @@ -745,7 +2275,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b307"}, {"Ptr": "b320"}, {"Ptr": "p307"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -754,7 +2284,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b307"}, {"Ptr": "p308"}, {"Ptr": "p309"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 64}, @@ -763,7 +2293,7 @@ "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b319"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -772,7 +2302,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b298"}, {"Ptr": "b319"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -781,7 +2311,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b298"}, {"Ptr": "p310"}, {"Ptr": "p311"}], { "grid_dim_x": {"Absolute": 1000}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet34.json b/machine_interface/tests/data/cuda/test_gpu_resnet34.json index 932b8a12..4b95acad 100644 --- a/machine_interface/tests/data/cuda/test_gpu_resnet34.json +++ b/machine_interface/tests/data/cuda/test_gpu_resnet34.json @@ -1,6 +1,18 @@ { "modules": [{"module_name": "resnet34.cubin", "path": "cuda/resnet34.cubin"}], "kernels": [ + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, @@ -15,23 +27,10 @@ {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_3_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel"}, - {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, @@ -39,8 +38,8 @@ {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} ], "blueprint": { - "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], - "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 802816}, "b9": {"Absolute": 802816}, "b68": {"Absolute": 100352}, "b77": {"Absolute": 2048}, "b81": {"Absolute": 1806336}, "b82": {"Absolute": 1806336}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { @@ -61,16 +60,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 56}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 28}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 8}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -79,7 +69,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p2"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -88,7 +78,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -97,34 +87,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel", [{"Ptr": "b81"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p6"}, {"Ptr": "p7"}, {"Ptr": "b3"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, - "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 56}, - "grid_dim_z": {"Absolute": 2}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p5"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -133,7 +123,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p6"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -142,7 +132,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p7"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -151,25 +141,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}, {"Ptr": "b4"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p16"}, {"Ptr": "p17"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p8"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 56}, - "grid_dim_z": {"Absolute": 2}, - "block_dim_x": {"Absolute": 28}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p9"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b81"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -178,7 +177,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p10"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 2}, "grid_dim_z": {"Absolute": 36}, @@ -187,7 +186,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p11"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -196,61 +195,79 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b9"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { - "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p13"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p14"}, {"Ptr": "p15"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 4}, "block_dim_x": {"Absolute": 14}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p28"}, {"Ptr": "p29"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 28}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "b4"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p17"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -259,7 +276,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p20"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -268,7 +285,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p21"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -277,25 +294,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p34"}, {"Ptr": "p35"}, {"Ptr": "b3"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p23"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b3"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -304,7 +330,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p24"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -313,7 +339,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p25"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -322,25 +348,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p40"}, {"Ptr": "p41"}, {"Ptr": "b9"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p27"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -349,7 +384,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p28"}], { "grid_dim_x": {"Absolute": 2}, "grid_dim_y": {"Absolute": 4}, "grid_dim_z": {"Absolute": 16}, @@ -358,7 +393,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p29"}], { "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -367,61 +402,52 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b4"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 28}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p30"}], { "grid_dim_x": {"Absolute": 2}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, "block_dim_y": {"Absolute": 4}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p31"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 4}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 7}, - "block_dim_z": {"Absolute": 16}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 32}, - "block_dim_x": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p32"}, {"Ptr": "p33"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 8}, "block_dim_x": {"Absolute": 7}, "block_dim_y": {"Absolute": 2}, "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 14}, "grid_dim_z": {"Absolute": 8}, "block_dim_x": {"Absolute": 14}, - "block_dim_y": {"Absolute": 2}, + "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -430,7 +456,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p34"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -439,7 +465,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p35"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -448,25 +474,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p60"}, {"Ptr": "p61"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p38"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 8}, - "block_dim_x": {"Absolute": 14}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -475,7 +510,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p40"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -484,7 +519,16 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p41"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -493,25 +537,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p42"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 8}, - "block_dim_x": {"Absolute": 14}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -520,7 +564,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p44"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -529,7 +573,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p45"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -538,25 +582,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p72"}, {"Ptr": "p73"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p46"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 8}, - "block_dim_x": {"Absolute": 14}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -565,7 +618,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p48"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -574,7 +627,16 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p49"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -583,25 +645,25 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}, {"Ptr": "b3"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p50"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 8}, - "block_dim_x": {"Absolute": 14}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -610,7 +672,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p52"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, @@ -619,7 +681,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b82"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -628,52 +690,70 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b4"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, - "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 16}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p54"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 14}, - "block_dim_y": {"Absolute": 2}, - "block_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { - "grid_dim_x": {"Absolute": 1}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 8}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 7}, - "block_dim_z": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p56"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 16}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, + "block_dim_x": {"Absolute": 49}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { - "grid_dim_x": {"Absolute": 1}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p57"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 64}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p58"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 16}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b68"}, {"Ptr": "b9"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 7}, "grid_dim_z": {"Absolute": 16}, @@ -682,7 +762,7 @@ "block_dim_z": {"Absolute": 32}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -691,7 +771,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p60"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, @@ -700,7 +780,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p61"}, {"Ptr": "b68"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -709,25 +789,34 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { - "grid_dim_x": {"Absolute": 1}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 64}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 7}, - "block_dim_z": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p64"}], { "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, - "block_dim_x": {"Absolute": 7}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b68"}, {"Ptr": "b82"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel", [{"Ptr": "b81"}, {"Ptr": "b68"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -736,7 +825,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p66"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 8}, "grid_dim_z": {"Absolute": 16}, @@ -745,7 +834,7 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b82"}, {"Ptr": "p67"}, {"Ptr": "b9"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, @@ -754,34 +843,79 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b81"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p68"}], { "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b68"}, {"Ptr": "b82"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, - "grid_dim_z": {"Absolute": 64}, - "block_dim_x": {"Absolute": 1}, - "block_dim_y": {"Absolute": 7}, - "block_dim_z": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel", [{"Ptr": "b81"}, {"Ptr": "b68"}], { "grid_dim_x": {"Absolute": 64}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1", [{"Ptr": "b82"}, {"Ptr": "b81"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b82"}, {"Ptr": "p71"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b81"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 16}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { - "grid_dim_x": {"Absolute": 2}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b77"}, {"Ptr": "b81"}], { + "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 1024}, + "block_dim_x": {"Absolute": 512}, "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b77"}, {"Ptr": "p72"}, {"Ptr": "p73"}], { "grid_dim_x": {"Absolute": 1000}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, diff --git a/machine_interface/tests/libs/cuda/resnet101.cubin b/machine_interface/tests/libs/cuda/resnet101.cubin index e70b692fb3bcf1e205f42c1fc817410b7185d633..fb34333658debac67cd12c02e7dc313a11cf5983 100644 GIT binary patch delta 10524 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 Kzv~_Ozy2TjqVp~Q diff --git a/machine_interface/tests/libs/cuda/resnet34.cubin b/machine_interface/tests/libs/cuda/resnet34.cubin index a83d0e169b057732ba7860664676cc7ad3c3053f..e207cfe89fab349f55d979c922a5af147a545f37 100644 GIT binary patch delta 44551 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 literal 246816 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 NdSgfBE%$%y{13v8Nnii~ diff --git a/machine_interface/tests/libs/cuda/resnet50.cubin b/machine_interface/tests/libs/cuda/resnet50.cubin index 92e3be357af2c99b0ce7cb285df42c5274a6f578..e28bf8cdfc33cac20b31e1bf331af4cfe3061da2 100644 GIT binary patch delta 9862 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 wE0R delta 9983 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 XFa+PLI(ZFee serve_request(true, req, dispatcher).await, @@ -439,6 +440,7 @@ async fn service( | "/hot/resnet34batch8" | "/hot/resnet34batch16" | "/hot/resnet50" + | "/hot/resnet101" | "/hot/resnet152" | "/hot/vit_b_16" | "/hot/llama_kv" => serve_request(false, req, dispatcher).await, From 9b8a38341a5c90e986d28027136919c18a54d704 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 2 Jul 2025 09:30:49 +0200 Subject: [PATCH 161/176] reflect dandelionExperiment changes: single ModelInference RequestType --- .../gpu/gpu_tests/cuda_tests/load_models.rs | 474 +++++++++------ .../tests/data/cuda/test_gpu_mobilenetv2.json | 540 ++++++++++++++++++ .../tests/libs/cuda/mobilenetv2.cubin | Bin 0 -> 265824 bytes .../tests/libs/cuda/resnet101.cubin | Bin 246816 -> 246816 bytes .../tests/libs/cuda/resnet152.cubin | Bin 246816 -> 246816 bytes .../tests/libs/cuda/resnet18.cubin | Bin 208288 -> 208288 bytes .../tests/libs/cuda/resnet34.cubin | Bin 208288 -> 208288 bytes .../tests/libs/cuda/resnet50.cubin | Bin 246816 -> 246816 bytes server/src/main.rs | 41 +- 9 files changed, 841 insertions(+), 214 deletions(-) create mode 100644 machine_interface/tests/data/cuda/test_gpu_mobilenetv2.json create mode 100644 machine_interface/tests/libs/cuda/mobilenetv2.cubin diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 4b9fa5ce..38952b8a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -1453,20 +1453,6 @@ pub fn full_load_llama_kv(mut function_context: Context) -> (usize, String, Vec< (output_size, output_name.to_string(), expected, function_context) } -pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; - - add_buffer("input", 16, params_path, &mut function_context); - add_buffer("p0", 80, params_path, &mut function_context); - add_buffer("p1", 60, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 12; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama_kv/"; @@ -1820,60 +1806,6 @@ pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, C (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 589824, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 589824, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 589824, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 1048576, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 1048576, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 1048576, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 4194304, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 4194304, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 16777216, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 16777216, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; @@ -2065,6 +1997,74 @@ pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } +pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; + + add_buffer("input", 16, params_path, &mut function_context); + add_buffer("p0", 80, params_path, &mut function_context); + add_buffer("p1", 60, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 12; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet34/"; @@ -2151,6 +2151,126 @@ pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet50/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 16384, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 65536, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 256, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 256, params_path, &mut function_context); + add_buffer("p14", 65536, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 65536, params_path, &mut function_context); + add_buffer("p17", 256, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 256, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 131072, params_path, &mut function_context); + add_buffer("p23", 512, params_path, &mut function_context); + add_buffer("p24", 589824, params_path, &mut function_context); + add_buffer("p25", 512, params_path, &mut function_context); + add_buffer("p26", 262144, params_path, &mut function_context); + add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p28", 524288, params_path, &mut function_context); + add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p30", 262144, params_path, &mut function_context); + add_buffer("p31", 512, params_path, &mut function_context); + add_buffer("p32", 1048576, params_path, &mut function_context); + add_buffer("p33", 512, params_path, &mut function_context); + add_buffer("p34", 262144, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 262144, params_path, &mut function_context); + add_buffer("p37", 512, params_path, &mut function_context); + add_buffer("p38", 1048576, params_path, &mut function_context); + add_buffer("p39", 512, params_path, &mut function_context); + add_buffer("p40", 262144, params_path, &mut function_context); + add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p42", 262144, params_path, &mut function_context); + add_buffer("p43", 512, params_path, &mut function_context); + add_buffer("p44", 1048576, params_path, &mut function_context); + add_buffer("p45", 512, params_path, &mut function_context); + add_buffer("p46", 262144, params_path, &mut function_context); + add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p48", 524288, params_path, &mut function_context); + add_buffer("p49", 1024, params_path, &mut function_context); + add_buffer("p50", 2359296, params_path, &mut function_context); + add_buffer("p51", 1024, params_path, &mut function_context); + add_buffer("p52", 1048576, params_path, &mut function_context); + add_buffer("p53", 4096, params_path, &mut function_context); + add_buffer("p54", 2097152, params_path, &mut function_context); + add_buffer("p55", 4096, params_path, &mut function_context); + add_buffer("p56", 1048576, params_path, &mut function_context); + add_buffer("p57", 1024, params_path, &mut function_context); + add_buffer("p58", 4194304, params_path, &mut function_context); + add_buffer("p59", 1024, params_path, &mut function_context); + add_buffer("p60", 1048576, params_path, &mut function_context); + add_buffer("p61", 4096, params_path, &mut function_context); + add_buffer("p62", 1048576, params_path, &mut function_context); + add_buffer("p63", 1024, params_path, &mut function_context); + add_buffer("p64", 4194304, params_path, &mut function_context); + add_buffer("p65", 1024, params_path, &mut function_context); + add_buffer("p66", 1048576, params_path, &mut function_context); + add_buffer("p67", 4096, params_path, &mut function_context); + add_buffer("p68", 1048576, params_path, &mut function_context); + add_buffer("p69", 1024, params_path, &mut function_context); + add_buffer("p70", 4194304, params_path, &mut function_context); + add_buffer("p71", 1024, params_path, &mut function_context); + add_buffer("p72", 1048576, params_path, &mut function_context); + add_buffer("p73", 4096, params_path, &mut function_context); + add_buffer("p74", 1048576, params_path, &mut function_context); + add_buffer("p75", 1024, params_path, &mut function_context); + add_buffer("p76", 4194304, params_path, &mut function_context); + add_buffer("p77", 1024, params_path, &mut function_context); + add_buffer("p78", 1048576, params_path, &mut function_context); + add_buffer("p79", 4096, params_path, &mut function_context); + add_buffer("p80", 1048576, params_path, &mut function_context); + add_buffer("p81", 1024, params_path, &mut function_context); + add_buffer("p82", 4194304, params_path, &mut function_context); + add_buffer("p83", 1024, params_path, &mut function_context); + add_buffer("p84", 1048576, params_path, &mut function_context); + add_buffer("p85", 4096, params_path, &mut function_context); + add_buffer("p86", 2097152, params_path, &mut function_context); + add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p88", 9437184, params_path, &mut function_context); + add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p90", 4194304, params_path, &mut function_context); + add_buffer("p91", 8192, params_path, &mut function_context); + add_buffer("p92", 8388608, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 4194304, params_path, &mut function_context); + add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p96", 16777216, params_path, &mut function_context); + add_buffer("p97", 2048, params_path, &mut function_context); + add_buffer("p98", 4194304, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 4194304, params_path, &mut function_context); + add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p102", 16777216, params_path, &mut function_context); + add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p104", 4194304, params_path, &mut function_context); + add_buffer("p105", 8192, params_path, &mut function_context); + add_buffer("p106", 8192000, params_path, &mut function_context); + add_buffer("p107", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet101/"; @@ -2697,118 +2817,116 @@ pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet50/"; +pub fn load_mobilenetv2(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/mobilenetv2/"; add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 16384, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 65536, params_path, &mut function_context); - add_buffer("p7", 1024, params_path, &mut function_context); - add_buffer("p8", 65536, params_path, &mut function_context); - add_buffer("p9", 1024, params_path, &mut function_context); - add_buffer("p10", 65536, params_path, &mut function_context); - add_buffer("p11", 256, params_path, &mut function_context); - add_buffer("p12", 589824, params_path, &mut function_context); - add_buffer("p13", 256, params_path, &mut function_context); - add_buffer("p14", 65536, params_path, &mut function_context); - add_buffer("p15", 1024, params_path, &mut function_context); - add_buffer("p16", 65536, params_path, &mut function_context); - add_buffer("p17", 256, params_path, &mut function_context); - add_buffer("p18", 589824, params_path, &mut function_context); - add_buffer("p19", 256, params_path, &mut function_context); - add_buffer("p20", 65536, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 131072, params_path, &mut function_context); - add_buffer("p23", 512, params_path, &mut function_context); - add_buffer("p24", 589824, params_path, &mut function_context); - add_buffer("p25", 512, params_path, &mut function_context); - add_buffer("p26", 262144, params_path, &mut function_context); - add_buffer("p27", 2048, params_path, &mut function_context); - add_buffer("p28", 524288, params_path, &mut function_context); - add_buffer("p29", 2048, params_path, &mut function_context); - add_buffer("p30", 262144, params_path, &mut function_context); - add_buffer("p31", 512, params_path, &mut function_context); - add_buffer("p32", 1048576, params_path, &mut function_context); - add_buffer("p33", 512, params_path, &mut function_context); - add_buffer("p34", 262144, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 262144, params_path, &mut function_context); - add_buffer("p37", 512, params_path, &mut function_context); - add_buffer("p38", 1048576, params_path, &mut function_context); - add_buffer("p39", 512, params_path, &mut function_context); - add_buffer("p40", 262144, params_path, &mut function_context); - add_buffer("p41", 2048, params_path, &mut function_context); - add_buffer("p42", 262144, params_path, &mut function_context); - add_buffer("p43", 512, params_path, &mut function_context); - add_buffer("p44", 1048576, params_path, &mut function_context); - add_buffer("p45", 512, params_path, &mut function_context); - add_buffer("p46", 262144, params_path, &mut function_context); - add_buffer("p47", 2048, params_path, &mut function_context); - add_buffer("p48", 524288, params_path, &mut function_context); - add_buffer("p49", 1024, params_path, &mut function_context); - add_buffer("p50", 2359296, params_path, &mut function_context); - add_buffer("p51", 1024, params_path, &mut function_context); - add_buffer("p52", 1048576, params_path, &mut function_context); - add_buffer("p53", 4096, params_path, &mut function_context); - add_buffer("p54", 2097152, params_path, &mut function_context); - add_buffer("p55", 4096, params_path, &mut function_context); - add_buffer("p56", 1048576, params_path, &mut function_context); - add_buffer("p57", 1024, params_path, &mut function_context); - add_buffer("p58", 4194304, params_path, &mut function_context); - add_buffer("p59", 1024, params_path, &mut function_context); - add_buffer("p60", 1048576, params_path, &mut function_context); - add_buffer("p61", 4096, params_path, &mut function_context); - add_buffer("p62", 1048576, params_path, &mut function_context); - add_buffer("p63", 1024, params_path, &mut function_context); - add_buffer("p64", 4194304, params_path, &mut function_context); - add_buffer("p65", 1024, params_path, &mut function_context); - add_buffer("p66", 1048576, params_path, &mut function_context); - add_buffer("p67", 4096, params_path, &mut function_context); - add_buffer("p68", 1048576, params_path, &mut function_context); - add_buffer("p69", 1024, params_path, &mut function_context); - add_buffer("p70", 4194304, params_path, &mut function_context); - add_buffer("p71", 1024, params_path, &mut function_context); - add_buffer("p72", 1048576, params_path, &mut function_context); - add_buffer("p73", 4096, params_path, &mut function_context); - add_buffer("p74", 1048576, params_path, &mut function_context); - add_buffer("p75", 1024, params_path, &mut function_context); - add_buffer("p76", 4194304, params_path, &mut function_context); - add_buffer("p77", 1024, params_path, &mut function_context); - add_buffer("p78", 1048576, params_path, &mut function_context); - add_buffer("p79", 4096, params_path, &mut function_context); - add_buffer("p80", 1048576, params_path, &mut function_context); - add_buffer("p81", 1024, params_path, &mut function_context); - add_buffer("p82", 4194304, params_path, &mut function_context); - add_buffer("p83", 1024, params_path, &mut function_context); - add_buffer("p84", 1048576, params_path, &mut function_context); - add_buffer("p85", 4096, params_path, &mut function_context); - add_buffer("p86", 2097152, params_path, &mut function_context); - add_buffer("p87", 2048, params_path, &mut function_context); - add_buffer("p88", 9437184, params_path, &mut function_context); - add_buffer("p89", 2048, params_path, &mut function_context); - add_buffer("p90", 4194304, params_path, &mut function_context); - add_buffer("p91", 8192, params_path, &mut function_context); - add_buffer("p92", 8388608, params_path, &mut function_context); - add_buffer("p93", 8192, params_path, &mut function_context); - add_buffer("p94", 4194304, params_path, &mut function_context); - add_buffer("p95", 2048, params_path, &mut function_context); - add_buffer("p96", 16777216, params_path, &mut function_context); - add_buffer("p97", 2048, params_path, &mut function_context); - add_buffer("p98", 4194304, params_path, &mut function_context); - add_buffer("p99", 8192, params_path, &mut function_context); - add_buffer("p100", 4194304, params_path, &mut function_context); - add_buffer("p101", 2048, params_path, &mut function_context); - add_buffer("p102", 16777216, params_path, &mut function_context); - add_buffer("p103", 2048, params_path, &mut function_context); - add_buffer("p104", 4194304, params_path, &mut function_context); - add_buffer("p105", 8192, params_path, &mut function_context); - add_buffer("p106", 8192000, params_path, &mut function_context); - add_buffer("p107", 4000, params_path, &mut function_context); + add_buffer("p0", 3456, params_path, &mut function_context); + add_buffer("p1", 128, params_path, &mut function_context); + add_buffer("p2", 1152, params_path, &mut function_context); + add_buffer("p3", 128, params_path, &mut function_context); + add_buffer("p4", 2048, params_path, &mut function_context); + add_buffer("p5", 64, params_path, &mut function_context); + add_buffer("p6", 6144, params_path, &mut function_context); + add_buffer("p7", 384, params_path, &mut function_context); + add_buffer("p8", 3456, params_path, &mut function_context); + add_buffer("p9", 384, params_path, &mut function_context); + add_buffer("p10", 9216, params_path, &mut function_context); + add_buffer("p11", 96, params_path, &mut function_context); + add_buffer("p12", 13824, params_path, &mut function_context); + add_buffer("p13", 576, params_path, &mut function_context); + add_buffer("p14", 5184, params_path, &mut function_context); + add_buffer("p15", 576, params_path, &mut function_context); + add_buffer("p16", 13824, params_path, &mut function_context); + add_buffer("p17", 96, params_path, &mut function_context); + add_buffer("p18", 13824, params_path, &mut function_context); + add_buffer("p19", 576, params_path, &mut function_context); + add_buffer("p20", 5184, params_path, &mut function_context); + add_buffer("p21", 576, params_path, &mut function_context); + add_buffer("p22", 18432, params_path, &mut function_context); + add_buffer("p23", 128, params_path, &mut function_context); + add_buffer("p24", 24576, params_path, &mut function_context); + add_buffer("p25", 768, params_path, &mut function_context); + add_buffer("p26", 6912, params_path, &mut function_context); + add_buffer("p27", 768, params_path, &mut function_context); + add_buffer("p28", 24576, params_path, &mut function_context); + add_buffer("p29", 128, params_path, &mut function_context); + add_buffer("p30", 24576, params_path, &mut function_context); + add_buffer("p31", 768, params_path, &mut function_context); + add_buffer("p32", 6912, params_path, &mut function_context); + add_buffer("p33", 768, params_path, &mut function_context); + add_buffer("p34", 24576, params_path, &mut function_context); + add_buffer("p35", 128, params_path, &mut function_context); + add_buffer("p36", 24576, params_path, &mut function_context); + add_buffer("p37", 768, params_path, &mut function_context); + add_buffer("p38", 6912, params_path, &mut function_context); + add_buffer("p39", 768, params_path, &mut function_context); + add_buffer("p40", 49152, params_path, &mut function_context); + add_buffer("p41", 256, params_path, &mut function_context); + add_buffer("p42", 98304, params_path, &mut function_context); + add_buffer("p43", 1536, params_path, &mut function_context); + add_buffer("p44", 13824, params_path, &mut function_context); + add_buffer("p45", 1536, params_path, &mut function_context); + add_buffer("p46", 98304, params_path, &mut function_context); + add_buffer("p47", 256, params_path, &mut function_context); + add_buffer("p48", 98304, params_path, &mut function_context); + add_buffer("p49", 1536, params_path, &mut function_context); + add_buffer("p50", 13824, params_path, &mut function_context); + add_buffer("p51", 1536, params_path, &mut function_context); + add_buffer("p52", 98304, params_path, &mut function_context); + add_buffer("p53", 256, params_path, &mut function_context); + add_buffer("p54", 98304, params_path, &mut function_context); + add_buffer("p55", 1536, params_path, &mut function_context); + add_buffer("p56", 13824, params_path, &mut function_context); + add_buffer("p57", 1536, params_path, &mut function_context); + add_buffer("p58", 98304, params_path, &mut function_context); + add_buffer("p59", 256, params_path, &mut function_context); + add_buffer("p60", 98304, params_path, &mut function_context); + add_buffer("p61", 1536, params_path, &mut function_context); + add_buffer("p62", 13824, params_path, &mut function_context); + add_buffer("p63", 1536, params_path, &mut function_context); + add_buffer("p64", 147456, params_path, &mut function_context); + add_buffer("p65", 384, params_path, &mut function_context); + add_buffer("p66", 221184, params_path, &mut function_context); + add_buffer("p67", 2304, params_path, &mut function_context); + add_buffer("p68", 20736, params_path, &mut function_context); + add_buffer("p69", 2304, params_path, &mut function_context); + add_buffer("p70", 221184, params_path, &mut function_context); + add_buffer("p71", 384, params_path, &mut function_context); + add_buffer("p72", 221184, params_path, &mut function_context); + add_buffer("p73", 2304, params_path, &mut function_context); + add_buffer("p74", 20736, params_path, &mut function_context); + add_buffer("p75", 2304, params_path, &mut function_context); + add_buffer("p76", 221184, params_path, &mut function_context); + add_buffer("p77", 384, params_path, &mut function_context); + add_buffer("p78", 221184, params_path, &mut function_context); + add_buffer("p79", 2304, params_path, &mut function_context); + add_buffer("p80", 20736, params_path, &mut function_context); + add_buffer("p81", 2304, params_path, &mut function_context); + add_buffer("p82", 368640, params_path, &mut function_context); + add_buffer("p83", 640, params_path, &mut function_context); + add_buffer("p84", 614400, params_path, &mut function_context); + add_buffer("p85", 3840, params_path, &mut function_context); + add_buffer("p86", 34560, params_path, &mut function_context); + add_buffer("p87", 3840, params_path, &mut function_context); + add_buffer("p88", 614400, params_path, &mut function_context); + add_buffer("p89", 640, params_path, &mut function_context); + add_buffer("p90", 614400, params_path, &mut function_context); + add_buffer("p91", 3840, params_path, &mut function_context); + add_buffer("p92", 34560, params_path, &mut function_context); + add_buffer("p93", 3840, params_path, &mut function_context); + add_buffer("p94", 614400, params_path, &mut function_context); + add_buffer("p95", 640, params_path, &mut function_context); + add_buffer("p96", 614400, params_path, &mut function_context); + add_buffer("p97", 3840, params_path, &mut function_context); + add_buffer("p98", 34560, params_path, &mut function_context); + add_buffer("p99", 3840, params_path, &mut function_context); + add_buffer("p100", 1228800, params_path, &mut function_context); + add_buffer("p101", 1280, params_path, &mut function_context); + add_buffer("p102", 1638400, params_path, &mut function_context); + add_buffer("p103", 5120, params_path, &mut function_context); + add_buffer("p104", 5120000, params_path, &mut function_context); + add_buffer("p105", 4000, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 4000; diff --git a/machine_interface/tests/data/cuda/test_gpu_mobilenetv2.json b/machine_interface/tests/data/cuda/test_gpu_mobilenetv2.json new file mode 100644 index 00000000..dfe5d96b --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_mobilenetv2.json @@ -0,0 +1,540 @@ +{ + "modules": [{"module_name": "mobilenetv2.cubin", "path": "cuda/mobilenetv2.cubin"}], + "kernels": [ + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_3_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_4_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_5_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_6_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_1_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_2_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_3_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_4_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_10_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_11_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_12_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_13_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_14_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_15_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_16_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_17_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_1_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_2_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_3_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_4_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_5_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_6_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_7_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_8_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_9_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_clip_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "mobilenetv2.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 1806336}, "b6": {"Absolute": 4816896}, "b19": {"Absolute": 1806336}, "b28": {"Absolute": 100352}, "b35": {"Absolute": 100352}, "b110": {"Absolute": 5120}, "b114": {"Absolute": 8192}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_1_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 112}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p4"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 8}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p6"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 96}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 3}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_4_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p12"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 6}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_5_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 28}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p16"}, {"Ptr": "p17"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_4_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 6}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_6_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 144}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_7_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p26"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 96}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_1_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p28"}, {"Ptr": "p29"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_7_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p32"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 96}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_1_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p34"}, {"Ptr": "p35"}, {"Ptr": "b35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_7_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p38"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p40"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_10_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_11_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p44"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 384}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_2_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_10_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_11_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 384}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_2_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_10_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_11_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 384}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_2_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p58"}, {"Ptr": "p59"}, {"Ptr": "b35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_10_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p60"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 2}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_11_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 384}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_4_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p64"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_12_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p66"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_13_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 144}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_3_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p70"}, {"Ptr": "p71"}, {"Ptr": "b35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_12_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p72"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_13_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 144}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_3_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p76"}, {"Ptr": "p77"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 6}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_12_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p78"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_14_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 24}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 12}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_5_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p82"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 20}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_15_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p84"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_16_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 48}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 5}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_4_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_15_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p90"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_16_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 48}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 5}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_4_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}, {"Ptr": "b35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 4}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_15_kernel", [{"Ptr": "b19"}, {"Ptr": "b28"}, {"Ptr": "p96"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_16_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 48}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 5}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_6_kernel", [{"Ptr": "b35"}, {"Ptr": "b3"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 5}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_clip_17_kernel", [{"Ptr": "b19"}, {"Ptr": "b35"}, {"Ptr": "p102"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 20}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b114"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 40}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b110"}, {"Ptr": "b114"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b110"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/cuda/mobilenetv2.cubin b/machine_interface/tests/libs/cuda/mobilenetv2.cubin new file mode 100644 index 0000000000000000000000000000000000000000..b08aad58c8e49cc579cfdd22d36001ad6cc4ee1c GIT binary patch literal 265824 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 J-jx6M{{azSGRgn| delta 10703 zcmZ{p3s_XuzQFgMjld|#%>`}H`TtT^{{Pu*_kbpQXg_J+~DTi?g5wSNEC zT5JFJUTd?PY9pFzBlf=wYl{0qMDP&kp8X<(7ngzRJOu6Oec{}qGH6IY1O@IXa3e1m zR^`19ZBtf5&Xh_>nz{&%O#3r5F8CdMA7+I$)2krtfn=}^j)M0lg~N^6dizoI=@LA+ z0vhfg1pf*fi1lqqoR|sSiQ#a4rl_l92gB{ecBn4h0zW4X#X1sJ&l}F`?s>`3u`(K( zR;~aw>kPE#heJdDCaAWb0$Y4EY%N#>PmLIgZ3lc-FahRH!WcsaLRcErKlyBfAC#dj zC=%)i^@F!(j^XvOS-BW!JTwfdfbO7yz8gVFGT3ItKu*zW_@-zAEKFJh-<5^K<+4q1 ze(WjOUzHC{LxX%bQa+X;cSJv!IMRjn`;c6k3-hyYLeuy%$Q)np3wt07!%ZlI+zI74 z&tz1{gUg=l@a`xVZ+8z)$JztkRk6_S2q#Cra>o=I8mtkxKy!J09v7=T_YpX1{U_v( z8ORrv>ZCDuKphnc8G~Iub(Ac_?dWh{TeMRKHDsW#Bm^6`6YbEE5$ZNEi&DKX z9O@r;c|GwE-Y3oLnGYQUvb>%cXqf5pWsJm$-(G74b$JThSR0RZ5USnBS;vauoE5AX z$?N)=et13M40Mmq19j>x-+SQ?V2DS;eC?4pWu#M~eHbRw=&9b+p}hO_02kIbp*tlH z8fW|oK7FhVA|lgyf7Q6J_5Aa7&%Pj2;`z=k3X=7#^R3E@viOcn`wU4=d_Z3P9FR+M zA@Pynynoa>80*B}$gKewHw(%KI&cgwT%!TduV|pJx-=FqR#so%^DCop0QtCT`IHDe zt^PY8jb>pw9>>*egzmxl@YLK=lZ^T+WfI&7+5~(1OvCKThJs0{lvKW)qBxnd$#=O7 zy=$oiH&Wh*h+&m@BRv<8QIlX_{BZQ%k27_|SorJYxzJq_?3|YQ8)LW5jJLGHN2;_UV{q^P$`6(z6TeM{%xM zynkcVB=}@$CM6rRMQ?(YF=Bq1GtwyUpd@4yB!mifdvcndg3yq$1s=_u4xcPrWSWUF zA``dz+7=J{?JU%@Ps>JM{Y(!fTb@sy>abAy0jA%H#79gr@FGwKmfW|PGS1gHej~L_%)L!d{=i)*%G?dC4TB^IGOtohKtA^|T`JPvIH%vc)2b@oRm!YK5mhQ!19 z@&s+^tx&xoK`eQy6>R9cZLuBxy)prB|spovNfk#5c=Gf|@eq=S*ARQh?e5`?&az4+% zuW`P`z$b;1pZg7b1LyOr4TA5uV5@M@ZdonVlz=e*Rw zzvWyt@X9FiGts~=a{fC5KNwB=lL8h%kAmfbDDUjKo_pE2;S zIL|ZiCz42ixq*K_i1-u(FHV-EYDHRM5Zpq6B5gPDB~Ic~4g4(UPa62)H+|05Sn4-kmvxMAdIm4Tn< zyw_HVfmd<9+Q9ErbHQ$dpu$Ct9x`wr=W7f+eK_gwF>oK}4;%PDI4{3v{ZXwd zjU4SY7+6LS|2G5A=e)weU*f#Zz*Ex6&m%hTz5WZipi&p~)E{!bucxm!=8hyskLul? zx{>p>J$=0qIg0e_^{!T9{6kzY;~s$|eZu)V18>bBM-2wP6L)Dvdd$Fo;JnJf-^6`e zsh0K|1WmXRD^h`h_a8%iy@9`+Mf`CCPr~h0kv16k72GZrX(s3JOU>eHHB{()h1;LQ zR@iG0CYq7BojGhpJzNbI&9$7*>fus|Xnw%?>>jS-laflm@#JTY=-{s^^JcY_!v)2? z0(_=ZspP!(^q>X_-pG0HDM7_8j>N6^Y}k;!HQmi79evH zISP2TM+lYuoUiQBm+)Lb+z&fml?#H-Te}VoA>+KM|(*swr z-hp*igAIZXl)y=>*X=2RsQosWisRe9-^SXHDScq~!Flk*emjf>4=g@lgTlQfaPxp2 zKEy#!_1fShl)y!-5AMf7fDNvCaS)&xx7N*vJ_jRM#tTX)BvI|LE|Q`j{kTV(HON%>8|o|oE9=#H8aWlxc?xScJkEM! zZRIi{-Gc3Gs6naje{+Cz6SgP91(Z_CQuK`hQc9p~=t3#wCrR~GqqvlgxnMsO8;{Ri zF4Ys4q?Fw`;6|xUlj`>YN$Fn6fr>*JIQM4Mp*x=Z>-Qq*&<&dh?;nbl@x}X4M*Kic zM}HuY4m~sm!sx@jvs;dY3Q6f1l;|rx+$BSB%P6>ZGDYqK_QoebJ>!x?Kt8%gwnD|x zDUf_DMGk|`V+)}ELZjpzB+%girJdpHxHz_H8#{r8P?00-=QKNj0FV&HL$7##z z373w`hok(5m&pIyzr|6gMEbociaNmWeOr#0>~}7ZD?Y`olQ!tb^8&XOwv}?h17Xj?9t`9 zg7*G4ie@=;Hly(^=59vga*Zx$r9}V8YKY#_XdP=t>WmfV0fWoM&kL7xSQi;T&gA20 z{JKUrGUstL-qDXM8H}@z>c*w0CIfSmah*oDvSy_57sAbrL)pj2l~nn2RzpVHj|o>7 znezlj{JYqL4H2`OgxWz?N@}TM<1(mS*VJ(Gs3xyw@(GMFr&$ zDaovcSlmfnv-A{dwy;j3sz%FLGtpO=`xMeU8pUfzl(8D3Q%?yGbzoUJ@#8oysjAA*9xm(c1#WTW19qS?&n^_If+*Uzxq0S&Z#5$3Z<1_6xdEGa2PF_ZbSH(K6PB)H!#wxpDGYVO++Xt!P}yin{%x&F zk}Q|A<`>Y}ZHpwyXqP8!dww(9L=#tw)Vx9FYHb&U8s2ngG3GhuK8rD3KAn~#bPMWI&9n#uS8>*U6l1TAM>Wc)6k+sup)`GuOwoafN^TPB~w$Z@af#-&J|zv8Qs znQ`s!b>n7Kiyw)HRWmib-Ou55ewfve@7gzXBj=0gdj)RZrbg{OLqIjU8_0NLhoCrD zqIa15B2wv!?y`$$I&&kHRTh69!xpg`uJcxpzwWb(^sQShlAwE1NmTU4fbm>Zu7HM|(4HtIfewfrt!&FRDVc}(_UjE?^jw49X^ zoylr^ipQqEpV2OiXS+n!?NeOU>UTm{(*9*YQalB^R1NDDednM>4Ay~Gt3Qi|{=Q50 zEAUvUYI41*>|<(Qjg;JC2@w@Jc+$iHeHsx1pd)cW2^IGG|0>8H-);>P_*8qu+&uw| zuR1jc+BnETnI!d917c8tPf#l4 z0FUxfDs=)%DXV!!iF4;@+72NiZG73zRs%GtNgq-~xVzU&EnovKDZ{Gi`-qub@@W38 z!Xf#`7mgfNbbEg3vxuQ`i1cL+beU zV+cndLqxcHrt^$upCnw9{W_E7SkG!GTC=8|*{h9jV!5j5_WaVv4-u^g@rL@ouvaxV z6b;|%Le;y~r1x0oB_(!+^ns>_k1r~uj<1D=Yekk`C3}3uOj5B9EUB!< zkCXeSrj3KALfZI>I#H!gK%ws(rqLX@(^E+h71?h#xs#?a`Bf#hS{fl#6C?@FKFY%^`}A(R7qNZe|ME}tdqto zUDx7G7E)5LK@0URW&Fo~s%bp@uPs@i0Y3PsP;Z;beCf-C$#|cX)JV+%KKQ6m?->&Z z^hv_R0p_V@k53vZ)Z1>dVEL@`_ez{AU1;n7nWf$iNt&)=9at7J`46c5u%;bwF?O1a zt&zD=yLy499k3L;Otk6Cf!R#dCBj}6FJ^ouwI-=bUkuFbS4bO-!`+Sl~;8N_7q+$2kC$Y}gmAK&tjoN!9Ddk@6RtwwKsiZ|0Vz40m3oQMZd|4U9 zn%+>tVrHY@UU_|AmiLB|7E^2@yB5Z-TtUC{Ol03NH}`v4Nw&m9ux;(=V}Xg@QaiiS zfj&GYvU9AH`{+=@qDxHVc+zjjv6s-;OHJg{VwmMk^u5SLwug1LE6GmUm$kA4>w9P4 ze;~8a?3bCyZYA@TiN;fq!EQ6_>_G3@1B(JYX`(eTg>A$2i@{@z!NdBY%tC96ClrJ1 zJd-~<{9 diff --git a/machine_interface/tests/libs/cuda/resnet152.cubin b/machine_interface/tests/libs/cuda/resnet152.cubin index a5874c66f52134bee41b8335306530242e05ea75..7725f91e18e6268f51b2247d58d887cf32e7a65b 100644 GIT binary patch delta 10640 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 MWKZ#7Z^{4sKM$N%X#fBK delta 10542 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 diff --git a/machine_interface/tests/libs/cuda/resnet18.cubin b/machine_interface/tests/libs/cuda/resnet18.cubin index 4a0a316b30da876646641fa1dcedfe5283ec631d..98d08386006cbb309543a82b7f2db85286a2d7a4 100644 GIT binary patch delta 10259 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 delta 10748 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 diff --git a/machine_interface/tests/libs/cuda/resnet34.cubin b/machine_interface/tests/libs/cuda/resnet34.cubin index e207cfe89fab349f55d979c922a5af147a545f37..90617312354eadc25b771a4d0d6c7647ac8139c7 100644 GIT binary patch delta 10848 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 serve_request(true, req, dispatcher).await, "/cold/double_matmul" - | "/cold/lenet5" | "/cold/resnet18" - | "/cold/resnet18onnx" - | "/cold/resnet18batch2" - | "/cold/resnet18batch4" - | "/cold/resnet18batch8" - | "/cold/resnet18batch16" - | "/cold/resnet18batch32" - | "/cold/resnet18batch64" - | "/cold/resnet34" - | "/cold/resnet34batch2" - | "/cold/resnet34batch4" - | "/cold/resnet34batch8" - | "/cold/resnet34batch16" - | "/cold/resnet50" - | "/cold/resnet101" - | "/cold/resnet152" - | "/cold/vit_b_16" - | "/cold/llama_kv" => serve_request(true, req, dispatcher).await, + | "/cold/test" + | "/cold/model_inference"=> serve_request(true, req, dispatcher).await, "/hot/matmul" | "/hot/matmulstore" | "/hot/compute" @@ -425,25 +410,9 @@ async fn service( | "/hot/compression_app" | "/hot/python_app" => serve_request(false, req, dispatcher).await, "/hot/double_matmul" - | "/hot/lenet5" | "/hot/resnet18" - | "/hot/resnet18onnx" - | "/hot/resnet18batch2" - | "/hot/resnet18batch4" - | "/hot/resnet18batch8" - | "/hot/resnet18batch16" - | "/hot/resnet18batch32" - | "/hot/resnet18batch64" - | "/hot/resnet34" - | "/hot/resnet34batch2" - | "/hot/resnet34batch4" - | "/hot/resnet34batch8" - | "/hot/resnet34batch16" - | "/hot/resnet50" - | "/hot/resnet101" - | "/hot/resnet152" - | "/hot/vit_b_16" - | "/hot/llama_kv" => serve_request(false, req, dispatcher).await, + | "/hot/test" + | "/hot/model_inference" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From 5eb27950bdb11e509a2ff2ee81069049e85f4cef Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 9 Jul 2025 10:43:20 +0200 Subject: [PATCH 162/176] partial update: all request data is contained in the GpuContext; SystemContext not used. Refactoring needed --- machine_interface/src/function_driver.rs | 1 + .../src/function_driver/compute_driver/gpu.rs | 97 +++++++++++---- .../compute_driver/gpu/buffer_pool.rs | 1 + .../compute_driver/gpu/config_parsing.rs | 36 +++--- .../compute_driver/gpu/cuda.rs | 1 + .../gpu/gpu_tests/cuda_tests/load_models.rs | 28 ++--- .../compute_driver/gpu/gpu_utils.rs | 111 ++++++++++++++++-- machine_interface/src/memory_domain.rs | 50 ++++++-- machine_interface/src/memory_domain/gpu.rs | 36 +++++- .../data/cuda/test_gpu_double_matmul-new.json | 33 ++++++ 10 files changed, 318 insertions(+), 76 deletions(-) create mode 100644 machine_interface/tests/data/cuda/test_gpu_double_matmul-new.json diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 14b09840..7c523c2a 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -106,6 +106,7 @@ impl Function { } // no need to occupy space or anything like that as long as context is only inputs/outputs FunctionConfig::GpuConfig(cfg) => { + // TODO : change here. let mut ctxt = domain.acquire_context(ctx_size)?; // Make sure sysdata struct isn't overwritten, 0 = system_data_offset ctxt.occupy_space( diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index bc15b3f0..d322a2e7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -25,6 +25,8 @@ use std::{ thread::{self, spawn}, }; +use crate::memory_domain::gpu::GpuContext; + use self::{ buffer_pool::BufferPool, config_parsing::{Action, Argument, RuntimeGpuConfig}, @@ -142,14 +144,50 @@ pub fn gpu_run( gpu_api::set_device(gpu_id)?; - let base = match &context.context { - ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), - #[cfg(feature = "gpu_process")] - ContextType::GpuProcess(ref gpu_process_context) => gpu_process_context.as_ptr(), - _ => return Err(DandelionError::ConfigMissmatch), + let function_context = match context.context { + ContextType::Gpu(ref gpu_context) => &gpu_context.function_context, + _ => return Err(DandelionError::ContextMissmatch), }; + + // Load modules and kernels + let mut loaded_modules_map: HashMap = HashMap::new(); + let mut loaded_modules: Vec = Vec::new(); + let mut loaded_kernels: HashMap = HashMap::new(); + for kernel in config.kernels.iter() { + let module_name = kernel["module_name"].clone(); + let kernel_name = &kernel["kernel_name"]; + + if !loaded_modules_map.contains_key(&module_name) { + let module = context.content.iter().find(|&elem| match elem { + Some(set) => set.ident == module_name, + _ => false, + }) + .ok_or(DandelionError::UndeclaredIdentifier(module_name.to_owned()))? + .as_ref() + .unwrap(); + + assert_eq!(module.buffers.len(), 1); + let size = module.buffers[0].data.size; + let offset = module.buffers[0].data.offset; + + let data_pointer = context.get_chunk_ref(offset, size).unwrap().as_ptr() as *const c_void; + let loaded_module = gpu_api::module_load_data(data_pointer)?; + loaded_modules_map.insert(module_name.clone(), loaded_modules.len()); + loaded_modules.push(loaded_module); + } + + let module = &loaded_modules[loaded_modules_map[&module_name]]; + let loaded_kernel = gpu_api::module_get_function(&module, kernel_name)?; + let _ = loaded_kernels.insert(kernel_name.to_string(), loaded_kernel).ok_or(DandelionError::UnknownSymbol); + } - let config = config.load(base)?; + // let config = config.load(base)?; + let config = RuntimeGpuConfig { + system_data_struct_offset: 0, + modules: Arc::new(loaded_modules), + kernels: Arc::new(loaded_kernels), + blueprint: config.blueprint, + }; let mut buffer_pool = buffer_pool.lock().unwrap(); @@ -159,9 +197,13 @@ pub fn gpu_run( for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; let idx = buffer_pool.alloc_buffer(size)?; - unsafe { - copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; - } + copy_data_to_device(name, &context, &function_context, &buffer_pool.get(idx)?)?; + buffers.insert(name.clone(), (idx, size)); + } + for name in &config.blueprint.weights { + let size = get_data_length(name, &context)?; + let idx = buffer_pool.alloc_buffer(size)?; + copy_data_to_device(name, &context, &function_context, &buffer_pool.get(idx)?)?; buffers.insert(name.clone(), (idx, size)); } for (name, sizing) in &config.blueprint.buffers { @@ -181,13 +223,20 @@ pub fn gpu_run( )?; recorder.record(RecordPoint::GPUInferenceEnd); + /*let base = match &context.context { + ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), + #[cfg(feature = "gpu_process")] + ContextType::GpuProcess(ref gpu_process_context) => gpu_process_context.as_ptr(), + _ => return Err(DandelionError::ConfigMissmatch), + };*/ + recorder.record(RecordPoint::GPUOutputStart); // Copy results back into host memory from device memory - unsafe { - write_gpu_outputs::( + unsafe { + write_gpu_outputs( &mut context, - config.system_data_struct_offset, - base, + // config.system_data_struct_offset, + // base, &output_sets, &buffers, buffer_pool.borrow(), @@ -212,7 +261,7 @@ pub struct GpuLoop { #[allow(non_upper_case_globals)] const Gi: usize = 1 << 30; -// TODO: add adaptive amount of other GPUs are used: +// TODO: add adaptive amount if other GPUs are used: // MI210 - 64GiB => 60 * Gi // RTX 3090 - 24GiB => 23 * Gi const VRAM_SIZE: usize = 23 * Gi; @@ -247,8 +296,8 @@ impl EngineLoop for GpuLoop { let FunctionConfig::GpuConfig(config) = config else { return Err(DandelionError::ConfigMissmatch); }; - let sysdata_offset = config.system_data_struct_offset; - setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; + // let sysdata_offset = config.system_data_struct_offset; + // setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; let mut subrecorder = recorder.get_sub_recorder(); @@ -271,7 +320,7 @@ impl EngineLoop for GpuLoop { .map_err(|_| DandelionError::EngineError) .and_then(|inner| inner)?; - read_output_structs::(&mut context, sysdata_offset)?; + // read_output_structs::(&mut context, sysdata_offset)?; Ok(context) } @@ -291,12 +340,12 @@ fn common_parse( let path = std::env::var("DANDELION_LIBRARY_PATH") .unwrap_or(format!("{}/tests/libs/", env!("CARGO_MANIFEST_DIR"))); - let mut code_objects = Vec::new(); - let mut sizes = Vec::new(); + // let mut code_objects = Vec::new(); + // let mut sizes = Vec::new(); let mut cumulative_size: usize = 0; let mut modules_offsets = HashMap::new(); - for module_info in modules_info.iter() { + /*for module_info in modules_info.iter() { let module_name = module_info.get("module_name").ok_or(DandelionError::UnknownSymbol)?; let module_path = module_info.get("path").ok_or(DandelionError::UnknownSymbol)?; let full_path = format!("{path}{module_path}"); @@ -309,11 +358,11 @@ fn common_parse( modules_offsets.insert(module_name.clone(), cumulative_size); cumulative_size += size; - } + }*/ - let mut context = Box::new(static_domain.acquire_context(cumulative_size)?); + let mut context = Box::new(static_domain.acquire_context(0)?); - let mut offset: usize = 0; + /*let mut offset: usize = 0; for i in 0..code_objects.len() { // Not including SYSDATA_OFFSET here because SystemData is not in static context context.write(offset, &code_objects[i])?; @@ -328,7 +377,7 @@ fn common_parse( })]; offset += sizes[i]; - } + }*/ gpu_config.modules_offsets = Arc::new(modules_offsets); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index f01923b0..b20b025f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -17,6 +17,7 @@ impl Buffer { } } } +#[derive(Debug)] pub struct BufferPool { // (ptr, ptr in use) allocation: DeviceAllocation, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index c60fb9e3..dce65ef3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -9,6 +9,20 @@ use super::gpu_api::{self, Function, Module}; pub const SYSDATA_OFFSET: usize = 0usize; +#[derive(Deserialize, Serialize, Debug)] +pub enum Sizing { + Sizeof(String), + Absolute(u64), + FromInput { bufname: String, idx: usize }, +} + +#[derive(Deserialize, Serialize, Debug)] +pub enum Argument { + Ptr(String), + Sizeof(String), + Constant(i64), +} + #[derive(Deserialize, Serialize, Debug)] pub struct LaunchConfig { pub grid_dim_x: Sizing, @@ -20,32 +34,18 @@ pub struct LaunchConfig { pub shared_mem_bytes: Sizing, } -#[derive(Deserialize, Serialize, Debug)] -pub enum Argument { - Ptr(String), - Sizeof(String), - Constant(i64), -} - #[derive(Deserialize, Serialize, Debug)] pub enum Action { ExecKernel(String, Vec, Box), Repeat(Sizing, Vec), } -#[derive(Deserialize, Serialize, Debug)] -pub enum Sizing { - Sizeof(String), - Absolute(u64), - FromInput { bufname: String, idx: usize }, -} - #[derive(Deserialize, Serialize, Debug)] pub struct ExecutionBlueprint { pub inputs: Vec, - /// buffer names to sizes + pub weights: Vec, pub buffers: HashMap, - pub outputs: Vec, // might not be required + pub outputs: Vec, pub control_flow: Vec, } @@ -76,7 +76,7 @@ pub struct RuntimeGpuConfig { pub blueprint: Arc, } -impl GpuConfig { +/*impl GpuConfig { pub fn load(self, base: *const u8) -> DandelionResult { let base = base.wrapping_add(self.code_object_offset); @@ -114,7 +114,7 @@ impl GpuConfig { blueprint: self.blueprint, }) } -} +}*/ pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, Vec>)> { let file = File::open(path).map_err(|_| DandelionError::FileError)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs index 91e0c86d..a8e49ac1 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs @@ -29,6 +29,7 @@ pub type StreamT = *const c_void; pub const DEFAULT_STREAM: StreamT = null(); // has to be pub to allow address-getting when preparing args +#[derive(Debug)] pub struct DeviceAllocation { pub ptr: *const c_void, pub size: usize, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 38952b8a..e9a39568 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -1997,20 +1997,6 @@ pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } -pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; - - add_buffer("input", 16, params_path, &mut function_context); - add_buffer("p0", 80, params_path, &mut function_context); - add_buffer("p1", 60, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 12; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; @@ -2934,3 +2920,17 @@ pub fn load_mobilenetv2(mut function_context: Context) -> (usize, String, Vec (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; + + add_buffer("input", 16, params_path, &mut function_context); + add_buffer("p0", 80, params_path, &mut function_context); + add_buffer("p1", 60, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 12; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 5e4c59cc..b831acde 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -37,6 +37,8 @@ use std::{ thread::spawn, }; +use crate::memory_domain::system_domain::SystemContext; + pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context .content @@ -59,10 +61,10 @@ pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult /// # Safety /// Requires *base* to point to the stat of *context* -pub unsafe fn copy_data_to_device( +pub fn copy_data_to_device( ident: &str, context: &Context, - base: *mut u8, + function_context: &SystemContext, dev_ptr: &DevicePointer, ) -> DandelionResult<()> { let dataset = context @@ -78,11 +80,20 @@ pub unsafe fn copy_data_to_device( let mut total = 0isize; for item in &dataset.buffers { - let length = item.data.size; + let size = item.data.size; let offset = item.data.offset; - let src = base.byte_offset((offset) as isize) as *const c_void; - gpu_api::memcpy_h_to_d(dev_ptr, total, src, length)?; - total += length as isize; + let src = context.get_chunk_ref(offset, size).unwrap().as_ptr() as *const c_void; + + /*use std::slice; + let x = function_context.get_chunk_ref(offset, size).unwrap(); + let floats: Vec = x + .chunks(4) + .map(|chunk| f32::from_le_bytes(chunk.try_into().unwrap())) + .collect();*/ + println!("{:?} - {:?}", ident, &context.get_chunk_ref(offset, size).unwrap()[0..5]); + + gpu_api::memcpy_h_to_d(dev_ptr, total, src, size)?; + total += size as isize; } Ok(()) } @@ -90,14 +101,92 @@ pub unsafe fn copy_data_to_device( #[cfg(feature = "gpu")] /// # Safety /// Requires *base* to point to the stat of *context* -pub unsafe fn write_gpu_outputs( - context: &mut Context, - system_data_offset: usize, - base: *mut u8, +pub unsafe fn write_gpu_outputs( + output_context: &mut Context, + // base: *mut u8, output_set_names: &[String], device_buffers: &HashMap, buffer_pool: &BufferPool, ) -> DandelionResult<()> { + use crate::DataItem; + use crate::memory_domain::MemoryResource; + use crate::memory_domain::MemoryDomain; + use crate::memory_domain::gpu::GpuMemoryDomain; + + // println!("{:?}", output_context.content); + + /*let mut context_size = 0; + let mut output_ptrs = vec![]; + for output_name in output_set_names { + let (dev_ptr_idx, size) = device_buffers + .get(output_name) + .ok_or(DandelionError::ConfigMissmatch)?; + + context_size += size + 8; + output_ptrs.push(dev_ptr_idx); + } + + let dom_init = MemoryResource::Shared { + id: 13, + size: 1 << 8, + }; + let mem_domain = GpuMemoryDomain::init(dom_init)?; + let mut output_context = mem_domain.acquire_context(context_size)?;*/ + let base = match &output_context.context { + ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), + #[cfg(feature = "gpu_process")] + ContextType::GpuProcess(ref gpu_process_context) => gpu_process_context.as_ptr(), + _ => return Err(DandelionError::ConfigMissmatch), + }; + + let mut output_sets = vec![]; + let mut buffers = vec![]; + for output_name in output_set_names { + let (dev_ptr_idx, size) = device_buffers + .get(output_name) + .ok_or(DandelionError::ConfigMissmatch)?; + let buf_offset = output_context.get_free_space(*size, 8)?; + + let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; + gpu_api::memcpy_d_to_h(dst, &dev_ptr, *size)?; + + /*use std::slice; + let x = unsafe { slice::from_raw_parts(base.byte_offset(buf_offset as isize), *size) } ; + let floats: Vec = x + .chunks(4) + .map(|chunk| f32::from_le_bytes(chunk.try_into().unwrap())) + .collect(); + println!("{:#?}", &floats);*/ + use std::slice; + let x = unsafe { slice::from_raw_parts(base.byte_offset(buf_offset as isize), *size) } ; + println!("{:?} - {:?}", output_name, &x[0..10]); + + buffers.push(DataItem { + ident: output_name.clone(), + data: Position { + offset: buf_offset, + size: *size, + }, + key: 0u32, + }); + output_context.occupy_space(buf_offset, *size)?; + } + + output_sets.push(Some(DataSet { + ident: "outputs".to_string(), + buffers: buffers, + })); + output_context.content = output_sets; + + // println!("{:?}", output_context); + println!("{:?}", output_context.content); + + // *context = output_context; + + Ok(()) + + /* // read the system buffer use crate::{ @@ -160,7 +249,7 @@ pub unsafe fn write_gpu_outputs( system_struct.output_bufs = output_buffers_offset; context.write(system_data_offset, core::slice::from_ref(&system_struct))?; - Ok(()) + Ok(())*/ } pub fn get_size( diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index f551cc00..8bf80c7f 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -371,13 +371,15 @@ pub fn transfer_memory( size, ), #[cfg(feature = "gpu")] - (ContextType::Gpu(destination_ctxt), ContextType::Gpu(source_ctxt)) => gpu::gpu_transfer( - destination_ctxt, - source_ctxt, - destination_offset, - source_offset, - size, - ), + (ContextType::Gpu(destination_ctxt), ContextType::Gpu(source_ctxt)) => { + gpu::gpu_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + ) + }, #[cfg(all(feature = "gpu", feature = "bytes_context"))] (ContextType::Gpu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { gpu::bytest_to_gpu_transfer( @@ -388,6 +390,40 @@ pub fn transfer_memory( size, ) } + /*#[cfg(all(feature = "gpu", feature = "bytes_context"))] + (ContextType::Gpu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { + /*gpu::bytest_to_gpu_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + )*/ + system_domain::into_system_context_transfer( + &mut destination_ctxt.function_context, + source, + destination_offset, + source_offset, + size, + ) + } + #[cfg(feature = "gpu")] + (ContextType::Gpu(destination_ctxt), _) => { + /*gpu::gpu_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + )*/ + system_domain::into_system_context_transfer( + &mut destination_ctxt.function_context, + source, + destination_offset, + source_offset, + size, + ) + },*/ // default implementation using reads and writes (destination, source) => { let mut read_buffer: Vec = vec![0; size]; diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index 348de295..c6a56381 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -6,22 +6,31 @@ use dandelion_commons::{DandelionError, DandelionResult}; use log::error; use nix::sys::mman::ProtFlags; +use crate::memory_domain::system_domain::SystemContext; +use std::collections::BTreeMap; + #[derive(Debug)] pub struct GpuContext { pub storage: MmapMem, + pub function_context: SystemContext, } impl ContextTrait for GpuContext { fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { + println!("HERE - write, {offset}"); self.storage.write(offset, data) } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { + println!("HERE - read, {offset}"); self.storage.read(offset, read_buffer) + // self.function_context.read(offset, read_buffer) } fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + println!("HERE - ref, {offset} - {length}"); self.storage.get_chunk_ref(offset, length) + // self.function_context.get_chunk_ref(offset, length) } } @@ -160,6 +169,10 @@ pub struct GpuMemoryDomain { memory_pool: MmapMemPool, } +/*use crate::memory_domain::system_domain::SystemContext; +use crate::memory_domain::system_domain::SystemMemoryDomain; +use std::collections::BTreeMap;*/ + impl MemoryDomain for GpuMemoryDomain { fn init(config: MemoryResource) -> DandelionResult> { let (id, size) = match config { @@ -181,9 +194,28 @@ impl MemoryDomain for GpuMemoryDomain { .memory_pool .get_allocation(size, nix::sys::mman::MmapAdvise::MADV_DONTNEED)?; - let new_context = Box::new(GpuContext { storage: mem_space }); - Ok(Context::new(ContextType::Gpu(new_context), actual_size)) + let function_context = SystemContext { + local_offset_to_data_position: BTreeMap::new(), + size, // TODO : change this size + }; + + let cum_size = actual_size + size; + + let new_context = Box::new(GpuContext { storage: mem_space, function_context }); + Ok(Context::new(ContextType::Gpu(new_context), cum_size)) } + + /*fn init(_config: MemoryResource) -> DandelionResult> { + Ok(Box::new(SystemMemoryDomain {})) + } + + fn acquire_context(&self, size: usize) -> DandelionResult { + let new_context = Box::new(SystemContext { + local_offset_to_data_position: BTreeMap::new(), + size, + }); + Ok(Context::new(ContextType::System(new_context), size)) + }*/ } pub fn gpu_transfer( diff --git a/machine_interface/tests/data/cuda/test_gpu_double_matmul-new.json b/machine_interface/tests/data/cuda/test_gpu_double_matmul-new.json new file mode 100644 index 00000000..891cafe4 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_double_matmul-new.json @@ -0,0 +1,33 @@ +{ + "modules": [{"module_name": "kernels.cubin", "path": "kernels.cubin"}], + "kernels": [ + {"module_name": "kernels.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "kernels.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"} + ], + "blueprint": { + "inputs": ["input"], + "weights": ["p0", "p1"], + "buffers": {"output": {"Absolute": 12}, "b2": {"Absolute": 20}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "input"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 5}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file From f12c88894579ff919fc52d482bbf7b022f938107 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 14 Jul 2025 17:23:20 +0200 Subject: [PATCH 163/176] create SubReadOnly, to store references to model weights + refactoring --- machine_interface/src/function_driver.rs | 1 - .../src/function_driver/compute_driver/gpu.rs | 183 ++++++------------ .../compute_driver/gpu/buffer_pool.rs | 3 +- .../compute_driver/gpu/config_parsing.rs | 56 +----- .../compute_driver/gpu/cuda.rs | 4 - .../compute_driver/gpu/gpu_api.rs | 17 +- .../gpu_tests/cuda_tests/compiled_tests.rs | 24 ++- .../gpu/gpu_tests/cuda_tests/load_models.rs | 119 ++++++++++-- .../gpu/gpu_tests/load_utils.rs | 1 - .../compute_driver/gpu/gpu_utils.rs | 157 ++------------- machine_interface/src/memory_domain.rs | 58 +++--- machine_interface/src/memory_domain/gpu.rs | 70 +++---- 12 files changed, 250 insertions(+), 443 deletions(-) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 7c523c2a..8d51dd61 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -65,7 +65,6 @@ pub struct WasmConfig { pub struct GpuConfig { pub system_data_struct_offset: usize, pub code_object_offset: usize, - pub modules_offsets: Arc>, pub kernels: Arc>>, #[cfg(feature = "gpu")] pub blueprint: Arc, diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index d322a2e7..1eb57d8f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -1,44 +1,40 @@ +use self::{ + buffer_pool::BufferPool, + config_parsing::{Action, Argument, RuntimeGpuConfig, SYSDATA_OFFSET}, + gpu_utils::{ + copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, write_gpu_outputs, + }, +}; use crate::{ function_driver::{ - load_utils::load_u8_from_file, thread_utils::{run_thread, EngineLoop}, ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, - interface::{read_output_structs, setup_input_structs, DandelionSystemData}, + interface::DandelionSystemData, memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}, - DataItem, DataRequirementList, DataSet, Position, + DataRequirementList, }; -use config_parsing::SYSDATA_OFFSET; use core_affinity::CoreId; -use dandelion_commons::{records::{RecordPoint, Recorder}, DandelionError, DandelionResult}; +use dandelion_commons::{ + records::{RecordPoint, Recorder}, + DandelionError, DandelionResult, +}; use libc::c_void; use std::{ borrow::Borrow, collections::HashMap, - mem::size_of, ptr::null, sync::{ mpsc::{self, Receiver, Sender}, Arc, Mutex, }, - time::Instant, thread::{self, spawn}, }; -use crate::memory_domain::gpu::GpuContext; - -use self::{ - buffer_pool::BufferPool, - config_parsing::{Action, Argument, RuntimeGpuConfig}, - gpu_utils::{ - copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, write_gpu_outputs, - }, -}; - pub(crate) mod buffer_pool; pub(crate) mod config_parsing; -pub mod gpu_utils; mod gpu_api; +pub mod gpu_utils; #[cfg(test)] mod gpu_tests; @@ -121,9 +117,9 @@ fn execute( } } } - + #[cfg(feature = "timestamp")] - gpu_api::synchronize(); + let _ = gpu_api::synchronize(); Ok(()) } @@ -144,8 +140,8 @@ pub fn gpu_run( gpu_api::set_device(gpu_id)?; - let function_context = match context.context { - ContextType::Gpu(ref gpu_context) => &gpu_context.function_context, + let read_only_data = match context.context { + ContextType::Gpu(ref gpu_context) => &gpu_context.read_only, _ => return Err(DandelionError::ContextMissmatch), }; @@ -158,19 +154,13 @@ pub fn gpu_run( let kernel_name = &kernel["kernel_name"]; if !loaded_modules_map.contains_key(&module_name) { - let module = context.content.iter().find(|&elem| match elem { - Some(set) => set.ident == module_name, - _ => false, - }) - .ok_or(DandelionError::UndeclaredIdentifier(module_name.to_owned()))? - .as_ref() - .unwrap(); - - assert_eq!(module.buffers.len(), 1); - let size = module.buffers[0].data.size; - let offset = module.buffers[0].data.offset; - - let data_pointer = context.get_chunk_ref(offset, size).unwrap().as_ptr() as *const c_void; + let sub_read_only = read_only_data.get(&module_name).unwrap(); + let data_pointer = sub_read_only + .context + .get_chunk_ref(sub_read_only.position.offset, sub_read_only.position.size) + .unwrap() + .as_ptr() as *const c_void; + let loaded_module = gpu_api::module_load_data(data_pointer)?; loaded_modules_map.insert(module_name.clone(), loaded_modules.len()); loaded_modules.push(loaded_module); @@ -178,10 +168,11 @@ pub fn gpu_run( let module = &loaded_modules[loaded_modules_map[&module_name]]; let loaded_kernel = gpu_api::module_get_function(&module, kernel_name)?; - let _ = loaded_kernels.insert(kernel_name.to_string(), loaded_kernel).ok_or(DandelionError::UnknownSymbol); + let _ = loaded_kernels + .insert(kernel_name.to_string(), loaded_kernel) + .ok_or(DandelionError::UnknownSymbol); } - - // let config = config.load(base)?; + let config = RuntimeGpuConfig { system_data_struct_offset: 0, modules: Arc::new(loaded_modules), @@ -197,13 +188,23 @@ pub fn gpu_run( for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; let idx = buffer_pool.alloc_buffer(size)?; - copy_data_to_device(name, &context, &function_context, &buffer_pool.get(idx)?)?; + copy_data_to_device(name, &context, &buffer_pool.get(idx)?)?; buffers.insert(name.clone(), (idx, size)); } for name in &config.blueprint.weights { - let size = get_data_length(name, &context)?; + let sub_read_only = read_only_data.get(name.as_str()).unwrap(); + let data_pointer = sub_read_only + .context + .get_chunk_ref(sub_read_only.position.offset, sub_read_only.position.size) + .unwrap() + .as_ptr() as *const c_void; + let size = sub_read_only.position.size; let idx = buffer_pool.alloc_buffer(size)?; - copy_data_to_device(name, &context, &function_context, &buffer_pool.get(idx)?)?; + + let dev_ptr = &buffer_pool.get(idx)?; + + gpu_api::memcpy_h_to_d(dev_ptr, 0, data_pointer, size)?; + buffers.insert(name.clone(), (idx, size)); } for (name, sizing) in &config.blueprint.buffers { @@ -223,25 +224,9 @@ pub fn gpu_run( )?; recorder.record(RecordPoint::GPUInferenceEnd); - /*let base = match &context.context { - ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), - #[cfg(feature = "gpu_process")] - ContextType::GpuProcess(ref gpu_process_context) => gpu_process_context.as_ptr(), - _ => return Err(DandelionError::ConfigMissmatch), - };*/ - recorder.record(RecordPoint::GPUOutputStart); // Copy results back into host memory from device memory - unsafe { - write_gpu_outputs( - &mut context, - // config.system_data_struct_offset, - // base, - &output_sets, - &buffers, - buffer_pool.borrow(), - )? - }; + write_gpu_outputs(&mut context, &output_sets, &buffers, buffer_pool.borrow())?; recorder.record(RecordPoint::GPUOutputEnd); // Zero out buffers used by current function @@ -289,17 +274,14 @@ impl EngineLoop for GpuLoop { fn run( &mut self, config: FunctionConfig, - mut context: Context, + context: Context, output_sets: Arc>, - mut recorder: Recorder, + recorder: Recorder, ) -> DandelionResult { let FunctionConfig::GpuConfig(config) = config else { return Err(DandelionError::ConfigMissmatch); }; - // let sysdata_offset = config.system_data_struct_offset; - // setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; - - let mut subrecorder = recorder.get_sub_recorder(); + let subrecorder = recorder.get_sub_recorder(); // Clone for thread let buffer_pool = self.buffers.clone(); @@ -307,21 +289,27 @@ impl EngineLoop for GpuLoop { let cpu_slot = self.cpu_slot; let gpu_id = self.gpu_id; thread::spawn(move || { - let result = gpu_run(cpu_slot, gpu_id, config, buffer_pool, context, output_sets, subrecorder); + let result = gpu_run( + cpu_slot, + gpu_id, + config, + buffer_pool, + context, + output_sets, + subrecorder, + ); sender.send(result).unwrap(); }); // TODO: add proper error handling mechanisms // Use an mpsc to receive results. If a fault occured, the handler could be registered to put an error on the channel, // while the work thread wouldn't return. This means it would have to be shot down - let mut context = self + let context = self .receiver .recv() .map_err(|_| DandelionError::EngineError) .and_then(|inner| inner)?; - // read_output_structs::(&mut context, sysdata_offset)?; - Ok(context) } } @@ -331,63 +319,18 @@ fn common_parse( function_path: String, static_domain: &Box, ) -> DandelionResult { - // Deserialise user provided config JSON, extract module suffix - let (mut gpu_config, modules_info) = config_parsing::parse_config(&function_path)?; - - gpu_config.code_object_offset = - SYSDATA_OFFSET + std::mem::size_of::>(); - - let path = std::env::var("DANDELION_LIBRARY_PATH") - .unwrap_or(format!("{}/tests/libs/", env!("CARGO_MANIFEST_DIR"))); - - // let mut code_objects = Vec::new(); - // let mut sizes = Vec::new(); - let mut cumulative_size: usize = 0; - let mut modules_offsets = HashMap::new(); - - /*for module_info in modules_info.iter() { - let module_name = module_info.get("module_name").ok_or(DandelionError::UnknownSymbol)?; - let module_path = module_info.get("path").ok_or(DandelionError::UnknownSymbol)?; - let full_path = format!("{path}{module_path}"); - - let code_object = load_u8_from_file(full_path)?; - let size = code_object.len() * size_of::(); - - code_objects.push(code_object); - sizes.push(size); - modules_offsets.insert(module_name.clone(), cumulative_size); - - cumulative_size += size; - }*/ - - let mut context = Box::new(static_domain.acquire_context(0)?); - - /*let mut offset: usize = 0; - for i in 0..code_objects.len() { - // Not including SYSDATA_OFFSET here because SystemData is not in static context - context.write(offset, &code_objects[i])?; - // Location of code object - context.content = vec![Some(DataSet { - ident: String::from("static"), - buffers: vec![DataItem { - ident: String::from(""), - data: Position { offset: offset, size: sizes[i] }, - key: 0, - }], - })]; - - offset += sizes[i]; - }*/ - - gpu_config.modules_offsets = Arc::new(modules_offsets); - - let config = FunctionConfig::GpuConfig(gpu_config); - let requirements = DataRequirementList { static_requirements: vec![], input_requirements: vec![], }; + let context = Box::new(static_domain.acquire_context(0)?); + + let mut gpu_config = config_parsing::parse_config(&function_path)?; + gpu_config.code_object_offset = + SYSDATA_OFFSET + std::mem::size_of::>(); + let config = FunctionConfig::GpuConfig(gpu_config); + Ok(Function { requirements, context: Arc::from(context), diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index b20b025f..44c013e6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -1,8 +1,7 @@ +use super::gpu_api::{self, DeviceAllocation, DevicePointer}; use dandelion_commons::{DandelionError, DandelionResult}; use log::debug; -use super::gpu_api::{self, DeviceAllocation, DevicePointer}; - #[derive(Debug)] struct Buffer { offset: usize, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index dce65ef3..5b1f1f25 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -1,11 +1,8 @@ -use std::{collections::HashMap, fs::File, io::BufReader, os::raw::c_void, sync::Arc}; - +use super::gpu_api::{Function, Module}; +use crate::function_driver::GpuConfig; use dandelion_commons::{DandelionError, DandelionResult}; use serde::{Deserialize, Serialize}; - -use crate::function_driver::GpuConfig; - -use super::gpu_api::{self, Function, Module}; +use std::{collections::HashMap, fs::File, io::BufReader, sync::Arc}; pub const SYSDATA_OFFSET: usize = 0usize; @@ -61,7 +58,6 @@ impl From for GpuConfig { Self { system_data_struct_offset: SYSDATA_OFFSET, code_object_offset: 0, - modules_offsets: Arc::new(HashMap::new()), kernels: Arc::new(value.kernels), blueprint: Arc::new(value.blueprint), } @@ -76,52 +72,10 @@ pub struct RuntimeGpuConfig { pub blueprint: Arc, } -/*impl GpuConfig { - pub fn load(self, base: *const u8) -> DandelionResult { - let base = base.wrapping_add(self.code_object_offset); - - let mut to_load: HashMap> = HashMap::new(); - for kernel in self.kernels.iter() { - let module_name = kernel.get("module_name").ok_or(DandelionError::UnknownSymbol)?; - let kernel_name = kernel.get("kernel_name").ok_or(DandelionError::UnknownSymbol)?; - - to_load - .entry(module_name.clone()) - .or_insert_with(Vec::new) - .push(kernel_name.clone()); - } - - let mut modules = Vec::new(); - let mut kernels = HashMap::new(); - for (module_name, kernels_names) in &to_load { - let offset = self.modules_offsets.get(module_name).ok_or(DandelionError::UnknownSymbol)?; - let base_module = base.wrapping_add(offset.clone()); - - let module = gpu_api::module_load_data(base_module as *const c_void)?; - - for kernel_name in kernels_names.iter() { - let kernel = gpu_api::module_get_function(&module, kernel_name)?; - let _ = kernels.insert(kernel_name.to_string(), kernel).ok_or(DandelionError::UnknownSymbol); - } - - modules.push(module); - } - - Ok(RuntimeGpuConfig { - system_data_struct_offset: SYSDATA_OFFSET, - modules: Arc::new(modules), - kernels: Arc::new(kernels), - blueprint: self.blueprint, - }) - } -}*/ - -pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, Vec>)> { +pub fn parse_config(path: &str) -> DandelionResult { let file = File::open(path).map_err(|_| DandelionError::FileError)?; let reader = BufReader::new(file); let ir: GpuConfigIR = serde_json::from_reader(reader) .map_err(|e| DandelionError::ParsingJSONError(format!("{e}")))?; - // Copy kind of unnecessary as ir.into() doesn't need the string, but less bug prone than .drain(..).collect() - let modules_info = ir.modules.clone(); - Ok((ir.into(), modules_info)) + Ok(ir.into()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs index a8e49ac1..5aa07807 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs @@ -329,8 +329,6 @@ impl Drop for DeviceAllocation { } } -/// # Safety -/// Requires *src* to point to valid memory pub fn memcpy_h_to_d( dst: &DevicePointer, dev_offset: isize, @@ -346,8 +344,6 @@ pub fn memcpy_h_to_d( Ok(()) } -/// # Safety -/// Requires *dst* to point to valid memory pub fn memcpy_d_to_h( dst: *const c_void, src: &DevicePointer, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs index 73d816c0..ffabec21 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs @@ -6,18 +6,7 @@ compile_error!("Cannot compile with both the cuda and hip features"); pub mod gpu_api; pub use gpu_api::{ - limit_heap_size, - get_device_count, - set_device, - module_load_data, - module_launch_kernel, - module_get_function, - memcpy_h_to_d, - memcpy_d_to_h, - synchronize, - Function, - Module, - DeviceAllocation, - DevicePointer, - DEFAULT_STREAM + get_device_count, limit_heap_size, memcpy_d_to_h, memcpy_h_to_d, module_get_function, + module_launch_kernel, module_load_data, set_device, synchronize, DeviceAllocation, + DevicePointer, Function, Module, DEFAULT_STREAM, }; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs index fee1872a..7450f59c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs @@ -2,7 +2,9 @@ use crate::{ function_driver::compute_driver::gpu::gpu_tests::{ cuda_tests::load_models::*, get_driver, - tests_utils::{compare_result, execute_test, get_result, get_resulti32, get_resulti64, setup_test}, + tests_utils::{ + compare_result, execute_test, get_result, get_resulti32, get_resulti64, setup_test, + }, GPU_LOCK, }, memory_domain::Context, @@ -44,8 +46,9 @@ fn test_model(model_name: &str, asserts: bool) { model_name ); let (function_context, config, queue) = setup_test(&filename); - let load_function = get_function(model_name) - .unwrap_or_else(|| panic!("Model name \"{model_name}\" not recognized. Add it to the methods hash map.")); + let load_function = get_function(model_name).unwrap_or_else(|| { + panic!("Model name \"{model_name}\" not recognized. Add it to the methods hash map.") + }); let (output_size, output_name, expected, function_context) = load_function(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, asserts); @@ -101,10 +104,11 @@ fn full_llama() { env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); - let (mut output_size, mut output_name, expected, function_context) = load_llama(function_context); + let (mut output_size, mut output_name, expected, function_context) = + load_llama(function_context); output_size = 1024; output_name = "token_ids".to_string(); - + let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_resulti64(result_context, output_size, false); @@ -126,10 +130,11 @@ fn hand_kv_llama() { env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); - let (mut output_size, mut output_name, expected, function_context) = load_llama_kv(function_context); + let (mut output_size, mut output_name, expected, function_context) = + load_llama_kv(function_context); output_size = 16777216; // 1024; output_name = "b41".to_string(); // "token_ids".to_string(); - + let result_context = execute_test(function_context, config, queue, &output_name); // let read_buffer = get_resulti64(result_context, output_size, false); @@ -151,10 +156,11 @@ fn full_kv_llama() { env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); - let (mut output_size, mut output_name, expected, function_context) = full_load_llama_kv(function_context); + let (mut output_size, mut output_name, expected, function_context) = + full_load_llama_kv(function_context); output_size = 1024; output_name = "token_ids".to_string(); - + let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_resulti64(result_context, output_size, false); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index e9a39568..7a2b684f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -241,7 +241,12 @@ pub fn load_bert(mut function_context: Context) -> (usize, String, Vec, Con let output_size: usize = 15627264; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -280,7 +285,12 @@ pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Cont let output_size: usize = 512; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -584,7 +594,12 @@ pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Con let output_size: usize = 512; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_test(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -603,7 +618,12 @@ pub fn load_test(mut function_context: Context) -> (usize, String, Vec, Con let output_size: usize = 28; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_llm(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -867,7 +887,12 @@ pub fn load_llm(mut function_context: Context) -> (usize, String, Vec, Cont let output_size: usize = 1024; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -1108,7 +1133,12 @@ pub fn load_llama(mut function_context: Context) -> (usize, String, Vec, Co let output_size: usize = 65667072; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn full_load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -1450,7 +1480,12 @@ pub fn full_load_llama_kv(mut function_context: Context) -> (usize, String, Vec< let output_size: usize = 1048576; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -1790,7 +1825,12 @@ pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, let output_size: usize = 1048576; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -1803,7 +1843,12 @@ pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, C let output_size: usize = 8; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -1994,7 +2039,12 @@ pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2048,7 +2098,12 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2134,7 +2189,12 @@ pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2254,7 +2314,12 @@ pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2476,7 +2541,12 @@ pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2800,7 +2870,12 @@ pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_mobilenetv2(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2918,7 +2993,12 @@ pub fn load_mobilenetv2(mut function_context: Context) -> (usize, String, Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -2932,5 +3012,10 @@ pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec< let output_size: usize = 12; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs index 7a1262fd..44ec5e36 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs @@ -73,4 +73,3 @@ pub fn add_buffer(name: &str, size: usize, path: &str, function_context: &mut Co }], })); } - diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index b831acde..3f8f6edb 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -5,30 +5,17 @@ use super::{ }; use crate::{ function_driver::{ComputeResource, FunctionConfig, GpuConfig, WorkDone, WorkQueue, WorkToDo}, - interface::{read_output_structs, DandelionSystemData, SizedIntTrait}, - memory_domain::{ - self, - gpu::{GpuContext, GpuProcessContext}, - Context, ContextState, ContextTrait, ContextType, - }, - util::mmapmem::MmapMem, - DataSet, Position, + interface::read_output_structs, + memory_domain::{self, Context, ContextState, ContextTrait, ContextType}, + DataItem, DataSet, Position, }; -use dandelion_commons::{records::{RecordPoint, Recorder}, DandelionError, DandelionResult}; +use dandelion_commons::{records::RecordPoint, DandelionError, DandelionResult}; use libc::c_void; use log::{debug, error}; -use nix::{ - fcntl::OFlag, - sys::{ - mman::{mmap, shm_open, MapFlags, ProtFlags}, - stat::{fstat, Mode}, - }, -}; use serde::{Deserialize, Serialize}; use std::{ collections::HashMap, io::{BufRead, BufReader, Write}, - num::NonZeroUsize, process::{Child, ChildStdin, ChildStdout, Command, Stdio}, sync::{ atomic::{AtomicBool, Ordering}, @@ -37,7 +24,14 @@ use std::{ thread::spawn, }; -use crate::memory_domain::system_domain::SystemContext; +#[cfg(feature = "gpu_process")] +use nix::{ + fcntl::OFlag, + sys::{ + mman::{mmap, shm_open, MapFlags, ProtFlags}, + stat::{fstat, Mode}, + }, +}; pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context @@ -59,12 +53,9 @@ pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult Ok(length) } -/// # Safety -/// Requires *base* to point to the stat of *context* pub fn copy_data_to_device( ident: &str, context: &Context, - function_context: &SystemContext, dev_ptr: &DevicePointer, ) -> DandelionResult<()> { let dataset = context @@ -83,55 +74,18 @@ pub fn copy_data_to_device( let size = item.data.size; let offset = item.data.offset; let src = context.get_chunk_ref(offset, size).unwrap().as_ptr() as *const c_void; - - /*use std::slice; - let x = function_context.get_chunk_ref(offset, size).unwrap(); - let floats: Vec = x - .chunks(4) - .map(|chunk| f32::from_le_bytes(chunk.try_into().unwrap())) - .collect();*/ - println!("{:?} - {:?}", ident, &context.get_chunk_ref(offset, size).unwrap()[0..5]); - gpu_api::memcpy_h_to_d(dev_ptr, total, src, size)?; total += size as isize; } Ok(()) } -#[cfg(feature = "gpu")] -/// # Safety -/// Requires *base* to point to the stat of *context* -pub unsafe fn write_gpu_outputs( +pub fn write_gpu_outputs( output_context: &mut Context, - // base: *mut u8, output_set_names: &[String], device_buffers: &HashMap, buffer_pool: &BufferPool, ) -> DandelionResult<()> { - use crate::DataItem; - use crate::memory_domain::MemoryResource; - use crate::memory_domain::MemoryDomain; - use crate::memory_domain::gpu::GpuMemoryDomain; - - // println!("{:?}", output_context.content); - - /*let mut context_size = 0; - let mut output_ptrs = vec![]; - for output_name in output_set_names { - let (dev_ptr_idx, size) = device_buffers - .get(output_name) - .ok_or(DandelionError::ConfigMissmatch)?; - - context_size += size + 8; - output_ptrs.push(dev_ptr_idx); - } - - let dom_init = MemoryResource::Shared { - id: 13, - size: 1 << 8, - }; - let mem_domain = GpuMemoryDomain::init(dom_init)?; - let mut output_context = mem_domain.acquire_context(context_size)?;*/ let base = match &output_context.context { ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), #[cfg(feature = "gpu_process")] @@ -151,17 +105,6 @@ pub unsafe fn write_gpu_outputs( let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; gpu_api::memcpy_d_to_h(dst, &dev_ptr, *size)?; - /*use std::slice; - let x = unsafe { slice::from_raw_parts(base.byte_offset(buf_offset as isize), *size) } ; - let floats: Vec = x - .chunks(4) - .map(|chunk| f32::from_le_bytes(chunk.try_into().unwrap())) - .collect(); - println!("{:#?}", &floats);*/ - use std::slice; - let x = unsafe { slice::from_raw_parts(base.byte_offset(buf_offset as isize), *size) } ; - println!("{:?} - {:?}", output_name, &x[0..10]); - buffers.push(DataItem { ident: output_name.clone(), data: Position { @@ -172,84 +115,14 @@ pub unsafe fn write_gpu_outputs( }); output_context.occupy_space(buf_offset, *size)?; } - + output_sets.push(Some(DataSet { ident: "outputs".to_string(), buffers: buffers, })); output_context.content = output_sets; - // println!("{:?}", output_context); - println!("{:?}", output_context.content); - - // *context = output_context; - Ok(()) - - /* - // read the system buffer - - use crate::{ - interface::{IoBufferDescriptor, IoSetInfo}, - ptr_t, size_t, usize, usize_ptr, - }; - let mut system_struct = DandelionSystemData::::default(); - context.read( - system_data_offset, - core::slice::from_mut(&mut system_struct), - )?; - - let output_set_number = usize!(system_struct.output_sets_len); - let mut output_set_info = vec![]; - if output_set_info.try_reserve(output_set_number + 1).is_err() { - return Err(DandelionError::OutOfMemory); - } - let empty_output_set = IoSetInfo:: { - ident: ptr_t!(0), - ident_len: size_t!(0), - offset: size_t!(0), - }; - output_set_info.resize_with(output_set_number + 1, || empty_output_set.clone()); - context.read(usize_ptr!(system_struct.output_sets), &mut output_set_info)?; - - let mut output_buffers: Vec> = Vec::new(); - if output_buffers - .try_reserve_exact(output_set_names.len()) - .is_err() - { - return Err(DandelionError::OutOfMemory); - } - for (i, output_name) in output_set_names.iter().enumerate() { - // alignment shouldn't really make a huge difference - let (dev_ptr_idx, size) = device_buffers - .get(output_name) - .ok_or(DandelionError::ConfigMissmatch)?; - let buf_offset = context.get_free_space(*size, 8)?; - - let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; - let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; - gpu_api::memcpy_d_to_h(dst, &dev_ptr, *size)?; - - output_buffers.push(IoBufferDescriptor { - ident: ptr_t!(0), - ident_len: size_t!(0), - data: ptr_t!(buf_offset), - data_len: size_t!(*size), - key: size_t!(0), - }); - output_set_info[i].offset = size_t!(i); - } - output_set_info[output_set_number].offset = size_t!(output_set_number); - - context.write(usize_ptr!(system_struct.output_sets), &output_set_info)?; - - let output_buffers_offset: PtrT = - ptr_t!(context.get_free_space_and_write_slice(&output_buffers[..])? as usize); - - system_struct.output_bufs = output_buffers_offset; - - context.write(system_data_offset, core::slice::from_ref(&system_struct))?; - Ok(())*/ } pub fn get_size( @@ -488,7 +361,7 @@ fn manage_worker( // Very important to add this newline, as the worker reads line by line task += "\n"; - + recorder.record(RecordPoint::EngineStart); // Write task description to worker process stdin diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 8bf80c7f..ad7ea0d2 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -19,6 +19,9 @@ use dandelion_commons::{DandelionError, DandelionResult}; use serde::{Deserialize, Serialize}; use std::sync::Arc; +#[cfg(feature = "gpu")] +use crate::memory_domain::gpu::SubReadOnly; + pub trait ContextTrait: Send + Sync { /// Write data at the given offset into the context /// May fail if the range offset..offset+data lenght in bytes is not completely within the context size @@ -371,7 +374,27 @@ pub fn transfer_memory( size, ), #[cfg(feature = "gpu")] + (ContextType::Gpu(destination_ctxt), ContextType::ReadOnly(source_ctxt)) => { + // Transfer function registering buffers: weights + .cubin + let Some(ref data_set) = source.content[0] else { todo!() }; + let ident = &data_set.ident; + + destination_ctxt.read_only.insert( + ident.to_string(), + SubReadOnly { + context: source, + position: Position { + offset: source_offset, + size + } + } + ); + + Ok(()) + }, + #[cfg(feature = "gpu")] (ContextType::Gpu(destination_ctxt), ContextType::Gpu(source_ctxt)) => { + // Transfer nothing really... gpu::gpu_transfer( destination_ctxt, source_ctxt, @@ -382,6 +405,7 @@ pub fn transfer_memory( }, #[cfg(all(feature = "gpu", feature = "bytes_context"))] (ContextType::Gpu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { + // Transfer request inputs gpu::bytest_to_gpu_transfer( destination_ctxt, source_ctxt, @@ -390,40 +414,6 @@ pub fn transfer_memory( size, ) } - /*#[cfg(all(feature = "gpu", feature = "bytes_context"))] - (ContextType::Gpu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { - /*gpu::bytest_to_gpu_transfer( - destination_ctxt, - source_ctxt, - destination_offset, - source_offset, - size, - )*/ - system_domain::into_system_context_transfer( - &mut destination_ctxt.function_context, - source, - destination_offset, - source_offset, - size, - ) - } - #[cfg(feature = "gpu")] - (ContextType::Gpu(destination_ctxt), _) => { - /*gpu::gpu_transfer( - destination_ctxt, - source_ctxt, - destination_offset, - source_offset, - size, - )*/ - system_domain::into_system_context_transfer( - &mut destination_ctxt.function_context, - source, - destination_offset, - source_offset, - size, - ) - },*/ // default implementation using reads and writes (destination, source) => { let mut read_buffer: Vec = vec![0; size]; diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index c6a56381..94c36098 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -1,51 +1,46 @@ use crate::{ memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}, util::mmapmem::{MmapMem, MmapMemPool}, + Position, }; -use dandelion_commons::{DandelionError, DandelionResult}; -use log::error; +use dandelion_commons::{ + DandelionError, + DandelionResult, +}; +use log::{debug, error}; use nix::sys::mman::ProtFlags; +use std::{ + collections::HashMap, + ops::{Deref, DerefMut}, + sync::Arc, +}; -use crate::memory_domain::system_domain::SystemContext; -use std::collections::BTreeMap; +#[derive(Debug)] +pub struct SubReadOnly { + pub context: Arc, + pub position: Position, +} #[derive(Debug)] pub struct GpuContext { pub storage: MmapMem, - pub function_context: SystemContext, + pub read_only: HashMap, } impl ContextTrait for GpuContext { fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { - println!("HERE - write, {offset}"); self.storage.write(offset, data) } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { - println!("HERE - read, {offset}"); self.storage.read(offset, read_buffer) - // self.function_context.read(offset, read_buffer) } fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { - println!("HERE - ref, {offset} - {length}"); self.storage.get_chunk_ref(offset, length) - // self.function_context.get_chunk_ref(offset, length) } } -use log::debug; -use nix::sys::mman::shm_open; -use nix::sys::stat::Mode; -use nix::sys::stat::fstat; -use nix::sys::mman::mmap; -use nix::fcntl::OFlag; -use std::num::NonZeroUsize; -use nix::sys::mman::MapFlags; -use dandelion_commons::DandelionError::NotImplemented; -use std::ops::Deref; -use std::ops::DerefMut; - #[derive(Debug)] pub struct GpuProcessContext { // pub storage: MmapMem, @@ -163,16 +158,11 @@ impl Drop for GpuProcessContext { } }*/ - #[derive(Debug)] pub struct GpuMemoryDomain { memory_pool: MmapMemPool, } -/*use crate::memory_domain::system_domain::SystemContext; -use crate::memory_domain::system_domain::SystemMemoryDomain; -use std::collections::BTreeMap;*/ - impl MemoryDomain for GpuMemoryDomain { fn init(config: MemoryResource) -> DandelionResult> { let (id, size) = match config { @@ -194,28 +184,12 @@ impl MemoryDomain for GpuMemoryDomain { .memory_pool .get_allocation(size, nix::sys::mman::MmapAdvise::MADV_DONTNEED)?; - let function_context = SystemContext { - local_offset_to_data_position: BTreeMap::new(), - size, // TODO : change this size - }; - - let cum_size = actual_size + size; - - let new_context = Box::new(GpuContext { storage: mem_space, function_context }); - Ok(Context::new(ContextType::Gpu(new_context), cum_size)) - } - - /*fn init(_config: MemoryResource) -> DandelionResult> { - Ok(Box::new(SystemMemoryDomain {})) - } - - fn acquire_context(&self, size: usize) -> DandelionResult { - let new_context = Box::new(SystemContext { - local_offset_to_data_position: BTreeMap::new(), - size, + let new_context = Box::new(GpuContext { + storage: mem_space, + read_only: HashMap::new(), }); - Ok(Context::new(ContextType::System(new_context), size)) - }*/ + Ok(Context::new(ContextType::Gpu(new_context), actual_size)) + } } pub fn gpu_transfer( From 1d92ced8d8ed20b42c0634b9110c35ff0b8b0f40 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Tue, 15 Jul 2025 15:55:17 +0200 Subject: [PATCH 164/176] weights_from_disk feature added, used to simulate the performance overhead of reading model weights from disk instead of from memory --- machine_interface/Cargo.toml | 1 + machine_interface/src/memory_domain.rs | 58 +++++++++++++++---- .../src/memory_domain/read_only.rs | 25 ++++++++ server/Cargo.toml | 1 + server/src/main.rs | 25 +++++++- 5 files changed, 98 insertions(+), 12 deletions(-) diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index ffa89eea..da0084a4 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -20,6 +20,7 @@ hip = ["gpu"] gpu_process = ["gpu"] gpu_thread = ["gpu"] test_export = [] +weights_from_disk = ["gpu"] [build-dependencies] cmake = "0.1" diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index ad7ea0d2..4726e740 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -377,18 +377,56 @@ pub fn transfer_memory( (ContextType::Gpu(destination_ctxt), ContextType::ReadOnly(source_ctxt)) => { // Transfer function registering buffers: weights + .cubin let Some(ref data_set) = source.content[0] else { todo!() }; - let ident = &data_set.ident; + let ident = &data_set.ident.to_string(); + + #[cfg(feature = "weights_from_disk")] + { + use crate::memory_domain::read_only::ReadOnlyContext; + let disk_path = source_ctxt.disk_path.clone().unwrap(); + let split_path = disk_path.split("/").collect::>(); + let name = split_path[split_path.len() - 1].to_string(); + let data_vec = std::fs::read(&disk_path).unwrap(); + let item_size = data_vec.len(); + let mut new_context = + ReadOnlyContext::new(data_vec.into_boxed_slice()).unwrap(); + new_context.content.push(Some(DataSet { + ident: ident.clone(), + buffers: vec![DataItem { + ident: ident.clone(), + data: Position { + offset: 0, + size: item_size, + }, + key: 0, + }], + })); + let new_source = Arc::new(new_context); + + destination_ctxt.read_only.insert( + ident.clone(), + SubReadOnly { + context: new_source, + position: Position { + offset: source_offset, + size + } + } + ); + } - destination_ctxt.read_only.insert( - ident.to_string(), - SubReadOnly { - context: source, - position: Position { - offset: source_offset, - size + #[cfg(not(feature = "weights_from_disk"))] + { + destination_ctxt.read_only.insert( + ident.clone(), + SubReadOnly { + context: source, + position: Position { + offset: source_offset, + size + } } - } - ); + ); + } Ok(()) }, diff --git a/machine_interface/src/memory_domain/read_only.rs b/machine_interface/src/memory_domain/read_only.rs index a0bd94af..cbffbdf2 100644 --- a/machine_interface/src/memory_domain/read_only.rs +++ b/machine_interface/src/memory_domain/read_only.rs @@ -8,6 +8,8 @@ use log::error; pub struct ReadOnlyContext { storage: &'static mut [u8], layout: Option, + #[cfg(feature = "weights_from_disk")] + pub disk_path: Option, } impl ContextTrait for ReadOnlyContext { @@ -61,10 +63,31 @@ impl ReadOnlyContext { super::ContextType::ReadOnly(Box::new(ReadOnlyContext { storage: new_ref, layout: Some(layout), + #[cfg(feature = "weights_from_disk")] + disk_path: None, })), ref_len, )); } + + #[cfg(feature = "weights_from_disk")] + pub fn new_disk(reference: Box<[T]>, disk_path: &str) -> DandelionResult { + let ref_len = core::mem::size_of::() * reference.len(); + let layout = core::alloc::Layout::from_size_align(ref_len, core::mem::align_of::()) + .or(Err(DandelionError::ContextReadOnlyLayout))?; + let new_ref = unsafe { + core::slice::from_raw_parts_mut(Box::leak(reference).as_mut_ptr() as *mut u8, ref_len) + }; + return Ok(Context::new( + super::ContextType::ReadOnly(Box::new(ReadOnlyContext { + storage: new_ref, + layout: Some(layout), + disk_path: Some(disk_path.to_string()), + })), + ref_len, + )); + } + pub fn new_static(reference: &'static mut [T]) -> Context { let ref_len = core::mem::size_of::() * reference.len(); let new_ref = @@ -73,6 +96,8 @@ impl ReadOnlyContext { super::ContextType::ReadOnly(Box::new(ReadOnlyContext { storage: new_ref, layout: None, + #[cfg(feature = "weights_from_disk")] + disk_path: None, })), ref_len, ); diff --git a/server/Cargo.toml b/server/Cargo.toml index 0a84325b..6a3ba854 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -48,3 +48,4 @@ hip = ["gpu"] cuda = ["gpu"] gpu_thread = ["machine_interface/gpu_thread", "gpu"] gpu_process = ["machine_interface/gpu_process", "gpu"] +weights_from_disk = ["machine_interface/weights_from_disk"] diff --git a/server/src/main.rs b/server/src/main.rs index ddc0a0e8..68cec5aa 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -271,6 +271,10 @@ async fn register_function( "GpuProcess" => EngineType::GpuProcess, unkown => panic!("Unkown engine type string {}", unkown), }; + + let inputs_folder = format!("{}/{}_weights", FUNCTION_FOLDER_PATH, &request_map.name); + std::fs::create_dir_all(&inputs_folder).unwrap(); + let input_sets = request_map .input_sets .into_iter() @@ -284,8 +288,23 @@ async fn register_function( data_vec.append(&mut chunk.chunk); } let item_size = data_vec.len(); - let mut new_context = - ReadOnlyContext::new(data_vec.into_boxed_slice()).unwrap(); + + #[cfg(not(feature = "weights_from_disk"))] + let mut new_context = ReadOnlyContext::new(data_vec.into_boxed_slice()).unwrap(); + + #[cfg(feature = "weights_from_disk")] + let mut new_context = { + // write weight to file + let mut path_buff = format!("{}/{}", inputs_folder.clone(), name.clone()); + let mut function_file = std::fs::File::create(&path_buff) + .expect("Failed to create file for registering function weight"); + function_file + .write_all(&data_vec) + .expect("Failed to write file with content for registering function weight"); + + ReadOnlyContext::new_disk(data_vec.into_boxed_slice(), &path_buff).unwrap() + }; + new_context.content.push(Some(DataSet { ident: name.clone(), buffers: vec![DataItem { @@ -742,6 +761,8 @@ fn main() -> () { print!(" request_io"); #[cfg(feature = "timestamp")] print!(" timestamp"); + #[cfg(feature = "weights_from_disk")] + print!(" weights_from_disk"); print!("\n"); // Run this server for... forever... unless I receive a signal! From 144feec3b75cc0f53d58d4f81fda31228fa66cf4 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Thu, 17 Jul 2025 16:25:47 +0200 Subject: [PATCH 165/176] support other EngineQueue types, through the WorkQueue + EnqueueWork traits --- dispatcher/Cargo.toml | 3 +- dispatcher/src/dispatcher.rs | 69 +++++++++++++---- dispatcher/src/execution_qs.rs | 113 +++++++++++++++++++++++++++- dispatcher/src/function_registry.rs | 16 ++-- server/src/main.rs | 7 +- 5 files changed, 179 insertions(+), 29 deletions(-) diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index 77a5f77b..7cc920c0 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -22,4 +22,5 @@ wasm = ["machine_interface/wasm"] mmu = ["machine_interface/mmu"] kvm = ["machine_interface/kvm"] reqwest_io = ["machine_interface/reqwest_io"] -timestamp = ["dandelion_commons/timestamp"] \ No newline at end of file +timestamp = ["dandelion_commons/timestamp"] +gpu = ["machine_interface/gpu"] diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index e2c80b8d..7834522c 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -2,7 +2,7 @@ use crate::{ composition::{ get_sharding, Composition, CompositionSet, InputSetDescriptor, JoinStrategy, ShardingMode, }, - execution_qs::EngineQueue, + execution_qs::{EngineQueue, EngineQueueGPU}, function_registry::{FunctionRegistry, FunctionType, Metadata}, resource_pool::ResourcePool, }; @@ -19,12 +19,12 @@ use futures::{ use itertools::Itertools; use log::{debug, trace}; use machine_interface::{ - function_driver::{Driver, FunctionConfig, WorkToDo}, + function_driver::{Driver, FunctionConfig, WorkQueue, WorkToDo}, machine_config::{ - get_available_domains, get_available_drivers, get_compatibilty_table, DomainType, - EngineType, + get_available_domains, get_available_drivers, get_compatibilty_table, DomainType, EngineType }, memory_domain::{Context, MemoryDomain, MemoryResource}, + promise::Promise, }; use std::{ collections::{BTreeMap, BTreeSet}, @@ -37,17 +37,58 @@ pub enum DispatcherInput { Set(CompositionSet), } +pub trait EnqueueWork: Send + Sync { + fn enqueue_work(&self, args: WorkToDo) -> DandelionResult; +} + +pub trait FullQueue: EnqueueWork + WorkQueue { + fn clone_full_queue(&self) -> Box; + fn upcast_work_queue(&self) -> Box<(dyn WorkQueue + Send + Sync)>; + fn upcast_enqueue_work(&self) -> Box<(dyn EnqueueWork)>; +} + +impl Clone for Box { + fn clone(&self) -> Box { + self.clone_full_queue() + } +} + +impl FullQueue for T +where + T: EnqueueWork + WorkQueue + Send + Sync + Clone + 'static, +{ + fn clone_full_queue(&self) -> Box { + Box::new(self.clone()) + } + + fn upcast_work_queue(&self) -> Box<(dyn WorkQueue + Send + Sync)> { + Box::new(self.clone()) + } + + fn upcast_enqueue_work(&self) -> Box<(dyn EnqueueWork)> { + Box::new(self.clone()) + } +} + // TODO here and in registry can probably replace driver and loader function maps with fixed size arrays // That have compile time size and static indexing // TODO also here and in registry replace Arc Box with static references from leaked boxes for things we expect to be there for // the entire execution time anyway pub struct Dispatcher { - domains: BTreeMap>, Box)>, - engine_queues: BTreeMap>, + domains: BTreeMap>, Box)>, + engine_queues: BTreeMap>, type_map: BTreeMap, function_registry: FunctionRegistry, } +fn get_queue_from_engine(engine_type: EngineType) -> Box { + return match engine_type { + #[cfg(feature = "gpu")] + EngineType::GpuThread => Box::new(EngineQueueGPU::new()), + _ => Box::new(EngineQueue::new()), + }; +} + impl Dispatcher { pub fn init( mut resource_pool: ResourcePool, @@ -61,17 +102,17 @@ impl Dispatcher { // Insert a work queue for each domain and use up all engine resource available let mut domain_map = BTreeMap::new(); let mut engine_queues = BTreeMap::new(); - let mut registry_drivers: BTreeMap)> = + let mut registry_drivers: BTreeMap)> = BTreeMap::new(); for (engine_type, driver) in drivers.into_iter() { - let work_queue = Box::new(EngineQueue::new()); + let work_queue = get_queue_from_engine(engine_type); while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(engine_type) { - driver.start_engine(resource, work_queue.clone())?; + driver.start_engine(resource, work_queue.upcast_work_queue())?; } let domain_type = type_map.get(&engine_type).unwrap(); let domain = domains.get(domain_type).unwrap().clone(); - domain_map.insert(*domain_type, (domain, work_queue.clone())); - engine_queues.insert(engine_type, work_queue.clone()); + domain_map.insert(*domain_type, (domain, work_queue.upcast_enqueue_work())); + engine_queues.insert(engine_type, work_queue.upcast_enqueue_work()); registry_drivers.insert( engine_type, (driver as &'static dyn Driver, work_queue.clone()), @@ -563,7 +604,7 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - function_context = transfer_queue.enqueu_work(args).await?.get_context(); + function_context = transfer_queue.enqueue_work(args)?.await?.get_context(); function_buffer += 1; } } @@ -607,7 +648,7 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - function_context = transfer_queue.enqueu_work(args).await?.get_context(); + function_context = transfer_queue.enqueue_work(args)?.await?.get_context(); function_item += 1; } } @@ -640,7 +681,7 @@ impl Dispatcher { recorder: subrecoder, }; recorder.record(RecordPoint::ExecutionQueue); - let result = engine_queue.enqueu_work(args).await?.get_context(); + let result = engine_queue.enqueue_work(args)?.await?.get_context(); recorder.record(RecordPoint::FutureReturn); return Ok(result); } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index e6ff3adb..cd423126 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,10 +1,11 @@ +use crate::dispatcher::EnqueueWork; use core::sync::atomic::{AtomicUsize, Ordering}; use crossbeam::channel::{TryRecvError, TrySendError}; use dandelion_commons::{DandelionError, DandelionResult}; use log::error; use machine_interface::{ - function_driver::{WorkDone, WorkQueue, WorkToDo}, - promise::{Debt, PromiseBuffer}, + function_driver::{WorkQueue, WorkToDo}, + promise::{Debt, Promise, PromiseBuffer}, }; use std::{hint, sync::Arc}; @@ -80,6 +81,23 @@ impl WorkQueue for EngineQueue { } } +impl EnqueueWork for EngineQueue { + fn enqueue_work(&self, args: WorkToDo) -> DandelionResult { + let (promise, debt) = self.promise_buffer.get_promise()?; + match self.queue_in.try_send((args, debt)) { + Ok(()) => (), + Err(TrySendError::Disconnected(_)) => { + error!("Failed to enqueu work, workqueue has been disconnected") + } + Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), + } + return Ok(promise); + } +} + +unsafe impl Send for EngineQueue {} +unsafe impl Sync for EngineQueue {} + impl EngineQueue { pub fn new() -> Self { let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); @@ -95,8 +113,75 @@ impl EngineQueue { promise_buffer: PromiseBuffer::init(MAX_QUEUE), }; } +} + +#[derive(Clone)] +pub struct EngineQueueGPU { + queue_in: crossbeam::channel::Sender<(WorkToDo, Debt)>, + queue_out: crossbeam::channel::Receiver<(WorkToDo, Debt)>, + worker_queue: Arc, + promise_buffer: PromiseBuffer, +} + +/// This is run on the engine so it performs asyncornous access to the local state +impl WorkQueue for EngineQueueGPU { + fn get_engine_args(&self) -> (WorkToDo, Debt) { + // make sure only one thread spins on lock and work gets distributed in order of workers getting free + let local_ticket = self.worker_queue.end.fetch_add(1, Ordering::AcqRel); + while local_ticket != self.worker_queue.start.load(Ordering::Acquire) { + hint::spin_loop(); + } + let work = loop { + match self.queue_out.try_recv() { + Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), + Err(TryRecvError::Empty) => continue, + Ok(recieved) => { + let (recieved_args, recevied_dept) = recieved; + if recevied_dept.is_alive() { + break (recieved_args, recevied_dept); + } + } + } + }; + self.worker_queue.start.fetch_add(1, Ordering::Release); + return work; + } + + fn try_get_engine_args(&self) -> Option<(WorkToDo, Debt)> { + let queue_head = self.worker_queue.start.load(Ordering::Acquire); + if self + .worker_queue + .end + .compare_exchange( + queue_head, + queue_head + 1, + Ordering::AcqRel, + Ordering::Acquire, + ) + .is_ok() + { + let try_result = self.queue_out.try_recv(); + self.worker_queue.start.fetch_add(1, Ordering::AcqRel); + return match try_result { + Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), + Err(TryRecvError::Empty) => None, + Ok(received) => { + let (args, dept) = received; + if dept.is_alive() { + Some((args, dept)) + } else { + None + } + } + }; + } else { + return None; + } + } +} - pub async fn enqueu_work(&self, args: WorkToDo) -> DandelionResult { +impl EnqueueWork for EngineQueueGPU { + fn enqueue_work(&self, args: WorkToDo) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; match self.queue_in.try_send((args, debt)) { Ok(()) => (), @@ -105,6 +190,26 @@ impl EngineQueue { } Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), } - return promise.await; + return Ok(promise); + } +} + +unsafe impl Send for EngineQueueGPU {} +unsafe impl Sync for EngineQueueGPU {} + +impl EngineQueueGPU { + pub fn new() -> Self { + let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); + let tickets = AtomicTickets { + start: AtomicUsize::new(0), + end: AtomicUsize::new(0), + }; + let queue = Arc::new(tickets); + return EngineQueueGPU { + queue_in: sender, + queue_out: receiver, + worker_queue: queue, + promise_buffer: PromiseBuffer::init(MAX_QUEUE), + }; } } diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index a4d8ec4e..2c520fad 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -20,7 +20,7 @@ use std::{ use crate::{ composition::{Composition, CompositionSet}, - execution_qs::EngineQueue, + dispatcher::FullQueue }; #[derive(Clone, Debug)] @@ -87,19 +87,19 @@ async fn load_local( static_domain: Arc>, driver: &'static dyn Driver, mut recorder: Recorder, - work_queue: Box, + work_queue: Box, path: String, ) -> DandelionResult> { recorder.record(RecordPoint::ParsingQueue); let function = work_queue - .enqueu_work( + .enqueue_work( machine_interface::function_driver::WorkToDo::ParsingArguments { driver, path, static_domain, recorder: recorder.get_sub_recorder(), }, - ) + )? .await? .get_function(); recorder.record(RecordPoint::ParsingDequeue); @@ -110,7 +110,7 @@ pub struct FunctionRegistry { /// List of engines available for each function engine_map: Mutex>>, /// Drivers for the engines to prepare function (get them from available to ready) - pub(crate) drivers: BTreeMap)>, + pub(crate) drivers: BTreeMap)>, /// map with list of all options for each function /// TODO: change structure to avoid copy on get_options options: Mutex>>, @@ -138,7 +138,7 @@ pub struct FunctionRegistry { impl FunctionRegistry { // TODO: make sure that system functions can't be added later for other engines pub fn new( - drivers: BTreeMap)>, + drivers: BTreeMap)>, type_map: &BTreeMap, domains: &BTreeMap>>, ) -> Self { @@ -409,14 +409,14 @@ impl FunctionRegistry { let function_config = function.config.clone(); recorder.record(RecordPoint::LoadQueue); let context_work_done = load_queue - .enqueu_work( + .enqueue_work( machine_interface::function_driver::WorkToDo::LoadingArguments { function, domain, recorder: recorder.get_sub_recorder(), ctx_size: ctx_size, }, - ) + )? .await; recorder.record(RecordPoint::LoadDequeue); let function_context = context_work_done?.get_context(); diff --git a/server/src/main.rs b/server/src/main.rs index 68cec5aa..d171c116 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -272,8 +272,11 @@ async fn register_function( unkown => panic!("Unkown engine type string {}", unkown), }; - let inputs_folder = format!("{}/{}_weights", FUNCTION_FOLDER_PATH, &request_map.name); - std::fs::create_dir_all(&inputs_folder).unwrap(); + #[cfg(feature = "weights_from_disk")] + { + let inputs_folder = format!("{}/{}_weights", FUNCTION_FOLDER_PATH, &request_map.name); + std::fs::create_dir_all(&inputs_folder).unwrap(); + } let input_sets = request_map .input_sets From e292fa7f106255f51b2c77990a3e8f738f706c4d Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 28 Jul 2025 09:38:00 +0200 Subject: [PATCH 166/176] Support model weights reuse --- dandelion_commons/Cargo.toml | 1 + dispatcher/Cargo.toml | 1 + machine_interface/Cargo.toml | 1 + machine_interface/src/function_driver.rs | 3 +- .../src/function_driver/compute_driver/gpu.rs | 99 ++++++++++--------- .../compute_driver/gpu/buffer_pool.rs | 92 ++++++++++------- .../compute_driver/gpu/config_parsing.rs | 1 + .../compute_driver/gpu/cuda.rs | 5 + .../compute_driver/gpu/gpu_utils.rs | 26 +++-- server/Cargo.toml | 2 + server/src/main.rs | 2 + 11 files changed, 137 insertions(+), 96 deletions(-) diff --git a/dandelion_commons/Cargo.toml b/dandelion_commons/Cargo.toml index 788db501..93b5cb3d 100644 --- a/dandelion_commons/Cargo.toml +++ b/dandelion_commons/Cargo.toml @@ -5,6 +5,7 @@ edition = "2021" [features] timestamp = [] +reuse_weights = [] [dependencies] hdrhist = "0.5.0" diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index 7cc920c0..cbb9b8f0 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -24,3 +24,4 @@ kvm = ["machine_interface/kvm"] reqwest_io = ["machine_interface/reqwest_io"] timestamp = ["dandelion_commons/timestamp"] gpu = ["machine_interface/gpu"] +gpu_queue = [] diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index da0084a4..0e4e472a 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -20,6 +20,7 @@ hip = ["gpu"] gpu_process = ["gpu"] gpu_thread = ["gpu"] test_export = [] +reuse_weights = ["gpu"] weights_from_disk = ["gpu"] [build-dependencies] diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 8d51dd61..cd493519 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -6,7 +6,7 @@ use crate::{ }; extern crate alloc; use alloc::sync::Arc; -use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; +use dandelion_commons::{records::Recorder, DandelionError, DandelionResult, FunctionId}; use serde::{Deserialize, Serialize}; #[cfg(feature = "wasm")] @@ -63,6 +63,7 @@ pub struct WasmConfig { #[derive(Clone, Serialize, Deserialize)] pub struct GpuConfig { + pub function_id: FunctionId, pub system_data_struct_offset: usize, pub code_object_offset: usize, pub kernels: Arc>>, diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 1eb57d8f..a99b90b4 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -2,9 +2,11 @@ use self::{ buffer_pool::BufferPool, config_parsing::{Action, Argument, RuntimeGpuConfig, SYSDATA_OFFSET}, gpu_utils::{ - copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, write_gpu_outputs, + copy_data_to_device, get_data_length, get_size, write_gpu_outputs, }, }; +#[cfg(feature = "gpu_process")] +use self::gpu_utils::start_gpu_process_pool; use crate::{ function_driver::{ thread_utils::{run_thread, EngineLoop}, @@ -41,7 +43,6 @@ mod gpu_tests; fn execute( actions: &Vec, - buffers: &HashMap, buffer_pool: &BufferPool, context: &Context, config: &RuntimeGpuConfig, @@ -62,20 +63,13 @@ fn execute( for arg in args { match arg { Argument::Ptr(id) => { - let idx = buffers - .get(id) - .ok_or(DandelionError::UndeclaredIdentifier(id.to_owned()))? - .0; - let dev_ptr = buffer_pool.get(idx)?; + let dev_ptr = buffer_pool.get_pointer(id)?; dev_ptrs.push(Box::into_raw(Box::new(dev_ptr))); params.push(*dev_ptrs.last().unwrap() as *const c_void); } Argument::Sizeof(id) => { params.push( - &buffers - .get(id) - .ok_or(DandelionError::UndeclaredIdentifier(id.to_owned()))? - .1 as *const _ as *const c_void, + &buffer_pool.get_size(id) as *const _ as *const c_void, ); } Argument::Constant(constant) => { @@ -89,13 +83,13 @@ fn execute( .kernels .get(name) .ok_or(DandelionError::UndeclaredIdentifier(name.to_owned()))?, - get_size(&launch_config.grid_dim_x, buffers, context)? as u32, - get_size(&launch_config.grid_dim_y, buffers, context)? as u32, - get_size(&launch_config.grid_dim_z, buffers, context)? as u32, - get_size(&launch_config.block_dim_x, buffers, context)? as u32, - get_size(&launch_config.block_dim_y, buffers, context)? as u32, - get_size(&launch_config.block_dim_z, buffers, context)? as u32, - get_size(&launch_config.shared_mem_bytes, buffers, context)? as u32, + get_size(&launch_config.grid_dim_x, buffer_pool, context)? as u32, + get_size(&launch_config.grid_dim_y, buffer_pool, context)? as u32, + get_size(&launch_config.grid_dim_z, buffer_pool, context)? as u32, + get_size(&launch_config.block_dim_x, buffer_pool, context)? as u32, + get_size(&launch_config.block_dim_y, buffer_pool, context)? as u32, + get_size(&launch_config.block_dim_z, buffer_pool, context)? as u32, + get_size(&launch_config.shared_mem_bytes, buffer_pool, context)? as u32, gpu_api::DEFAULT_STREAM, params.as_ptr(), null(), @@ -110,9 +104,9 @@ fn execute( } } Action::Repeat(times, actions) => { - let repetitions = get_size(times, buffers, context)?; + let repetitions = get_size(times, buffer_pool, context)?; for _ in 0..repetitions { - execute(actions, buffers, buffer_pool, context, config)?; + execute(actions, buffer_pool, context, config)?; } } } @@ -173,6 +167,9 @@ pub fn gpu_run( .ok_or(DandelionError::UnknownSymbol); } + let function_id = config.function_id; + let mut buffer_pool = buffer_pool.lock().unwrap(); + let config = RuntimeGpuConfig { system_data_struct_offset: 0, modules: Arc::new(loaded_modules), @@ -180,44 +177,49 @@ pub fn gpu_run( blueprint: config.blueprint, }; - let mut buffer_pool = buffer_pool.lock().unwrap(); - recorder.record(RecordPoint::GPUTransferStart); - // Maps from bufname -> (index in buffer pool, size of buffer) - let mut buffers: HashMap = HashMap::new(); - for name in &config.blueprint.inputs { - let size = get_data_length(name, &context)?; - let idx = buffer_pool.alloc_buffer(size)?; - copy_data_to_device(name, &context, &buffer_pool.get(idx)?)?; - buffers.insert(name.clone(), (idx, size)); + let mut reload_weights = true; + #[cfg(feature = "reuse_weights")] + { + reload_weights = buffer_pool.prev_function_id != function_id; } - for name in &config.blueprint.weights { - let sub_read_only = read_only_data.get(name.as_str()).unwrap(); - let data_pointer = sub_read_only - .context - .get_chunk_ref(sub_read_only.position.offset, sub_read_only.position.size) - .unwrap() - .as_ptr() as *const c_void; - let size = sub_read_only.position.size; - let idx = buffer_pool.alloc_buffer(size)?; + recorder.set_gpu_cache_hit(!reload_weights); - let dev_ptr = &buffer_pool.get(idx)?; + if reload_weights { + buffer_pool.prev_function_id = function_id; + buffer_pool.dealloc_all()?; - gpu_api::memcpy_h_to_d(dev_ptr, 0, data_pointer, size)?; + for name in &config.blueprint.weights { + let sub_read_only = read_only_data.get(name.as_str()).unwrap(); + let data_pointer = sub_read_only + .context + .get_chunk_ref(sub_read_only.position.offset, sub_read_only.position.size) + .unwrap() + .as_ptr() as *const c_void; + let size = sub_read_only.position.size; + + let _ = buffer_pool.alloc_buffer(name, size, true)?; + let dev_ptr = buffer_pool.get_pointer(name)?; + + gpu_api::memcpy_h_to_d(&dev_ptr, 0, data_pointer, size)?; + } + } - buffers.insert(name.clone(), (idx, size)); + for name in &config.blueprint.inputs { + let size = get_data_length(name, &context)?; + let _ = buffer_pool.alloc_buffer(name, size, false)?; + let dev_ptr = buffer_pool.get_pointer(name)?; + copy_data_to_device(name, &context, &dev_ptr)?; } for (name, sizing) in &config.blueprint.buffers { - let size = get_size(sizing, &buffers, &context)? as usize; - let idx = buffer_pool.alloc_buffer(size)?; - buffers.insert(name.clone(), (idx, size)); + let size = get_size(sizing, &buffer_pool, &context)? as usize; + let _ = buffer_pool.alloc_buffer(name, size, false)?; } recorder.record(RecordPoint::GPUTransferEnd); recorder.record(RecordPoint::GPUInferenceStart); execute( &config.blueprint.control_flow, - &buffers, buffer_pool.borrow(), &context, &config, @@ -226,11 +228,11 @@ pub fn gpu_run( recorder.record(RecordPoint::GPUOutputStart); // Copy results back into host memory from device memory - write_gpu_outputs(&mut context, &output_sets, &buffers, buffer_pool.borrow())?; + write_gpu_outputs(&mut context, &output_sets, buffer_pool.borrow())?; recorder.record(RecordPoint::GPUOutputEnd); - // Zero out buffers used by current function - buffer_pool.dealloc_all()?; + // Zero out input, temporary buffers, and output buffers + buffer_pool.dealloc_tmp_buffers()?; Ok(context) } @@ -399,6 +401,7 @@ impl Driver for GpuProcessDriver { ) -> dandelion_commons::DandelionResult<()> { let (cpu_slot, gpu_id, worker_count) = common_start(resource)?; + #[cfg(feature = "gpu_process")] start_gpu_process_pool(cpu_slot, gpu_id, worker_count, queue); Ok(()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 44c013e6..e4a3d13a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -1,26 +1,23 @@ use super::gpu_api::{self, DeviceAllocation, DevicePointer}; -use dandelion_commons::{DandelionError, DandelionResult}; +use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; use log::debug; +use std::collections::HashMap; #[derive(Debug)] struct Buffer { offset: usize, - length: usize, + size: usize, } -impl Buffer { - fn sentinel() -> Self { - Self { - offset: 0, - length: 0, - } - } -} #[derive(Debug)] pub struct BufferPool { // (ptr, ptr in use) allocation: DeviceAllocation, - buffers: Vec, + buffers: HashMap, + pub prev_function_id: FunctionId, + last_offset_global: usize, + last_offset_weights: usize, + tmp_names: Vec, } impl BufferPool { @@ -29,56 +26,85 @@ impl BufferPool { let mut allocation = gpu_api::DeviceAllocation::try_new(region_size)?; allocation.zero_out()?; - // sentinel buffer to simplify logic - let buffers = vec![Buffer::sentinel()]; + let buffers = HashMap::new(); + let last_offset_global = 0usize; + let last_offset_weights = 0usize; + let tmp_names = Vec::new(); Ok(Self { allocation, buffers, + prev_function_id: u64::MAX, + last_offset_global, + last_offset_weights, + tmp_names, }) } - pub fn alloc_buffer(&mut self, size: usize) -> DandelionResult { + pub fn alloc_buffer(&mut self, name: &str, size: usize, is_weight: bool) -> DandelionResult<()> { + let dev_ptr = self.last_offset_global; + macro_rules! align { ($e: expr) => { ($e + 255) / 256 * 256 }; } // Round size to 256 bytes, which is the minimum that GPU allocators typically use. This might need to be changed - let length = align!(size); - - let last = self - .buffers - .last() - .expect("buffers should always hold sentinel"); + let aligned_size = align!(size); - let offset = align!(last.offset + last.length); - - if offset + length > self.allocation.size { + if dev_ptr + aligned_size > self.allocation.size { debug!( - "Going to throw OutOfMemory, offset: {}, length: {}, self_alloc_size: {}", - offset, length, self.allocation.size + "Going to throw OutOfMemory, offset: {}, aligned_size: {}, self_alloc_size: {}", + dev_ptr, aligned_size, self.allocation.size ); return Err(DandelionError::OutOfMemory); } - self.buffers.push(Buffer { offset, length }); + self.last_offset_global = align!(self.last_offset_global + aligned_size); + if is_weight { + self.last_offset_weights = self.last_offset_global; + } else { + self.tmp_names.push(name.to_string()); + } + + self.buffers.insert( + name.to_string(), + Buffer { + offset: dev_ptr, + size: size, + }, + ); - Ok(self.buffers.len() - 1) + Ok(()) } - pub fn get(&self, idx: usize) -> DandelionResult { - let buffer = self.buffers.get(idx).ok_or(DandelionError::EngineError)?; + pub fn get_pointer(&self, name: &str) -> DandelionResult { + let buffer = self.buffers.get(name).ok_or(DandelionError::EngineError)?; Ok(DevicePointer { ptr: unsafe { self.allocation.ptr.byte_add(buffer.offset) }, }) } + pub fn get_size(&self, name: &str) -> DandelionResult { + let buffer = self.buffers.get(name).ok_or(DandelionError::EngineError)?; + Ok(buffer.size) + } + + pub fn dealloc_tmp_buffers(&mut self) -> DandelionResult<()> { + self.allocation.zero_from_to(self.last_offset_weights, self.last_offset_global)?; + for name in &self.tmp_names { + self.buffers.remove(name); + } + self.last_offset_global = self.last_offset_weights; + self.tmp_names.clear(); + Ok(()) + } + pub fn dealloc_all(&mut self) -> DandelionResult<()> { - // Unwrap okay because buffers will always have at least sentinel - let last = self.buffers.last().unwrap(); - self.allocation.zero_size(last.offset + last.length)?; + self.allocation.zero_size(self.last_offset_global)?; self.buffers.clear(); - self.buffers.push(Buffer::sentinel()); + self.last_offset_global = 0; + self.last_offset_weights = 0; + self.tmp_names.clear(); Ok(()) } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 5b1f1f25..c33a0223 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -56,6 +56,7 @@ struct GpuConfigIR { impl From for GpuConfig { fn from(value: GpuConfigIR) -> Self { Self { + function_id: u64::MAX, system_data_struct_offset: SYSDATA_OFFSET, code_object_offset: 0, kernels: Arc::new(value.kernels), diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs index 5aa07807..df486f97 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs @@ -317,6 +317,11 @@ impl DeviceAllocation { pub fn zero_size(&mut self, size: usize) -> DandelionResult<()> { gpu_zero_mem(self.ptr, size) } + + pub fn zero_from_to(&mut self, from: usize, to: usize) -> DandelionResult<()> { + let size = to - from; + gpu_zero_mem(self.ptr.wrapping_add(from), size) + } } impl Drop for DeviceAllocation { diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 3f8f6edb..fa89a97c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -83,7 +83,7 @@ pub fn copy_data_to_device( pub fn write_gpu_outputs( output_context: &mut Context, output_set_names: &[String], - device_buffers: &HashMap, + // device_buffers: &HashMap, buffer_pool: &BufferPool, ) -> DandelionResult<()> { let base = match &output_context.context { @@ -96,24 +96,23 @@ pub fn write_gpu_outputs( let mut output_sets = vec![]; let mut buffers = vec![]; for output_name in output_set_names { - let (dev_ptr_idx, size) = device_buffers - .get(output_name) - .ok_or(DandelionError::ConfigMissmatch)?; - let buf_offset = output_context.get_free_space(*size, 8)?; + let dev_ptr = buffer_pool.get_pointer(output_name)?; + let size = buffer_pool.get_size(output_name)?; + let buf_offset = output_context.get_free_space(size, 8)?; let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; - let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; - gpu_api::memcpy_d_to_h(dst, &dev_ptr, *size)?; + + gpu_api::memcpy_d_to_h(dst, &dev_ptr, size)?; buffers.push(DataItem { ident: output_name.clone(), data: Position { offset: buf_offset, - size: *size, + size: size, }, key: 0u32, }); - output_context.occupy_space(buf_offset, *size)?; + output_context.occupy_space(buf_offset, size)?; } output_sets.push(Some(DataSet { @@ -127,7 +126,7 @@ pub fn write_gpu_outputs( pub fn get_size( sizing: &Sizing, - buffers: &HashMap, + buffer_pool: &BufferPool, context: &Context, ) -> DandelionResult { match sizing { @@ -159,10 +158,7 @@ pub fn get_size( Ok(buf[0]) } - Sizing::Sizeof(bufname) => Ok(buffers - .get(bufname) - .ok_or(DandelionError::UndeclaredIdentifier(bufname.to_owned()))? - .1 as u64), + Sizing::Sizeof(bufname) => Ok(buffer_pool.get_size(bufname)? as u64), } } @@ -313,6 +309,7 @@ pub struct SendFunctionArgs { pub output_sets: Arc>, } +/* fn manage_worker( resources: (u8, u8, u8), core_id: u8, @@ -489,3 +486,4 @@ pub fn start_gpu_process_pool( }); } } +*/ diff --git a/server/Cargo.toml b/server/Cargo.toml index 6a3ba854..710d0e97 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -48,4 +48,6 @@ hip = ["gpu"] cuda = ["gpu"] gpu_thread = ["machine_interface/gpu_thread", "gpu"] gpu_process = ["machine_interface/gpu_process", "gpu"] +reuse_weights = ["machine_interface/reuse_weights", "dandelion_commons/reuse_weights"] weights_from_disk = ["machine_interface/weights_from_disk"] +gpu_queue = ["dispatcher/gpu_queue"] diff --git a/server/src/main.rs b/server/src/main.rs index d171c116..7c1cb4fd 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -764,6 +764,8 @@ fn main() -> () { print!(" request_io"); #[cfg(feature = "timestamp")] print!(" timestamp"); + #[cfg(feature = "reuse_weights")] + print!(" reuse_weights"); #[cfg(feature = "weights_from_disk")] print!(" weights_from_disk"); print!("\n"); From cb1a5a79c1deabb06df88edaa94a5b7736a3df1f Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 28 Jul 2025 09:38:39 +0200 Subject: [PATCH 167/176] Extend recorder to print model reuse --- dandelion_commons/src/records.rs | 85 ++++++++++++++++++++++++++++++++ server/src/lib.rs | 17 +++++++ 2 files changed, 102 insertions(+) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 51c51f60..4626195d 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -1,6 +1,7 @@ use crate::FunctionId; use core::fmt; use std::time::Instant; +use std::sync::{Arc, Mutex}; /// Maximum usize to expect when converting a record point to a usize /// By setting the last element to this explicitly, the compiler will throw an error, @@ -178,10 +179,57 @@ impl TimestampArchive { } } +#[cfg(feature = "reuse_weights")] +struct ReuseWeightsArchive { + collected_gpu_cache_hit: std::sync::Mutex>, +} + +#[cfg(feature = "reuse_weights")] +impl ReuseWeightsArchive { + fn init() -> Self { + return Self { + collected_gpu_cache_hit: std::sync::Mutex::new(Vec::new()), + }; + } + + fn insert(&self, new_gpu_cache_hit: bool) { + let mut guard = self.collected_gpu_cache_hit.lock().unwrap(); + guard.push(new_gpu_cache_hit); + } + + fn reset(&self) { + let mut guard = self.collected_gpu_cache_hit.lock().unwrap(); + *guard = Vec::new(); + } + + fn append_gpu_cache_hit( + &self, + gpu_cache_hit: bool, + summary: &mut String, + indent: usize, + ) { + // push self + summary.push_str(&format!( + "{}gpu_cache_hit:{}", + "-".repeat(indent), + gpu_cache_hit + )); + } + + fn get_summary(&self, summary: &mut String) { + for recorder in self.collected_gpu_cache_hit.lock().unwrap().iter() { + self.append_gpu_cache_hit(*recorder, summary, 0); + summary.push_str("\n"); + } + } +} + /// General implementation of recorder struct, additional functionality enabled by flags pub struct Recorder { #[cfg(feature = "timestamp")] timestamps: std::sync::Arc, + #[cfg(feature = "reuse_weights")] + gpu_cache_hit: Arc>, } impl Recorder { @@ -189,6 +237,8 @@ impl Recorder { return Self { #[cfg(feature = "timestamp")] timestamps: FunctionTimestamp::new(_function_id, _start), + #[cfg(feature = "reuse_weights")] + gpu_cache_hit: Arc::new(Mutex::new(false)), }; } @@ -196,6 +246,8 @@ impl Recorder { return Self { #[cfg(feature = "timestamp")] timestamps: FunctionTimestamp::new(_function_id, _parent.timestamps.creation), + #[cfg(feature = "reuse_weights")] + gpu_cache_hit: Arc::new(Mutex::new(false)), }; } @@ -204,6 +256,14 @@ impl Recorder { self.timestamps.record(_current_point); } + pub fn set_gpu_cache_hit(&mut self, _gpu_cache_hit: bool) { + #[cfg(feature = "reuse_weights")] + { + let mut gpu_cache_hit = self.gpu_cache_hit.lock().unwrap(); + *gpu_cache_hit = _gpu_cache_hit; + } + } + pub fn add_children(&mut self, _new_children: Vec) { #[cfg(feature = "timestamp")] for child in _new_children { @@ -215,6 +275,8 @@ impl Recorder { let recorder = Recorder { #[cfg(feature = "timestamp")] timestamps: self.timestamps.clone(), + #[cfg(feature = "reuse_weights")] + gpu_cache_hit: self.gpu_cache_hit.clone(), }; return recorder; } @@ -231,6 +293,17 @@ impl fmt::Display for Recorder { } self.timestamps.fmt(_f)?; } + #[cfg(feature = "reuse_weights")] + { + if std::sync::Arc::strong_count(&self.gpu_cache_hit) != 1 + && std::sync::Arc::weak_count(&self.gpu_cache_hit) != 0 + { + panic!("Trying to format recorder that still has more than one reference"); + } + #[cfg(feature = "timestamp")] + write!(_f, ",")?; + write!(_f, "gpu_cache_hit: {}", self.gpu_cache_hit.lock().unwrap())?; + } Ok(()) } } @@ -238,6 +311,8 @@ impl fmt::Display for Recorder { pub struct Archive { #[cfg(feature = "timestamp")] timestamp_archive: TimestampArchive, + #[cfg(feature = "reuse_weights")] + gpu_cache_hit_archive: ReuseWeightsArchive, } pub struct ArchiveInit { @@ -250,6 +325,8 @@ impl Archive { return Archive { #[cfg(feature = "timestamp")] timestamp_archive: TimestampArchive::init(), + #[cfg(feature = "reuse_weights")] + gpu_cache_hit_archive: ReuseWeightsArchive::init(), }; } @@ -257,6 +334,9 @@ impl Archive { #[cfg(feature = "timestamp")] self.timestamp_archive .insert(std::sync::Arc::into_inner(_recorder.timestamps).unwrap()); + #[cfg(feature = "reuse_weights")] + self.gpu_cache_hit_archive + .insert(std::sync::Arc::into_inner((*_recorder.gpu_cache_hit.lock().unwrap()).into()).unwrap()); } pub fn get_summary(&self) -> String { @@ -265,11 +345,16 @@ impl Archive { let mut summary = String::new(); #[cfg(feature = "timestamp")] self.timestamp_archive.get_summary(&mut summary); + #[cfg(feature = "reuse_weights")] + self.gpu_cache_hit_archive.get_summary(&mut summary); + println!("{}", summary); return summary; } pub fn reset(&self) { #[cfg(feature = "timestamp")] self.timestamp_archive.reset(); + #[cfg(feature = "reuse_weights")] + self.gpu_cache_hit_archive.reset(); } } diff --git a/server/src/lib.rs b/server/src/lib.rs index f288bfed..75df6276 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -213,6 +213,23 @@ fn encode_response( .copy_from_slice(×tamp_string_len.to_le_bytes()); } + // if reuse_weights is on, add in gpu cache hit information as string + #[cfg(feature = "reuse_weights")] + { + // timestamps formated as formatted string, consisting of a length, the string and a NULL byte + response.push(2); + response.extend_from_slice("gpu_cache_hit\0".as_bytes()); + let recorder_length_offset = response.len(); + response.extend_from_slice(&0i32.to_be_bytes()); + let recorder_string = format!("{}", _timings); + response.extend_from_slice(recorder_string.as_bytes()); + response.push(0); + // set length + 1 to account for terminating 0 + let recorder_string_len = (recorder_string.len() + 1) as i32; + response[recorder_length_offset..recorder_length_offset + 4] + .copy_from_slice(&recorder_string_len.to_le_bytes()); + } + // end docuemnt and set length response.push(0); let doc_length = (response.len() + all_items) as i32; From 982caf850f1137cc18e9134b5051ff6ed2c79574 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 28 Jul 2025 09:38:58 +0200 Subject: [PATCH 168/176] Implement the GPU queue --- dispatcher/src/dispatcher.rs | 18 ++- dispatcher/src/execution_qs.rs | 224 +++++++++++++++++++++++----- dispatcher/src/function_registry.rs | 10 +- 3 files changed, 207 insertions(+), 45 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 7834522c..8035fcf8 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -38,7 +38,12 @@ pub enum DispatcherInput { } pub trait EnqueueWork: Send + Sync { - fn enqueue_work(&self, args: WorkToDo) -> DandelionResult; + /// Enqueued work: + /// - ParsingArguments (only on registration) + /// - LoadingArguments + /// - (multiple) TransferArguments + /// - FunctionArguments + fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult; } pub trait FullQueue: EnqueueWork + WorkQueue { @@ -83,7 +88,7 @@ pub struct Dispatcher { fn get_queue_from_engine(engine_type: EngineType) -> Box { return match engine_type { - #[cfg(feature = "gpu")] + #[cfg(all(feature = "gpu", feature = "gpu_queue"))] EngineType::GpuThread => Box::new(EngineQueueGPU::new()), _ => Box::new(EngineQueue::new()), }; @@ -482,6 +487,7 @@ impl Dispatcher { let options = self.function_registry.get_options(function_id).await?; if let Some(alternative) = options.iter().next() { match &alternative.function_type { + // look here FunctionType::Function(engine_id, ctx_size) => { recorder.record(RecordPoint::PrepareEnvQueue); let (context, config, metadata) = self @@ -502,6 +508,7 @@ impl Dispatcher { metadata.output_sets); let context = self .run_on_engine( + function_id, *engine_id, config, metadata.output_sets, @@ -604,7 +611,7 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - function_context = transfer_queue.enqueue_work(args)?.await?.get_context(); + function_context = transfer_queue.enqueue_work(args, function_id)?.await?.get_context(); function_buffer += 1; } } @@ -648,7 +655,7 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - function_context = transfer_queue.enqueue_work(args)?.await?.get_context(); + function_context = transfer_queue.enqueue_work(args, function_id)?.await?.get_context(); function_item += 1; } } @@ -658,6 +665,7 @@ impl Dispatcher { async fn run_on_engine( &self, + function_id: FunctionId, engine_type: EngineType, function_config: FunctionConfig, output_sets: Arc>, @@ -681,7 +689,7 @@ impl Dispatcher { recorder: subrecoder, }; recorder.record(RecordPoint::ExecutionQueue); - let result = engine_queue.enqueue_work(args)?.await?.get_context(); + let result = engine_queue.enqueue_work(args, function_id)?.await?.get_context(); recorder.record(RecordPoint::FutureReturn); return Ok(result); } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index cd423126..8f854544 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,15 +1,20 @@ -use crate::dispatcher::EnqueueWork; -use core::sync::atomic::{AtomicUsize, Ordering}; -use crossbeam::channel::{TryRecvError, TrySendError}; -use dandelion_commons::{DandelionError, DandelionResult}; +use crate::dispatcher::{EnqueueWork, FullQueue}; +use core::{sync::atomic::{AtomicUsize, Ordering}}; +use crossbeam::{channel::{TryRecvError, TrySendError}}; +use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; use log::error; use machine_interface::{ function_driver::{WorkQueue, WorkToDo}, promise::{Debt, Promise, PromiseBuffer}, }; -use std::{hint, sync::Arc}; +use std::{ + cell::Cell, collections::{HashMap, VecDeque}, hint, sync::{Arc, Mutex}, time::{Duration, Instant, SystemTime, UNIX_EPOCH} +}; const MAX_QUEUE: usize = 4096; +const FRONT_QUEUE: usize = 10; +const MAX_QUEUE_TIME: Duration = Duration::new(0, 30_000_000); // 30 ms +const MAX_IDLE_TIME: Duration = Duration::new(0, 5_000_000); // 100 ms struct AtomicTickets { start: AtomicUsize, @@ -82,7 +87,7 @@ impl WorkQueue for EngineQueue { } impl EnqueueWork for EngineQueue { - fn enqueue_work(&self, args: WorkToDo) -> DandelionResult { + fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; match self.queue_in.try_send((args, debt)) { Ok(()) => (), @@ -115,10 +120,14 @@ impl EngineQueue { } } -#[derive(Clone)] pub struct EngineQueueGPU { - queue_in: crossbeam::channel::Sender<(WorkToDo, Debt)>, - queue_out: crossbeam::channel::Receiver<(WorkToDo, Debt)>, + engine_counter: Cell, + engine_id: u8, + general_queue_in: crossbeam::channel::Sender<(WorkToDo, Debt)>, + general_queue_out: crossbeam::channel::Receiver<(WorkToDo, Debt)>, + function_queue: Arc>>, + last_function: Arc>>, + idle_since: Cell, worker_queue: Arc, promise_buffer: PromiseBuffer, } @@ -126,26 +135,108 @@ pub struct EngineQueueGPU { /// This is run on the engine so it performs asyncornous access to the local state impl WorkQueue for EngineQueueGPU { fn get_engine_args(&self) -> (WorkToDo, Debt) { - // make sure only one thread spins on lock and work gets distributed in order of workers getting free - let local_ticket = self.worker_queue.end.fetch_add(1, Ordering::AcqRel); - while local_ticket != self.worker_queue.start.load(Ordering::Acquire) { - hint::spin_loop(); - } + self.idle_since.set(Instant::now()); let work = loop { - match self.queue_out.try_recv() { + // Make sure that engines acquire the lock in a round-robin fashion + let local_ticket = self.worker_queue.end.fetch_add(1, Ordering::AcqRel); + while local_ticket != self.worker_queue.start.load(Ordering::Acquire) { + hint::spin_loop(); + } + + // If some non-FunctionArguments is ready, run it + let _ = match self.general_queue_out.try_recv() { Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), - Err(TryRecvError::Empty) => continue, Ok(recieved) => { let (recieved_args, recevied_dept) = recieved; if recevied_dept.is_alive() { break (recieved_args, recevied_dept); + } else { + () + } + } + Err(TryRecvError::Empty) => (), + }; + // Else, try to run FunctionArguments WorkToDo + + let mut function_queue = self.function_queue.lock().unwrap(); + + let mut last_function = self.last_function.lock().unwrap(); + let last_function_id = last_function.get(&self.engine_id).unwrap(); + + if !function_queue.is_empty() { + let (first_timestamp, first_function_id, _, _) = &function_queue[0]; + + let now = Instant::now(); + let mut send_idx = usize::MAX; + + // Send first in the queue if: + if *last_function_id == u64::MAX { + // The engine hasn't run any function yet + send_idx = 0; + } else if now.duration_since(self.idle_since.get()) > MAX_IDLE_TIME { + // The engine has been idle for too much time + send_idx = 0; + } else if now.duration_since(*first_timestamp) > MAX_QUEUE_TIME { + // The first request has waited too long + send_idx = 0; + } + + if send_idx == usize::MAX { + let loop_max = std::cmp::min(FRONT_QUEUE, function_queue.len()); + // Send i-th request if: + for i in 0..loop_max { + let (_, function_id, _, _) = &function_queue[i]; + + // The i-th request is of the model loaded by the engine + if *last_function_id == *function_id { + send_idx = i; + break; + } + } + } + + // Send first request if: + // 1) no other request has been chosen + if send_idx == usize::MAX { + let mut someone_has_it = false; + for key in last_function.keys() { + if *key != self.engine_id { + let last_function_id = last_function.get(key).unwrap(); + if *last_function_id == *first_function_id { + someone_has_it = true; + break; + } + } + } + // 2) no other engine has the function loaded + if !someone_has_it { + send_idx = 0; + } + } + + // Actual send, if: + if send_idx != usize::MAX { + match function_queue.remove(send_idx) { + Some((_, function_id, args, debt)) => { + // The debt is still alive + if debt.is_alive() { + last_function.insert(self.engine_id, function_id); + break (args, debt); + } + }, + None => (), } } } + + // If no WorkToDo is selected at all, update the counter + self.worker_queue.start.fetch_add(1, Ordering::Release); }; + // Exiting the loop, update the counter self.worker_queue.start.fetch_add(1, Ordering::Release); return work; } + /// models called with inter-call times that are randomly selected, to "overlap differently" fn try_get_engine_args(&self) -> Option<(WorkToDo, Debt)> { let queue_head = self.worker_queue.start.load(Ordering::Acquire); @@ -160,20 +251,25 @@ impl WorkQueue for EngineQueueGPU { ) .is_ok() { - let try_result = self.queue_out.try_recv(); - self.worker_queue.start.fetch_add(1, Ordering::AcqRel); - return match try_result { - Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), - Err(TryRecvError::Empty) => None, - Ok(received) => { - let (args, dept) = received; - if dept.is_alive() { - Some((args, dept)) - } else { - None + let function_queue_empty = { self.function_queue.lock().unwrap().is_empty() }; + if function_queue_empty { + let try_result = self.general_queue_out.try_recv(); + self.worker_queue.start.fetch_add(1, Ordering::AcqRel); + return match try_result { + Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), + Err(TryRecvError::Empty) => None, + Ok(received) => { + let (args, dept) = received; + if dept.is_alive() { + Some((args, dept)) + } else { + None + } } } - }; + } else { + return None; + } } else { return None; } @@ -181,15 +277,25 @@ impl WorkQueue for EngineQueueGPU { } impl EnqueueWork for EngineQueueGPU { - fn enqueue_work(&self, args: WorkToDo) -> DandelionResult { + fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; - match self.queue_in.try_send((args, debt)) { - Ok(()) => (), - Err(TrySendError::Disconnected(_)) => { - error!("Failed to enqueu work, workqueue has been disconnected") + + match args { + WorkToDo::FunctionArguments { .. } => { + let now = Instant::now(); + self.function_queue.lock().unwrap().push_back((now, function_id, args, debt)); + }, + _ => { + match self.general_queue_in.try_send((args, debt)) { + Ok(()) => (), + Err(TrySendError::Disconnected(_)) => { + error!("Failed to enqueu work, workqueue has been disconnected") + } + Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), + } } - Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), } + return Ok(promise); } } @@ -199,17 +305,57 @@ unsafe impl Sync for EngineQueueGPU {} impl EngineQueueGPU { pub fn new() -> Self { + let engine_counter = Cell::new(0); + let engine_id = 0; + let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); + + let function_queue = Arc::new(Mutex::new(VecDeque::with_capacity(MAX_QUEUE))); + + let last_function = Arc::new(Mutex::new(HashMap::new())); + + let idle_since = Cell::new(Instant::now()); + let tickets = AtomicTickets { start: AtomicUsize::new(0), end: AtomicUsize::new(0), }; - let queue = Arc::new(tickets); + let worker_queue = Arc::new(tickets); + + let promise_buffer = PromiseBuffer::init(MAX_QUEUE); + return EngineQueueGPU { - queue_in: sender, - queue_out: receiver, - worker_queue: queue, - promise_buffer: PromiseBuffer::init(MAX_QUEUE), + engine_counter, + engine_id, + general_queue_in: sender, + general_queue_out: receiver, + function_queue, + last_function, + idle_since, + worker_queue, + promise_buffer, }; } } + +impl Clone for EngineQueueGPU { + fn clone(&self) -> EngineQueueGPU { + self.engine_counter.set(self.engine_counter.get() + 1); + { + let mut last_function = self.last_function.lock().unwrap(); + last_function.insert(self.engine_counter.get(), u64::MAX); + } + + EngineQueueGPU { + engine_counter: self.engine_counter.clone(), + engine_id: self.engine_counter.get(), + general_queue_in: self.general_queue_in.clone(), + general_queue_out: self.general_queue_out.clone(), + function_queue: self.function_queue.clone(), + idle_since: Cell::new(Instant::now()), + last_function: self.last_function.clone(), + worker_queue: self.worker_queue.clone(), + promise_buffer: self.promise_buffer.clone(), + } + } +} diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 2c520fad..24d42a9d 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -84,6 +84,7 @@ impl FunctionDict { /// Function to create a future that returns the loaded function async fn load_local( + function_id: FunctionId, static_domain: Arc>, driver: &'static dyn Driver, mut recorder: Recorder, @@ -99,6 +100,7 @@ async fn load_local( static_domain, recorder: recorder.get_sub_recorder(), }, + function_id )? .await? .get_function(); @@ -386,6 +388,7 @@ impl FunctionRegistry { func_future.clone() } else { let func_future = (Box::pin(load_local( + function_id, domain.clone(), *driver, recorder.get_sub_recorder(), @@ -406,7 +409,11 @@ impl FunctionRegistry { }; drop(lock_guard); let function = function_future.await?; - let function_config = function.config.clone(); + let mut function_config = function.config.clone(); + if let FunctionConfig::GpuConfig(ref mut config) = function_config { + config.function_id = function_id; + } + recorder.record(RecordPoint::LoadQueue); let context_work_done = load_queue .enqueue_work( @@ -416,6 +423,7 @@ impl FunctionRegistry { recorder: recorder.get_sub_recorder(), ctx_size: ctx_size, }, + function_id )? .await; recorder.record(RecordPoint::LoadDequeue); From 9d5bf77948ae32c75013d43b7cc3a0c8b39b0cc3 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 20 Aug 2025 16:19:14 +0200 Subject: [PATCH 169/176] weights_from_disk bug fix --- server/src/main.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 7c1cb4fd..ee47159f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -273,10 +273,9 @@ async fn register_function( }; #[cfg(feature = "weights_from_disk")] - { - let inputs_folder = format!("{}/{}_weights", FUNCTION_FOLDER_PATH, &request_map.name); - std::fs::create_dir_all(&inputs_folder).unwrap(); - } + let inputs_folder = format!("{}/{}_weights", FUNCTION_FOLDER_PATH, &request_map.name); + #[cfg(feature = "weights_from_disk")] + std::fs::create_dir_all(&inputs_folder).unwrap(); let input_sets = request_map .input_sets From 08ebe3b25752401bde52d16f17c2f093fde09457 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 20 Aug 2025 16:30:53 +0200 Subject: [PATCH 170/176] implement SubBytes for GpuContext: also inputs are referenced and not copied, like model weights --- .../src/function_driver/compute_driver/gpu.rs | 24 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 637 +++++++++++++++--- machine_interface/src/memory_domain.rs | 65 +- machine_interface/src/memory_domain/gpu.rs | 97 ++- 4 files changed, 674 insertions(+), 149 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index a99b90b4..1004af10 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -138,6 +138,10 @@ pub fn gpu_run( ContextType::Gpu(ref gpu_context) => &gpu_context.read_only, _ => return Err(DandelionError::ContextMissmatch), }; + let inputs_data = match context.context { + ContextType::Gpu(ref gpu_context) => &gpu_context.inputs, + _ => return Err(DandelionError::ContextMissmatch), + }; // Load modules and kernels let mut loaded_modules_map: HashMap = HashMap::new(); @@ -206,10 +210,26 @@ pub fn gpu_run( } for name in &config.blueprint.inputs { - let size = get_data_length(name, &context)?; + // TODO : don't use read but read chunks separately and allocate memory with memcpy with specific offests + let input = inputs_data.get(name.as_str()).unwrap(); + let size = input.position.size; + let _ = buffer_pool.alloc_buffer(name, size, false)?; let dev_ptr = buffer_pool.get_pointer(name)?; - copy_data_to_device(name, &context, &dev_ptr)?; + + let mut data_read = 0; + while data_read < size { + let data = input + .context + .get_chunk_ref(input.position.offset + data_read, input.position.size - data_read) + .unwrap(); + let size_read = data.len(); + let data_pointer = data.as_ptr() as *const c_void; + + gpu_api::memcpy_h_to_d(&dev_ptr, data_read.try_into().unwrap(), data_pointer, size_read)?; + + data_read += size_read + 1; + } } for (name, sizing) in &config.blueprint.buffers { let size = get_size(sizing, &buffer_pool, &context)? as usize; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 7a2b684f..5e2f3134 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -1833,24 +1833,6 @@ pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, ) } -pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; - - add_buffer("test", 16, params_path, &mut function_context); - add_buffer("p0", 8, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 8; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - ( - output_size, - output_name.to_string(), - expected, - function_context, - ) -} - pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; @@ -2047,65 +2029,6 @@ pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, ) } -pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 589824, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 589824, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 589824, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 1048576, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 1048576, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 1048576, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 4194304, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 4194304, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 16777216, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 16777216, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - ( - output_size, - output_name.to_string(), - expected, - function_context, - ) -} - pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet34/"; @@ -3001,6 +2924,127 @@ pub fn load_mobilenetv2(mut function_context: Context) -> (usize, String, Vec (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18-batch2/"; + + add_buffer("input", 1204224, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18-batch4(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18-batch4/"; + + add_buffer("input", 2408448, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 16000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; + + add_buffer("test", 16, params_path, &mut function_context); + add_buffer("p0", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; @@ -3012,10 +3056,437 @@ pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec< let output_size: usize = 12; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - ( - output_size, - output_name.to_string(), - expected, - function_context, - ) + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch2(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch2/"; + + add_buffer("input", 1204224, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch4(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch4/"; + + add_buffer("input", 2408448, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 16000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch8(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch8/"; + + add_buffer("input", 4816896, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 32000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch16(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch16/"; + + add_buffer("input", 9633792, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 64000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch32(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch32/"; + + add_buffer("input", 19267584, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 128000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch64(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch64/"; + + add_buffer("input", 38535168, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 256000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18_batch3(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch3/"; + + add_buffer("input", 1806336, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 12000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) } diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 4726e740..a05edc15 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -376,62 +376,17 @@ pub fn transfer_memory( #[cfg(feature = "gpu")] (ContextType::Gpu(destination_ctxt), ContextType::ReadOnly(source_ctxt)) => { // Transfer function registering buffers: weights + .cubin - let Some(ref data_set) = source.content[0] else { todo!() }; - let ident = &data_set.ident.to_string(); - - #[cfg(feature = "weights_from_disk")] - { - use crate::memory_domain::read_only::ReadOnlyContext; - let disk_path = source_ctxt.disk_path.clone().unwrap(); - let split_path = disk_path.split("/").collect::>(); - let name = split_path[split_path.len() - 1].to_string(); - let data_vec = std::fs::read(&disk_path).unwrap(); - let item_size = data_vec.len(); - let mut new_context = - ReadOnlyContext::new(data_vec.into_boxed_slice()).unwrap(); - new_context.content.push(Some(DataSet { - ident: ident.clone(), - buffers: vec![DataItem { - ident: ident.clone(), - data: Position { - offset: 0, - size: item_size, - }, - key: 0, - }], - })); - let new_source = Arc::new(new_context); - - destination_ctxt.read_only.insert( - ident.clone(), - SubReadOnly { - context: new_source, - position: Position { - offset: source_offset, - size - } - } - ); - } - - #[cfg(not(feature = "weights_from_disk"))] - { - destination_ctxt.read_only.insert( - ident.clone(), - SubReadOnly { - context: source, - position: Position { - offset: source_offset, - size - } - } - ); - } - - Ok(()) + gpu::read_only_to_gpu_transfer( + destination_ctxt, + source, + destination_offset, + source_offset, + size, + ) }, #[cfg(feature = "gpu")] (ContextType::Gpu(destination_ctxt), ContextType::Gpu(source_ctxt)) => { + // Never called // Transfer nothing really... gpu::gpu_transfer( destination_ctxt, @@ -444,9 +399,9 @@ pub fn transfer_memory( #[cfg(all(feature = "gpu", feature = "bytes_context"))] (ContextType::Gpu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { // Transfer request inputs - gpu::bytest_to_gpu_transfer( + gpu::bytes_to_gpu_transfer( destination_ctxt, - source_ctxt, + source, destination_offset, source_offset, size, diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index 94c36098..8575a1f5 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -21,10 +21,17 @@ pub struct SubReadOnly { pub position: Position, } +#[derive(Debug)] +pub struct SubBytes { + pub context: Arc, + pub position: Position, +} + #[derive(Debug)] pub struct GpuContext { pub storage: MmapMem, pub read_only: HashMap, + pub inputs: HashMap, } impl ContextTrait for GpuContext { @@ -187,11 +194,76 @@ impl MemoryDomain for GpuMemoryDomain { let new_context = Box::new(GpuContext { storage: mem_space, read_only: HashMap::new(), + inputs: HashMap::new(), }); Ok(Context::new(ContextType::Gpu(new_context), actual_size)) } } +pub fn read_only_to_gpu_transfer( + destination_ctxt: &mut GpuContext, + source: Arc, + destination_offset: usize, + source_offset: usize, + size: usize, +) -> DandelionResult<()> { + let Some(ref data_set) = source.content[0] else { todo!() }; + let ident = &data_set.ident.to_string(); + + #[cfg(feature = "weights_from_disk")] + { + use crate::{DataSet, DataItem}; + use crate::memory_domain::read_only::ReadOnlyContext; + let ContextType::ReadOnly(source_ctxt) = &source.context else { todo!() }; + let disk_path = source_ctxt.disk_path.clone().unwrap(); + let split_path = disk_path.split("/").collect::>(); + let name = split_path[split_path.len() - 1].to_string(); + let data_vec = std::fs::read(&disk_path).unwrap(); + let item_size = data_vec.len(); + let mut new_context = + ReadOnlyContext::new(data_vec.into_boxed_slice()).unwrap(); + new_context.content.push(Some(DataSet { + ident: ident.clone(), + buffers: vec![DataItem { + ident: ident.clone(), + data: Position { + offset: 0, + size: item_size, + }, + key: 0, + }], + })); + let new_source = Arc::new(new_context); + + destination_ctxt.read_only.insert( + ident.clone(), + SubReadOnly { + context: new_source, + position: Position { + offset: source_offset, + size + } + } + ); + } + + #[cfg(not(feature = "weights_from_disk"))] + { + destination_ctxt.read_only.insert( + ident.clone(), + SubReadOnly { + context: source, + position: Position { + offset: source_offset, + size + } + } + ); + } + + Ok(()) +} + pub fn gpu_transfer( destination: &mut GpuContext, source: &GpuContext, @@ -220,18 +292,25 @@ pub fn gpu_transfer( } #[cfg(feature = "bytes_context")] -pub fn bytest_to_gpu_transfer( - destination: &mut GpuContext, - source: &crate::memory_domain::bytes_context::BytesContext, +pub fn bytes_to_gpu_transfer( + destination_ctxt: &mut GpuContext, + source: Arc, destination_offset: usize, source_offset: usize, size: usize, ) -> DandelionResult<()> { - // check if bounds for gpu context - if destination.storage.size() < destination_offset + size { - return Err(DandelionError::InvalidWrite); - } - let mmu_slice = &mut destination.storage[destination_offset..destination_offset + size]; - source.read(source_offset, mmu_slice)?; + let Some(ref data_set) = source.content[0] else { todo!() }; + let ident = &data_set.ident.to_string(); + + destination_ctxt.inputs.insert( + ident.clone(), + SubBytes { + context: source, + position: Position { + offset: source_offset, + size + } + } + ); Ok(()) } From 61f69fb1e7dd52f177fac82cec07411bf55cc896 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Fri, 29 Aug 2025 11:48:02 +0200 Subject: [PATCH 171/176] feature : auto-batching implemented --- dispatcher/Cargo.toml | 1 + dispatcher/src/composition.rs | 22 + dispatcher/src/dispatcher.rs | 212 +++++++-- dispatcher/src/execution_qs.rs | 412 +++++++++++++++--- machine_interface/Cargo.toml | 1 + machine_interface/src/function_driver.rs | 34 ++ .../src/function_driver/compute_driver/gpu.rs | 171 ++++++-- .../compute_driver/gpu/buffer_pool.rs | 16 +- .../compute_driver/gpu/config_parsing.rs | 9 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 237 +++++----- .../compute_driver/gpu/gpu_utils.rs | 104 ++++- .../src/function_driver/thread_utils.rs | 24 +- machine_interface/src/memory_domain/gpu.rs | 29 +- server/Cargo.toml | 1 + server/src/main.rs | 2 + 15 files changed, 994 insertions(+), 281 deletions(-) diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index cbb9b8f0..7985eb97 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -25,3 +25,4 @@ reqwest_io = ["machine_interface/reqwest_io"] timestamp = ["dandelion_commons/timestamp"] gpu = ["machine_interface/gpu"] gpu_queue = [] +auto_batching = [] diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index 4bf35d74..0fe87fcf 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -400,6 +400,28 @@ impl From<(usize, Vec>)> for CompositionSet { } } +// TODO : is there a better way? +#[cfg(feature = "auto_batching")] +use machine_interface::function_driver::AtomInputs; +#[cfg(feature = "auto_batching")] +impl Into for CompositionSet { + fn into(self) -> AtomInputs { + AtomInputs { + item_list: self.item_list.clone(), + set_index: self.set_index.clone(), + } + } +} +#[cfg(feature = "auto_batching")] +impl From for CompositionSet { + fn from(atom_inputs: AtomInputs) -> CompositionSet { + CompositionSet { + item_list: atom_inputs.item_list.clone(), + set_index: atom_inputs.set_index.clone(), + } + } +} + pub struct CompositionSetTransferIterator<'origin> { /// set for which this iterator is implemented set_iterator: std::slice::Iter<'origin, (u32, usize, Arc)>, diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 8035fcf8..5568decd 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -31,6 +31,11 @@ use std::{ sync::Arc, }; +#[cfg(feature = "auto_batching")] +use crate::execution_qs::BatchingQueue; +#[cfg(feature = "auto_batching")] +use machine_interface::function_driver::{AtomInputs, BatchInfo, WorkDone}; + #[derive(Debug, Clone)] pub enum DispatcherInput { None, @@ -88,6 +93,8 @@ pub struct Dispatcher { fn get_queue_from_engine(engine_type: EngineType) -> Box { return match engine_type { + #[cfg(all(feature = "gpu", feature = "auto_batching"))] + EngineType::GpuThread => Box::new(BatchingQueue::new()), #[cfg(all(feature = "gpu", feature = "gpu_queue"))] EngineType::GpuThread => Box::new(EngineQueueGPU::new()), _ => Box::new(EngineQueue::new()), @@ -487,51 +494,168 @@ impl Dispatcher { let options = self.function_registry.get_options(function_id).await?; if let Some(alternative) = options.iter().next() { match &alternative.function_type { - // look here FunctionType::Function(engine_id, ctx_size) => { - recorder.record(RecordPoint::PrepareEnvQueue); - let (context, config, metadata) = self - .prepare_for_engine( - function_id, - *engine_id, - inputs, - *ctx_size, - non_caching, - recorder.get_sub_recorder(), - ) - .await?; - recorder.record(RecordPoint::GetEngineQueue); - trace!("running function {} on {:?} type engine with input sets {:?} and output sets {:?}", - function_id, - *engine_id, - metadata.input_sets.iter().map(|(name, _)| name).collect_vec(), - metadata.output_sets); - let context = self - .run_on_engine( - function_id, - *engine_id, - config, - metadata.output_sets, - context, - recorder.get_sub_recorder(), - ) - .await?; - let context_arc = Arc::new(context); - - let composition_sets = context_arc - .content - .iter() - .enumerate() - .map(|(function_set_id, data_option)| { - data_option.as_ref().and_then(|_| { - Some(CompositionSet::from(( - function_set_id, - vec![context_arc.clone()], - ))) - }) - }) - .collect(); - return Ok(composition_sets); + match engine_id { + #[cfg(feature = "auto_batching")] + EngineType::GpuThread => { + let context_id = match self.type_map.get(engine_id) { + Some(id) => id, + None => return Err(DandelionError::Dispatcher(DispatcherError::ConfigError)), + }; + let (domain, transfer_queue) = match self.domains.get(context_id) { + Some(d) => d, + None => return Err(DandelionError::Dispatcher(DispatcherError::ConfigError)), + }; + + let tmp = inputs.clone(); + + let mut atom_inputs = Vec::new(); + for input in inputs.clone() { + if input.is_some() { + let atom_input: AtomInputs = input.unwrap().into(); + atom_inputs.push(Some(atom_input)); + } else { + atom_inputs.push(None); + } + } + + // TODO : recorder.record(...) : measure time in queue + let args = WorkToDo::BatchAtom { + function_id, + inputs: atom_inputs, + recorder: recorder.get_sub_recorder(), + inputs_vec: None, + children_debts: None, + }; + let batch_info = transfer_queue.enqueue_work(args, function_id)?.await?.get_shared_context(); + // TODO : recorder.record(...) + + let batch_pos = batch_info.batch_pos; + + let context_arc = if batch_pos == 0 { + let inputs_vec = batch_info.inputs_vec.unwrap(); + + // variable inputs needs to contain ALL INPUTS, with indexed names: input0, input1, ... + let mut compositions_vec = Vec::new(); + for input in inputs_vec { + if input.is_some() { + let composition_set = CompositionSet::from(input.unwrap()); + compositions_vec.push(Some(composition_set)); + } else { + compositions_vec.push(None); + } + } + + recorder.record(RecordPoint::PrepareEnvQueue); + let (context, config, metadata) = self + .prepare_for_engine( + function_id, + *engine_id, + compositions_vec, + *ctx_size, + non_caching, + recorder.get_sub_recorder(), + ) + .await?; + recorder.record(RecordPoint::GetEngineQueue); + + trace!("running function {} on {:?} type engine with input sets {:?} and output sets {:?}", + function_id, + *engine_id, + metadata.input_sets.iter().map(|(name, _)| name).collect_vec(), + metadata.output_sets); + + let context = self + .run_on_engine( + function_id, + *engine_id, + config, + metadata.output_sets, + context, + recorder.get_sub_recorder(), + ) + .await?; + let context_arc = Arc::new(context); + + let mut debts = batch_info.children_debts.unwrap(); + for i in (1..=debts.len()).rev() { + let debt = debts.pop().unwrap(); + debt.fulfill(Ok(WorkDone::SharedContext(BatchInfo { + batch_pos: i, + inputs_vec: None, + context_arc: Some(context_arc.clone()), + children_debts: None, + }))); + } + + context_arc + } else { + batch_info.context_arc.unwrap() + }; + + let composition_sets = context_arc + .content + .iter() + .enumerate() + .filter(|(function_set_id, _)| *function_set_id == batch_pos) + .map(|(function_set_id, data_option)| { + data_option.as_ref().and_then(|_| { + Some(CompositionSet::from(( + function_set_id, + vec![context_arc.clone()], + ))) + }) + }) + .collect(); + + return Ok(composition_sets); + }, + _ => { + recorder.record(RecordPoint::PrepareEnvQueue); + let (context, config, metadata) = self + .prepare_for_engine( + function_id, + *engine_id, + inputs, + *ctx_size, + non_caching, + recorder.get_sub_recorder(), + ) + .await?; + recorder.record(RecordPoint::GetEngineQueue); + trace!("running function {} on {:?} type engine with input sets {:?} and output sets {:?}", + function_id, + *engine_id, + metadata.input_sets.iter().map(|(name, _)| name).collect_vec(), + metadata.output_sets); + let context = self + .run_on_engine( + function_id, + *engine_id, + config, + metadata.output_sets, + context, + recorder.get_sub_recorder(), + ) + .await?; + let context_arc = Arc::new(context); + + let composition_sets = context_arc + .content + .iter() + .enumerate() + .map(|(function_set_id, data_option)| { + data_option.as_ref().and_then(|_| { + Some(CompositionSet::from(( + function_set_id, + vec![context_arc.clone()], + ))) + }) + }) + .collect(); + return Ok(composition_sets); + } + } } FunctionType::Composition(composition) => { return self diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 8f854544..a2b8e611 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,6 +1,6 @@ use crate::dispatcher::{EnqueueWork, FullQueue}; -use core::{sync::atomic::{AtomicUsize, Ordering}}; -use crossbeam::{channel::{TryRecvError, TrySendError}}; +use core::sync::atomic::{AtomicUsize, Ordering}; +use crossbeam::channel::{TryRecvError, TrySendError}; use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; use log::error; use machine_interface::{ @@ -8,13 +8,20 @@ use machine_interface::{ promise::{Debt, Promise, PromiseBuffer}, }; use std::{ - cell::Cell, collections::{HashMap, VecDeque}, hint, sync::{Arc, Mutex}, time::{Duration, Instant, SystemTime, UNIX_EPOCH} + cell::Cell, + cmp, + collections::{HashMap, VecDeque}, + hint, + sync::{Arc, Mutex}, + time::{Duration, Instant, SystemTime, UNIX_EPOCH}, }; -const MAX_QUEUE: usize = 4096; -const FRONT_QUEUE: usize = 10; +const MAX_QUEUE: usize = 16384; +const FRONT_QUEUE: usize = 10; // Specify how many requests can be looked at each polling iteration; limit it to lower polling time const MAX_QUEUE_TIME: Duration = Duration::new(0, 30_000_000); // 30 ms -const MAX_IDLE_TIME: Duration = Duration::new(0, 5_000_000); // 100 ms +const MAX_IDLE_TIME: Duration = Duration::new(0, 5_000_000); // 5 ms +const SOFT_MIN_BATCHED: usize = 16; +const MAX_BATCHED: usize = 128; struct AtomicTickets { start: AtomicUsize, @@ -132,7 +139,6 @@ pub struct EngineQueueGPU { promise_buffer: PromiseBuffer, } -/// This is run on the engine so it performs asyncornous access to the local state impl WorkQueue for EngineQueueGPU { fn get_engine_args(&self) -> (WorkToDo, Debt) { self.idle_since.set(Instant::now()); @@ -157,7 +163,7 @@ impl WorkQueue for EngineQueueGPU { Err(TryRecvError::Empty) => (), }; // Else, try to run FunctionArguments WorkToDo - + let mut function_queue = self.function_queue.lock().unwrap(); let mut last_function = self.last_function.lock().unwrap(); @@ -223,7 +229,7 @@ impl WorkQueue for EngineQueueGPU { last_function.insert(self.engine_id, function_id); break (args, debt); } - }, + } None => (), } } @@ -239,61 +245,30 @@ impl WorkQueue for EngineQueueGPU { /// models called with inter-call times that are randomly selected, to "overlap differently" fn try_get_engine_args(&self) -> Option<(WorkToDo, Debt)> { - let queue_head = self.worker_queue.start.load(Ordering::Acquire); - if self - .worker_queue - .end - .compare_exchange( - queue_head, - queue_head + 1, - Ordering::AcqRel, - Ordering::Acquire, - ) - .is_ok() - { - let function_queue_empty = { self.function_queue.lock().unwrap().is_empty() }; - if function_queue_empty { - let try_result = self.general_queue_out.try_recv(); - self.worker_queue.start.fetch_add(1, Ordering::AcqRel); - return match try_result { - Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), - Err(TryRecvError::Empty) => None, - Ok(received) => { - let (args, dept) = received; - if dept.is_alive() { - Some((args, dept)) - } else { - None - } - } - } - } else { - return None; - } - } else { - return None; - } + // TODO + return None; } } impl EnqueueWork for EngineQueueGPU { fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; - + match args { WorkToDo::FunctionArguments { .. } => { let now = Instant::now(); - self.function_queue.lock().unwrap().push_back((now, function_id, args, debt)); - }, - _ => { - match self.general_queue_in.try_send((args, debt)) { - Ok(()) => (), - Err(TrySendError::Disconnected(_)) => { - error!("Failed to enqueu work, workqueue has been disconnected") - } - Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), - } + self.function_queue + .lock() + .unwrap() + .push_back((now, function_id, args, debt)); } + _ => match self.general_queue_in.try_send((args, debt)) { + Ok(()) => (), + Err(TrySendError::Disconnected(_)) => { + error!("Failed to enqueu work, workqueue has been disconnected") + } + Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), + }, } return Ok(promise); @@ -309,21 +284,21 @@ impl EngineQueueGPU { let engine_id = 0; let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); - + let function_queue = Arc::new(Mutex::new(VecDeque::with_capacity(MAX_QUEUE))); let last_function = Arc::new(Mutex::new(HashMap::new())); let idle_since = Cell::new(Instant::now()); - + let tickets = AtomicTickets { start: AtomicUsize::new(0), end: AtomicUsize::new(0), }; let worker_queue = Arc::new(tickets); - + let promise_buffer = PromiseBuffer::init(MAX_QUEUE); - + return EngineQueueGPU { engine_counter, engine_id, @@ -359,3 +334,324 @@ impl Clone for EngineQueueGPU { } } } + +#[cfg(feature = "auto_batching")] +pub struct BatchingQueue { + engine_counter: Cell, + engine_id: u8, + general_queue_in: crossbeam::channel::Sender<(WorkToDo, Debt)>, + general_queue_out: crossbeam::channel::Receiver<(WorkToDo, Debt)>, + atoms_times: Arc>>, + atoms_map: Arc>>>, + last_function: Arc>>, + idle_since: Cell, + worker_queue: Arc, + promise_buffer: PromiseBuffer, +} + +#[cfg(feature = "auto_batching")] +impl WorkQueue for BatchingQueue { + fn get_engine_args(&self) -> (WorkToDo, Debt) { + self.idle_since.set(Instant::now()); + let work = loop { + // Make sure that engines acquire the lock in a round-robin fashion + let local_ticket = self.worker_queue.end.fetch_add(1, Ordering::AcqRel); + while local_ticket != self.worker_queue.start.load(Ordering::Acquire) { + hint::spin_loop(); + } + + // If some non-FunctionArguments is ready, run it + let _ = match self.general_queue_out.try_recv() { + Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), + Ok(recieved) => { + let (recieved_args, recevied_dept) = recieved; + if recevied_dept.is_alive() { + break (recieved_args, recevied_dept); + } else { + () + } + } + Err(TryRecvError::Empty) => (), + }; + // Else, try to run BatchAtom WorkToDo + + let mut atoms_times = self.atoms_times.lock().unwrap(); + + let mut last_function = self.last_function.lock().unwrap(); + let last_function_id = last_function.get(&self.engine_id).unwrap(); + + if !atoms_times.is_empty() { + let (first_timestamp, first_function_id) = &atoms_times[0]; + + let now = Instant::now(); + let mut send_idx = usize::MAX; + let mut send_function_id = u64::MAX; + + // Send first in the queue if: + if *last_function_id == u64::MAX { + // The engine hasn't run any function yet + send_idx = 0; + send_function_id = *first_function_id; + } else if now.duration_since(self.idle_since.get()) > MAX_IDLE_TIME { + // The engine has been idle for too much time + send_idx = 0; + send_function_id = *first_function_id; + } else if now.duration_since(*first_timestamp) > MAX_QUEUE_TIME { + // The first request has waited too long + send_idx = 0; + send_function_id = *first_function_id; + } + + if send_idx == usize::MAX { + let loop_max = std::cmp::min(FRONT_QUEUE, atoms_times.len()); + // Send i-th request if: + for i in 0..loop_max { + let (_, function_id) = &atoms_times[i]; + + // The i-th request is of the model loaded by the engine + if *last_function_id == *function_id { + send_idx = i; + send_function_id = *function_id; + break; + } + } + } + + // Send first request if: + // 1) no other request has been chosen, AND + if send_idx == usize::MAX { + let mut someone_has_it = false; + for key in last_function.keys() { + if *key != self.engine_id { + let last_function_id = last_function.get(key).unwrap(); + if *last_function_id == *first_function_id { + someone_has_it = true; + break; + } + } + } + // 2) no other engine has the function loaded + if !someone_has_it { + send_idx = 0; + send_function_id = *first_function_id; + } + } + + // Skip if batch would be too small: + if send_function_id != u64::MAX { + let mut atoms_map = self.atoms_map.lock().unwrap(); + let mut requests_list = atoms_map.get_mut(&send_function_id).unwrap(); + // if requests_list.len() < SOFT_MIN_BATCHED { + if self.idle_since.get().elapsed() < Duration::from_millis(10) + && requests_list.len() < SOFT_MIN_BATCHED + { + send_function_id = u64::MAX; + } + } + + // Actual send, if: + if send_function_id != u64::MAX { + let mut atoms_map = self.atoms_map.lock().unwrap(); + let mut requests_list = atoms_map.get_mut(&send_function_id).unwrap(); + + let (mut head_args, head_debt) = requests_list.pop_front().unwrap(); + + if head_debt.is_alive() { + // Prepare the batch: + let mut batched = 1; + let mut tmp_inputs_vec = Vec::new(); + let mut call_children_debts = Vec::new(); + + // Copy inputs of first request + if let WorkToDo::BatchAtom { + ref inputs, + function_id: _, + recorder: _, + inputs_vec: _, + children_debts: _, + } = head_args + { + for input in inputs { + tmp_inputs_vec.push(input.clone().unwrap()); + } + } + + // Copy inputs of other requests + let inner_loop_max = cmp::min(requests_list.len(), MAX_BATCHED - 1); + for i in 1..=inner_loop_max { + let (child_args, child_debt) = requests_list.pop_front().unwrap(); + if let WorkToDo::BatchAtom { + inputs, + function_id: _, + recorder: _, + inputs_vec: _, + children_debts: _, + } = child_args + { + for (i, input) in inputs.into_iter().enumerate() { + tmp_inputs_vec[i].item_list.extend(input.unwrap().item_list); + } + call_children_debts.push(child_debt); + } + } + batched += inner_loop_max; + println!("{} requests batched", batched); + + // Workaround to support batch size 1 + if batched == 1 { + let copy_first_input = tmp_inputs_vec[0].item_list.clone(); + tmp_inputs_vec[0].item_list.extend(copy_first_input); + } + + // Remove the batched requests from the time-based queue + let mut idx = 0; + let mut removed = 0; + while removed < batched { + let (_, function_id) = &atoms_times[idx]; + if *function_id == send_function_id { + atoms_times.remove(idx); + removed += 1; + } else { + idx += 1; + } + } + + let mut call_inputs_vec = Vec::new(); + for set in tmp_inputs_vec { + call_inputs_vec.push(Some(set)); + } + + // Make head request ready to run whole batch + if let WorkToDo::BatchAtom { + ref mut inputs_vec, + ref mut children_debts, + function_id: _, + inputs: _, + recorder: _, + } = head_args + { + *inputs_vec = Some(call_inputs_vec); + *children_debts = Some(call_children_debts); + } + + break (head_args, head_debt); + } + } + } + + // If no WorkToDo is selected at all, update the counter + self.worker_queue.start.fetch_add(1, Ordering::Release); + }; + // Exiting the loop, update the counter + self.worker_queue.start.fetch_add(1, Ordering::Release); + return work; + } + /// models called with inter-call times that are randomly selected, to "overlap differently" + + fn try_get_engine_args(&self) -> Option<(WorkToDo, Debt)> { + // TODO + return None; + } +} + +#[cfg(feature = "auto_batching")] +impl EnqueueWork for BatchingQueue { + fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { + let (promise, debt) = self.promise_buffer.get_promise()?; + + match args { + #[cfg(feature = "auto_batching")] + WorkToDo::BatchAtom { .. } => { + let now = Instant::now(); + + let mut atoms_times = self.atoms_times.lock().unwrap(); + atoms_times.push_back((now, function_id)); + + let mut atoms_map = self.atoms_map.lock().unwrap(); + atoms_map + .entry(function_id) + .or_insert(VecDeque::with_capacity(MAX_QUEUE)); + atoms_map + .get_mut(&function_id) + .unwrap() + .push_back((args, debt)); + } + _ => match self.general_queue_in.try_send((args, debt)) { + Ok(()) => (), + Err(TrySendError::Disconnected(_)) => { + error!("Failed to enqueu work, workqueue has been disconnected") + } + Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), + }, + } + + return Ok(promise); + } +} + +#[cfg(feature = "auto_batching")] +unsafe impl Send for BatchingQueue {} +#[cfg(feature = "auto_batching")] +unsafe impl Sync for BatchingQueue {} + +#[cfg(feature = "auto_batching")] +impl BatchingQueue { + pub fn new() -> Self { + let engine_counter = Cell::new(0); + let engine_id = 0; + + let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); + + let atoms_times = Arc::new(Mutex::new(VecDeque::with_capacity(MAX_QUEUE))); + let atoms_map = Arc::new(Mutex::new(HashMap::new())); + + let last_function = Arc::new(Mutex::new(HashMap::new())); + + let idle_since = Cell::new(Instant::now()); + + let tickets = AtomicTickets { + start: AtomicUsize::new(0), + end: AtomicUsize::new(0), + }; + let worker_queue = Arc::new(tickets); + + let promise_buffer = PromiseBuffer::init(MAX_QUEUE); + + return BatchingQueue { + engine_counter, + engine_id, + general_queue_in: sender, + general_queue_out: receiver, + atoms_times, + atoms_map, + last_function, + idle_since, + worker_queue, + promise_buffer, + }; + } +} + +#[cfg(feature = "auto_batching")] +impl Clone for BatchingQueue { + fn clone(&self) -> BatchingQueue { + self.engine_counter.set(self.engine_counter.get() + 1); + { + let mut last_function = self.last_function.lock().unwrap(); + last_function.insert(self.engine_counter.get(), u64::MAX); + } + + BatchingQueue { + engine_counter: self.engine_counter.clone(), + engine_id: self.engine_counter.get(), + general_queue_in: self.general_queue_in.clone(), + general_queue_out: self.general_queue_out.clone(), + atoms_times: self.atoms_times.clone(), + atoms_map: self.atoms_map.clone(), + idle_since: Cell::new(Instant::now()), + last_function: self.last_function.clone(), + worker_queue: self.worker_queue.clone(), + promise_buffer: self.promise_buffer.clone(), + } + } +} diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 0e4e472a..c4f76ec9 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -22,6 +22,7 @@ gpu_thread = ["gpu"] test_export = [] reuse_weights = ["gpu"] weights_from_disk = ["gpu"] +auto_batching = ["gpu"] [build-dependencies] cmake = "0.1" diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index cd493519..7dd913d4 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -135,6 +135,15 @@ pub enum ComputeResource { GPU(u8, u8, u8), // CPU core, GPU id, number of workers per GPU (only relevant for gpu_process). Eventually the CPU and GPU parts should be split } +#[cfg(feature = "auto_batching")] +#[derive(Clone, Debug)] +pub struct AtomInputs { + /// items identfied by tuple of key, item index and the context reference + pub item_list: Vec<(u32, usize, Arc)>, + /// the set side inside the contexts the composition set represents + pub set_index: usize, +} + pub enum WorkToDo { FunctionArguments { config: FunctionConfig, @@ -165,13 +174,31 @@ pub enum WorkToDo { ctx_size: usize, recorder: Recorder, }, + #[cfg(feature = "auto_batching")] + BatchAtom { + function_id: FunctionId, + inputs: Vec>, + recorder: Recorder, + inputs_vec: Option>>, + children_debts: Option>, + }, Shutdown(), } +#[cfg(feature = "auto_batching")] +pub struct BatchInfo { + pub batch_pos: usize, + pub inputs_vec: Option>>, + pub context_arc: Option>, + pub children_debts: Option>, +} + pub enum WorkDone { Context(Context), Function(Function), Resources(Vec), + #[cfg(feature = "auto_batching")] + SharedContext(BatchInfo), } impl WorkDone { @@ -187,6 +214,13 @@ impl WorkDone { _ => panic!("WorkDone is not function when function was expected"), }; } + #[cfg(feature = "auto_batching")] + pub fn get_shared_context(self) -> BatchInfo { + return match self { + WorkDone::SharedContext(batched_info) => batched_info, + _ => panic!("WorkDone is not SharedContext when SharedContext was expected"), + }; + } } pub trait WorkQueue { diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 1004af10..c07fed15 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -1,12 +1,10 @@ +#[cfg(feature = "gpu_process")] +use self::gpu_utils::start_gpu_process_pool; use self::{ buffer_pool::BufferPool, config_parsing::{Action, Argument, RuntimeGpuConfig, SYSDATA_OFFSET}, - gpu_utils::{ - copy_data_to_device, get_data_length, get_size, write_gpu_outputs, - }, + gpu_utils::{copy_data_to_device, get_data_length, get_size, write_gpu_outputs}, }; -#[cfg(feature = "gpu_process")] -use self::gpu_utils::start_gpu_process_pool; use crate::{ function_driver::{ thread_utils::{run_thread, EngineLoop}, @@ -46,6 +44,7 @@ fn execute( buffer_pool: &BufferPool, context: &Context, config: &RuntimeGpuConfig, + #[cfg(feature = "auto_batching")] batch_size: usize, ) -> DandelionResult<()> { for action in actions { match action { @@ -68,9 +67,7 @@ fn execute( params.push(*dev_ptrs.last().unwrap() as *const c_void); } Argument::Sizeof(id) => { - params.push( - &buffer_pool.get_size(id) as *const _ as *const c_void, - ); + params.push(&buffer_pool.get_size(id) as *const _ as *const c_void); } Argument::Constant(constant) => { params.push(constant as *const _ as *const c_void); @@ -83,13 +80,55 @@ fn execute( .kernels .get(name) .ok_or(DandelionError::UndeclaredIdentifier(name.to_owned()))?, - get_size(&launch_config.grid_dim_x, buffer_pool, context)? as u32, - get_size(&launch_config.grid_dim_y, buffer_pool, context)? as u32, - get_size(&launch_config.grid_dim_z, buffer_pool, context)? as u32, - get_size(&launch_config.block_dim_x, buffer_pool, context)? as u32, - get_size(&launch_config.block_dim_y, buffer_pool, context)? as u32, - get_size(&launch_config.block_dim_z, buffer_pool, context)? as u32, - get_size(&launch_config.shared_mem_bytes, buffer_pool, context)? as u32, + get_size( + &launch_config.grid_dim_x, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, + get_size( + &launch_config.grid_dim_y, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, + get_size( + &launch_config.grid_dim_z, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, + get_size( + &launch_config.block_dim_x, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, + get_size( + &launch_config.block_dim_y, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, + get_size( + &launch_config.block_dim_z, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, + get_size( + &launch_config.shared_mem_bytes, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as u32, gpu_api::DEFAULT_STREAM, params.as_ptr(), null(), @@ -104,9 +143,22 @@ fn execute( } } Action::Repeat(times, actions) => { - let repetitions = get_size(times, buffer_pool, context)?; + let repetitions = get_size( + times, + buffer_pool, + context, + #[cfg(feature = "auto_batching")] + batch_size, + )?; for _ in 0..repetitions { - execute(actions, buffer_pool, context, config)?; + execute( + actions, + buffer_pool, + context, + config, + #[cfg(feature = "auto_batching")] + batch_size, + )?; } } } @@ -134,12 +186,13 @@ pub fn gpu_run( gpu_api::set_device(gpu_id)?; - let read_only_data = match context.context { - ContextType::Gpu(ref gpu_context) => &gpu_context.read_only, + let (read_only_data, inputs_data) = match context.context { + ContextType::Gpu(ref gpu_context) => (&gpu_context.read_only, &gpu_context.inputs), _ => return Err(DandelionError::ContextMissmatch), }; - let inputs_data = match context.context { - ContextType::Gpu(ref gpu_context) => &gpu_context.inputs, + #[cfg(feature = "auto_batching")] + let batch_size = match context.context { + ContextType::Gpu(ref gpu_context) => gpu_context.batch_size, _ => return Err(DandelionError::ContextMissmatch), }; @@ -201,7 +254,7 @@ pub fn gpu_run( .unwrap() .as_ptr() as *const c_void; let size = sub_read_only.position.size; - + let _ = buffer_pool.alloc_buffer(name, size, true)?; let dev_ptr = buffer_pool.get_pointer(name)?; @@ -209,8 +262,8 @@ pub fn gpu_run( } } + #[cfg(not(feature = "auto_batching"))] for name in &config.blueprint.inputs { - // TODO : don't use read but read chunks separately and allocate memory with memcpy with specific offests let input = inputs_data.get(name.as_str()).unwrap(); let size = input.position.size; @@ -221,18 +274,72 @@ pub fn gpu_run( while data_read < size { let data = input .context - .get_chunk_ref(input.position.offset + data_read, input.position.size - data_read) + .get_chunk_ref( + input.position.offset + data_read, + input.position.size - data_read, + ) .unwrap(); let size_read = data.len(); let data_pointer = data.as_ptr() as *const c_void; - gpu_api::memcpy_h_to_d(&dev_ptr, data_read.try_into().unwrap(), data_pointer, size_read)?; + gpu_api::memcpy_h_to_d( + &dev_ptr, + data_read.try_into().unwrap(), + data_pointer, + size_read, + )?; data_read += size_read + 1; } } + #[cfg(feature = "auto_batching")] + for name in &config.blueprint.inputs { + let name0 = format!("{}0", name); + let input0 = inputs_data.get(name0.as_str()).unwrap(); + let size_single = input0.position.size; + let size_batch = size_single * batch_size; + + let _ = buffer_pool.alloc_buffer(name, size_batch, false)?; + let dev_ptr = buffer_pool.get_pointer(name)?; + + let mut input_offset = 0; + for i in 0..batch_size { + let name_idx = format!("{}{}", name.clone(), i); + let input = inputs_data.get(name_idx.as_str()).unwrap(); + + let mut data_read = 0; + while data_read < size_single { + let data = input + .context + .get_chunk_ref( + input.position.offset + data_read, + input.position.size - data_read, + ) + .unwrap(); + let size_read = data.len(); + let data_pointer = data.as_ptr() as *const c_void; + + gpu_api::memcpy_h_to_d( + &dev_ptr, + (input_offset + data_read).try_into().unwrap(), + data_pointer, + size_read, + )?; + + data_read += size_read + 1; + } + input_offset += size_single; + } + } + for (name, sizing) in &config.blueprint.buffers { - let size = get_size(sizing, &buffer_pool, &context)? as usize; + let size = get_size( + sizing, + &buffer_pool, + &context, + #[cfg(feature = "auto_batching")] + batch_size, + )? as usize; let _ = buffer_pool.alloc_buffer(name, size, false)?; } recorder.record(RecordPoint::GPUTransferEnd); @@ -243,12 +350,20 @@ pub fn gpu_run( buffer_pool.borrow(), &context, &config, + #[cfg(feature = "auto_batching")] + batch_size, )?; recorder.record(RecordPoint::GPUInferenceEnd); recorder.record(RecordPoint::GPUOutputStart); // Copy results back into host memory from device memory - write_gpu_outputs(&mut context, &output_sets, buffer_pool.borrow())?; + write_gpu_outputs( + &mut context, + &output_sets, + buffer_pool.borrow(), + #[cfg(feature = "auto_batching")] + batch_size, + )?; recorder.record(RecordPoint::GPUOutputEnd); // Zero out input, temporary buffers, and output buffers @@ -347,7 +462,7 @@ fn common_parse( }; let context = Box::new(static_domain.acquire_context(0)?); - + let mut gpu_config = config_parsing::parse_config(&function_path)?; gpu_config.code_object_offset = SYSDATA_OFFSET + std::mem::size_of::>(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index e4a3d13a..dda547ec 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -40,9 +40,14 @@ impl BufferPool { }) } - pub fn alloc_buffer(&mut self, name: &str, size: usize, is_weight: bool) -> DandelionResult<()> { + pub fn alloc_buffer( + &mut self, + name: &str, + size: usize, + is_weight: bool, + ) -> DandelionResult<()> { let dev_ptr = self.last_offset_global; - + macro_rules! align { ($e: expr) => { ($e + 255) / 256 * 256 @@ -68,8 +73,8 @@ impl BufferPool { self.buffers.insert( name.to_string(), - Buffer { - offset: dev_ptr, + Buffer { + offset: dev_ptr, size: size, }, ); @@ -90,7 +95,8 @@ impl BufferPool { } pub fn dealloc_tmp_buffers(&mut self) -> DandelionResult<()> { - self.allocation.zero_from_to(self.last_offset_weights, self.last_offset_global)?; + self.allocation + .zero_from_to(self.last_offset_weights, self.last_offset_global)?; for name in &self.tmp_names { self.buffers.remove(name); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index c33a0223..4a5581e8 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -10,7 +10,14 @@ pub const SYSDATA_OFFSET: usize = 0usize; pub enum Sizing { Sizeof(String), Absolute(u64), - FromInput { bufname: String, idx: usize }, + #[cfg(feature = "auto_batching")] + AbsoluteByBatch(u64), + #[cfg(feature = "auto_batching")] + AbsoluteByBatchEven(u64), + FromInput { + bufname: String, + idx: usize, + }, } #[derive(Deserialize, Serialize, Debug)] diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 5e2f3134..1aa9bfc6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -2924,114 +2924,6 @@ pub fn load_mobilenetv2(mut function_context: Context) -> (usize, String, Vec (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18-batch2/"; - - add_buffer("input", 1204224, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 147456, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 147456, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 147456, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 147456, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 589824, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 589824, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 589824, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 2359296, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 2359296, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 2359296, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 9437184, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 9437184, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 9437184, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 8000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - -pub fn load_resnet18-batch4(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18-batch4/"; - - add_buffer("input", 2408448, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 147456, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 147456, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 147456, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 147456, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 589824, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 589824, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 589824, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 2359296, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 2359296, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 2359296, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 9437184, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 9437184, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 9437184, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 16000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; @@ -3042,7 +2934,12 @@ pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, C let output_size: usize = 8; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3056,7 +2953,12 @@ pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec< let output_size: usize = 12; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3110,7 +3012,12 @@ pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, let output_size: usize = 4000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch2(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3164,7 +3071,12 @@ pub fn load_resnet18_batch2(mut function_context: Context) -> (usize, String, Ve let output_size: usize = 8000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch4(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3218,7 +3130,12 @@ pub fn load_resnet18_batch4(mut function_context: Context) -> (usize, String, Ve let output_size: usize = 16000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch8(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3272,7 +3189,12 @@ pub fn load_resnet18_batch8(mut function_context: Context) -> (usize, String, Ve let output_size: usize = 32000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch16(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3326,7 +3248,12 @@ pub fn load_resnet18_batch16(mut function_context: Context) -> (usize, String, V let output_size: usize = 64000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch32(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3380,7 +3307,12 @@ pub fn load_resnet18_batch32(mut function_context: Context) -> (usize, String, V let output_size: usize = 128000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch64(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3434,7 +3366,12 @@ pub fn load_resnet18_batch64(mut function_context: Context) -> (usize, String, V let output_size: usize = 256000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } pub fn load_resnet18_batch3(mut function_context: Context) -> (usize, String, Vec, Context) { @@ -3488,5 +3425,69 @@ pub fn load_resnet18_batch3(mut function_context: Context) -> (usize, String, Ve let output_size: usize = 12000; let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - (output_size, output_name.to_string(), expected, function_context) + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) +} + +pub fn load_resnet18_batch5(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18_batch5/"; + + add_buffer("input", 3010560, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 147456, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 147456, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 147456, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 147456, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 589824, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 2359296, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 2359296, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 2359296, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 9437184, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 9437184, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 9437184, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 20000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + ( + output_size, + output_name.to_string(), + expected, + function_context, + ) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index fa89a97c..23c10774 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -83,8 +83,8 @@ pub fn copy_data_to_device( pub fn write_gpu_outputs( output_context: &mut Context, output_set_names: &[String], - // device_buffers: &HashMap, buffer_pool: &BufferPool, + #[cfg(feature = "auto_batching")] batch_size: usize, ) -> DandelionResult<()> { let base = match &output_context.context { ContextType::Gpu(ref mmu_context) => mmu_context.storage.as_ptr(), @@ -94,31 +94,74 @@ pub fn write_gpu_outputs( }; let mut output_sets = vec![]; - let mut buffers = vec![]; - for output_name in output_set_names { - let dev_ptr = buffer_pool.get_pointer(output_name)?; - let size = buffer_pool.get_size(output_name)?; - - let buf_offset = output_context.get_free_space(size, 8)?; - let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; - - gpu_api::memcpy_d_to_h(dst, &dev_ptr, size)?; - - buffers.push(DataItem { - ident: output_name.clone(), - data: Position { - offset: buf_offset, - size: size, - }, - key: 0u32, - }); - output_context.occupy_space(buf_offset, size)?; + + #[cfg(not(feature = "auto_batching"))] + { + let mut buffers = vec![]; + + for output_name in output_set_names { + let dev_ptr = buffer_pool.get_pointer(output_name)?; + let size = buffer_pool.get_size(output_name)?; + + let buf_offset = output_context.get_free_space(size, 8)?; + let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + + gpu_api::memcpy_d_to_h(dst, &dev_ptr, size)?; + + buffers.push(DataItem { + ident: output_name.clone(), + data: Position { + offset: buf_offset, + size: size, + }, + key: 0u32, + }); + output_context.occupy_space(buf_offset, size)?; + } + + output_sets.push(Some(DataSet { + ident: "outputs".to_string(), + buffers: buffers, + })); + } + + #[cfg(feature = "auto_batching")] + for i in 0..batch_size { + let mut buffers = vec![]; + + for output_name in output_set_names { + // Output-related variables: + let dev_ptr = buffer_pool.get_pointer(output_name)?; + let size_batch = buffer_pool.get_size(output_name)?; + let size_single = size_batch / batch_size; + + // Batch_idx-related variables: + let buf_offset = output_context.get_free_space(size_single, 8)?; + let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + let dev_ptr_idx = DevicePointer { + ptr: unsafe { (dev_ptr.ptr as *const u8).add(size_single) } as *const c_void, + }; + + gpu_api::memcpy_d_to_h(dst, &dev_ptr_idx, size_single)?; + + buffers.push(DataItem { + ident: output_name.clone(), + data: Position { + offset: buf_offset, + size: size_single, + }, + key: 0u32, + }); + output_context.occupy_space(buf_offset, size_single)?; + } + + let outputs_name_idx = format!("outputs{}", i); + output_sets.push(Some(DataSet { + ident: outputs_name_idx, + buffers: buffers, + })); } - output_sets.push(Some(DataSet { - ident: "outputs".to_string(), - buffers: buffers, - })); output_context.content = output_sets; Ok(()) @@ -128,9 +171,22 @@ pub fn get_size( sizing: &Sizing, buffer_pool: &BufferPool, context: &Context, + #[cfg(feature = "auto_batching")] batch_size: usize, ) -> DandelionResult { match sizing { Sizing::Absolute(size) => Ok(*size), + #[cfg(feature = "auto_batching")] + Sizing::AbsoluteByBatch(size) => Ok(*size * batch_size as u64), + #[cfg(feature = "auto_batching")] + Sizing::AbsoluteByBatchEven(size) => { + let mut tmp = if batch_size % 2 == 0 { + batch_size + } else { + batch_size + 1 + }; + tmp /= 2; + Ok(*size * tmp as u64) + } Sizing::FromInput { bufname, idx } => { let dataset = context .content diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 49466b83..47192300 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -3,9 +3,15 @@ use crate::{ memory_domain::{self, Context}, }; use core::marker::Send; -use dandelion_commons::{records::{RecordPoint, Recorder}, DandelionResult}; +use dandelion_commons::{ + records::{RecordPoint, Recorder}, + DandelionResult, +}; use std::thread::spawn; +#[cfg(feature = "auto_batching")] +use crate::function_driver::BatchInfo; + extern crate alloc; pub trait EngineLoop { @@ -119,6 +125,22 @@ pub fn run_thread( } continue; } + #[cfg(feature = "auto_batching")] + WorkToDo::BatchAtom { + function_id, + inputs, + recorder, + inputs_vec, + children_debts, + } => { + debt.fulfill(Ok(WorkDone::SharedContext(BatchInfo { + batch_pos: 0, + inputs_vec, + context_arc: None, + children_debts, + }))); + continue; + } WorkToDo::Shutdown() => { debt.fulfill(Ok(WorkDone::Resources(vec![ComputeResource::CPU(core_id)]))); return; diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index 8575a1f5..4bc6cc47 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -10,6 +10,7 @@ use dandelion_commons::{ use log::{debug, error}; use nix::sys::mman::ProtFlags; use std::{ + cmp, collections::HashMap, ops::{Deref, DerefMut}, sync::Arc, @@ -32,6 +33,8 @@ pub struct GpuContext { pub storage: MmapMem, pub read_only: HashMap, pub inputs: HashMap, + #[cfg(feature = "auto_batching")] + pub batch_size: usize, } impl ContextTrait for GpuContext { @@ -195,6 +198,8 @@ impl MemoryDomain for GpuMemoryDomain { storage: mem_space, read_only: HashMap::new(), inputs: HashMap::new(), + #[cfg(feature = "auto_batching")] + batch_size: 0, }); Ok(Context::new(ContextType::Gpu(new_context), actual_size)) } @@ -299,11 +304,31 @@ pub fn bytes_to_gpu_transfer( source_offset: usize, size: usize, ) -> DandelionResult<()> { + // TODO : generalize to multiple sets let Some(ref data_set) = source.content[0] else { todo!() }; - let ident = &data_set.ident.to_string(); + + #[cfg(not(feature = "auto_batching"))] + let ident = (&data_set.ident).clone().to_string(); + #[cfg(feature = "auto_batching")] + let ident = { + let mut max_present = -1; + for key in destination_ctxt.inputs.keys() { + let key_split = key.split(&data_set.ident).collect::>(); + if key_split.len() > 1 { + let found_idx = key_split.last(); + if let Some(idx) = found_idx { + max_present = cmp::max(max_present, idx.parse().unwrap()); + } + } + } + + destination_ctxt.batch_size = cmp::max(destination_ctxt.batch_size, (max_present + 2) as usize); + + format!("{}{}", &data_set.ident, (max_present + 1).to_string()) + }; destination_ctxt.inputs.insert( - ident.clone(), + ident, SubBytes { context: source, position: Position { diff --git a/server/Cargo.toml b/server/Cargo.toml index 710d0e97..735e64e6 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -51,3 +51,4 @@ gpu_process = ["machine_interface/gpu_process", "gpu"] reuse_weights = ["machine_interface/reuse_weights", "dandelion_commons/reuse_weights"] weights_from_disk = ["machine_interface/weights_from_disk"] gpu_queue = ["dispatcher/gpu_queue"] +auto_batching = ["machine_interface/auto_batching", "dispatcher/auto_batching"] diff --git a/server/src/main.rs b/server/src/main.rs index ee47159f..d78d7175 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -767,6 +767,8 @@ fn main() -> () { print!(" reuse_weights"); #[cfg(feature = "weights_from_disk")] print!(" weights_from_disk"); + #[cfg(feature = "auto_batching")] + print!(" auto_batching"); print!("\n"); // Run this server for... forever... unless I receive a signal! From 44347d6999e0ecb7e0a91f4f3f6890e4df6e71b3 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Fri, 29 Aug 2025 13:03:33 +0200 Subject: [PATCH 172/176] recorder : add batch information --- dandelion_commons/Cargo.toml | 1 + dandelion_commons/src/records.rs | 97 ++++++++++++++++--- dispatcher/src/dispatcher.rs | 9 +- .../src/function_driver/compute_driver/gpu.rs | 2 + 4 files changed, 93 insertions(+), 16 deletions(-) diff --git a/dandelion_commons/Cargo.toml b/dandelion_commons/Cargo.toml index 93b5cb3d..b56c4f22 100644 --- a/dandelion_commons/Cargo.toml +++ b/dandelion_commons/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" [features] timestamp = [] reuse_weights = [] +auto_batching = [] [dependencies] hdrhist = "0.5.0" diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 4626195d..13619e7f 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -1,12 +1,12 @@ use crate::FunctionId; use core::fmt; -use std::time::Instant; use std::sync::{Arc, Mutex}; +use std::time::Instant; /// Maximum usize to expect when converting a record point to a usize /// By setting the last element to this explicitly, the compiler will throw an error, /// if there are more than this, because it enumerates from 0 and won't allow a number to be assigned twice. -const LAST_RECORD_POINT: usize = 23; +const LAST_RECORD_POINT: usize = 25; #[repr(usize)] #[derive(Clone, Copy, Debug, PartialEq)] @@ -58,6 +58,10 @@ pub enum RecordPoint { GPUOutputStart, /// End GPU output read (sync) GPUOutputEnd, + /// Start GPU output read (sync) + BatchAtomStart, + /// End GPU output read (sync) + BatchAtomEnd, /// Return from execution engine (async) FutureReturn = LAST_RECORD_POINT, } @@ -202,12 +206,7 @@ impl ReuseWeightsArchive { *guard = Vec::new(); } - fn append_gpu_cache_hit( - &self, - gpu_cache_hit: bool, - summary: &mut String, - indent: usize, - ) { + fn append_gpu_cache_hit(&self, gpu_cache_hit: bool, summary: &mut String, indent: usize) { // push self summary.push_str(&format!( "{}gpu_cache_hit:{}", @@ -224,12 +223,50 @@ impl ReuseWeightsArchive { } } +#[cfg(feature = "auto_batching")] +struct BatchArchive { + collected_batch_size: std::sync::Mutex>, +} + +#[cfg(feature = "auto_batching")] +impl BatchArchive { + fn init() -> Self { + return Self { + collected_batch_size: std::sync::Mutex::new(Vec::new()), + }; + } + + fn insert(&self, new_batch_size: usize) { + let mut guard = self.collected_batch_size.lock().unwrap(); + guard.push(new_batch_size); + } + + fn reset(&self) { + let mut guard = self.collected_batch_size.lock().unwrap(); + *guard = Vec::new(); + } + + fn append_batch_size(&self, batch_size: usize, summary: &mut String, indent: usize) { + // push self + summary.push_str(&format!("{}batch_size:{}", "-".repeat(indent), batch_size)); + } + + fn get_summary(&self, summary: &mut String) { + for recorder in self.collected_batch_size.lock().unwrap().iter() { + self.append_batch_size(*recorder, summary, 0); + summary.push_str("\n"); + } + } +} + /// General implementation of recorder struct, additional functionality enabled by flags pub struct Recorder { #[cfg(feature = "timestamp")] timestamps: std::sync::Arc, #[cfg(feature = "reuse_weights")] gpu_cache_hit: Arc>, + #[cfg(feature = "auto_batching")] + batch_size: Arc>, } impl Recorder { @@ -239,6 +276,8 @@ impl Recorder { timestamps: FunctionTimestamp::new(_function_id, _start), #[cfg(feature = "reuse_weights")] gpu_cache_hit: Arc::new(Mutex::new(false)), + #[cfg(feature = "auto_batching")] + batch_size: Arc::new(Mutex::new(0)), }; } @@ -248,6 +287,8 @@ impl Recorder { timestamps: FunctionTimestamp::new(_function_id, _parent.timestamps.creation), #[cfg(feature = "reuse_weights")] gpu_cache_hit: Arc::new(Mutex::new(false)), + #[cfg(feature = "auto_batching")] + batch_size: Arc::new(Mutex::new(0)), }; } @@ -264,6 +305,14 @@ impl Recorder { } } + pub fn set_batch_size(&mut self, _batch_size: usize) { + #[cfg(feature = "auto_batching")] + { + let mut batch_size = self.batch_size.lock().unwrap(); + *batch_size = _batch_size; + } + } + pub fn add_children(&mut self, _new_children: Vec) { #[cfg(feature = "timestamp")] for child in _new_children { @@ -277,6 +326,8 @@ impl Recorder { timestamps: self.timestamps.clone(), #[cfg(feature = "reuse_weights")] gpu_cache_hit: self.gpu_cache_hit.clone(), + #[cfg(feature = "auto_batching")] + batch_size: self.batch_size.clone(), }; return recorder; } @@ -302,7 +353,18 @@ impl fmt::Display for Recorder { } #[cfg(feature = "timestamp")] write!(_f, ",")?; - write!(_f, "gpu_cache_hit: {}", self.gpu_cache_hit.lock().unwrap())?; + write!(_f, " gpu_cache_hit: {}", self.gpu_cache_hit.lock().unwrap())?; + } + #[cfg(feature = "auto_batching")] + { + if std::sync::Arc::strong_count(&self.batch_size) != 1 + && std::sync::Arc::weak_count(&self.batch_size) != 0 + { + panic!("Trying to format recorder that still has more than one reference"); + } + #[cfg(feature = "timestamp")] + write!(_f, ",")?; + write!(_f, " batch_size: {}", self.batch_size.lock().unwrap())?; } Ok(()) } @@ -313,6 +375,8 @@ pub struct Archive { timestamp_archive: TimestampArchive, #[cfg(feature = "reuse_weights")] gpu_cache_hit_archive: ReuseWeightsArchive, + #[cfg(feature = "auto_batching")] + batch_archive: BatchArchive, } pub struct ArchiveInit { @@ -327,6 +391,8 @@ impl Archive { timestamp_archive: TimestampArchive::init(), #[cfg(feature = "reuse_weights")] gpu_cache_hit_archive: ReuseWeightsArchive::init(), + #[cfg(feature = "auto_batching")] + batch_archive: BatchArchive::init(), }; } @@ -335,8 +401,13 @@ impl Archive { self.timestamp_archive .insert(std::sync::Arc::into_inner(_recorder.timestamps).unwrap()); #[cfg(feature = "reuse_weights")] - self.gpu_cache_hit_archive - .insert(std::sync::Arc::into_inner((*_recorder.gpu_cache_hit.lock().unwrap()).into()).unwrap()); + self.gpu_cache_hit_archive.insert( + std::sync::Arc::into_inner((*_recorder.gpu_cache_hit.lock().unwrap()).into()).unwrap(), + ); + #[cfg(feature = "auto_batching")] + self.batch_archive.insert( + std::sync::Arc::into_inner((*_recorder.batch_size.lock().unwrap()).into()).unwrap(), + ); } pub fn get_summary(&self) -> String { @@ -347,6 +418,8 @@ impl Archive { self.timestamp_archive.get_summary(&mut summary); #[cfg(feature = "reuse_weights")] self.gpu_cache_hit_archive.get_summary(&mut summary); + #[cfg(feature = "auto_batching")] + self.batch_archive.get_summary(&mut summary); println!("{}", summary); return summary; } @@ -356,5 +429,7 @@ impl Archive { self.timestamp_archive.reset(); #[cfg(feature = "reuse_weights")] self.gpu_cache_hit_archive.reset(); + #[cfg(feature = "auto_batching")] + self.batch_archive.reset(); } } diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 5568decd..b4448d42 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -502,13 +502,11 @@ impl Dispatcher { Some(id) => id, None => return Err(DandelionError::Dispatcher(DispatcherError::ConfigError)), }; - let (domain, transfer_queue) = match self.domains.get(context_id) { + let (_, transfer_queue) = match self.domains.get(context_id) { Some(d) => d, None => return Err(DandelionError::Dispatcher(DispatcherError::ConfigError)), }; - let tmp = inputs.clone(); - let mut atom_inputs = Vec::new(); for input in inputs.clone() { if input.is_some() { @@ -519,7 +517,6 @@ impl Dispatcher { } } - // TODO : recorder.record(...) : measure time in queue let args = WorkToDo::BatchAtom { function_id, inputs: atom_inputs, @@ -527,8 +524,10 @@ impl Dispatcher { inputs_vec: None, children_debts: None, }; + + recorder.record(RecordPoint::BatchAtomStart); let batch_info = transfer_queue.enqueue_work(args, function_id)?.await?.get_shared_context(); - // TODO : recorder.record(...) + recorder.record(RecordPoint::BatchAtomEnd); let batch_pos = batch_info.batch_pos; diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index c07fed15..3cdee3c4 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -195,6 +195,8 @@ pub fn gpu_run( ContextType::Gpu(ref gpu_context) => gpu_context.batch_size, _ => return Err(DandelionError::ContextMissmatch), }; + #[cfg(feature = "auto_batching")] + recorder.set_batch_size(batch_size); // Load modules and kernels let mut loaded_modules_map: HashMap = HashMap::new(); From 2fb1331f570885ee608bdb95c16f8ec55c10b57a Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Sat, 6 Sep 2025 13:27:11 +0200 Subject: [PATCH 173/176] gpu_id added to recorder --- dandelion_commons/src/records.rs | 55 ++++++++++++++++++++++---------- dispatcher/src/execution_qs.rs | 27 +++++++++------- 2 files changed, 53 insertions(+), 29 deletions(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 13619e7f..c79aa642 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -186,6 +186,7 @@ impl TimestampArchive { #[cfg(feature = "reuse_weights")] struct ReuseWeightsArchive { collected_gpu_cache_hit: std::sync::Mutex>, + collected_gpu_id: std::sync::Mutex>, } #[cfg(feature = "reuse_weights")] @@ -193,31 +194,40 @@ impl ReuseWeightsArchive { fn init() -> Self { return Self { collected_gpu_cache_hit: std::sync::Mutex::new(Vec::new()), + collected_gpu_id: std::sync::Mutex::new(Vec::new()), }; } - fn insert(&self, new_gpu_cache_hit: bool) { - let mut guard = self.collected_gpu_cache_hit.lock().unwrap(); - guard.push(new_gpu_cache_hit); + fn insert(&self, new_gpu_cache_hit: bool, new_gpu_id: u8) { + let mut guard_cache = self.collected_gpu_cache_hit.lock().unwrap(); + guard_cache.push(new_gpu_cache_hit); + + let mut guard_gpu = self.collected_gpu_id.lock().unwrap(); + guard_gpu.push(new_gpu_id); } fn reset(&self) { - let mut guard = self.collected_gpu_cache_hit.lock().unwrap(); - *guard = Vec::new(); + let mut guard_cache = self.collected_gpu_cache_hit.lock().unwrap(); + *guard_cache = Vec::new(); + + let mut guard_gpu = self.collected_gpu_id.lock().unwrap(); + *guard_gpu = Vec::new(); } - fn append_gpu_cache_hit(&self, gpu_cache_hit: bool, summary: &mut String, indent: usize) { + fn append_gpu_info(&self, gpu_info: (bool, u8), summary: &mut String, indent: usize) { // push self summary.push_str(&format!( - "{}gpu_cache_hit:{}", + "{}gpu_cache_hit:{}, gpu_id:{}", "-".repeat(indent), - gpu_cache_hit + gpu_info.0, + gpu_info.1, )); } fn get_summary(&self, summary: &mut String) { - for recorder in self.collected_gpu_cache_hit.lock().unwrap().iter() { - self.append_gpu_cache_hit(*recorder, summary, 0); + for (gpu_cache_hit, gpu_id) in self.collected_gpu_cache_hit.lock().unwrap().iter().zip(self.collected_gpu_id.lock().unwrap().iter()) { + let gpu_info = (*gpu_cache_hit, *gpu_id); + self.append_gpu_info(gpu_info, summary, 0); summary.push_str("\n"); } } @@ -265,6 +275,8 @@ pub struct Recorder { timestamps: std::sync::Arc, #[cfg(feature = "reuse_weights")] gpu_cache_hit: Arc>, + #[cfg(feature = "reuse_weights")] + gpu_id: Arc>, #[cfg(feature = "auto_batching")] batch_size: Arc>, } @@ -276,6 +288,8 @@ impl Recorder { timestamps: FunctionTimestamp::new(_function_id, _start), #[cfg(feature = "reuse_weights")] gpu_cache_hit: Arc::new(Mutex::new(false)), + #[cfg(feature = "reuse_weights")] + gpu_id: Arc::new(Mutex::new(u8::MAX)), #[cfg(feature = "auto_batching")] batch_size: Arc::new(Mutex::new(0)), }; @@ -287,6 +301,8 @@ impl Recorder { timestamps: FunctionTimestamp::new(_function_id, _parent.timestamps.creation), #[cfg(feature = "reuse_weights")] gpu_cache_hit: Arc::new(Mutex::new(false)), + #[cfg(feature = "reuse_weights")] + gpu_id: Arc::new(Mutex::new(u8::MAX)), #[cfg(feature = "auto_batching")] batch_size: Arc::new(Mutex::new(0)), }; @@ -297,11 +313,13 @@ impl Recorder { self.timestamps.record(_current_point); } - pub fn set_gpu_cache_hit(&mut self, _gpu_cache_hit: bool) { + pub fn set_gpu_info(&mut self, _gpu_cache_hit: bool, _gpu_id: u8) { #[cfg(feature = "reuse_weights")] { let mut gpu_cache_hit = self.gpu_cache_hit.lock().unwrap(); *gpu_cache_hit = _gpu_cache_hit; + let mut gpu_id = self.gpu_id.lock().unwrap(); + *gpu_id = _gpu_id; } } @@ -326,6 +344,8 @@ impl Recorder { timestamps: self.timestamps.clone(), #[cfg(feature = "reuse_weights")] gpu_cache_hit: self.gpu_cache_hit.clone(), + #[cfg(feature = "reuse_weights")] + gpu_id: self.gpu_id.clone(), #[cfg(feature = "auto_batching")] batch_size: self.batch_size.clone(), }; @@ -353,7 +373,7 @@ impl fmt::Display for Recorder { } #[cfg(feature = "timestamp")] write!(_f, ",")?; - write!(_f, " gpu_cache_hit: {}", self.gpu_cache_hit.lock().unwrap())?; + write!(_f, " gpu_cache_hit: {}, gpu_id: {}", self.gpu_cache_hit.lock().unwrap(), self.gpu_id.lock().unwrap())?; } #[cfg(feature = "auto_batching")] { @@ -374,7 +394,7 @@ pub struct Archive { #[cfg(feature = "timestamp")] timestamp_archive: TimestampArchive, #[cfg(feature = "reuse_weights")] - gpu_cache_hit_archive: ReuseWeightsArchive, + gpu_info_archive: ReuseWeightsArchive, #[cfg(feature = "auto_batching")] batch_archive: BatchArchive, } @@ -390,7 +410,7 @@ impl Archive { #[cfg(feature = "timestamp")] timestamp_archive: TimestampArchive::init(), #[cfg(feature = "reuse_weights")] - gpu_cache_hit_archive: ReuseWeightsArchive::init(), + gpu_info_archive: ReuseWeightsArchive::init(), #[cfg(feature = "auto_batching")] batch_archive: BatchArchive::init(), }; @@ -401,8 +421,9 @@ impl Archive { self.timestamp_archive .insert(std::sync::Arc::into_inner(_recorder.timestamps).unwrap()); #[cfg(feature = "reuse_weights")] - self.gpu_cache_hit_archive.insert( + self.gpu_info_archive.insert( std::sync::Arc::into_inner((*_recorder.gpu_cache_hit.lock().unwrap()).into()).unwrap(), + std::sync::Arc::into_inner((*_recorder.gpu_id.lock().unwrap()).into()).unwrap(), ); #[cfg(feature = "auto_batching")] self.batch_archive.insert( @@ -417,7 +438,7 @@ impl Archive { #[cfg(feature = "timestamp")] self.timestamp_archive.get_summary(&mut summary); #[cfg(feature = "reuse_weights")] - self.gpu_cache_hit_archive.get_summary(&mut summary); + self.gpu_info_archive.get_summary(&mut summary); #[cfg(feature = "auto_batching")] self.batch_archive.get_summary(&mut summary); println!("{}", summary); @@ -428,7 +449,7 @@ impl Archive { #[cfg(feature = "timestamp")] self.timestamp_archive.reset(); #[cfg(feature = "reuse_weights")] - self.gpu_cache_hit_archive.reset(); + self.gpu_info_archive.reset(); #[cfg(feature = "auto_batching")] self.batch_archive.reset(); } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index a2b8e611..c9c9e11c 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -11,6 +11,7 @@ use std::{ cell::Cell, cmp, collections::{HashMap, VecDeque}, + env, hint, sync::{Arc, Mutex}, time::{Duration, Instant, SystemTime, UNIX_EPOCH}, @@ -20,8 +21,9 @@ const MAX_QUEUE: usize = 16384; const FRONT_QUEUE: usize = 10; // Specify how many requests can be looked at each polling iteration; limit it to lower polling time const MAX_QUEUE_TIME: Duration = Duration::new(0, 30_000_000); // 30 ms const MAX_IDLE_TIME: Duration = Duration::new(0, 5_000_000); // 5 ms -const SOFT_MIN_BATCHED: usize = 16; -const MAX_BATCHED: usize = 128; +const IDLE_BEFORE_BATCH_FORCED: Duration = Duration::new(0, 5_000_000); // 5 ms +const SOFT_MIN_BATCHED: usize = 32; +const MAX_BATCHED: usize = 512; struct AtomicTickets { start: AtomicUsize, @@ -352,6 +354,11 @@ pub struct BatchingQueue { #[cfg(feature = "auto_batching")] impl WorkQueue for BatchingQueue { fn get_engine_args(&self) -> (WorkToDo, Debt) { + let FIXED_BATCH_SIZE: usize = match env::var("BATCH_SIZE") { + Ok(value) => value.parse::().unwrap(), + Err(e) => 2, + }; + self.idle_since.set(Instant::now()); let work = loop { // Make sure that engines acquire the lock in a round-robin fashion @@ -380,6 +387,8 @@ impl WorkQueue for BatchingQueue { let mut last_function = self.last_function.lock().unwrap(); let last_function_id = last_function.get(&self.engine_id).unwrap(); + let mut atoms_map = self.atoms_map.lock().unwrap(); + if !atoms_times.is_empty() { let (first_timestamp, first_function_id) = &atoms_times[0]; @@ -439,21 +448,15 @@ impl WorkQueue for BatchingQueue { // Skip if batch would be too small: if send_function_id != u64::MAX { - let mut atoms_map = self.atoms_map.lock().unwrap(); let mut requests_list = atoms_map.get_mut(&send_function_id).unwrap(); - // if requests_list.len() < SOFT_MIN_BATCHED { - if self.idle_since.get().elapsed() < Duration::from_millis(10) - && requests_list.len() < SOFT_MIN_BATCHED - { + if self.idle_since.get().elapsed() < IDLE_BEFORE_BATCH_FORCED && requests_list.len() < SOFT_MIN_BATCHED { send_function_id = u64::MAX; } } // Actual send, if: if send_function_id != u64::MAX { - let mut atoms_map = self.atoms_map.lock().unwrap(); let mut requests_list = atoms_map.get_mut(&send_function_id).unwrap(); - let (mut head_args, head_debt) = requests_list.pop_front().unwrap(); if head_debt.is_alive() { @@ -495,12 +498,12 @@ impl WorkQueue for BatchingQueue { } } batched += inner_loop_max; - println!("{} requests batched", batched); + // println!("{} requests batched", batched); // Workaround to support batch size 1 if batched == 1 { - let copy_first_input = tmp_inputs_vec[0].item_list.clone(); - tmp_inputs_vec[0].item_list.extend(copy_first_input); + let copy_first_input = tmp_inputs_vec[0].item_list[0].clone(); + tmp_inputs_vec[0].item_list = vec![copy_first_input; FIXED_BATCH_SIZE]; } // Remove the batched requests from the time-based queue From 96f210f69d18b3a27fa9859804a3fb846b46f220 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Sat, 6 Sep 2025 13:27:46 +0200 Subject: [PATCH 174/176] gpu_id added to recorder --- machine_interface/src/function_driver/compute_driver/gpu.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 3cdee3c4..47ce8efb 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -242,7 +242,7 @@ pub fn gpu_run( { reload_weights = buffer_pool.prev_function_id != function_id; } - recorder.set_gpu_cache_hit(!reload_weights); + recorder.set_gpu_info(!reload_weights, gpu_id); if reload_weights { buffer_pool.prev_function_id = function_id; From 1fe61b23ea6bc588666b7cff226a9b131f388cec Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Thu, 11 Sep 2025 18:09:38 +0200 Subject: [PATCH 175/176] recorder: batch size correctluy recorder by all --- dispatcher/src/execution_qs.rs | 21 ++++++++++++++++--- .../src/function_driver/compute_driver/gpu.rs | 2 -- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index c9c9e11c..3fad4298 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -481,12 +481,13 @@ impl WorkQueue for BatchingQueue { // Copy inputs of other requests let inner_loop_max = cmp::min(requests_list.len(), MAX_BATCHED - 1); + batched += inner_loop_max; for i in 1..=inner_loop_max { - let (child_args, child_debt) = requests_list.pop_front().unwrap(); + let (mut child_args, child_debt) = requests_list.pop_front().unwrap(); if let WorkToDo::BatchAtom { inputs, function_id: _, - recorder: _, + ref mut recorder, inputs_vec: _, children_debts: _, } = child_args @@ -495,11 +496,25 @@ impl WorkQueue for BatchingQueue { tmp_inputs_vec[i].item_list.extend(input.unwrap().item_list); } call_children_debts.push(child_debt); + + // Record the size of the batch + recorder.set_batch_size(batched); } } - batched += inner_loop_max; // println!("{} requests batched", batched); + // Record the size of the batch + if let WorkToDo::BatchAtom { + inputs: _, + function_id: _, + ref mut recorder, + inputs_vec: _, + children_debts: _, + } = head_args + { + recorder.set_batch_size(batched); + } + // Workaround to support batch size 1 if batched == 1 { let copy_first_input = tmp_inputs_vec[0].item_list[0].clone(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 47ce8efb..24ca8e20 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -195,8 +195,6 @@ pub fn gpu_run( ContextType::Gpu(ref gpu_context) => gpu_context.batch_size, _ => return Err(DandelionError::ContextMissmatch), }; - #[cfg(feature = "auto_batching")] - recorder.set_batch_size(batch_size); // Load modules and kernels let mut loaded_modules_map: HashMap = HashMap::new(); From bd5f8dbe00c85e15880ecf37abc8f200d522ed8f Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 15 Sep 2025 14:40:07 +0200 Subject: [PATCH 176/176] auto_batching queue improvement: actually exploit cached models --- dispatcher/src/dispatcher.rs | 37 +++++++++++-- dispatcher/src/execution_qs.rs | 53 +++++++++++++++---- dispatcher/src/function_registry.rs | 9 +++- machine_interface/src/function_driver.rs | 2 + .../src/function_driver/thread_utils.rs | 2 + 5 files changed, 85 insertions(+), 18 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index b4448d42..4060739a 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -48,7 +48,12 @@ pub trait EnqueueWork: Send + Sync { /// - LoadingArguments /// - (multiple) TransferArguments /// - FunctionArguments - fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult; + fn enqueue_work( + &self, + args: WorkToDo, + function_id: FunctionId, + #[cfg(feature = "auto_batching")] gpu_id: u8, + ) -> DandelionResult; } pub trait FullQueue: EnqueueWork + WorkQueue { @@ -523,16 +528,18 @@ impl Dispatcher { recorder: recorder.get_sub_recorder(), inputs_vec: None, children_debts: None, + gpu_id: None, }; recorder.record(RecordPoint::BatchAtomStart); - let batch_info = transfer_queue.enqueue_work(args, function_id)?.await?.get_shared_context(); + let batch_info = transfer_queue.enqueue_work(args, function_id, u8::MAX)?.await?.get_shared_context(); recorder.record(RecordPoint::BatchAtomEnd); let batch_pos = batch_info.batch_pos; let context_arc = if batch_pos == 0 { let inputs_vec = batch_info.inputs_vec.unwrap(); + let gpu_id = batch_info.gpu_id.unwrap(); // variable inputs needs to contain ALL INPUTS, with indexed names: input0, input1, ... let mut compositions_vec = Vec::new(); @@ -554,6 +561,7 @@ impl Dispatcher { *ctx_size, non_caching, recorder.get_sub_recorder(), + gpu_id, ) .await?; recorder.record(RecordPoint::GetEngineQueue); @@ -572,6 +580,7 @@ impl Dispatcher { metadata.output_sets, context, recorder.get_sub_recorder(), + gpu_id, ) .await?; let context_arc = Arc::new(context); @@ -584,6 +593,7 @@ impl Dispatcher { inputs_vec: None, context_arc: Some(context_arc.clone()), children_debts: None, + gpu_id: None, }))); } @@ -619,6 +629,7 @@ impl Dispatcher { *ctx_size, non_caching, recorder.get_sub_recorder(), + #[cfg(feature = "auto_batching")] u8::MAX, ) .await?; recorder.record(RecordPoint::GetEngineQueue); @@ -635,6 +646,7 @@ impl Dispatcher { metadata.output_sets, context, recorder.get_sub_recorder(), + #[cfg(feature = "auto_batching")] u8::MAX, ) .await?; let context_arc = Arc::new(context); @@ -678,6 +690,7 @@ impl Dispatcher { ctx_size: usize, non_caching: bool, mut recorder: Recorder, + #[cfg(feature = "auto_batching")] gpu_id: u8, ) -> DandelionResult<(Context, FunctionConfig, Metadata)> { debug!("Preparing function {} for engine", function_id); let metadata = self.function_registry.get_metadata(function_id).await?; @@ -700,6 +713,7 @@ impl Dispatcher { ctx_size, non_caching, recorder.get_sub_recorder(), + #[cfg(feature = "auto_batching")] gpu_id, ) .await?; recorder.record(RecordPoint::TransferQueue); @@ -734,7 +748,11 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - function_context = transfer_queue.enqueue_work(args, function_id)?.await?.get_context(); + function_context = transfer_queue.enqueue_work( + args, + function_id, + #[cfg(feature = "auto_batching")] gpu_id, + )?.await?.get_context(); function_buffer += 1; } } @@ -778,7 +796,11 @@ impl Dispatcher { source_item_index: item, recorder: recorder.get_sub_recorder(), }; - function_context = transfer_queue.enqueue_work(args, function_id)?.await?.get_context(); + function_context = transfer_queue.enqueue_work( + args, + function_id, + #[cfg(feature = "auto_batching")] gpu_id, + )?.await?.get_context(); function_item += 1; } } @@ -794,6 +816,7 @@ impl Dispatcher { output_sets: Arc>, function_context: Context, mut recorder: Recorder, + #[cfg(feature = "auto_batching")] gpu_id: u8, ) -> DandelionResult { // preparation is done, get engine to receive engine debug!( @@ -812,7 +835,11 @@ impl Dispatcher { recorder: subrecoder, }; recorder.record(RecordPoint::ExecutionQueue); - let result = engine_queue.enqueue_work(args, function_id)?.await?.get_context(); + let result = engine_queue.enqueue_work( + args, + function_id, + #[cfg(feature = "auto_batching")] gpu_id, + )?.await?.get_context(); recorder.record(RecordPoint::FutureReturn); return Ok(result); } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 3fad4298..8803d91e 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -18,6 +18,7 @@ use std::{ }; const MAX_QUEUE: usize = 16384; +const GPU_NUMBER: usize = 4; const FRONT_QUEUE: usize = 10; // Specify how many requests can be looked at each polling iteration; limit it to lower polling time const MAX_QUEUE_TIME: Duration = Duration::new(0, 30_000_000); // 30 ms const MAX_IDLE_TIME: Duration = Duration::new(0, 5_000_000); // 5 ms @@ -96,7 +97,12 @@ impl WorkQueue for EngineQueue { } impl EnqueueWork for EngineQueue { - fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { + fn enqueue_work( + &self, + args: WorkToDo, + function_id: FunctionId, + #[cfg(feature = "auto_batching")] gpu_id: u8, + ) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; match self.queue_in.try_send((args, debt)) { Ok(()) => (), @@ -253,7 +259,12 @@ impl WorkQueue for EngineQueueGPU { } impl EnqueueWork for EngineQueueGPU { - fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { + fn enqueue_work( + &self, + args: WorkToDo, + function_id: FunctionId, + #[cfg(feature = "auto_batching")] gpu_id: u8, + ) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; match args { @@ -341,8 +352,8 @@ impl Clone for EngineQueueGPU { pub struct BatchingQueue { engine_counter: Cell, engine_id: u8, - general_queue_in: crossbeam::channel::Sender<(WorkToDo, Debt)>, - general_queue_out: crossbeam::channel::Receiver<(WorkToDo, Debt)>, + general_queue_in: Vec>, + general_queue_out: Vec>, atoms_times: Arc>>, atoms_map: Arc>>>, last_function: Arc>>, @@ -368,7 +379,7 @@ impl WorkQueue for BatchingQueue { } // If some non-FunctionArguments is ready, run it - let _ = match self.general_queue_out.try_recv() { + let _ = match self.general_queue_out[self.engine_id as usize].try_recv() { Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), Ok(recieved) => { let (recieved_args, recevied_dept) = recieved; @@ -472,6 +483,7 @@ impl WorkQueue for BatchingQueue { recorder: _, inputs_vec: _, children_debts: _, + gpu_id: _, } = head_args { for input in inputs { @@ -490,6 +502,7 @@ impl WorkQueue for BatchingQueue { ref mut recorder, inputs_vec: _, children_debts: _, + gpu_id: _, } = child_args { for (i, input) in inputs.into_iter().enumerate() { @@ -501,7 +514,6 @@ impl WorkQueue for BatchingQueue { recorder.set_batch_size(batched); } } - // println!("{} requests batched", batched); // Record the size of the batch if let WorkToDo::BatchAtom { @@ -510,6 +522,7 @@ impl WorkQueue for BatchingQueue { ref mut recorder, inputs_vec: _, children_debts: _, + gpu_id: _, } = head_args { recorder.set_batch_size(batched); @@ -546,12 +559,15 @@ impl WorkQueue for BatchingQueue { function_id: _, inputs: _, recorder: _, + ref mut gpu_id, } = head_args { *inputs_vec = Some(call_inputs_vec); *children_debts = Some(call_children_debts); + *gpu_id = Some(self.engine_id); } + // last_function.insert(self.engine_id, send_function_id); break (head_args, head_debt); } } @@ -574,7 +590,12 @@ impl WorkQueue for BatchingQueue { #[cfg(feature = "auto_batching")] impl EnqueueWork for BatchingQueue { - fn enqueue_work(&self, args: WorkToDo, function_id: FunctionId) -> DandelionResult { + fn enqueue_work( + &self, + args: WorkToDo, + function_id: FunctionId, + gpu_id: u8, + ) -> DandelionResult { let (promise, debt) = self.promise_buffer.get_promise()?; match args { @@ -594,7 +615,7 @@ impl EnqueueWork for BatchingQueue { .unwrap() .push_back((args, debt)); } - _ => match self.general_queue_in.try_send((args, debt)) { + _ => match self.general_queue_in[gpu_id as usize].try_send((args, debt)) { Ok(()) => (), Err(TrySendError::Disconnected(_)) => { error!("Failed to enqueu work, workqueue has been disconnected") @@ -618,7 +639,17 @@ impl BatchingQueue { let engine_counter = Cell::new(0); let engine_id = 0; - let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); + let mut general_queue_in = Vec::new(); + let mut general_queue_out = Vec::new(); + + // Each engine gets its own general_queue. + // This ensures that once a batch is defined to run on a GPU, + // it will be run on that GPU. + for i in 0..=GPU_NUMBER { + let (sender, receiver) = crossbeam::channel::bounded(MAX_QUEUE); + general_queue_in.push(sender); + general_queue_out.push(receiver); + } let atoms_times = Arc::new(Mutex::new(VecDeque::with_capacity(MAX_QUEUE))); let atoms_map = Arc::new(Mutex::new(HashMap::new())); @@ -638,8 +669,8 @@ impl BatchingQueue { return BatchingQueue { engine_counter, engine_id, - general_queue_in: sender, - general_queue_out: receiver, + general_queue_in, + general_queue_out, atoms_times, atoms_map, last_function, diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 24d42a9d..d4abccf1 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -90,6 +90,7 @@ async fn load_local( mut recorder: Recorder, work_queue: Box, path: String, + #[cfg(feature = "auto_batching")] gpu_id: u8, ) -> DandelionResult> { recorder.record(RecordPoint::ParsingQueue); let function = work_queue @@ -100,7 +101,8 @@ async fn load_local( static_domain, recorder: recorder.get_sub_recorder(), }, - function_id + function_id, + #[cfg(feature = "auto_batching")] gpu_id, )? .await? .get_function(); @@ -371,6 +373,7 @@ impl FunctionRegistry { ctx_size: usize, non_caching: bool, mut recorder: Recorder, + #[cfg(feature = "auto_batching")] gpu_id: u8, ) -> DandelionResult<(Context, FunctionConfig)> { // get loader let (driver, load_queue) = match self.drivers.get(&engine_id) { @@ -394,6 +397,7 @@ impl FunctionRegistry { recorder.get_sub_recorder(), load_queue.clone(), path.clone(), + #[cfg(feature = "auto_batching")] gpu_id, )) as Pin> + Send>>) .shared(); @@ -423,7 +427,8 @@ impl FunctionRegistry { recorder: recorder.get_sub_recorder(), ctx_size: ctx_size, }, - function_id + function_id, + #[cfg(feature = "auto_batching")] gpu_id, )? .await; recorder.record(RecordPoint::LoadDequeue); diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 7dd913d4..f67fc73e 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -181,6 +181,7 @@ pub enum WorkToDo { recorder: Recorder, inputs_vec: Option>>, children_debts: Option>, + gpu_id: Option, }, Shutdown(), } @@ -191,6 +192,7 @@ pub struct BatchInfo { pub inputs_vec: Option>>, pub context_arc: Option>, pub children_debts: Option>, + pub gpu_id: Option, } pub enum WorkDone { diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 47192300..9c6bee71 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -132,12 +132,14 @@ pub fn run_thread( recorder, inputs_vec, children_debts, + gpu_id, } => { debt.fulfill(Ok(WorkDone::SharedContext(BatchInfo { batch_pos: 0, inputs_vec, context_arc: None, children_debts, + gpu_id, }))); continue; }

2=m zq8Svd#83Z<`!#<)1+u| zjR|7*lVDd1ug9;q3K53(F%P|j2T`Y4GitXSD(w!blf{R|#DgR9-GS))y1qpl@^wdp*1 zhI#qq1I!*Y=Kezo{5X~OBJWydueK1wMm8m=o%Hv6b~Jl8**7-r5A_2yskIvH2mflj zz(X%HZ$wJKj`xs>{XR_PZ!_o6ZDEh!UQF@}@m(c>Jie)F3ot6cN@`LtkM|naYh=et zYGTg|B(#^%9F_-@{Di`U@_5ku`O;TdDerlO*^}`9j=*2qS-kHR7Ldd3IL%sUJgPEUdT)7HSa=~KX6P=NG!xMKeU%$g7bpAPPt<38bI@#JbaAD02n zkufm7l-5y$c%c}-KXWSVzd1v!qjL5LSdcpksDC&&ANyJGUFuR$W<3aN%ceqX$`WCt z()Af`fD1k?h(`G=2rhEM4-4L);IoM^kTDfM1CyrXXKm(8_$IYjGIOj9*L*%<}85}bU!BbKWmGdZ1DW|`|Jg$N5u@j*()(73O zg<4MkGh!a!Hf9DmmMjeC?)7>62IXqVb4x6)$T1LFJHtvD%jIzP{eM|%%uHj(eovN$ z))jTLQ16W%W=O`*z9;!&G5MxJ_3T9!&^EcNQ-xozRo?)`sWxG^b4eb&y`22b6tsH49YV)Ban zPt|m&@!H^1^rJa@0(^E)1`OU~^Dh*)kMScLFQO=^$Owt?3V~Oe@P8M0s|nAO$<8q`K6EkG2y&$%L;I_}wNvE|%m=O!zc`R}pRup(J$* z#zvDuN*o!w(S$D)_%ajjjwkuaCcHx6)dt+5j?W0jCJM?i5tJzg8FhH;2(r1{gnJVR zpK8LZ1-`DOUI^b7o6 z6aJ?plAmG1CngiV(tvC8&rT)AO$LTKd{5vtCcMN=@(-Bsmjo`7^*Y}F2)y<>jEI-~ zX=JF>#266xDidCsPV$>g_!)uEGT|2mexC{7m_b`}pX5J}Re@TuP3`{+8BtQ1N*F#f zG6`R8K-A%f0xvh=F(XO-eiMFP;InmnX#bxq_&O7QIv3^r(mWI6 zkHnA~On6)#;qy)SQh_&`@a_2|f2#@qrNGwR)BSKL7IZ6^HZ z0>9mae<$!}Bd*SWZZsLHFfzpWp8{_&;g`mc`~nl6T}b!_6COL3vVDVeURGHxTGCG+ zOZ$%uy)u>ARDqwPLX>oe$xvny;T98qyTH+_VQsCz(W_x?GvbNPg@*cvcPF*y1jBH7 zYYx3HaP2ZiImIQ!rN0V%=+0HN6}s_0Pjud;3el&AmkE663aytkL-m4zccs=8Eky4M ze5npgl2sjkCGfk$xGwMT(Zp3@T(>_1K3L=SuM%9ttz=gP_X>RI#?h_4Ch(z~MbT!L z$I~oB7lpp;hXj6acy`@RNZ>1B?OIoQ5k6TYI%~o*x`);9*jl$=5!_WnT+PGN0yh*= z4L>jN)nR#k#;XD!s(<>1Wlo^k*M#Nujk#UmYYnNQP0%73L*+?d>KVAR&h7t5aMy*+ z>C-##Q76$kR6}&ULg0;Id42jv1-^a=*Yfcv0&g0^HLorUym{z~)hCFbL=(4!6?A;M zz&8xxaqw~7B3RK}1N-Y;@a*Q5@E!Ik53Yp9bxtU%uYn8LpQulOee2?2MB6;5XmG-| zbqVlsLmaGsU>>~LkPYh^7C}*?iz_cM3wYNj%Xti%AGifhG~#=C!%B!>PdYWQ4f{W# zZpVX*YhvJHQ#{(!-K152TFtEj)9;2$G>hJMmWgHB^2)IQ`+*H@{ZTjJ8$cEV#1x$_;GZVvX;$c|nSNU|2OSa|;-H_r9n zhPm{*Lo!sGVqx00@#%D8$bw$oh)WgF0fBAqbUm)i5TQm~s-E%i3Uc*z>vfj6REvvX zV4K^n>n;i1`fxk*B&s_ltl&7jgE$tu3?C>-(7)XZse4KxxGRrE!v{Oc;HBMe=-*et zZ1DBYagean3N?@BL7P$vK7S!xR_1_be;!l>CV+Qu1Dp!@5VwL7$YU zr0qB{yAj8+F;Y_4*6#wzaDK-ecvBh8(!%J}1Ia8?oBckxvePH#eQ{4R^MGs5&Cs~B zh~>h-_PgN49eFGd`u5z-3Xpz~jiEWAc*kfq7OgF3zOa?vJ?hH-zN-k*+DqV9JM-9$ z;ThX-4K3|fcz2Hv=Xh+_C^kK;xqojt95~u{);_U+4vY@uf#rY?zT8vD?t~5P&2Z{~$FH9T42&yZik^HE9Y$<) z7t@ZsNQsM0r}Ku6@)R9xY$U&yN9SO8-N<5PiYU2WMC!!l^AHMA7{0Tm-tje78_`K4!TSX zY}8Rj*<_%ps#u2T*%B3%$F&DJ!l|(28E7giui+mx;!|mvLj*RWmxKbr!3m*Ya5V$v z9cNE4id~U=lq#mA^(ci*kxwhFOnz=AbG`ce!we4pd7M9Okc!)&bkHVUc1U@f^9RYz zFx@H*4x(Y54s5Z=A^=Zh$4k#=OMxvhNS8?x(Vr(E9V=UC3yB`>K-!74#;+qf5#<$? zPqcrFN4C&0Aq63jinLL|DqGTwbOO=_16$%z-bg1SzgM-l3K!Itj{aKI1zcKaNpH)s zBubJLEn`^EIwZeXQ5quTz^Meu)tVlI@8Hs4onn(N9YO<{nB$s(cOA^tniG?Qe0w7v zUW{0JTUIO?j3a}WXoVD!Ue(?uvX|-16!v!5q<0;%8X-mH=Q{i-kmbZzX35ofNJ0TE zWSRk70Xmc@94aPInnACbUx9)AO}6EA_tD?Tb7+_As|eTOcgm0rZZA4RCtIM z3-ZQ$ksK`EWt0542hKKH4+8yzA_>u|JP{$5Xxu9iY+PLVe?~1a8IKX=-3Yy@76*bW5-}gIaaK{7!ll}SlXhv z65JvTp;O<}{y*C=iDcJSOFDjSCJj2#0TE(b0@W!;$suh4P8ZqBvK|!noUL)9%nbJb z&95qKjZUZP5tFR$p=+x((`eAy>P-|O>;H@9U~&o>v{?^|30zxknWXO|eT-;4MwFfm zTNYi3QX`m{MDnAo37UM2SGDiQtR#=O#>S}t?unr7UNV@NtghI#H7<_mJTB&6vJC&^Nv8OUqR7fI%(5aB66 zf!GXP;SvMKKT={_z8%E2GfMhHX!|#A7CL0dr!(Z*1%r< z-wtai@#`k}M+)m;p^kSHIh5G{rSo-}DMHX`?+IF&Z2wUQ0Uevzb{7w}vWb42lN#mI zssuc2vb79{qW)dV!P9QR?-P)wYvj^+OCALpb4~Ek?Zmbyxff64V6R$F6WgLKQ%OEd zW0~&9RcN%UHOeaN{o;^FUFXbJIhp{O&H^5`{LQjV1==Q~!C%qgi^B4PjSkb(`VF8pUsiuDAikLV`hAe|6Tm~ z&*0QKAFMhz8?lO~2?JjQyCO<-%|jvQb$@=Ig+ zssn6t>=$Fn7fDhk@u!g<*RoQj%M8yEOAyj-btz3{ON&sCK_HkE+f9!V*y>z7_aK`* zCT*Kak0dX#Q81{9MXN*cS;qqhncH3xP_a7hJ;ZXndnp#Ux-!uXeVow5PVrh2Yp2UH zf>_xORi%n|p%~l4`)H1%8d}E(2yNo*5TepfRTgIsBKiO?Kg7~vH1GtkC9s&jW-O?^9)~crBqH@IFG@!)OA$726d^VG`A3hl8`xht zdz`uDsgLrE!?;z~csY{x3y-Rn>v-*9w0t}7BcVC_`EeBTKIDyT^2B~s3u8iBzu@dJ zbF-^F{RmDpg$IzbR~%4f+Ij5}mUHAOX5nWKvt;{k!gv?r>>OuDPnr4hEuCkJ8`6%aXkD;VfazpU#E#z8N}&jVz{`qPzab3pjXpZ4EpqPGF*QL)c}mN zCZ>1z&x|0?;H)6yBnn`94;PSXg1j2}-j&Fw_lYuHRqI=V>Y$r5Oj5djipR9w4;k1zon5&{ED$AbRBoDvGWX zI+vFt%If$>CvcW>9w3?Dy{yZ4pTscF!RLlZu2pvHVzns7ZsL8YET4OYAAb^0@+8il zL|aosst|533T51$71`GFuknnNsI{1vqZUi!%TA&{J9&U?1bg&}x=!LmZ}UEqiQylS z%(tAKM47fX^m)8bp-dGIAS!?UV_y9fnthM=kxMM7>~{uHA9Z|Ud&p@lqv zD261x6U`U$KBVgV`!p9Q5L%0LnGXMT!RN-7+5N#APez zRY3ppp2YE;d9k9)X?+bc)aiyXE~&JFho2hhV;MBLJB#;;=`IT?_1#+&$5(ihIQO zR}!x!Xb$TcHCj^*eo3uhZ*24nhlpz$NvI?ly{|QUkB`ti@H9&sou!FeRpT_>st5tc z>*pDYjrQG(F&*y1w=6}~4u8JF1JAIux&pH=tMSoyxO7zV_pD{Krf*2T`|%ZQxc+e- zIE70oRHcm@u_nSsyutfWn$6(V&$5E@SMdRy^oE}^X{Kh)un%<+_Th(|J&SYCHA~k= zh|BA|{8K%#0@Fd5aAGa;gcFkYI}(zt*z3$GsLmcoD#`*}sc#E^=Fc|AKcMa1uML3ozJn$Tyh-O}Wnia^iynOa)R+xfS z)s!K7I6IAoTQ$R)HZYMbVc^^*ak2GCP1aSv`N%*f$w<>~u9)3R)K|czALC>pSUn3kCMh$fn9RKgD$j3NBd5Mzwt2dTsmLr8gufarM6ojcpRvrECmlkD!C z@0|J0RT17#+6iu0 zP-GzG6344c@Es}uOAJb2BYsh8;IEQ#tlh(m&y3BA~>UY4zoi6eh z{Ub==H5{L7M;_ZrlH_>RoB^;uB-^>6nr#R?&zh5-1uA8(*5g-jET3-x^?ikX73gCh z2YT30P-A+Fi&X@7vGaI+AlS>cg*0|K*z0I^u%|-Fe#*#A3>99mvQyW1fhwSq2)C*s zoGSJU+^U{%>T8|AtsWCj>r>4pLopxC6tP8_FWguYHK`B-6|V~+@H)m;hhvI^4MrZu z;+j3|NVr;Yu~1|aI~ArvfB{E5FcX1qUdM%d9BtH1)a&<$4A?2`7fJUT@T{x{4A>>9JCyG zX7TwqE*KuT7|~TN=l0ARCRw8S0%o0D5AX!nKrjbx!`J|s zjk8YpE&|JQ4iC+m!-4)kMquo)&p|p=Ee*o)rQH7??tjw>GkQd=&#IizFDedZ`J_SS z#cSw5b{DsYgnjcUzz;+Sd9riDzd7M8Cnl&a>Cl@dU^GZ!?(Y62BN3E$=ZcbuSq zYXX09;4UX1hud7o1dx#QTU@`v6FPVpR3C;{tF$1@baBEv+>RZMg*SNsY#{~MStdZx76A1J2vFevgY#p{iGR@I*QFNG)X5c~{$B#z-~n(6DFCid z0_lpDfSyyCA9YoyHJraig$l0o0Ah`+$^@WYSPp>t{R+U%Xl{+K@c?}4Vav)g0qFH9 z2SELP0c8HGoSzS|HKeo|N=uNi1wehi04a300u&7;4l$qldNj)kqh8F%H)BjdOnr*@ zL`RB-&?0O=vrLG3F`>A>9A9DR%y>LOz0pR9`U4ZnLuMt|Y~w?HK0ZA~30oD*LuC=R zqFJsO_4x=>L}&5IGi32~pm~l@SA7WFi;#A{S!?QP>&!xs-UXQ+9HO6SZ+AM>M+M>W zFupsy-W00Fh3g(TOYe$+`L1vu;V&=RIi2Xw<-HVlTEZx%XkK!?hlZgeF7$+w z&|ywtX>Eb;6m4rL6Rfti-PbEl#y_)kYg~DPjkU&n9kef@bhFyFxbiE<4hd{GOCxrI zO{3rC0yc?QmUXqoR(6Yn?Q0s_DkCe z1eRg7?Qx}(O(WJpJ1RHcc=Y5S6P$q6s>*1sAt9MnH7Qp*>+!AUlaHRS6A zY#r25#e-h8-TN3*I?%hR)Ek>sXZP-5V;z+Zou+eMBut557yWkUFq=kdSZjLoqa|LF zH=a&$iAS_Kg35mZp2U={ delta 1763 zcmZvcO-vI(6vt=V?b5B3?v{_O5G(~Ha8PP$geJsx+d@br+HfEkk(5NEBpyus2)Ay9 zgBKIx^I(hz8a)_|5>t*GtS1g?Lc+lqO~8{E6OM)u^u66_yL9^!cHaEv&&<4!>FQ%) z=iW+B*oZUBV%9M2nPy2g!bJRbG67Ui9JW1+ke7yFQi{QQ=?41#(k0h{tF-M=L^$+B zpxu{;k7+UQX03d?+OUMKn}uqCd%sNH;^3-4`ZfojGWl@_FPc0+Jbz?y(_Cmj!e}z< zq5~8MUp9G%gGb$@R~>xL-a}T>vXdWP0(nrl(vE|o51K&N-KTYE@1+8 zFAU3%Fv(KUvV}HMP%Jj&^6ai0G{jpLLACCVG4ZL`y=~!IZ8pYdMnFOcnf49k_roJpr^FK z9A}F>SEQu6)Zg?06j1$*H;Y}}D6S}!Q<|LRFKZFz@w`KmZIT@A4iu5S1wF0FBmCvu zg56XYf9!nV%d`wu%fxF#8OO_Z8uafrQ$f#Y3ugNhwW;y4eTGd*F8y**s8StgXDm>8 z(sUa3qtB?*Ekhv_8W`e~x)O~ygV!);wa*-s@oL6di`ciuEJ*e0C6rN%rY(8x8{@96 zCXGro1^SrQ&KjuO;N4i4%ZOvIcfihAk1MB;+q>Fp?OYiv52Tu)7;FW@u%|acZd|Et G5c&^MZnmoc diff --git a/machine_interface/tests/libs/cuda/resnet18.cubin b/machine_interface/tests/libs/cuda/resnet18.cubin index 4548a5d09bce0b33e55c74ea1cca0cda68960be7..16cea0d6a64e53500739ae5f583073e2bd734a59 100644 GIT binary patch delta 10166 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 H@;Cnv$-w$k delta 9984 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 diff --git a/server/Cargo.toml b/server/Cargo.toml index 8934e828..d6d3418b 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,48 +1,49 @@ -[package] -name = "dandelion_server" -version = "0.1.0" -edition = "2021" - -[dependencies] -machine_interface = { path = "../machine_interface", features = ["bytes_context"] } -dandelion_commons = { path = "../dandelion_commons" } -dispatcher = { path = "../dispatcher" } -futures = { version = "0.3.28", default-features=false} -tokio = { version = "1", features = ["full"] } -hyper = { version = "1.2", features = ["server", "http1", "http2"] } -hyper-util = { version = "0.1", features = ["tokio", "server-auto"] } -http-body-util = "0.1" -core_affinity = "0.8" -num_cpus = "1.16.0" -bytes = "1.6" -http = "0.2" -log = { version = "0.4.20", features = ["serde", "release_max_level_warn"] } -env_logger = "0.10.1" -serde = "1.0.197" -serde_json = "1.0.115" -bson = "2.9.0" -serde_bytes = "0.11" -signal-hook = "0.3.17" -signal-hook-tokio = {version = "0.3.1", features = [ "futures-v0_3"]} -# input parsing -clap = {version = "4.5", features = ["env","derive"]} -lazy_static = "1.4.0" - -[dev-dependencies] -assert_cmd = "2.0" -byteorder = "1.5" -serial_test = "3.1.1" -reqwest = { version = "0.12", features = ["blocking"] } - -[features] -cheri = ["machine_interface/cheri"] -mmu = ["machine_interface/mmu"] -kvm = ["machine_interface/kvm"] -wasm = ["machine_interface/wasm"] -reqwest_io = ["machine_interface/reqwest_io"] -timestamp = ["dispatcher/timestamp"] -gpu = [] -hip = ["gpu"] -cuda = ["gpu"] -gpu_thread = ["machine_interface/gpu_thread", "gpu"] -gpu_process = ["machine_interface/gpu_process", "gpu"] +[package] +name = "dandelion_server" +version = "0.1.0" +edition = "2021" + +[dependencies] +machine_interface = { path = "../machine_interface", features = ["bytes_context"] } +dandelion_commons = { path = "../dandelion_commons" } +dispatcher = { path = "../dispatcher" } +futures = { version = "0.3.28", default-features=false} +tokio = { version = "1", features = ["full"] } +hyper = { version = "1.2", features = ["server", "http1", "http2"] } +hyper-util = { version = "0.1", features = ["tokio", "server-auto"] } +http-body-util = "0.1" +core_affinity = "0.8" +num_cpus = "1.16.0" +bytes = "1.6" +http = "0.2" +log = { version = "0.4.20", features = ["serde", "release_max_level_warn"] } +env_logger = "0.10.1" +serde = "1.0.197" +serde_json = "1.0.115" +bson = "2.9.0" +serde_bytes = "0.11" +signal-hook = "0.3.17" +signal-hook-tokio = {version = "0.3.1", features = [ "futures-v0_3"]} +# input parsing +clap = {version = "4.5", features = ["env","derive"]} +lazy_static = "1.4.0" +flexbuffers = "25.2.10" + +[dev-dependencies] +assert_cmd = "2.0" +byteorder = "1.5" +serial_test = "3.1.1" +reqwest = { version = "0.12", features = ["blocking"] } + +[features] +cheri = ["machine_interface/cheri"] +mmu = ["machine_interface/mmu"] +kvm = ["machine_interface/kvm"] +wasm = ["machine_interface/wasm"] +reqwest_io = ["machine_interface/reqwest_io"] +timestamp = ["dispatcher/timestamp"] +gpu = [] +hip = ["gpu"] +cuda = ["gpu"] +gpu_thread = ["machine_interface/gpu_thread", "gpu"] +gpu_process = ["machine_interface/gpu_process", "gpu"] diff --git a/server/src/main.rs b/server/src/main.rs index 3145bdeb..89139619 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -185,6 +185,12 @@ async fn register_library(req: Request) -> Result, +} + #[derive(Debug, Deserialize)] struct RegisterFunction { /// String name of the function @@ -199,7 +205,7 @@ struct RegisterFunction { /// Binary representation of the function, ignored if a local path is given binary: Vec, /// Metadata for the sets and optionally static items to pass into the function for that set - input_sets: Vec<(String, Option)>>)>, + input_sets: Vec<(String, Option)>>)>, /// output set names output_sets: Vec, } @@ -213,9 +219,16 @@ async fn register_function( .await .expect("Failed to extract body from function registration") .to_bytes(); + info!("Size received: {:?}", bytes.len()); // find first line end character - let request_map: RegisterFunction = - bson::from_slice(&bytes).expect("Should be able to deserialize request"); + /*let request_map: RegisterFunction = + bson::from_slice(&bytes).expect("Should be able to deserialize request");*/ + + use flexbuffers; + let slice: &[u8] = &bytes; + let deserializer = flexbuffers::Reader::get_root(slice).unwrap(); + let request_map: RegisterFunction = RegisterFunction::deserialize(deserializer).unwrap(); + // if local is present ignore the binary let path_string = if !request_map.local_path.is_empty() { // check that file exists @@ -264,7 +277,11 @@ async fn register_function( if let Some(static_data) = data { let data_contexts = static_data .into_iter() - .map(|(item_name, data_vec)| { + .map(|(item_name, data_chunks)| { + let mut data_vec: Vec = Vec::new(); + for mut chunk in data_chunks { + data_vec.append(&mut chunk.chunk); + } let item_size = data_vec.len(); let mut new_context = ReadOnlyContext::new(data_vec.into_boxed_slice()).unwrap(); @@ -396,7 +413,8 @@ async fn service( | "/cold/resnet34batch8" | "/cold/resnet34batch16" | "/cold/resnet50" - | "/cold/resnet152" => serve_request(true, req, dispatcher).await, + | "/cold/resnet152" + | "/cold/llama_kv" => serve_request(true, req, dispatcher).await, "/hot/matmul" | "/hot/matmulstore" | "/hot/compute" @@ -423,7 +441,8 @@ async fn service( | "/hot/resnet34batch8" | "/hot/resnet34batch16" | "/hot/resnet50" - | "/hot/resnet152" => serve_request(false, req, dispatcher).await, + | "/hot/resnet152" + | "/hot/llama_kv" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From 4088eefa113dbef54ab27005b48fd6a06a903580 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 25 Jun 2025 15:59:10 +0200 Subject: [PATCH 157/176] resnet + vit_b_16 models added --- .../gpu/gpu_tests/cuda_tests/load_models.rs | 970 +++++++++++++----- .../tests/data/cuda/test_gpu_resnet101.json | 795 ++++++++++++++ .../tests/data/cuda/test_gpu_resnet152.json | 795 ++++++++++++++ .../tests/data/cuda/test_gpu_resnet34.json | 795 ++++++++++++++ .../tests/data/cuda/test_gpu_resnet50.json | 795 ++++++++++++++ .../tests/data/cuda/test_gpu_vit_b_16.json | 6 +- .../tests/libs/cuda/resnet101.cubin | Bin 0 -> 246816 bytes .../tests/libs/cuda/resnet152.cubin | Bin 0 -> 246816 bytes .../tests/libs/cuda/resnet18.cubin | Bin 208288 -> 208288 bytes .../tests/libs/cuda/resnet34.cubin | Bin 0 -> 246816 bytes .../tests/libs/cuda/resnet50.cubin | Bin 0 -> 246816 bytes .../tests/libs/cuda/vit_b_16.cubin | Bin 154528 -> 179872 bytes server/src/main.rs | 2 + 13 files changed, 3910 insertions(+), 248 deletions(-) create mode 100644 machine_interface/tests/data/cuda/test_gpu_resnet101.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_resnet152.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_resnet34.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_resnet50.json create mode 100644 machine_interface/tests/libs/cuda/resnet101.cubin create mode 100644 machine_interface/tests/libs/cuda/resnet152.cubin create mode 100644 machine_interface/tests/libs/cuda/resnet34.cubin create mode 100644 machine_interface/tests/libs/cuda/resnet50.cubin diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 84b6cb93..3ac32aaa 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -5,197 +5,6 @@ use crate::{ memory_domain::Context, }; -pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 2359296, params_path, &mut function_context); - add_buffer("p1", 3072, params_path, &mut function_context); - add_buffer("p2", 3072, params_path, &mut function_context); - add_buffer("p3", 605184, params_path, &mut function_context); - add_buffer("p4", 3072, params_path, &mut function_context); - add_buffer("p5", 3072, params_path, &mut function_context); - add_buffer("p6", 7077888, params_path, &mut function_context); - add_buffer("p7", 9216, params_path, &mut function_context); - add_buffer("p8", 8, params_path, &mut function_context); - add_buffer("p9", 4, params_path, &mut function_context); - add_buffer("p10", 8, params_path, &mut function_context); - add_buffer("p11", 4, params_path, &mut function_context); - add_buffer("p12", 8, params_path, &mut function_context); - add_buffer("p13", 2359296, params_path, &mut function_context); - add_buffer("p14", 3072, params_path, &mut function_context); - add_buffer("p15", 3072, params_path, &mut function_context); - add_buffer("p16", 3072, params_path, &mut function_context); - add_buffer("p17", 9437184, params_path, &mut function_context); - add_buffer("p18", 12288, params_path, &mut function_context); - add_buffer("p19", 9437184, params_path, &mut function_context); - add_buffer("p20", 3072, params_path, &mut function_context); - add_buffer("p21", 3072, params_path, &mut function_context); - add_buffer("p22", 3072, params_path, &mut function_context); - add_buffer("p23", 7077888, params_path, &mut function_context); - add_buffer("p24", 9216, params_path, &mut function_context); - add_buffer("p25", 4, params_path, &mut function_context); - add_buffer("p26", 4, params_path, &mut function_context); - add_buffer("p27", 2359296, params_path, &mut function_context); - add_buffer("p28", 3072, params_path, &mut function_context); - add_buffer("p29", 3072, params_path, &mut function_context); - add_buffer("p30", 3072, params_path, &mut function_context); - add_buffer("p31", 9437184, params_path, &mut function_context); - add_buffer("p32", 12288, params_path, &mut function_context); - add_buffer("p33", 9437184, params_path, &mut function_context); - add_buffer("p34", 3072, params_path, &mut function_context); - add_buffer("p35", 3072, params_path, &mut function_context); - add_buffer("p36", 3072, params_path, &mut function_context); - add_buffer("p37", 7077888, params_path, &mut function_context); - add_buffer("p38", 9216, params_path, &mut function_context); - add_buffer("p39", 4, params_path, &mut function_context); - add_buffer("p40", 4, params_path, &mut function_context); - add_buffer("p41", 2359296, params_path, &mut function_context); - add_buffer("p42", 3072, params_path, &mut function_context); - add_buffer("p43", 3072, params_path, &mut function_context); - add_buffer("p44", 3072, params_path, &mut function_context); - add_buffer("p45", 9437184, params_path, &mut function_context); - add_buffer("p46", 12288, params_path, &mut function_context); - add_buffer("p47", 9437184, params_path, &mut function_context); - add_buffer("p48", 3072, params_path, &mut function_context); - add_buffer("p49", 3072, params_path, &mut function_context); - add_buffer("p50", 3072, params_path, &mut function_context); - add_buffer("p51", 7077888, params_path, &mut function_context); - add_buffer("p52", 9216, params_path, &mut function_context); - add_buffer("p53", 4, params_path, &mut function_context); - add_buffer("p54", 4, params_path, &mut function_context); - add_buffer("p55", 2359296, params_path, &mut function_context); - add_buffer("p56", 3072, params_path, &mut function_context); - add_buffer("p57", 3072, params_path, &mut function_context); - add_buffer("p58", 3072, params_path, &mut function_context); - add_buffer("p59", 9437184, params_path, &mut function_context); - add_buffer("p60", 12288, params_path, &mut function_context); - add_buffer("p61", 9437184, params_path, &mut function_context); - add_buffer("p62", 3072, params_path, &mut function_context); - add_buffer("p63", 3072, params_path, &mut function_context); - add_buffer("p64", 3072, params_path, &mut function_context); - add_buffer("p65", 7077888, params_path, &mut function_context); - add_buffer("p66", 9216, params_path, &mut function_context); - add_buffer("p67", 4, params_path, &mut function_context); - add_buffer("p68", 4, params_path, &mut function_context); - add_buffer("p69", 2359296, params_path, &mut function_context); - add_buffer("p70", 3072, params_path, &mut function_context); - add_buffer("p71", 3072, params_path, &mut function_context); - add_buffer("p72", 3072, params_path, &mut function_context); - add_buffer("p73", 9437184, params_path, &mut function_context); - add_buffer("p74", 12288, params_path, &mut function_context); - add_buffer("p75", 9437184, params_path, &mut function_context); - add_buffer("p76", 3072, params_path, &mut function_context); - add_buffer("p77", 3072, params_path, &mut function_context); - add_buffer("p78", 3072, params_path, &mut function_context); - add_buffer("p79", 7077888, params_path, &mut function_context); - add_buffer("p80", 9216, params_path, &mut function_context); - add_buffer("p81", 4, params_path, &mut function_context); - add_buffer("p82", 4, params_path, &mut function_context); - add_buffer("p83", 2359296, params_path, &mut function_context); - add_buffer("p84", 3072, params_path, &mut function_context); - add_buffer("p85", 3072, params_path, &mut function_context); - add_buffer("p86", 3072, params_path, &mut function_context); - add_buffer("p87", 9437184, params_path, &mut function_context); - add_buffer("p88", 12288, params_path, &mut function_context); - add_buffer("p89", 9437184, params_path, &mut function_context); - add_buffer("p90", 3072, params_path, &mut function_context); - add_buffer("p91", 3072, params_path, &mut function_context); - add_buffer("p92", 3072, params_path, &mut function_context); - add_buffer("p93", 7077888, params_path, &mut function_context); - add_buffer("p94", 9216, params_path, &mut function_context); - add_buffer("p95", 4, params_path, &mut function_context); - add_buffer("p96", 4, params_path, &mut function_context); - add_buffer("p97", 2359296, params_path, &mut function_context); - add_buffer("p98", 3072, params_path, &mut function_context); - add_buffer("p99", 3072, params_path, &mut function_context); - add_buffer("p100", 3072, params_path, &mut function_context); - add_buffer("p101", 9437184, params_path, &mut function_context); - add_buffer("p102", 12288, params_path, &mut function_context); - add_buffer("p103", 9437184, params_path, &mut function_context); - add_buffer("p104", 3072, params_path, &mut function_context); - add_buffer("p105", 3072, params_path, &mut function_context); - add_buffer("p106", 3072, params_path, &mut function_context); - add_buffer("p107", 7077888, params_path, &mut function_context); - add_buffer("p108", 9216, params_path, &mut function_context); - add_buffer("p109", 4, params_path, &mut function_context); - add_buffer("p110", 4, params_path, &mut function_context); - add_buffer("p111", 2359296, params_path, &mut function_context); - add_buffer("p112", 3072, params_path, &mut function_context); - add_buffer("p113", 3072, params_path, &mut function_context); - add_buffer("p114", 3072, params_path, &mut function_context); - add_buffer("p115", 9437184, params_path, &mut function_context); - add_buffer("p116", 12288, params_path, &mut function_context); - add_buffer("p117", 9437184, params_path, &mut function_context); - add_buffer("p118", 3072, params_path, &mut function_context); - add_buffer("p119", 3072, params_path, &mut function_context); - add_buffer("p120", 3072, params_path, &mut function_context); - add_buffer("p121", 7077888, params_path, &mut function_context); - add_buffer("p122", 9216, params_path, &mut function_context); - add_buffer("p123", 4, params_path, &mut function_context); - add_buffer("p124", 4, params_path, &mut function_context); - add_buffer("p125", 2359296, params_path, &mut function_context); - add_buffer("p126", 3072, params_path, &mut function_context); - add_buffer("p127", 3072, params_path, &mut function_context); - add_buffer("p128", 3072, params_path, &mut function_context); - add_buffer("p129", 9437184, params_path, &mut function_context); - add_buffer("p130", 12288, params_path, &mut function_context); - add_buffer("p131", 9437184, params_path, &mut function_context); - add_buffer("p132", 3072, params_path, &mut function_context); - add_buffer("p133", 3072, params_path, &mut function_context); - add_buffer("p134", 3072, params_path, &mut function_context); - add_buffer("p135", 7077888, params_path, &mut function_context); - add_buffer("p136", 9216, params_path, &mut function_context); - add_buffer("p137", 4, params_path, &mut function_context); - add_buffer("p138", 4, params_path, &mut function_context); - add_buffer("p139", 2359296, params_path, &mut function_context); - add_buffer("p140", 3072, params_path, &mut function_context); - add_buffer("p141", 3072, params_path, &mut function_context); - add_buffer("p142", 3072, params_path, &mut function_context); - add_buffer("p143", 9437184, params_path, &mut function_context); - add_buffer("p144", 12288, params_path, &mut function_context); - add_buffer("p145", 9437184, params_path, &mut function_context); - add_buffer("p146", 3072, params_path, &mut function_context); - add_buffer("p147", 3072, params_path, &mut function_context); - add_buffer("p148", 3072, params_path, &mut function_context); - add_buffer("p149", 7077888, params_path, &mut function_context); - add_buffer("p150", 9216, params_path, &mut function_context); - add_buffer("p151", 4, params_path, &mut function_context); - add_buffer("p152", 4, params_path, &mut function_context); - add_buffer("p153", 2359296, params_path, &mut function_context); - add_buffer("p154", 3072, params_path, &mut function_context); - add_buffer("p155", 3072, params_path, &mut function_context); - add_buffer("p156", 3072, params_path, &mut function_context); - add_buffer("p157", 9437184, params_path, &mut function_context); - add_buffer("p158", 12288, params_path, &mut function_context); - add_buffer("p159", 9437184, params_path, &mut function_context); - add_buffer("p160", 3072, params_path, &mut function_context); - add_buffer("p161", 3072, params_path, &mut function_context); - add_buffer("p162", 3072, params_path, &mut function_context); - add_buffer("p163", 7077888, params_path, &mut function_context); - add_buffer("p164", 9216, params_path, &mut function_context); - add_buffer("p165", 4, params_path, &mut function_context); - add_buffer("p166", 4, params_path, &mut function_context); - add_buffer("p167", 2359296, params_path, &mut function_context); - add_buffer("p168", 3072, params_path, &mut function_context); - add_buffer("p169", 3072, params_path, &mut function_context); - add_buffer("p170", 3072, params_path, &mut function_context); - add_buffer("p171", 9437184, params_path, &mut function_context); - add_buffer("p172", 12288, params_path, &mut function_context); - add_buffer("p173", 9437184, params_path, &mut function_context); - add_buffer("p174", 3072, params_path, &mut function_context); - add_buffer("p175", 3072, params_path, &mut function_context); - add_buffer("p176", 3072, params_path, &mut function_context); - add_buffer("p177", 3072000, params_path, &mut function_context); - add_buffer("p178", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_bert(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/bert/"; @@ -1658,60 +1467,6 @@ pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec< (output_size, output_name.to_string(), expected, function_context) } -pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 589824, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p6", 589824, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p8", 589824, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 1048576, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p16", 1048576, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 1048576, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p22", 4194304, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p26", 4194304, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p32", 16777216, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p36", 16777216, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_llama_kv(mut function_context: Context) -> (usize, String, Vec, Context) { let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/llama_kv/"; @@ -2064,3 +1819,728 @@ pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, C (output_size, output_name.to_string(), expected, function_context) } + +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet50/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 16384, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 65536, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 256, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 256, params_path, &mut function_context); + add_buffer("p14", 65536, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 65536, params_path, &mut function_context); + add_buffer("p17", 256, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 256, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 131072, params_path, &mut function_context); + add_buffer("p23", 512, params_path, &mut function_context); + add_buffer("p24", 589824, params_path, &mut function_context); + add_buffer("p25", 512, params_path, &mut function_context); + add_buffer("p26", 262144, params_path, &mut function_context); + add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p28", 524288, params_path, &mut function_context); + add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p30", 262144, params_path, &mut function_context); + add_buffer("p31", 512, params_path, &mut function_context); + add_buffer("p32", 1048576, params_path, &mut function_context); + add_buffer("p33", 512, params_path, &mut function_context); + add_buffer("p34", 262144, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 262144, params_path, &mut function_context); + add_buffer("p37", 512, params_path, &mut function_context); + add_buffer("p38", 1048576, params_path, &mut function_context); + add_buffer("p39", 512, params_path, &mut function_context); + add_buffer("p40", 262144, params_path, &mut function_context); + add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p42", 262144, params_path, &mut function_context); + add_buffer("p43", 512, params_path, &mut function_context); + add_buffer("p44", 1048576, params_path, &mut function_context); + add_buffer("p45", 512, params_path, &mut function_context); + add_buffer("p46", 262144, params_path, &mut function_context); + add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p48", 524288, params_path, &mut function_context); + add_buffer("p49", 1024, params_path, &mut function_context); + add_buffer("p50", 2359296, params_path, &mut function_context); + add_buffer("p51", 1024, params_path, &mut function_context); + add_buffer("p52", 1048576, params_path, &mut function_context); + add_buffer("p53", 4096, params_path, &mut function_context); + add_buffer("p54", 2097152, params_path, &mut function_context); + add_buffer("p55", 4096, params_path, &mut function_context); + add_buffer("p56", 1048576, params_path, &mut function_context); + add_buffer("p57", 1024, params_path, &mut function_context); + add_buffer("p58", 4194304, params_path, &mut function_context); + add_buffer("p59", 1024, params_path, &mut function_context); + add_buffer("p60", 1048576, params_path, &mut function_context); + add_buffer("p61", 4096, params_path, &mut function_context); + add_buffer("p62", 1048576, params_path, &mut function_context); + add_buffer("p63", 1024, params_path, &mut function_context); + add_buffer("p64", 4194304, params_path, &mut function_context); + add_buffer("p65", 1024, params_path, &mut function_context); + add_buffer("p66", 1048576, params_path, &mut function_context); + add_buffer("p67", 4096, params_path, &mut function_context); + add_buffer("p68", 1048576, params_path, &mut function_context); + add_buffer("p69", 1024, params_path, &mut function_context); + add_buffer("p70", 4194304, params_path, &mut function_context); + add_buffer("p71", 1024, params_path, &mut function_context); + add_buffer("p72", 1048576, params_path, &mut function_context); + add_buffer("p73", 4096, params_path, &mut function_context); + add_buffer("p74", 1048576, params_path, &mut function_context); + add_buffer("p75", 1024, params_path, &mut function_context); + add_buffer("p76", 4194304, params_path, &mut function_context); + add_buffer("p77", 1024, params_path, &mut function_context); + add_buffer("p78", 1048576, params_path, &mut function_context); + add_buffer("p79", 4096, params_path, &mut function_context); + add_buffer("p80", 1048576, params_path, &mut function_context); + add_buffer("p81", 1024, params_path, &mut function_context); + add_buffer("p82", 4194304, params_path, &mut function_context); + add_buffer("p83", 1024, params_path, &mut function_context); + add_buffer("p84", 1048576, params_path, &mut function_context); + add_buffer("p85", 4096, params_path, &mut function_context); + add_buffer("p86", 2097152, params_path, &mut function_context); + add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p88", 9437184, params_path, &mut function_context); + add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p90", 4194304, params_path, &mut function_context); + add_buffer("p91", 8192, params_path, &mut function_context); + add_buffer("p92", 8388608, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 4194304, params_path, &mut function_context); + add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p96", 16777216, params_path, &mut function_context); + add_buffer("p97", 2048, params_path, &mut function_context); + add_buffer("p98", 4194304, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 4194304, params_path, &mut function_context); + add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p102", 16777216, params_path, &mut function_context); + add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p104", 4194304, params_path, &mut function_context); + add_buffer("p105", 8192, params_path, &mut function_context); + add_buffer("p106", 8192000, params_path, &mut function_context); + add_buffer("p107", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet34/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 16384, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 65536, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 256, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 256, params_path, &mut function_context); + add_buffer("p14", 65536, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 65536, params_path, &mut function_context); + add_buffer("p17", 256, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 256, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 131072, params_path, &mut function_context); + add_buffer("p23", 512, params_path, &mut function_context); + add_buffer("p24", 589824, params_path, &mut function_context); + add_buffer("p25", 512, params_path, &mut function_context); + add_buffer("p26", 262144, params_path, &mut function_context); + add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p28", 524288, params_path, &mut function_context); + add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p30", 262144, params_path, &mut function_context); + add_buffer("p31", 512, params_path, &mut function_context); + add_buffer("p32", 1048576, params_path, &mut function_context); + add_buffer("p33", 512, params_path, &mut function_context); + add_buffer("p34", 262144, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 262144, params_path, &mut function_context); + add_buffer("p37", 512, params_path, &mut function_context); + add_buffer("p38", 1048576, params_path, &mut function_context); + add_buffer("p39", 512, params_path, &mut function_context); + add_buffer("p40", 262144, params_path, &mut function_context); + add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p42", 262144, params_path, &mut function_context); + add_buffer("p43", 512, params_path, &mut function_context); + add_buffer("p44", 1048576, params_path, &mut function_context); + add_buffer("p45", 512, params_path, &mut function_context); + add_buffer("p46", 262144, params_path, &mut function_context); + add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p48", 524288, params_path, &mut function_context); + add_buffer("p49", 1024, params_path, &mut function_context); + add_buffer("p50", 2359296, params_path, &mut function_context); + add_buffer("p51", 1024, params_path, &mut function_context); + add_buffer("p52", 1048576, params_path, &mut function_context); + add_buffer("p53", 4096, params_path, &mut function_context); + add_buffer("p54", 2097152, params_path, &mut function_context); + add_buffer("p55", 4096, params_path, &mut function_context); + add_buffer("p56", 1048576, params_path, &mut function_context); + add_buffer("p57", 1024, params_path, &mut function_context); + add_buffer("p58", 4194304, params_path, &mut function_context); + add_buffer("p59", 1024, params_path, &mut function_context); + add_buffer("p60", 1048576, params_path, &mut function_context); + add_buffer("p61", 4096, params_path, &mut function_context); + add_buffer("p62", 1048576, params_path, &mut function_context); + add_buffer("p63", 1024, params_path, &mut function_context); + add_buffer("p64", 4194304, params_path, &mut function_context); + add_buffer("p65", 1024, params_path, &mut function_context); + add_buffer("p66", 1048576, params_path, &mut function_context); + add_buffer("p67", 4096, params_path, &mut function_context); + add_buffer("p68", 1048576, params_path, &mut function_context); + add_buffer("p69", 1024, params_path, &mut function_context); + add_buffer("p70", 4194304, params_path, &mut function_context); + add_buffer("p71", 1024, params_path, &mut function_context); + add_buffer("p72", 1048576, params_path, &mut function_context); + add_buffer("p73", 4096, params_path, &mut function_context); + add_buffer("p74", 1048576, params_path, &mut function_context); + add_buffer("p75", 1024, params_path, &mut function_context); + add_buffer("p76", 4194304, params_path, &mut function_context); + add_buffer("p77", 1024, params_path, &mut function_context); + add_buffer("p78", 1048576, params_path, &mut function_context); + add_buffer("p79", 4096, params_path, &mut function_context); + add_buffer("p80", 1048576, params_path, &mut function_context); + add_buffer("p81", 1024, params_path, &mut function_context); + add_buffer("p82", 4194304, params_path, &mut function_context); + add_buffer("p83", 1024, params_path, &mut function_context); + add_buffer("p84", 1048576, params_path, &mut function_context); + add_buffer("p85", 4096, params_path, &mut function_context); + add_buffer("p86", 2097152, params_path, &mut function_context); + add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p88", 9437184, params_path, &mut function_context); + add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p90", 4194304, params_path, &mut function_context); + add_buffer("p91", 8192, params_path, &mut function_context); + add_buffer("p92", 8388608, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 4194304, params_path, &mut function_context); + add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p96", 16777216, params_path, &mut function_context); + add_buffer("p97", 2048, params_path, &mut function_context); + add_buffer("p98", 4194304, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 4194304, params_path, &mut function_context); + add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p102", 16777216, params_path, &mut function_context); + add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p104", 4194304, params_path, &mut function_context); + add_buffer("p105", 8192, params_path, &mut function_context); + add_buffer("p106", 8192000, params_path, &mut function_context); + add_buffer("p107", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet101(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet101/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 16384, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 65536, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 256, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 256, params_path, &mut function_context); + add_buffer("p14", 65536, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 65536, params_path, &mut function_context); + add_buffer("p17", 256, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 256, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 131072, params_path, &mut function_context); + add_buffer("p23", 512, params_path, &mut function_context); + add_buffer("p24", 589824, params_path, &mut function_context); + add_buffer("p25", 512, params_path, &mut function_context); + add_buffer("p26", 262144, params_path, &mut function_context); + add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p28", 524288, params_path, &mut function_context); + add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p30", 262144, params_path, &mut function_context); + add_buffer("p31", 512, params_path, &mut function_context); + add_buffer("p32", 1048576, params_path, &mut function_context); + add_buffer("p33", 512, params_path, &mut function_context); + add_buffer("p34", 262144, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 262144, params_path, &mut function_context); + add_buffer("p37", 512, params_path, &mut function_context); + add_buffer("p38", 1048576, params_path, &mut function_context); + add_buffer("p39", 512, params_path, &mut function_context); + add_buffer("p40", 262144, params_path, &mut function_context); + add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p42", 262144, params_path, &mut function_context); + add_buffer("p43", 512, params_path, &mut function_context); + add_buffer("p44", 1048576, params_path, &mut function_context); + add_buffer("p45", 512, params_path, &mut function_context); + add_buffer("p46", 262144, params_path, &mut function_context); + add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p48", 524288, params_path, &mut function_context); + add_buffer("p49", 1024, params_path, &mut function_context); + add_buffer("p50", 2359296, params_path, &mut function_context); + add_buffer("p51", 1024, params_path, &mut function_context); + add_buffer("p52", 1048576, params_path, &mut function_context); + add_buffer("p53", 4096, params_path, &mut function_context); + add_buffer("p54", 2097152, params_path, &mut function_context); + add_buffer("p55", 4096, params_path, &mut function_context); + add_buffer("p56", 1048576, params_path, &mut function_context); + add_buffer("p57", 1024, params_path, &mut function_context); + add_buffer("p58", 4194304, params_path, &mut function_context); + add_buffer("p59", 1024, params_path, &mut function_context); + add_buffer("p60", 1048576, params_path, &mut function_context); + add_buffer("p61", 4096, params_path, &mut function_context); + add_buffer("p62", 1048576, params_path, &mut function_context); + add_buffer("p63", 1024, params_path, &mut function_context); + add_buffer("p64", 4194304, params_path, &mut function_context); + add_buffer("p65", 1024, params_path, &mut function_context); + add_buffer("p66", 1048576, params_path, &mut function_context); + add_buffer("p67", 4096, params_path, &mut function_context); + add_buffer("p68", 1048576, params_path, &mut function_context); + add_buffer("p69", 1024, params_path, &mut function_context); + add_buffer("p70", 4194304, params_path, &mut function_context); + add_buffer("p71", 1024, params_path, &mut function_context); + add_buffer("p72", 1048576, params_path, &mut function_context); + add_buffer("p73", 4096, params_path, &mut function_context); + add_buffer("p74", 1048576, params_path, &mut function_context); + add_buffer("p75", 1024, params_path, &mut function_context); + add_buffer("p76", 4194304, params_path, &mut function_context); + add_buffer("p77", 1024, params_path, &mut function_context); + add_buffer("p78", 1048576, params_path, &mut function_context); + add_buffer("p79", 4096, params_path, &mut function_context); + add_buffer("p80", 1048576, params_path, &mut function_context); + add_buffer("p81", 1024, params_path, &mut function_context); + add_buffer("p82", 4194304, params_path, &mut function_context); + add_buffer("p83", 1024, params_path, &mut function_context); + add_buffer("p84", 1048576, params_path, &mut function_context); + add_buffer("p85", 4096, params_path, &mut function_context); + add_buffer("p86", 2097152, params_path, &mut function_context); + add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p88", 9437184, params_path, &mut function_context); + add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p90", 4194304, params_path, &mut function_context); + add_buffer("p91", 8192, params_path, &mut function_context); + add_buffer("p92", 8388608, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 4194304, params_path, &mut function_context); + add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p96", 16777216, params_path, &mut function_context); + add_buffer("p97", 2048, params_path, &mut function_context); + add_buffer("p98", 4194304, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 4194304, params_path, &mut function_context); + add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p102", 16777216, params_path, &mut function_context); + add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p104", 4194304, params_path, &mut function_context); + add_buffer("p105", 8192, params_path, &mut function_context); + add_buffer("p106", 8192000, params_path, &mut function_context); + add_buffer("p107", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet152/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 16384, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 65536, params_path, &mut function_context); + add_buffer("p7", 1024, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 1024, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 256, params_path, &mut function_context); + add_buffer("p12", 589824, params_path, &mut function_context); + add_buffer("p13", 256, params_path, &mut function_context); + add_buffer("p14", 65536, params_path, &mut function_context); + add_buffer("p15", 1024, params_path, &mut function_context); + add_buffer("p16", 65536, params_path, &mut function_context); + add_buffer("p17", 256, params_path, &mut function_context); + add_buffer("p18", 589824, params_path, &mut function_context); + add_buffer("p19", 256, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 131072, params_path, &mut function_context); + add_buffer("p23", 512, params_path, &mut function_context); + add_buffer("p24", 589824, params_path, &mut function_context); + add_buffer("p25", 512, params_path, &mut function_context); + add_buffer("p26", 262144, params_path, &mut function_context); + add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p28", 524288, params_path, &mut function_context); + add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p30", 262144, params_path, &mut function_context); + add_buffer("p31", 512, params_path, &mut function_context); + add_buffer("p32", 1048576, params_path, &mut function_context); + add_buffer("p33", 512, params_path, &mut function_context); + add_buffer("p34", 262144, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 262144, params_path, &mut function_context); + add_buffer("p37", 512, params_path, &mut function_context); + add_buffer("p38", 1048576, params_path, &mut function_context); + add_buffer("p39", 512, params_path, &mut function_context); + add_buffer("p40", 262144, params_path, &mut function_context); + add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p42", 262144, params_path, &mut function_context); + add_buffer("p43", 512, params_path, &mut function_context); + add_buffer("p44", 1048576, params_path, &mut function_context); + add_buffer("p45", 512, params_path, &mut function_context); + add_buffer("p46", 262144, params_path, &mut function_context); + add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p48", 524288, params_path, &mut function_context); + add_buffer("p49", 1024, params_path, &mut function_context); + add_buffer("p50", 2359296, params_path, &mut function_context); + add_buffer("p51", 1024, params_path, &mut function_context); + add_buffer("p52", 1048576, params_path, &mut function_context); + add_buffer("p53", 4096, params_path, &mut function_context); + add_buffer("p54", 2097152, params_path, &mut function_context); + add_buffer("p55", 4096, params_path, &mut function_context); + add_buffer("p56", 1048576, params_path, &mut function_context); + add_buffer("p57", 1024, params_path, &mut function_context); + add_buffer("p58", 4194304, params_path, &mut function_context); + add_buffer("p59", 1024, params_path, &mut function_context); + add_buffer("p60", 1048576, params_path, &mut function_context); + add_buffer("p61", 4096, params_path, &mut function_context); + add_buffer("p62", 1048576, params_path, &mut function_context); + add_buffer("p63", 1024, params_path, &mut function_context); + add_buffer("p64", 4194304, params_path, &mut function_context); + add_buffer("p65", 1024, params_path, &mut function_context); + add_buffer("p66", 1048576, params_path, &mut function_context); + add_buffer("p67", 4096, params_path, &mut function_context); + add_buffer("p68", 1048576, params_path, &mut function_context); + add_buffer("p69", 1024, params_path, &mut function_context); + add_buffer("p70", 4194304, params_path, &mut function_context); + add_buffer("p71", 1024, params_path, &mut function_context); + add_buffer("p72", 1048576, params_path, &mut function_context); + add_buffer("p73", 4096, params_path, &mut function_context); + add_buffer("p74", 1048576, params_path, &mut function_context); + add_buffer("p75", 1024, params_path, &mut function_context); + add_buffer("p76", 4194304, params_path, &mut function_context); + add_buffer("p77", 1024, params_path, &mut function_context); + add_buffer("p78", 1048576, params_path, &mut function_context); + add_buffer("p79", 4096, params_path, &mut function_context); + add_buffer("p80", 1048576, params_path, &mut function_context); + add_buffer("p81", 1024, params_path, &mut function_context); + add_buffer("p82", 4194304, params_path, &mut function_context); + add_buffer("p83", 1024, params_path, &mut function_context); + add_buffer("p84", 1048576, params_path, &mut function_context); + add_buffer("p85", 4096, params_path, &mut function_context); + add_buffer("p86", 2097152, params_path, &mut function_context); + add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p88", 9437184, params_path, &mut function_context); + add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p90", 4194304, params_path, &mut function_context); + add_buffer("p91", 8192, params_path, &mut function_context); + add_buffer("p92", 8388608, params_path, &mut function_context); + add_buffer("p93", 8192, params_path, &mut function_context); + add_buffer("p94", 4194304, params_path, &mut function_context); + add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p96", 16777216, params_path, &mut function_context); + add_buffer("p97", 2048, params_path, &mut function_context); + add_buffer("p98", 4194304, params_path, &mut function_context); + add_buffer("p99", 8192, params_path, &mut function_context); + add_buffer("p100", 4194304, params_path, &mut function_context); + add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p102", 16777216, params_path, &mut function_context); + add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p104", 4194304, params_path, &mut function_context); + add_buffer("p105", 8192, params_path, &mut function_context); + add_buffer("p106", 8192000, params_path, &mut function_context); + add_buffer("p107", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 2359296, params_path, &mut function_context); + add_buffer("p1", 3072, params_path, &mut function_context); + add_buffer("p2", 3072, params_path, &mut function_context); + add_buffer("p3", 605184, params_path, &mut function_context); + add_buffer("p4", 3072, params_path, &mut function_context); + add_buffer("p5", 3072, params_path, &mut function_context); + add_buffer("p6", 7077888, params_path, &mut function_context); + add_buffer("p7", 9216, params_path, &mut function_context); + add_buffer("p8", 8, params_path, &mut function_context); + add_buffer("p9", 4, params_path, &mut function_context); + add_buffer("p10", 8, params_path, &mut function_context); + add_buffer("p11", 4, params_path, &mut function_context); + add_buffer("p12", 8, params_path, &mut function_context); + add_buffer("p13", 2359296, params_path, &mut function_context); + add_buffer("p14", 3072, params_path, &mut function_context); + add_buffer("p15", 3072, params_path, &mut function_context); + add_buffer("p16", 3072, params_path, &mut function_context); + add_buffer("p17", 9437184, params_path, &mut function_context); + add_buffer("p18", 12288, params_path, &mut function_context); + add_buffer("p19", 9437184, params_path, &mut function_context); + add_buffer("p20", 3072, params_path, &mut function_context); + add_buffer("p21", 3072, params_path, &mut function_context); + add_buffer("p22", 3072, params_path, &mut function_context); + add_buffer("p23", 7077888, params_path, &mut function_context); + add_buffer("p24", 9216, params_path, &mut function_context); + add_buffer("p25", 4, params_path, &mut function_context); + add_buffer("p26", 4, params_path, &mut function_context); + add_buffer("p27", 2359296, params_path, &mut function_context); + add_buffer("p28", 3072, params_path, &mut function_context); + add_buffer("p29", 3072, params_path, &mut function_context); + add_buffer("p30", 3072, params_path, &mut function_context); + add_buffer("p31", 9437184, params_path, &mut function_context); + add_buffer("p32", 12288, params_path, &mut function_context); + add_buffer("p33", 9437184, params_path, &mut function_context); + add_buffer("p34", 3072, params_path, &mut function_context); + add_buffer("p35", 3072, params_path, &mut function_context); + add_buffer("p36", 3072, params_path, &mut function_context); + add_buffer("p37", 7077888, params_path, &mut function_context); + add_buffer("p38", 9216, params_path, &mut function_context); + add_buffer("p39", 4, params_path, &mut function_context); + add_buffer("p40", 4, params_path, &mut function_context); + add_buffer("p41", 2359296, params_path, &mut function_context); + add_buffer("p42", 3072, params_path, &mut function_context); + add_buffer("p43", 3072, params_path, &mut function_context); + add_buffer("p44", 3072, params_path, &mut function_context); + add_buffer("p45", 9437184, params_path, &mut function_context); + add_buffer("p46", 12288, params_path, &mut function_context); + add_buffer("p47", 9437184, params_path, &mut function_context); + add_buffer("p48", 3072, params_path, &mut function_context); + add_buffer("p49", 3072, params_path, &mut function_context); + add_buffer("p50", 3072, params_path, &mut function_context); + add_buffer("p51", 7077888, params_path, &mut function_context); + add_buffer("p52", 9216, params_path, &mut function_context); + add_buffer("p53", 4, params_path, &mut function_context); + add_buffer("p54", 4, params_path, &mut function_context); + add_buffer("p55", 2359296, params_path, &mut function_context); + add_buffer("p56", 3072, params_path, &mut function_context); + add_buffer("p57", 3072, params_path, &mut function_context); + add_buffer("p58", 3072, params_path, &mut function_context); + add_buffer("p59", 9437184, params_path, &mut function_context); + add_buffer("p60", 12288, params_path, &mut function_context); + add_buffer("p61", 9437184, params_path, &mut function_context); + add_buffer("p62", 3072, params_path, &mut function_context); + add_buffer("p63", 3072, params_path, &mut function_context); + add_buffer("p64", 3072, params_path, &mut function_context); + add_buffer("p65", 7077888, params_path, &mut function_context); + add_buffer("p66", 9216, params_path, &mut function_context); + add_buffer("p67", 4, params_path, &mut function_context); + add_buffer("p68", 4, params_path, &mut function_context); + add_buffer("p69", 2359296, params_path, &mut function_context); + add_buffer("p70", 3072, params_path, &mut function_context); + add_buffer("p71", 3072, params_path, &mut function_context); + add_buffer("p72", 3072, params_path, &mut function_context); + add_buffer("p73", 9437184, params_path, &mut function_context); + add_buffer("p74", 12288, params_path, &mut function_context); + add_buffer("p75", 9437184, params_path, &mut function_context); + add_buffer("p76", 3072, params_path, &mut function_context); + add_buffer("p77", 3072, params_path, &mut function_context); + add_buffer("p78", 3072, params_path, &mut function_context); + add_buffer("p79", 7077888, params_path, &mut function_context); + add_buffer("p80", 9216, params_path, &mut function_context); + add_buffer("p81", 4, params_path, &mut function_context); + add_buffer("p82", 4, params_path, &mut function_context); + add_buffer("p83", 2359296, params_path, &mut function_context); + add_buffer("p84", 3072, params_path, &mut function_context); + add_buffer("p85", 3072, params_path, &mut function_context); + add_buffer("p86", 3072, params_path, &mut function_context); + add_buffer("p87", 9437184, params_path, &mut function_context); + add_buffer("p88", 12288, params_path, &mut function_context); + add_buffer("p89", 9437184, params_path, &mut function_context); + add_buffer("p90", 3072, params_path, &mut function_context); + add_buffer("p91", 3072, params_path, &mut function_context); + add_buffer("p92", 3072, params_path, &mut function_context); + add_buffer("p93", 7077888, params_path, &mut function_context); + add_buffer("p94", 9216, params_path, &mut function_context); + add_buffer("p95", 4, params_path, &mut function_context); + add_buffer("p96", 4, params_path, &mut function_context); + add_buffer("p97", 2359296, params_path, &mut function_context); + add_buffer("p98", 3072, params_path, &mut function_context); + add_buffer("p99", 3072, params_path, &mut function_context); + add_buffer("p100", 3072, params_path, &mut function_context); + add_buffer("p101", 9437184, params_path, &mut function_context); + add_buffer("p102", 12288, params_path, &mut function_context); + add_buffer("p103", 9437184, params_path, &mut function_context); + add_buffer("p104", 3072, params_path, &mut function_context); + add_buffer("p105", 3072, params_path, &mut function_context); + add_buffer("p106", 3072, params_path, &mut function_context); + add_buffer("p107", 7077888, params_path, &mut function_context); + add_buffer("p108", 9216, params_path, &mut function_context); + add_buffer("p109", 4, params_path, &mut function_context); + add_buffer("p110", 4, params_path, &mut function_context); + add_buffer("p111", 2359296, params_path, &mut function_context); + add_buffer("p112", 3072, params_path, &mut function_context); + add_buffer("p113", 3072, params_path, &mut function_context); + add_buffer("p114", 3072, params_path, &mut function_context); + add_buffer("p115", 9437184, params_path, &mut function_context); + add_buffer("p116", 12288, params_path, &mut function_context); + add_buffer("p117", 9437184, params_path, &mut function_context); + add_buffer("p118", 3072, params_path, &mut function_context); + add_buffer("p119", 3072, params_path, &mut function_context); + add_buffer("p120", 3072, params_path, &mut function_context); + add_buffer("p121", 7077888, params_path, &mut function_context); + add_buffer("p122", 9216, params_path, &mut function_context); + add_buffer("p123", 4, params_path, &mut function_context); + add_buffer("p124", 4, params_path, &mut function_context); + add_buffer("p125", 2359296, params_path, &mut function_context); + add_buffer("p126", 3072, params_path, &mut function_context); + add_buffer("p127", 3072, params_path, &mut function_context); + add_buffer("p128", 3072, params_path, &mut function_context); + add_buffer("p129", 9437184, params_path, &mut function_context); + add_buffer("p130", 12288, params_path, &mut function_context); + add_buffer("p131", 9437184, params_path, &mut function_context); + add_buffer("p132", 3072, params_path, &mut function_context); + add_buffer("p133", 3072, params_path, &mut function_context); + add_buffer("p134", 3072, params_path, &mut function_context); + add_buffer("p135", 7077888, params_path, &mut function_context); + add_buffer("p136", 9216, params_path, &mut function_context); + add_buffer("p137", 4, params_path, &mut function_context); + add_buffer("p138", 4, params_path, &mut function_context); + add_buffer("p139", 2359296, params_path, &mut function_context); + add_buffer("p140", 3072, params_path, &mut function_context); + add_buffer("p141", 3072, params_path, &mut function_context); + add_buffer("p142", 3072, params_path, &mut function_context); + add_buffer("p143", 9437184, params_path, &mut function_context); + add_buffer("p144", 12288, params_path, &mut function_context); + add_buffer("p145", 9437184, params_path, &mut function_context); + add_buffer("p146", 3072, params_path, &mut function_context); + add_buffer("p147", 3072, params_path, &mut function_context); + add_buffer("p148", 3072, params_path, &mut function_context); + add_buffer("p149", 7077888, params_path, &mut function_context); + add_buffer("p150", 9216, params_path, &mut function_context); + add_buffer("p151", 4, params_path, &mut function_context); + add_buffer("p152", 4, params_path, &mut function_context); + add_buffer("p153", 2359296, params_path, &mut function_context); + add_buffer("p154", 3072, params_path, &mut function_context); + add_buffer("p155", 3072, params_path, &mut function_context); + add_buffer("p156", 3072, params_path, &mut function_context); + add_buffer("p157", 9437184, params_path, &mut function_context); + add_buffer("p158", 12288, params_path, &mut function_context); + add_buffer("p159", 9437184, params_path, &mut function_context); + add_buffer("p160", 3072, params_path, &mut function_context); + add_buffer("p161", 3072, params_path, &mut function_context); + add_buffer("p162", 3072, params_path, &mut function_context); + add_buffer("p163", 7077888, params_path, &mut function_context); + add_buffer("p164", 9216, params_path, &mut function_context); + add_buffer("p165", 4, params_path, &mut function_context); + add_buffer("p166", 4, params_path, &mut function_context); + add_buffer("p167", 2359296, params_path, &mut function_context); + add_buffer("p168", 3072, params_path, &mut function_context); + add_buffer("p169", 3072, params_path, &mut function_context); + add_buffer("p170", 3072, params_path, &mut function_context); + add_buffer("p171", 9437184, params_path, &mut function_context); + add_buffer("p172", 12288, params_path, &mut function_context); + add_buffer("p173", 9437184, params_path, &mut function_context); + add_buffer("p174", 3072, params_path, &mut function_context); + add_buffer("p175", 3072, params_path, &mut function_context); + add_buffer("p176", 3072, params_path, &mut function_context); + add_buffer("p177", 3072000, params_path, &mut function_context); + add_buffer("p178", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet101.json b/machine_interface/tests/data/cuda/test_gpu_resnet101.json new file mode 100644 index 00000000..fd6a20b3 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_resnet101.json @@ -0,0 +1,795 @@ +{ + "modules": [{"module_name": "resnet101.cubin", "path": "cuda/resnet101.cubin"}], + "kernels": [ + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_3_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet101.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 112}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_max_pool2d_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p6"}, {"Ptr": "p7"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p16"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p28"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p34"}, {"Ptr": "p35"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p40"}, {"Ptr": "p41"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p60"}, {"Ptr": "p61"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p72"}, {"Ptr": "p73"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet152.json b/machine_interface/tests/data/cuda/test_gpu_resnet152.json new file mode 100644 index 00000000..e74b71a3 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_resnet152.json @@ -0,0 +1,795 @@ +{ + "modules": [{"module_name": "resnet152.cubin", "path": "cuda/resnet152.cubin"}], + "kernels": [ + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_3_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet152.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 112}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_max_pool2d_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p6"}, {"Ptr": "p7"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p16"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p28"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p34"}, {"Ptr": "p35"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p40"}, {"Ptr": "p41"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p60"}, {"Ptr": "p61"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p72"}, {"Ptr": "p73"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet34.json b/machine_interface/tests/data/cuda/test_gpu_resnet34.json new file mode 100644 index 00000000..932b8a12 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_resnet34.json @@ -0,0 +1,795 @@ +{ + "modules": [{"module_name": "resnet34.cubin", "path": "cuda/resnet34.cubin"}], + "kernels": [ + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_3_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet34.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 112}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_max_pool2d_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p6"}, {"Ptr": "p7"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p16"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p28"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p34"}, {"Ptr": "p35"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p40"}, {"Ptr": "p41"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p60"}, {"Ptr": "p61"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p72"}, {"Ptr": "p73"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet50.json b/machine_interface/tests/data/cuda/test_gpu_resnet50.json new file mode 100644 index 00000000..0c0cfbe1 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_resnet50.json @@ -0,0 +1,795 @@ +{ + "modules": [{"module_name": "resnet50.cubin", "path": "cuda/resnet50.cubin"}], + "kernels": [ + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_3_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet50.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", "p64", "p65", "p66", "p67", "p68", "p69", "p70", "p71", "p72", "p73", "p74", "p75", "p76", "p77", "p78", "p79", "p80", "p81", "p82", "p83", "p84", "p85", "p86", "p87", "p88", "p89", "p90", "p91", "p92", "p93", "p94", "p95", "p96", "p97", "p98", "p99", "p100", "p101", "p102", "p103", "p104", "p105", "p106", "p107"], + "buffers": {"output": {"Absolute": 4000}, "b3": {"Absolute": 3211264}, "b4": {"Absolute": 3211264}, "b9": {"Absolute": 3211264}, "b94": {"Absolute": 100352}, "b103": {"Absolute": 100352}, "b115": {"Absolute": 1806336}, "b116": {"Absolute": 1806336}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 112}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_max_pool2d_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p6"}, {"Ptr": "p7"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p16"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 56}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p20"}, {"Ptr": "p21"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_4_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p28"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p26"}, {"Ptr": "p27"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p34"}, {"Ptr": "p35"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p40"}, {"Ptr": "p41"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_5_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p46"}, {"Ptr": "p47"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_6_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 2}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_7_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p52"}, {"Ptr": "p53"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p60"}, {"Ptr": "p61"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p66"}, {"Ptr": "p67"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}, {"Ptr": "p72"}, {"Ptr": "p73"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p76"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p78"}, {"Ptr": "p79"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_8_kernel", [{"Ptr": "b9"}, {"Ptr": "b4"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b115"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b116"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p84"}, {"Ptr": "p85"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_9_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_10_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b3"}, {"Ptr": "b94"}, {"Ptr": "p90"}, {"Ptr": "p91"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b3"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b9"}, {"Ptr": "b103"}, {"Ptr": "p98"}, {"Ptr": "p99"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_11_kernel", [{"Ptr": "b94"}, {"Ptr": "b9"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b115"}, {"Ptr": "b94"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b115"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b103"}, {"Ptr": "b116"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b103"}, {"Ptr": "p104"}, {"Ptr": "p105"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 64}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 7}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b115"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b94"}, {"Ptr": "b115"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b94"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json b/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json index d23ec103..6e9a5193 100644 --- a/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json +++ b/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json @@ -38,10 +38,10 @@ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 14}, - "grid_dim_z": {"Absolute": 48}, - "block_dim_x": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 14}, "block_dim_y": {"Absolute": 1}, - "block_dim_z": {"Absolute": 16}, + "block_dim_z": {"Absolute": 2}, "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_concatenate_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { diff --git a/machine_interface/tests/libs/cuda/resnet101.cubin b/machine_interface/tests/libs/cuda/resnet101.cubin new file mode 100644 index 0000000000000000000000000000000000000000..e70b692fb3bcf1e205f42c1fc817410b7185d633 GIT binary patch literal 246816 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³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 M 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 a&HGeyc1!mAQ7VExZlhSXT|Msz@kWI;6GJ1?{PY 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 delta 10210 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 J8wK+B{|Cq3nG*m2 diff --git a/machine_interface/tests/libs/cuda/resnet34.cubin b/machine_interface/tests/libs/cuda/resnet34.cubin new file mode 100644 index 0000000000000000000000000000000000000000..a83d0e169b057732ba7860664676cc7ad3c3053f GIT binary patch literal 246816 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 NdSgfBE%$%y{13v8Nnii~ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/resnet50.cubin b/machine_interface/tests/libs/cuda/resnet50.cubin new file mode 100644 index 0000000000000000000000000000000000000000..92e3be357af2c99b0ce7cb285df42c5274a6f578 GIT binary patch literal 246816 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%0D&e)erA8HzwMN<8}Ww=p{7tH8A;gRQQ)|Kgv)0 zH>czBe1EG4V6>hBe49s~@vgJO&z~){o4vvjy`Z&K%<)J2AG6t}7zVwLo(Qk`S(>4> zq%6{3&==t`{-S*vgXdDQzbA%(kMie=P0a4rYd}ApZt?Ie-xmCKmnpA!g8bWevSbK; z=ns&6+q8GgZ#qE0F72w->{+q?qpIXv>{D%J3Av=GEJS2ZvKA`bJGvIJjZCr3W@poh+!CAoZ z`Ud7dNy6eGeK+C&4SQ+4+l&J$eAw(aQ;P8I?dAAv)`KCx*}rJ>OFwJDW?K4rVDz;S ze5u2S7lS7-vBdc{7QY-^@AKi=V9CsfEPg(Cs@uosf|pPD@N|$d_OSWqg13x4Ej$%` zAmQil3|9JmxH0&n0UvG-N`pS!5rhl}RpLt8d_angI0<-5xEyZqs25iLFf99uQ!>qA=&xWUCv zO6T!lIL2!lKkT2x{vVx3rSo_0azAgM{Mnpuvk16Fcj`%Y_<15b7 zX=FSDeVvb!68$USpECPzBYAMP4a*Zoew_Ex%>A{k%n$v5UJ!~NHo8NeM4>+*eRV2= z2jcTb0Aqh|3;TbaUuon|g@CVjoAY`S(9aHFmA{Mp#pcFsRKV=F=J`myjVd47{nnpL zJANt3cXOztU;bnFeUhEfHy{XK%psr4RA{~9qq4tfb#`rbLr%!#q)fZjj43M`0~B~yOVIH*xz5mfLQ0L;C#7P3(c1q%P+t4dDS21 zm-J~YN*)hzen~Fq?V$n%8`H#^jn@K=BjlfjCu zzse7BykPOSfk*cqB7yQDe&Kw+arT9pqvE_roJW!jo^bl3yr}=6g@e@w;x!Sic+CnNu;peKEeV193!E6+#B;rSPJ&osXOlq(GJ z1)2aZ3wf_VKG>g^0?`HS;E>9=K!{$TYFdwc#kN&YSJ2huS5hyObNg#Kmk zGXKlUA54CocN6>X1LjBj3PCIKx8Y&>hmnu^gTIye*9aeonKPoWU-8x!^ymCp`pJcy zFUcO#5A;{&uV{Z|{x+1MuC>N2e?t3r{w95evahiR^@ZavoWDJwzR}(y|2F)ujGJ{RR9tUubwmDtN+#c z8h~}4&4=UjEy~V|`O_;wOQCB=vIZrccZ2yvg0RMukpJ)6c=4#upR68#YBeQ#{*)-{ zH0o%4SvLNJeTTN>+2;HgoPUJ#Rdl|rcixcBi<3Qd-Vo0}#>Mdj`oEi7y?{#wMti{d zZp5F6#t&PA#Cvdt_(Y87dC4UU^ZeZo;v0m=e(RxPpz{HTIjV#I-rQ{F<`&Oa#*muw&5$0?KPnj*^rl|y9^&{}^$|Ushr}UYl%MB?mpr%;9X>AM8$d73 z{7rHGX6E-`oWH~&FY`!AE4h^xr_1N)pcX42tGXj-I`$G8v!qnmM~J%sO1U_B(W z1Gq%c@Nei;ekuj)380tI`c{PR(|N@3Ae+CZ!_IK*`#lN8H)bb2obS`kcsFG0&-#_q z%f#y`s!w-^>O=Z>rH>B9mxy1&U(Z2(y4xAgbwU4FpJ^@6-`S%2n)0YmyUrt0e(~$l z`EM2mzD4KB#r5k)^O6a46yE}K-Kf$D$A8|d#43Lo|dF<;4R-cU5 zEU$R|4xiTsEt)Tp1oZ#Kp&-$T24mv+iQp$*A%Yj$_+L`rWW9f4s9{Iu`GW)zu0)2JC7-W_0(v-jQrK-iFB0V z%lbRy=Xt47dH5gCe~n=HccRc;0ej~y3Ev;%K`)QJXNl*bZY;-)>q)4T^OG+ z{;7XL`Al)5lQq=(2-M*a@z?~ioAZWI9`RfmuKy^`+cIzy3ta!v zXnmxU1+KsEy4n}=cXI4`{e3rdo=m1V*2$*n)@KsMt^mz1TE75)4OPY8^dFX==|6^E zvFlUQCSjIaD$YxPxk=9_EuQDmbaJeF{e6F} z^NohSM#sTL`mbX=@={t1cews>e9YK~UJu1Uc$^2>^-@oo{e@jWN!`T! z8YN8seIMmsp9&*9?e}sz@f!0xdM{0y{#X3iKaV7%^$zssU9ab-^2|^CUD|W1Q}pb4 zV;B#Mo%-`@9Dm^Z6%45C-v#4)73?q~cp#Z%lZfD+WRe{u;b*|FkTmthQLoU2`bpUw+{ezD)>-(xtx4f$~X(a;}CeMXU4 z8>2rt`vC9jGZ^~n*cd4)NW%ZRzLFCGr;qNh!halp$d~y_E=To8{C-c%jYfYs|CIh% zj&Dpx_5uCwKS)kR@~}Ojyz*23p4^w&ny9IeNyebbW%=at_4ld)J{ z@auXh)KpUEQNPof?)u79IsAIQ9R9sV51vSNVLr2o8mfJhKh9$&1E+tSU!1{;gk5jZ z`Nf%$l!LJz2)xE0T8}xAAglqoU7sPW9R`FMkH66r^T+xc@dIqHUVc5WCyen;qS#~B zPUwWFfBr^K;xBOP#^?CHLO8(+s65sye>0exe9XaEpZe!PKKHl>|F=P7`U4*PFN3DB zCoC*}s155&epufx>rZsvGM?A-JjE37s84)eG|nr;c>UJa0M-ltt-&KcAigwhf}Z9Z z!gD>*me=~ya8JPV07(z?KdcY+1U&DLFy?<)-|7i?UK-&U(r@euR$O_)c;9HL*CezG=XX^ijIe~@2z)DP=d z+W(_5^8G7mobRmn%Q=VOd<5%BJ^WyV@?T~C)BydPyqI$TL1LiCe7~DZkzq^Yk$^5CX4BGQL;9^-97Tg-IUhKe8|78|Vq%M21M8 z{S)k8H0P5);Pr#w_wjubjIT!DTHosle%HsRM!6zk^tVX;jS!CYhxI%9FEbeXj8eaz zee^zjY#*#g;s8nImwlQ?soQ4!U?0>kJwli|Xa6jH{{ikvU-s!9jr4oJvmN>$AuRnn zegBcoFZ+y-h5)5s*(Wz6x$C%&f zlm3nNwT*;G->ET{CkTH+eVVoYYxK$Xksglp3B3HH=;WjSc56H!f0h2*h9iAC{o^P^ zF;KjKKVvyau;N9pK367K`tBbJA&UGB??*uXkh-+;WBqe{jQy#x#{}fd4inDeXXGCn zqdn-efZ-3r!-TaS411tGht!9u?;`30d)%_}Osf5ckw1O&3hamY$@N|qxT^Ywk^g-2 zHt<;APh0zme%}!FY3xOQ9lexa{ww{q_maQ07xbO(_4NyX)bmjr4~+k;Bs~2g9@4of zkMswBS+{uk58CfV3tzMTzv;u!|6>-uO8LgaNszMogub%9gr!f}5BhoB=9hlLkh-Lg z1@{+`zqgk#+cd{x>JL6(^Iv0s0R4U6!t#H_R~+SO>`ngtL$sf<_Z8@)Z-};&{_ax0 zeE-dl?=2IaKcM|~aD$xDui7v4!4V|&W9+RB8phs?ukG9*>%|}FE9K{Jo`~!(|4A#p zc<}_Em$UYMUH+i)qw#;n<2Jm@`FUEsb>es{r z#)m$|OXJ_S>EDek@A-El%X|La$nw&k{J*=E`uFtJNZ9&2+9SprE+9$2VJr0&;>Y

FZzOU90wWEB4jFuF9iJ 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 { zqq2{O+!R!rU0lma!A9?8)qEU)?}(Sai!i}YLgB{mB1F*X1(BF*mKV$xY0hkx#C)@C zB!2i$#F&UQCKjtSZ?Vv~6eGq0v;5+sWz~Na8`zU$x%nGoBNwu{kTn+BN4^VwiV5P& z%Xi5OF0V9)c*rYp$^UxMfwl{G@`$(CGD3XV17vy5HNI;mt0ikTss1#Z6@QYfE@#R$ zjfftzjMy6yb4{>6yDaAW1ruSBA3g*+{Q`aeqPzN*$-4O^^5B5$=7mskr8cJ$9h8E=))F&{;%-B^ol z522LR7Cm0vm3J)fD4BEsr>YtsXyD-J#fWm`(0|-i=%9~Yxh*Id`1K@ukQL}39fnIN zy?`$0xTfKC4d2!2F13A8!`C!?U#H_qf{yDNzNz5{8ea3M?TZ?|reQ;=N`K$4;(ydo zt*!k}O$?{TMp;ej^mt8bY@$!b$LnYNP&%1NPMn>b9IKf)rGItH`X)}*4^NyrJ25mg zuswBZXj>|EZcIMg_taEk>)G-8`ZFVw{X?Vj_Q8SVQ0iQK>eTjBZ*=@A_CCg5U>~Aa z!C?5G)_i8bff`Q3Ki_kWJa&4ZMmHsz9P3LYYm&pgHRDgE+K0UzxuZ@S1+E>T&Kyn~n z|9pPGkg25Eg= z1lx?pmQ7zqxrNWBTZjgv`YhGOLRf3qDS8izg^!Eg3u58FqW|@X#e1Sx2}V12&>?zv zi1tTCZblc$amFM!X^jO_)U<5zC)j>y~tz>`F(HSc{4TrS=q*n*I)AFR5Cg?%;z} zDYlpYloXPxmo{i3^I(f+4K@$(@T9U46wl@pUP)BY1ZHNm12WBrL#f<;pU=TZuH z;`DGI$OFlVv6JKY!Q1fY5aGI zt{i$nL;ZJydb7UH)axWm3q@T_U(f2;tTEEEl=`Aq({$+TThik%I&MNcUf-_TudlatT#aW<4_(9hqZ}2Y>H6^| zT|G2x)T%n%U#~#}$?IbJ0!ncT=&QeHMOiuSGhi!-Bum#ohn_F`?@z~7vNA?g)W^@J z(I3@ly8N%TeET&ShC}C5YpSh!nGoN{EB3FaQCXMYeqY0V=Cdczem{*w%C)&cGiO!H z{k%h;BR{3dFRn_eh5O~tYVsQUDz^(CQqX~=@`gi~*D-@uy}X|B4>b7?RvoLh-p~8& z=g2oVsQlseN>SGRr<1>n0_nWp{&7uSn}&7vRahG~(0y r*Yo#v(Dc~RSQYrMn*7h#6H(Ut)yY3b;X(4(A5uBA2REJlGxGljAZZIm literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet50/tem_fused_linear_30.hsaco b/machine_interface/tests/libs/resnet50/tem_fused_linear_30.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9bbb069f9954cc165177c5a8086dfc5f32eb85de GIT binary patch literal 11128 zcmeI2d2n0DeaH7*AV~25L5c(jkb0zOY6+1L3Gz|YVF{w{%V%s$4iFk7!Asy_5F~X( z1fYwwt;(|M$g(Y)PJCq&$5Ap#>KwJ)#7WbRrxVF-MovAQOvmkbGHu3_PBZSbG5h`P zdyk^%9M17a{_xI#pFMtie0TT#cJYYx);-%~Neau%3<~=xldL!)Y{g%xGb0-{%4=s% z{4HU{%z*AElmM-`01>zomLe-$(6_bWyk+^=xTo&PV%8eTn&`0aIAS zQ7diJp8Fh_?njvpZrZzL`)zkIcKqeoP*49@EO;QE9F8Z(9y#;HV61O6+1WiZKAcjY z55|&xV~?JAIT-8dNyf*$z1-SHRt5+hx)#EZd^-rliziaj438#o+yela)^ON_@m z4-5?Ve91KF>>BUwjVFIc1I|CT0oNbffaiBM@XcUfa%6n8b1dFB6dz7?_6{73_jHnO z_6;$6n5p@~SYn`W*!lGj<&(MoN^mH4u(LN2OLb0;BoA24qU4Rt^TFZRQ2a$&jHb4x zZwE({0~4`Se7@ZUoqjPmHos2QUojJ7qXUVAxpeHs;Mk#|u93tStj2-|dayq8Ro-~% zD`sk8oi7I`V-xY-}T2+#-Hrm?ZF_u!hQn7xZ8;>odr zk>PWay~nZDJ`||Ttzb7=&+`t8xyUCk6Sn+8*s4kP_Ju5`b8~aDTKF1`U)nBDNgn@< zgJrWBUnV;z%XuHnrEisrkUy)Ol@!!h(3<9)f`d8-zjGd+tRl-Z5>w7AKJ}cWX0u9G z%}TzL_~c$z73HKRNhi%bN=qj(ju}bLW>2vlSmPgFVM{bwI_W)wHN9G^XsTCM`5eo> z`sUs)S1y~rDr4bi-DUbIw_86Uhk0(fyZ>E9zT^!%crH76H5dEoteVf|5_OR5l?C=Q zazxmBBhGnSrNlj`z)mGQ2ikQw^wV+|SIQmz-mW~ZpiKpBsySuCP7`)cVW;Fe`t5Qp z$0N!e3(6mrM>*MeM+@iMapY78yBydZW4mf+9cEh>AGGAb0L@i zr<#*fCF(kVz|FH>2ZThv-mzT==RB3*Gh-D&gE6gqDR2Q}v zLQ5e%Z^(17w98r9G>CKUYA)KIb-8Pt)Q(GLOJ)C5smm40t#r4Ot&^ooFUl$IO_lOO z%vB!s?+@vx{C>T##os?IchuT#XD1Hw8YW+rCQqq(m7&2rw7&%H*Rfw+snM|7hqeTc zO&sR4rDZk8CqB)qw{GEi)NiTGR@gR2wgjZ3azKouv^12DHuBL%wIcH+m1WSut`^Xk zJry-nzaI4@v^^b`YxT*FKt8qSk(so)gSW!g1KXu?(^RR)6AHk#8n*hOjzAmAyeKPZ zt`Iu&SlUB+^I6)@?XjSZ>Bv-Vs_67(#wxDW!QqTiTt}RIf?joPg;FfYRkvWhR>Fdl zdLV@Mi)ftws+yH{zehR(`q6M;W3|quO<~L@#_E^ZDwMl0uHYd(Fx%5x(}=W=^inxI zRqFSL$i8S(ReO_V=c0N&rpBdm?Nq6*hZ?LtNJAk@>*hGCt_9>$F|L)$Qo#llP8j2E z)XG`$O*QSa{ev}B$HmfH+|+JA?EyYjT3Z_`sjm}r<7Vj{vx(uFQYueSdBapG=b@#I z0a0Gc(tCnO8Uh;|8+ZugC?hRL&2)>Ep6+U>ZJrDU%2oxjF2A}`4x8pfX4WH;MUaRaEWrk8I*rrwquGW^Z=~1;# zo^%A{L(YJFBrhNzRRfCR;Hu)}nv%z5?6rrIYTd)BR@en$*95zeu&bDC3sf9x4^$jk z8>l$i8VHi#%FUI_(?RY@H*s$|#O1WgeT{A0-`LJ88`ts*%*(^96_fd^D++YaMY{MN zY#*^kVeBOx32;TVNjyX%UB8^MHK?Pa&RS3d*MYR(*Ml^NH-jE<1Ly@ef-)Eeec&e0 z4|af+;AW84CrNXPKHImLeXZGQa_u&g>$Wp?zh$$2hnaWtPLmsUncTRWu~Ew=OoGtf zroARRZZWy}R>qo*nE+|N4OvWCTAGauB2D-COqB=aPl$Ai z$~_e*zbMiNsl39E@~1_be6dto)p8;t^O=asPe&a5EY6QdBYFHnq=8?I1o<xd1#%U^>jb{SQ@DH`Q18SyB zUn3cEKsK-k4M#vVoB_?q3zQiRfpQ}l@EA=2uMrCPjJAN^Xb)5xYXeor`oJ<{LqIpe zfoh{8P-AQfEH}0Vg2v|p)2*$w(_P=Hm0UF~TZ|v^=mRr6Cj2F0Ue4Z=D z7r1J?#5Ln(US?e4<;GXJ$M_oe8sFeP;}z~VUgMRyZ#Ay+ZN@+H?Z%J!4&xf%Y5aumGT!F9jep^LjGywo#=r7gjCc60#=rC1j8-1~ zY`9*^uWPvtd#@jRuOHk3US>0Ovy9b6@w{aU`I-~B<{d{F?e7v(XJolO z`s}+rs;NAhJi2iMkHXJJ z;m4ymE27)C@#tSP)JGo<)<+*{s*nC$un zZyEy0Hw}a2n?^wLNuwb7r29egNlCB@90QkuDUi;;I7sJpFG%-?K5#iW2%ZNIfRBL* z@B(-j_&9hs_yl+l_$0Uwya?_Gp91d%p9Vh(&Vmu}889O^tjS2{Ud_xcy`+TSdNaeA zN46+gWEM+sPjdf^g=FTv;{LhJR2lq*%p59MrZA@itWa2<6Rc90D-W!}Z7d(GQ&@f> z7*JS2q5sPH%C&5wQf^lU{Z|fF%1i?vtjuFM;OR;?%LUI=RecR;Q)&K1*lJ z(%EI{?6!3FSo(&bFa39B8&B^=8_+Op&B2JJ8RwADe7~hRX=xs_G~-;lt{Ix_abLLE z921UMu@*RD|7d+Up2a%iY!>TyyQS|AOW&QAKAhEJ9pel1&06|;E$w}lKAgis-+-lW z(9(Cn(uZ^T*XzUj()!^lBJ^$h6X?S=M(D%2EA-(CBlan-Fk+wL3M2L@t}kML;#Jv) z*6(gh`#qLE+*5?U{g%FaEq$M~^hHRY_3Rv^`w_z(4^QVL#dYhxN8cR^s>Pj@7uE>Y z7cFNK!Up&De80$BSx_n1P-xy?8;h2)`TKCbN0c=ccm+d+6@o2AJ~n?3&c`E|F=xSj5m{ujNix}iXPVNR@%@s0tnI+QmN~C9%D4tW0 z_Tm#CoV;w$JME*xXo?7*gw^#D0U%!bpYB!bpYB%Ax1>7{e=Z5I!rH zc!IG!;z`Dq5Kl3dPlV4ZAi`%A65+FoY`?>bWwq4D&Yfk_B{<{kyNctI{X9!0^1L6y zm%VvEq?99W`5}4z3^8;FZ`9z3x6f_!e0r!@K-`F{MB{6MHr*y zkN*_<=<5Wn34EQ<2Y)5>!C#3rgufE=0DmRc5dKQ&gTKnL^*Jqlacez$Eq(A;LLdB< z&VeehR8ANZ z&=g+nFQU(XJj3VaJ4oE@8+0`GxohJ(oRWrxMq%$4eenWc|qlMmHDz+hWCE3KY2qO zcC^2lhs`igCd(>VmYtB#{!A;*$D@%{sMD0PZ`FfDuBT=skTF}I(qG)A|~ zvYwfv$K6%tnDMSh9Xv7Z?Q(IM%B#?^dScpvxC8CVh>x<*LSIbMWyV_;?R|^gV#XNrX{27z(Cu!k1|? zNr#vS|7Vq({+Kb`R7Lpj59V<7VC)sE+yZ;sj+kcif2Cq}Q(=jw6uQcNg~gJa`me*s zGW{NIglC|W~)*|qpMOQ$?ksqQ+vD{vCdc`IX*Tvvg*KU)_q|0 z&@lc3o)}EDjg5C5>K;st9!lNcl|0xQADL`BFrI2VFg6(*9BJtuPYm`Ab;VkGgQJJo z*Kwq%3>Pb=O49!p7BC3`DSV{g-s2zKB{i>=<>BD4|L>}-lC=8WT9rfBLb}Es)tW~+ zn9_KgRyD5ibz0SKjlZQ8JJxGl*L*>()zP7G$QSSTB}bhFypnFw^s9P(7X*=t8!4sIG4aw84qeJZqf=I zLCx#fsChP`*O8#+gPvAL9gOnOg)*UQD?^&6j-tZe)1s|Z4zJe=sS-OhE+YR&t;GPz#K-G{tG>oxD~#CN`} zd0P>|BzWJZjNXr4@K5{KIsZ%Zeu}C?gY#|b)KepR!l>eCQt|DgMxBuGKUOdAi;P{1 zGxk{-D0m;02SBA9drcWY3B_tijaQi@!Eq|}^-?UT)nL(!9g2=Ve46iBt+ZAvZqX{R zOv+?X>re`u`>?SQ>s4Mz)1FYSGF>YTYrb}}-Q0>!?nMT*fJBXQSl856t$3NH?zjJ9 z!TPk#*#6#>rmmMC!GG3-&%jr9`nUL;ifgp0y5{|p{ao3p}KTd+12dx%O<{$i9qKU_2o2^^XFO-(!ZRW8?o!# z=as#3jZ*j!gXqVgPolSjFeS7>im!TZz&HVW7^VOz(zFN%)4R)Nk0w2<4 z_aC+n>UomUf)HL1r|2qtsJ?yv+s}!eG5`BLGNwSr3xa_-)g=uSGGPIh(M{q#gb4Qi z!Ja>tmA?U`JiGpTVYA>p-K2{aXhB%iJ)?IGi}T3buK&B{58tDIZGE+xT45|;V*c;q zzWPu?d5c{~(5i2~>zS`U-R1ESe%wbe=Ag2zV2FLs(q@{{istxfTEb literal 0 HcmV?d00001 From d954bc6ad240e3a883d9239da9ed24139c0055fa Mon Sep 17 00:00:00 2001 From: alrusso Date: Mon, 16 Dec 2024 16:48:15 +0100 Subject: [PATCH 146/176] ResNet18ONNX added --- .../gpu/gpu_tests/compiled_tests.rs | 45 +++ .../gpu/gpu_tests/load_models.rs | 346 ++++++++++++++++++ .../tests/data/test_gpu_resnet18onnx.json | 280 ++++++++++++++ .../per_fused_add_conv2d_mean_relu_19.hsaco | Bin 0 -> 5728 bytes .../poi_fused_add_conv2d_relu_13.hsaco | Bin 0 -> 5344 bytes .../poi_fused_add_conv2d_relu_17.hsaco | Bin 0 -> 5552 bytes .../poi_fused_conv2d_max_pool2d_relu_1.hsaco | Bin 0 -> 7504 bytes .../tem_fused_add_conv2d_relu_11.hsaco | Bin 0 -> 13224 bytes .../tem_fused_add_conv2d_relu_3.hsaco | Bin 0 -> 9176 bytes .../tem_fused_add_conv2d_relu_6.hsaco | Bin 0 -> 12304 bytes .../tem_fused_add_conv2d_relu_8.hsaco | Bin 0 -> 12920 bytes .../resnet18onnx/tem_fused_conv2d_16.hsaco | Bin 0 -> 9304 bytes .../tem_fused_conv2d_relu_0.hsaco | Bin 0 -> 10320 bytes .../tem_fused_conv2d_relu_10.hsaco | Bin 0 -> 10088 bytes .../tem_fused_conv2d_relu_12.hsaco | Bin 0 -> 12144 bytes .../tem_fused_conv2d_relu_14.hsaco | Bin 0 -> 8384 bytes .../tem_fused_conv2d_relu_15.hsaco | Bin 0 -> 6368 bytes .../tem_fused_conv2d_relu_18.hsaco | Bin 0 -> 7320 bytes .../tem_fused_conv2d_relu_2.hsaco | Bin 0 -> 8392 bytes .../tem_fused_conv2d_relu_4.hsaco | Bin 0 -> 11752 bytes .../tem_fused_conv2d_relu_5.hsaco | Bin 0 -> 9592 bytes .../tem_fused_conv2d_relu_7.hsaco | Bin 0 -> 11520 bytes .../tem_fused_conv2d_relu_9.hsaco | Bin 0 -> 12440 bytes .../resnet18onnx/tem_fused_linear_20.hsaco | Bin 0 -> 11128 bytes server/src/main.rs | 2 + 25 files changed, 673 insertions(+) create mode 100644 machine_interface/tests/data/test_gpu_resnet18onnx.json create mode 100644 machine_interface/tests/libs/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18onnx/tem_fused_linear_20.hsaco diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs index f76683c0..12d2b783 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs @@ -68,6 +68,21 @@ fn lenet5() { drop(lock); } +#[test] +fn resnet18base() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet18.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet18(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, false); + compare_result(expected, read_buffer, false); + drop(lock); +} + #[test] fn resnet18() { let lock = GPU_LOCK.lock().unwrap(); @@ -128,6 +143,21 @@ fn resnet18batch64() { drop(lock); } +#[test] +fn resnet18onnx() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet18onnx.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet18onnx(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, false); + compare_result(expected, read_buffer, false); + drop(lock); +} + #[test] fn resnet34() { let lock = GPU_LOCK.lock().unwrap(); @@ -143,6 +173,21 @@ fn resnet34() { drop(lock); } +#[test] +fn resnet50() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet50.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_resnet50(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, false); + compare_result(expected, read_buffer, false); + drop(lock); +} + #[test] fn resnet152() { let lock = GPU_LOCK.lock().unwrap(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs index 4d60f495..87f65ae5 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -502,6 +502,65 @@ pub fn load_resnet18batch64(mut function_context: Context) -> (usize, String, Ve (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet18onnx(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet18onnx/constants"; + + add_buffer("arg42_1", 602112, constants_path, &mut function_context); + add_buffer("conv1_Conv_weight", 37632, constants_path, &mut function_context); + add_buffer("conv1_Conv_bias", 256, constants_path, &mut function_context); + add_number("var_6", 200704, &mut function_context); + add_buffer("layer1_layer1_0_conv1_Conv_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_layer1_0_conv1_Conv_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_layer1_0_conv2_Conv_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_layer1_0_conv2_Conv_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_layer1_1_conv1_Conv_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_layer1_1_conv1_Conv_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_layer1_1_conv2_Conv_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_layer1_1_conv2_Conv_bias", 256, constants_path, &mut function_context); + add_buffer("layer2_layer2_0_conv1_Conv_weight", 294912, constants_path, &mut function_context); + add_buffer("layer2_layer2_0_conv1_Conv_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_layer2_0_conv2_Conv_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_layer2_0_downsample_downsample_0_Conv_weight", 32768, constants_path, &mut function_context); + add_buffer("layer2_layer2_0_conv2_Conv_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_layer2_0_downsample_downsample_0_Conv_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_layer2_1_conv1_Conv_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_layer2_1_conv1_Conv_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_layer2_1_conv2_Conv_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_layer2_1_conv2_Conv_bias", 512, constants_path, &mut function_context); + add_buffer("layer3_layer3_0_conv1_Conv_weight", 1179648, constants_path, &mut function_context); + add_buffer("layer3_layer3_0_conv1_Conv_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_layer3_0_conv2_Conv_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_layer3_0_downsample_downsample_0_Conv_weight", 131072, constants_path, &mut function_context); + add_buffer("layer3_layer3_0_conv2_Conv_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_layer3_0_downsample_downsample_0_Conv_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_layer3_1_conv1_Conv_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_layer3_1_conv1_Conv_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_layer3_1_conv2_Conv_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_layer3_1_conv2_Conv_bias", 1024, constants_path, &mut function_context); + add_number("var_70", 50176, &mut function_context); + add_buffer("layer4_layer4_0_conv1_Conv_weight", 4718592, constants_path, &mut function_context); + add_buffer("layer4_layer4_0_conv1_Conv_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_layer4_0_conv2_Conv_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_layer4_0_downsample_downsample_0_Conv_weight", 524288, constants_path, &mut function_context); + add_buffer("layer4_layer4_0_conv2_Conv_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_layer4_0_downsample_downsample_0_Conv_bias", 2048, constants_path, &mut function_context); + add_number("var_85", 25088, &mut function_context); + add_buffer("layer4_layer4_1_conv1_Conv_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_layer4_1_conv1_Conv_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_layer4_1_conv2_Conv_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_layer4_1_conv2_Conv_bias", 2048, constants_path, &mut function_context); + add_number("var_97", 512, &mut function_context); + add_number("var_98", 49, &mut function_context); + add_buffer("fc_Gemm_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_Gemm_weight", 2048000, constants_path, &mut function_context); + + let output_name: &str = "buf39"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, Context) { let constants_path = "/home/alrusso/pytorch-aot/processed/resnet34/constants"; @@ -711,6 +770,293 @@ pub fn load_resnet34(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet50(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet50/constants"; + + add_buffer("arg320_1", 602112, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_buffer("bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_9", 200704, &mut function_context); + add_buffer("layer1_0_conv1_weight", 16384, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv3_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_0_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_bn3_bias", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv3_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_1_bn3_bias", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_conv1_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_2_conv2_weight", 147456, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_running_mean", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_running_var", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_2_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_2_conv3_weight", 65536, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_weight", 1024, constants_path, &mut function_context); + add_buffer("layer1_2_bn3_bias", 1024, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 131072, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_buffer("layer2_0_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_1_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_2_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_2_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_2_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_2_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_conv1_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_3_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_running_mean", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_running_var", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_3_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_3_conv3_weight", 262144, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_weight", 2048, constants_path, &mut function_context); + add_buffer("layer2_3_bn3_bias", 2048, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 524288, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_193", 50176, &mut function_context); + add_buffer("layer3_0_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 2097152, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_214", 50176, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_223", 50176, &mut function_context); + add_buffer("layer3_1_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_1_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_237", 50176, &mut function_context); + add_buffer("layer3_2_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_2_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_246", 50176, &mut function_context); + add_buffer("layer3_2_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_2_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_260", 50176, &mut function_context); + add_buffer("layer3_3_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_3_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_269", 50176, &mut function_context); + add_buffer("layer3_3_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_3_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_283", 50176, &mut function_context); + add_buffer("layer3_4_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_4_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_292", 50176, &mut function_context); + add_buffer("layer3_4_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_4_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_306", 50176, &mut function_context); + add_buffer("layer3_5_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_running_mean", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_running_var", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_5_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_315", 50176, &mut function_context); + add_buffer("layer3_5_conv3_weight", 1048576, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_running_mean", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_running_var", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_weight", 4096, constants_path, &mut function_context); + add_buffer("layer3_5_bn3_bias", 4096, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_329", 100352, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 8388608, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_bn3_bias", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 8192, constants_path, &mut function_context); + add_number("var_350", 100352, &mut function_context); + add_buffer("layer4_1_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_356", 25088, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_1_bn3_bias", 8192, constants_path, &mut function_context); + add_number("var_370", 100352, &mut function_context); + add_buffer("layer4_2_bn1_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn1_bias", 2048, constants_path, &mut function_context); + add_number("var_376", 25088, &mut function_context); + add_buffer("layer4_2_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_running_mean", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_running_var", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn2_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_running_mean", 8192, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_running_var", 8192, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_weight", 8192, constants_path, &mut function_context); + add_buffer("layer4_2_bn3_bias", 8192, constants_path, &mut function_context); + add_number("var_391", 2048, &mut function_context); + add_number("var_392", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 8192000, constants_path, &mut function_context); + + let output_name: &str = "buf108"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_resnet152(mut function_context: Context) -> (usize, String, Vec, Context) { let constants_path = "/home/alrusso/pytorch-aot/processed/resnet152/constants"; diff --git a/machine_interface/tests/data/test_gpu_resnet18onnx.json b/machine_interface/tests/data/test_gpu_resnet18onnx.json new file mode 100644 index 00000000..ce0a4ad5 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18onnx.json @@ -0,0 +1,280 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_relu_0.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_0.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "path": "resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_2.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_3.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_4.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_5.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_5.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_6.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_7.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_8.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_9.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_10.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_11.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_12.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_12.hsaco"}, + {"module_name": "poi_fused_add_conv2d_relu_13.hsaco", "path": "resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_14.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_15.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet18onnx/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_conv2d_relu_17.hsaco", "path": "resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_18.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_18.hsaco"}, + {"module_name": "per_fused_add_conv2d_mean_relu_19.hsaco", "path": "resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18onnx/tem_fused_linear_20.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_add_conv2d_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_relu_4.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_relu_5.hsaco", "kernel_name": "kern007"}, + {"module_name": "tem_fused_add_conv2d_relu_6.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_relu_7.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_add_conv2d_relu_8.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_conv2d_relu_9.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_relu_10.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_add_conv2d_relu_11.hsaco", "kernel_name": "kern013"}, + {"module_name": "tem_fused_conv2d_relu_12.hsaco", "kernel_name": "kern014"}, + {"module_name": "poi_fused_add_conv2d_relu_13.hsaco", "kernel_name": "kern016"}, + {"module_name": "tem_fused_conv2d_relu_14.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_relu_15.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "kernel_name": "kern019"}, + {"module_name": "poi_fused_add_conv2d_relu_17.hsaco", "kernel_name": "kern020"}, + {"module_name": "tem_fused_conv2d_relu_18.hsaco", "kernel_name": "kern021"}, + {"module_name": "per_fused_add_conv2d_mean_relu_19.hsaco", "kernel_name": "kern023"}, + {"module_name": "tem_fused_linear_20.hsaco", "kernel_name": "kern024"} + ], + "blueprint": { + "inputs": ["arg42_1", "conv1_Conv_weight", "conv1_Conv_bias", "var_6", "layer1_layer1_0_conv1_Conv_weight", "layer1_layer1_0_conv1_Conv_bias", "layer1_layer1_0_conv2_Conv_weight", "layer1_layer1_0_conv2_Conv_bias", "layer1_layer1_1_conv1_Conv_weight", "layer1_layer1_1_conv1_Conv_bias", "layer1_layer1_1_conv2_Conv_weight", "layer1_layer1_1_conv2_Conv_bias", "layer2_layer2_0_conv1_Conv_weight", "layer2_layer2_0_conv1_Conv_bias", "layer2_layer2_0_conv2_Conv_weight", "layer2_layer2_0_downsample_downsample_0_Conv_weight", "layer2_layer2_0_conv2_Conv_bias", "layer2_layer2_0_downsample_downsample_0_Conv_bias", "layer2_layer2_1_conv1_Conv_weight", "layer2_layer2_1_conv1_Conv_bias", "layer2_layer2_1_conv2_Conv_weight", "layer2_layer2_1_conv2_Conv_bias", "layer3_layer3_0_conv1_Conv_weight", "layer3_layer3_0_conv1_Conv_bias", "layer3_layer3_0_conv2_Conv_weight", "layer3_layer3_0_downsample_downsample_0_Conv_weight", "layer3_layer3_0_conv2_Conv_bias", "layer3_layer3_0_downsample_downsample_0_Conv_bias", "layer3_layer3_1_conv1_Conv_weight", "layer3_layer3_1_conv1_Conv_bias", "layer3_layer3_1_conv2_Conv_weight", "layer3_layer3_1_conv2_Conv_bias", "var_70", "layer4_layer4_0_conv1_Conv_weight", "layer4_layer4_0_conv1_Conv_bias", "layer4_layer4_0_conv2_Conv_weight", "layer4_layer4_0_downsample_downsample_0_Conv_weight", "layer4_layer4_0_conv2_Conv_bias", "layer4_layer4_0_downsample_downsample_0_Conv_bias", "var_85", "layer4_layer4_1_conv1_Conv_weight", "layer4_layer4_1_conv1_Conv_bias", "layer4_layer4_1_conv2_Conv_weight", "layer4_layer4_1_conv2_Conv_bias", "var_97", "var_98", "fc_Gemm_bias", "fc_Gemm_weight"], + "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf12": {"Absolute": 401408}, "buf13": {"Absolute": 401408}, "buf19": {"Absolute": 401408}, "buf21": {"Absolute": 200704}, "buf22": {"Absolute": 200704}, "buf27": {"Absolute": 200704}, "buf30": {"Absolute": 100352}, "buf31": {"Absolute": 100352}, "buf36": {"Absolute": 100352}, "buf37": {"Absolute": 2048}, "buf39": {"Absolute": 4000}}, + "outputs": ["buf39"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg42_1"}, {"Ptr": "conv1_Conv_weight"}, {"Ptr": "conv1_Conv_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_6"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_layer1_0_conv1_Conv_weight"}, {"Ptr": "layer1_layer1_0_conv1_Conv_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_layer1_0_conv2_Conv_weight"}, {"Ptr": "layer1_layer1_0_conv2_Conv_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf6"}, {"Ptr": "layer1_layer1_1_conv1_Conv_weight"}, {"Ptr": "layer1_layer1_1_conv1_Conv_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_layer1_1_conv2_Conv_weight"}, {"Ptr": "layer1_layer1_1_conv2_Conv_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "layer2_layer2_0_conv1_Conv_weight"}, {"Ptr": "layer2_layer2_0_conv1_Conv_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "buf12"}, {"Ptr": "layer2_layer2_0_conv2_Conv_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_layer2_0_downsample_downsample_0_Conv_weight"}, {"Ptr": "buf13"}, {"Ptr": "layer2_layer2_0_conv2_Conv_bias"}, {"Ptr": "layer2_layer2_0_downsample_downsample_0_Conv_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf12"}, {"Ptr": "layer2_layer2_1_conv1_Conv_weight"}, {"Ptr": "layer2_layer2_1_conv1_Conv_bias"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_layer2_1_conv2_Conv_weight"}, {"Ptr": "layer2_layer2_1_conv2_Conv_bias"}, {"Ptr": "buf12"}, {"Ptr": "buf19"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf19"}, {"Ptr": "layer3_layer3_0_conv1_Conv_weight"}, {"Ptr": "layer3_layer3_0_conv1_Conv_bias"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf21"}, {"Ptr": "layer3_layer3_0_conv2_Conv_weight"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf19"}, {"Ptr": "layer3_layer3_0_downsample_downsample_0_Conv_weight"}, {"Ptr": "buf22"}, {"Ptr": "layer3_layer3_0_conv2_Conv_bias"}, {"Ptr": "layer3_layer3_0_downsample_downsample_0_Conv_bias"}, {"Ptr": "buf21"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern014", [{"Ptr": "buf21"}, {"Ptr": "layer3_layer3_1_conv1_Conv_weight"}, {"Ptr": "layer3_layer3_1_conv1_Conv_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_layer3_1_conv2_Conv_weight"}, {"Ptr": "buf27"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern016", [{"Ptr": "buf21"}, {"Ptr": "buf27"}, {"Ptr": "layer3_layer3_1_conv2_Conv_bias"}, {"Ptr": "var_70"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf21"}, {"Ptr": "layer4_layer4_0_conv1_Conv_weight"}, {"Ptr": "layer4_layer4_0_conv1_Conv_bias"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf30"}, {"Ptr": "layer4_layer4_0_conv2_Conv_weight"}, {"Ptr": "buf31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf21"}, {"Ptr": "layer4_layer4_0_downsample_downsample_0_Conv_weight"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf31"}, {"Ptr": "layer4_layer4_0_conv2_Conv_bias"}, {"Ptr": "buf30"}, {"Ptr": "layer4_layer4_0_downsample_downsample_0_Conv_bias"}, {"Ptr": "var_85"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf31"}, {"Ptr": "layer4_layer4_1_conv1_Conv_weight"}, {"Ptr": "layer4_layer4_1_conv1_Conv_bias"}, {"Ptr": "buf30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf30"}, {"Ptr": "layer4_layer4_1_conv2_Conv_weight"}, {"Ptr": "buf36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern023", [{"Ptr": "buf37"}, {"Ptr": "buf36"}, {"Ptr": "layer4_layer4_1_conv2_Conv_bias"}, {"Ptr": "buf31"}, {"Ptr": "var_97"}, {"Ptr": "var_98"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "fc_Gemm_bias"}, {"Ptr": "buf37"}, {"Ptr": "fc_Gemm_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco b/machine_interface/tests/libs/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..bcbe4b177e50ee44b3da7f3b9547fdb0e3354a7c GIT binary patch literal 5728 zcmeHLU5p!76+Uxk#_Q}RyN)*{fo2<*7V_m#Q5vGED&nCCR6-lIRm6`{QFhY@9{716NT5noXoXZ%RXp%QUy!<- zGjosYOnw?t9&@Gfch0%zJLldzckYjmJhbmiLQ$p##6^WwP^3&SE#)UR#=_@yvh9X6 z{%(RSq|mJ4GaXl7ffr>k#}apIwOz$0J{Dd z>vD(>?w|Scfky$Jdev-JXMNL{w>-zP{qLPRXPEVtSE{&eCx90X)2sW>9evd>t5whP z{gU4@E7niywp%vsvxZx%`4+kPjl)*@oUvfqZL2ijaH_AwE~Rq2R@0D*kA1i*VVcT*RoHhKVX4$o0mcfkqDt5j{Nu7_Ce#&dcA#=g1c`o*j8an-o zoM!=c%?e&etzK~o2=w3tEEMXs#m`NcJRcV<&u_TS8HK+VoV1BTHCYvBwOkk8magm2 zz7fCVP_8S}l1J72d=Z8}C2)*TSz=lD^)h6nM?Z21;KQN#u zap@Pzb?0g{${WIKa1xRF^ZzJ93}1}mh}6&C48!l7hv&ZybKPU&&7&u@+?nN0_UMTr zII$AK>E#Z*_uUYVFAu=+mDCFZr&HZCr;c1axw1Z+4L6LAc7LmgD3*5T(Pgp^2(6P5 z0-sc;qkV88P>EZ zZ6Fod1RPQ0oKK%xKR6g}7#iySM&{#OnB(}tk&`Pz6{3Zx3EguR2 zYnpa<7JVr6-QFI};O&@*>$6ECCTtd$z^mIbkVjXhb_@>0F#6TjuGX`EGa2-A*Krv{xih=7@ zX7Oa)uAo#hZLjV7Zn5k@rR>;KOVz{Ga%HE}_UCpT-dVQqtGKm;PTBG1yo2|ZYxhxkKL4q zuvyD);c=111c$^AOs8skRZ{6Fr*9pEb%N)FdYhu(HZiI1+O8K;hFadEZ%?V)a{3)9 zlpaG{LC>cG{SHGf)X+GAmOY3Cbla<%d-ZHey)#$Tgg&P3Ff>K~told}ckaCUj*^Si zA9VWlarK9ty}DLFml5?Zih+(pITYKGWL#guc*Hj%@}Ct-w@G~o<86IF-*mse^&k3p z%Fs1KJT36u16@DYuxNN=*R%}Y*=6bbLddeO;o!jCpTj#~Zr{F{+~jU!!kA#^D=~^A z@YHh8<#jaI{+IJN7>*lQU{seJyib5pciP6R>Cb}vC41n3;ki{aFu@3{#US!Fn~e&Z zE!%TTExd>}oI2XAa=TtK%Vp16V6EZQT$VkYV3yBX6gZ~X4Tl;L(Q6*wk-(_9O}d8x z-E#u7j5v#gSc;LS8Y5nTpfvON!w>HN>K88`m7CXSJZS-=dq-4QkjVFWuIBZZb>h;R z&NN=<8NVVOX}P9c_(r3`>p!ig@2{=7%#Z(kL8DyX^Ras`KJ%p+a2<_Yna}$IV=lqx z_A_q7dir3QKO^%p_U5yULw)EkccDTy=7*BcINk4za#Am%jrhDz@{-Xr^eWJaN}>U~ z&_phLf9!oP^kHJ*|BYm`dgIU6zz5KW#+3Oj`MtFy|1?)nFf57mu>UGH@?$=~f3i_Y z^1pEv8~I(3`75OKl_bB8bx9k!-@YLx9f+a#oAhmC4cU@Q(Y)kaJ!UL0pD{!;%l)o@ zl>8B%7_u_yd-59m)##W3Fy0>&<>dVTzT_v{pO!CpbAr$L8GnTJi6%yjoa8?t`FLiE o{5U^k~XBx+6kqh(j}st6NtQldQ>^*4fJJooSU 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 DE^>4o literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b4baa5afd9a71d816d356d055a7985203f7c9dde GIT binary patch literal 13224 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 S!rkO&#s90RuowmA%l{AI<3*DI literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5ede0b2c93c0c9c9afdac4927170b0a7f8a7c849 GIT binary patch literal 9176 zcmeHNYj7Lab-w$!i{)YoE*=Ca38GdIO(K-Eq+nWvXj!3c#t%kzWv5B)#xpcTfn3rc z00E#LmJL9ZM6nvzb`m>vGfC*C(|RUu61kIPygTGhsPhf9+q5`jrbGv#uGvRD0;rWuYUi(R*%s7KI(YB&F_Przcg=39|_P{jy-9@ zR5rki9_~Zm_5p}~4LlR@)_X?pJoI_S&U`mJd&I6}tw(a@LM~tV(vvS**{M=_e4;p4 zsIot^vgN7DvuD3+Wse*w=PH%)N+~;$`}3)M@o+Z(f>oTHtmH_nGW}>yebG9W&Clh= zADJ#3`Hm|xet2$jGFSc$9jG6-1LNa%(D`vYFn?nQFI!XP;#_IGlAD^%6{_Qt(sH(hmQGS>NRFIKRs1YfABs!iKi}Ev)L2lllg3Q{CKhah}SJRe=EWjh3stZ1#;)W zz>Pn$O6BQe*=laB<8`CHXjRrc-Sv`-R7%tNyyyHEtjfvR!^Ql!z0Ryhj=;lfDhFP2 zk@YIyvyNwv>J4XVR$T8u1psT zUl#mLf>_;Hh!v3#&0aqEi&j^n1t5$a-0!RmsZt?6@vbYL4cL3OxQ_kXASq9{;pLqV(rp9rb@n~>1SUf3`u`}(LiEX}*xsIb zCYu@)uCn?)tjQXeztVm8mp20!v$L|u&R^9qrr0jqOR{2~ljWosh}%RD61`(RUA9U8 z8}onkxmI@Ws(4g@?Oc7*y+FERXqo0N%F40{c$SH#7?AA+mNB0e_xA|wXDcko#ilIl z%#g_LR}&JK0}GKS(MK{OCQ>4M>gqgZHX^c%_2nn7w1{d=l@Fvvj2VK092m)vY*SWk z*3DQ`)@^ndLBnQw@~5jG6t$Wr-jLD>80L|5whgqgaSNTx<~c2R8$rBq2wsa#H} z0VSojs3|q5rPNkEHQ>#+A+j1{ufEA*B5d>Oo689i=Luk!h}{Edia7HDVVR$>XD;`# z|6FN3vs>N?sGs?i+>d?&u+bhs0Wb|H0^SHH0S*GnfHwhhz`cM9V1qq-xgkbsOcGIL zR0UN<)lhZRQ0+5p{z^@|cAosq*o7;lHbAv&)f!Tn(Fr)bkNG^t@~iy}Qw1Dguo~bV zh6@W|nz4NZZ)9wk;2>i+6TFGB{RHt=6z8 z*Z;=lg^CdzpRc{uRs`)emu4JwY2l-wz3S2;6_*yRfcA<@i_N*T_Bqgg>eAxJU0TO+ z(0=05I#0T^O(#Lax@k_@DVG*JCCca6*(p|SEiXT)2tz| zMpqK;?lkS+MpqBosWf|9M!PS=8i(EvvAV_<54~-$dXVr4tE+^^SY0Pylb_3;pLc0N zMm{HB?^1Qv{C(_Ucwo)vW?>Z$4>@!+n2Q?@j=6ex#K9@Qy8M`f$JX$;gLkgsoerLG z@!gE+o}Q*+pA7{B7Qero%7hJjh`qA1FS=bO+szkB-3_r&6Ja+QcH4fmnr@69bJje} z>O-_P+2idX-d$@vB$jLE8)6xDuhx($9sL_f=HQylFv+Ok-P~Nf(tEU&ZX7B*eP>vG z-`?i@l}*SkTlq6*ih!)nv{V-vCqs zFzYKT+k~nd^!97?KqM6zHd1T0X4ifmM0#DrNuLR>z9_xt6IYIn=;B4nD`Et>6uEHO zSbSXdVrGV&U1&wD8En&vju;BF#EKRbnHz(hu)}851Zr1JHXD~k*poFLqL@KqxOV>e z1Kp`;cO>QaKf~q`zY)m0@he`hgQRlpe011M`R7v@=aPZ5Vky~UUPvaB;ohVjIj{>k zQ@+?t_UIJnvbp#;^}oDJWJa$!(`56PDW+#wW1*A%bS2D3;P)PknM5^F`%qIgX3k#@ zW4;Fa#Y(*8VR^|+CJkCQ@@O0QwB``nwC30jxWipnjN&{dC2Q@HS&K`3wGJs&tBKdn zN4hi4I+t;Zxa;i3I2P(I#9HIBfw9Qe5%Cu*36Al)dy)|vubal(RSR`@r{ldnh?R$E zubDKCDfQI0OWn1kWYu;^yJ}<~Szs4S4EZ(8L=~~HMR-h>H>qg9yP|q=gB#PTiv4#Q zXVk4sxkxc1w>~EGEt)7qMX|+;9c8O72DXJn+#5uxL%||9ueRVGCJTUg$WcW=T-h4b zAGR667Wm^V@gcoPeCGm&m~5@$w0F;8I@24bd!{b}uEnBIScMuBB?pQOIHoBR#Bj>< z>HR6n!|c#szGVoa+7Q3`80BCQc#IQ{*kfOPtbsln3V4)@!HeK>(NJ)Ql);mc!!+=a zlNIpdt>9@IYpCF{}QQg{7p>%FzG3N>;56$i3tI+KbF#t^>&XU_!?E6cIP$D{iP5c6l9 zJ6V&RbMAI*W^qAA9@B8Cr2RlKts-VmA&yRG^puLdp6K)VlPEv=DA43 zY-x|!EzoVD{-gTLd?u38AlCwYEgG|zVsZ0aESA(dVzx%}ha7ZfNG5?xG4U^W{7ZTq z=aug4<3y`Iqhr5nf+6dzx=rVo9=33P0Y)ucGy&Tzd8u=AQm1{>iM=U?YC86*fj0V0 zwqmaawusC*^KehnhzCe{El9i$x+A&gVN=s=oqS9($ZajeM{a9sA-nNU&1O?e*pK~V z6UT9W6|ROC@~a`7VFAk7@O1#bru!82bK)P?*Hzp9+nIJ7*ZVN1<`h4q%*c zo5(13S)=r}V$|LJfws!)2(r@KTF8ZZTb)sEq5KvYpuEyppuBYiF~DKZPS~99(d;En zH_vHWlDBH`>-npkd>JHPhREM0#Y!h^@5F!+GA~f9w1w<%Weg|R(z68lhxULL{$L-f z?Z(WX;EoZ596f6U+vE09ywf}vk0*nh;`W~+4ubGE-EZOh8Iq%15sb#yV$GMwJZG9A z*YC|x$a#jKK79R7#6qAYWM9%Wy`>{E6KGY@M{_069+xRD0^zt57lCM8re^_}?2Kmt ziU&hg(}AFtx!(SfnxX6ImbOraV!@ArFz!%>VWfl6NQUCakDD;=RYok9);r=E-%qmW z`b3e|`HOk}5&+rhD{$T?^%EO>5(A&az*-DA*8^k+T*91!)a(>`jG= z(>+Kx04gaDW;{6R!8bfu^2~I}gRa(lzt!?|wOH`q>#>Qc>e0$XsWMZYovu{&-c%|L zmIe#ulQWM#nwzxknG{PDePNIL@pGJQfFY>2nbL{`TG)&Ta>uKlmCA^@e_0r{= zZ`Bws@194cL4gk{ChxWQ;21ZQ0Un*=ktN=F2gqYQqIC1Y1ix8o9pi&i#p2s<jEwM|52Cxw7;oRfHRS=m zLrL-52Y9;7y9W5}%Di;CUgbL#Y1qVAH=`2;t5YNm-JGslJgrFYV(E_Tq$7*58UlPQ z{h%)H6?jB?gPF3(w@SaeUnX?d_1M^TymeTw^stx|Xvvr!7P7kA;9WK6@e?I&0E>Dn-SsKef(EM|oj>lg%n?+yWKc9Wr?dkh`U*97$ zya#m7exL83=RPzy==<~c;WqGbKCR8)zd!hJEuOu8oS^sG1bR`4=8xa-?h`&70dIX7 zS&yLIk4pOf{l-5~e8RH#oqtVj!vye7-w~xXQ1SPR|2@9slGpA>zWwlk?UV!fC7Q24 zka6h)o`c?`;8<5S4A1TXZzGMwefxLFhZKw6NZcU3w9tIWlA05!4#ZX{DffmDt zSo@v#AyZ1yq|5$WA8`3Q_ndRjz3-lL?!E8vmG3#YkLS27&&*3;KVzIl6J#ygzu6={ zC=suNDfkUBmC0a>C|Ohd7QAK|vr)11h)wO@@gl=?+2}W`)DA+lV$ZlgW-4ygVVG7Y%r{_cAZKfu@%U&{^m6((}&Q~B|cd~xD4Pk$wy8yFk! zJvll#Qu2Q>of{vRxH$8*bgr*&JU=nfJ293!ng7dy;^>K7@k{B^{{D%4iG49WG5CqR z@|E=ITyZkrduni`@2jRt?}^F&{`~m67*O7?0Sxs0jUe)V4QTJzfc~xqzMUQzADtZQ zoyZRi=SNDt{ex%neZ6$w>~9VK!B?xoTybz+51!7I@~eicdi_dzVl`Bv-!Ll^V}r$_89nSv>4`^& zPmC77Y#B?R>O+XEHaY$cvr^sU>*+^wr}O>eqqsjBYWAyEe3o!?`O>#h8#p<#1waLX zyJgEj|CtZ8V-RB!?USOKmXi_YzJj`Zyk z1x@MYuP}{x$=6=_?c+b)@?8Nm6}m`HvNe}A1?=`ztP%e{l{QN`Ypq*v*ER^|582n* zc?^W^i!OOK^z>DBwE1x+YV*v~96IXLS6JoBbIAkGb}?>=-%~I0?8zku+VC}EVP2HA z8Bt8|4zVDB&x0>Wa$#Opv>91W2u>ONb4$VpIL15tLp*36G}-*~=|BA=hopjM+9O+Y zqNwq_?;4GT7hTsh;56ekvOmin(q800-psKdEHa0eUlBzQ^9wYOOIsY0=$Ng28a5KO zd`RcnGfUGLY5Cgut4>~-Qp6LP*^rnN9eo|7^I|Bxsxuo_l5XBL$>YbKca)_xXMihf5 zje1hMY`#-W4Y8To3ga)!f(LS5pFjF6`n&!*A3`sLVV>O$eHs1i268|Qd$GbVaEQCb zX?cM|94^kd7C5Z?i?hB34&l5wr!H{VYZjjhFK~$b#q-ex4*S>Q)A0ok@v(RzvB0^2 z&o(b`Zs2EA3!DddF}=WffuGAPaM&&vKfhyvs{vlxxxgX(7GK!Cz&*oQGZXmKxtTd1|ff}D42>A6tP}KvqAw5tR)&unsJ1e{!S3Sj1yKz;uvq)Bq`08GGvLSPjr0U%oqp=mB=t1`OO4 zRt?-;7c}ykbQvoye-K>4EG^BzJy^O4_cDehuDIOIa5M$p!&oihK4VocF5k;oUHKo- zSLON*y^%*M6qom7y&*hcEYHQ|9%HF4F5hP?-NogD#<8lne7|w*EG{21j)TSJ4>9JD zU!9wK5x%X!w^Pc$f3o~z)Ak)ryjcE`NjGl-{hCR)w1EDhNhj|B{ZA&nX*1}5H0i_^ z&_6KgrdH6_cr_06-<$kK0rcOQbR5f4`MODObb$W8NynU^zh}}L+@N1I>8KYp%{%6x zp@tW~&StMVSj8wDuqL}~_{Ik$UwMJ#I}eb2=?0Q-T|n}+6G*;SfD{W3AjO6Zq*#%F z6gwi2Vo3l}Z1F&fH4aFz$AA=z6<(XF@ClS8N;8U%l0vx?B|Rl-b5{ zzv!?1nYf}Q3+zFT%_o}^D(wSFp0#hn6 z%bK$1NY=GZ)@{m8kZj*N*?v>jPO_eLvV)mIT(q7_SfCcHGXV)Cu6!O8`!M43`}}_1}6Nffm$eRU_25vFcym&7EzE8-B%mW*87sdmm++*^?_t&+k?%x-(xpb+$W8@ItF;?-MBS(b^8NaX2*jGL(h-< z{PC^nt20M6?UiHQ&5d*>koJh7Zp}Eq&{-pZa|ZShhIL@6P5Q1lpGazRi9`bH!)1zj zJLUqL5(O2pbPtEs-ik-s8&s^_cAVOAYsax2*T$OE9mCqgvANfPyuemwSpg5o%+3Kj zC+r-tb4KfnEi+MKfAuS%>@eG5WwUe3&b90e)h3)~5F_OKDgM@z7rOT8wfow1qhG`q^;NxA zkZmv7##t={`wr z`>CI4+(!nsx1sEq;M9Ok0Se(bKtc_5ydUb`7v_6O^jUjv3>>;lO*F!mzJ<1j7&H{vXfT=7Q&tTYF# zSJ}@Nu4Vt%!gwAN%X zcl%L#P!6ITGUk!TJW>p0SUG9T(Y`KoZn|jRXE5(w(CtRqhrOn9rAl8j^ba4#oGOWFR;6f^v8trSL4~2Z^ZBCan5`B zhHsLO(D@?@I(iQuNdU!1d7J~Fvw@GqfUyHS&J{1;@I1^%Dz1xXBcLOD_=pCSA2VgK zdXo8AMY(v^1->hfy5eD#=*6>@sEbu1CO=xs;|%ih4J8M8L}8Wi#j{k81W*rSYYbgH zOJ|@kc;P<*FNEz>g$)(kssG|x8b=s?hk&7vLGH&kiav}w#$SoXjlL*8Rp_V>fES6e zO6uZS9(8^g^;DEqbhEBXe8dmF|HI(xSd>AtLD2HWvqbwjqGeVQF$Ph@`~rEzEdwGq z&9m;6pLB~L13>tKC4hJUV_SiMm8Z>pW;JKJN9c^}ntRPaMe7?`hMLU4#~D~$IS+l< zTRATp`_t!c8gfQ@SdsY9Qx&~-W(M&sV{PY+7?&$N<7eg`o2yJ?Up;5M7g%94#%D?l8bppgUWw{8*nhovaI9&F7v|%dHWQC0Y8vB(Cn_<>&Mnp8 zy?}RPbcpnPq_<(Mo~`5C7$5RMCkq|l_ca0x}xdESpe+=jfn!C17>gzpnX38y#Vz5O^G40mBoYayoPgvrX{eC6)we^ zJu6zw*yFMrVnZS9Wqz(r3~ivkR~ADJheVaI>5v#A+<0is9uwrF#vY?$kD)Ut?K58N zGxj-E#k!^9yh{6CkYp{`KWSalkYVs6o@v75KVXFRLKXb^SUf@dp%?q1k91>%kO6Cm zztMaT!YX4oeUUPfckHIW-b6KQVyLdnC~s*Ulc#xh0sf->jrOu4{73V>hvxeUn(w$d z-y36vxAB!mbGrxgM!ua-XvP^U(5Mxjsw7t5C8^NC^EgwRk_F6zHj_*y)RrX9UFVim z%s+fF^vOz64?$0bUTBkEz+SD*=z1cwSucF5(hS+Tr4V%0JCg9jlS@I;Ytb<#GnQ<9 z-$wWeZ7#*)tG-*&G#oQHJQ$ibf_F3z?SVi2^?G5|mz#E5zT9p4vSqhOb8XLY5YHvm z^BllDSD#mccwVu6ME(iFKh@72K|IIU{w817!q?U3k)U-Rp;)ocBj$4+{OGd$=q@w! zd2j5ds#v~sR{1gt-{X1ka~1!pKPexbm@mpjXM;OsSADcVIqb!FFR7}> z&Sl&O*~OZ%vgqB=EV?L1@UD#V)!W!?_}II#Sq$>(l#B8PGV-$-24*1Y`Hb-8HCQp^BeCRjN2b7C>_>Oc% z%$)*1i2SLTk)aH`n@~n6i)2AMf;Zxg&vrZjSoXU_~A1=6^Nv015)020Az~4nx|AVH$5$T66ZW_<9bJkZ9=Pmq#g)dq7 zO$)DE_|F#JwD9K^{>sAtv{11|6|qpW5RVJS)n;L*h20h&wD2Pq_F0Idp>d5_ShDb} zg&w@wpz9L;N1*E^3(eZ?-_rPCX>`Q?pO&3GIeFKPTp{!D_QA>Rr%w-mBA@9mof)`m zYyZ}LM$%)Cvewe@SZir?{A2+iLrk6o)tf7h zPfkpXww|0c{#X#%Yv@(vxc~Nf8HWos6z+GoY%Poq=UZ)4>Eh_gT(Pw{c%pUe(NbY_ zWNW&;t#x9sl;48yG*0CP@)PDDT6^tbw2tG$j=|wP`(NK025J3^UC0;5@P9kqFCHqH zw86!kyd6%$Hcr|mYf?+6w5?ML%I%V>?2;n;!0eG!IVo+6Np}n09%-8}k(L^_N&#Kk zES%8@cReHp;*uu;#%WFR2rf<9C8s5iCe_J8-~yT)M@^_nOFlu>_M(1NlWK)cn&fMe zHVTuS;JcMh>0ZHkR7wd&ewdSmua)^GPFP}^)F2DB%FiWD`Hs|Zx0DbDl(eJ?Q4M52 zzlD=hNvT1o;WvX49!^X3neO8wAfwvM^u%weYX#D46fqG2Vf#_3wn=iyN2MlNm-eiZwIs#a@1+~B~N!?=nw%#cPT18&kAbd0}a&X=qkhV&y$$Nl!0U?#H z*4W%51-7hVm|{a22F%)norby1J$D+a51Q6DzoY6~dP!F`giu@4qggY0L{jldj$#1Q zju~&4T7Gj?UE)jnqiFn&?pA+l_ z)c!8%;NS?>+npM|+0zal?AF>l(rxKBG=7K6u)`}XyJxKeZ7{#jcTX%mGFr;Bbl;;R z_>POE2Sz5-h1^7eS--?DjkEOlXkV_BW9d@ zfCeUIqP;`eh)>U0Z}-Oz?YaK|Ua$S%Tr{6_f}*X@xNO40H|)A4w$FQ3)o4oxHe1a; zSK7GWQl#S{^+m6R>9Wt8bg=pD%F3wS-ac2_m^8F++qc_WY*r6~Y}@VabEu7)rD)6T z@!Pl&a{L{*+TK3*+PE6emL0l>>Z=76;@S4ES?6FIv(?I=*VkLYqxSZ>+|C=DvHD#w zbc}1=0JeikZRsB9vhyX|Xx7I}Fy@Fzd;YA0B-?HA?Dm)Um<=vl?GIZgU6X5$)usvY zory92Y97&c`@7Z&)(xNiG34uc)Z`ad{~vmn_5<(Gen-M=_{O`m$1&FEfBjO_++;Sy z5p&IDkJZKsq&8ix_$jNsxawF_x?cDEJG8%WhpDeu8wG9q&t^Xlf^4oI|F^96)@Px% z`s!Hiar^}&cI>Vyfq30&f81i?8O_kM`?vG=%i!CwW2qX@W<7tsQq2Ty_iMAi3F7VA P|H^8Qzhu{3>)Zbi{HZ46-STQWcNYO71TqIi!5lD$<7i{#q>mMC}NFMc5#lK zWm4zJH_gWZr^w12!m;BheiS>`-tFJ6pAL6f{riaZxnsT)c5c_)CVdp7x~%%B!SpP^ zX{YR>JN6||eFicOxZ$qWJK8?Z*ol`q4|N$sotcBV!MG|;&}_jd>K{rfue&u99(yN7ba?5mlfo=0-Zh0Kx8 z{Ndc*gFSs+U$a&A?mOJwog4fR2g;x701f@qS`htH9cUlw;El|I!T!Sodxvrd4(0lW z_jdO@oa@?4&1SDz!;hgZ3On;X2l|w6ypK=n`sOy_lU~E@JMcOsHea0jK`fM$kl}piBtjE?5qdxMr{o*paL`4bk>s=n{BOeWJ7NZFHMi2 z$uugb-um`$j{p1ee-J>^OApCOHt%u9fZZ62dE!5&pgYQ@v+n#p+e$FYJYQ!|pdr++ zKgT1ViamLm@rE%bYR`$=8jb@e*^Y)7&*%kaUV1vU^~?(9xyCnqN#yLYYn7;*H;Trj zC~M=QnB*l*2JxfBUon?28f5>avA@12#!g=2w|X#!wmsQSh@!^Dz!mBPm*p!OVTov* zVq3HZ_T~&Lm3ToE{cOU6uME4E622&woT`2jw#n+$YMryEu8pBZrpTs8uRL+Nf-56I zu`SC{S2fx)k!sMzl3mS~enYcf5d8+*!dO8J8|*Y;++ee))A1w1E)Kg8_l>CH?yOX@ zr+HHGCC{aFyDo*ZYJII9LOrV3o}Kguk_v1Run|k{Z?^pSIa9?4vXenI`9dm<`afm! zgRo7v=&IO}oeW2ke%Mi>i6vdOJWO`o*~w@u`Fd&@>geCK8`rQ_H=gSTfvf ziX+C!1~C=7TTb&5S#N=^0Ntl_xj_I=kYs&>%S+$jZFG6dT%M>;@-vTaa_T}IGbW$% zVE)XE$x|MDZ)V1QQyxsinNxu&5593T6Y7))Gj`_j$dm`)&6y`+Qy%2?%#(>Jj}Le{ zIprw@o@to!_<^5KPkHcpo;jPD@&thAvQwUN;4`bIJeW2!=hsYmDuBEs86P=Fy>L@?&;NQ^ygNu*QZx+)Pn+>Hd$~wB#C+mV;1r%dZ^T=hsykVs63#D zDuQ|_r0StXVLenC(L+^HJyadjLp51qe5CY>j}eoPCFV>C$cNS2M8_o#I+x)rn7v>ktoy zc(yumx!sA|W}pcE9Y6`V1t+1TX~^}WZa%snhhasf#CB9QDQAo-JlDQXsY052W^& z0jWO$AoZ^tNc{~0ss9x~TC*5?{PI9KVQjVqiyTuDvme`iFEBQ{VGqi|*zCsp08#MU zKY>w;&2GA%G1r!{{A?>edxW<$wwrJ>W7xsvXYXJP9`dtT^58H(yOpta!flMfV}ABd z#_k{eKI%5FzLTuyn4bCB?X(;M@3KC7`Pm)TmNGwkx3%TY&$d}x;r#4Q#xQO3v%Anz z!h7&JN<5c1Uh}uU%cDQCeb!BJarB2atz7{9mQB}w4fGFeI`MVT|6G)ySs&+f-_o3j9newdVxr&+0GiQB$cMh181; z1?b&2)oiT2u-Z7^eC|=!d*;;n)#o0?SLt#^%d8dmAdvE)97uT)08*Zm0V!|%K+2<1 zAmx=0NO|T3Qr;;*%EJ;M<)sXyJe7cyw<3`8SO8*wggl;o2OE`WqOkZ>2im9he)*J% zKABv{o5s5gZw7A@-YnjgBT4Pdr3{<6ym*VQpKnh23%VY}8i&Lx%&52Q62tV3#8*SV zsX2So(lyP6=CxVY#F)8eJ?NG!Lq+DAjm`1q)~vZ^Gk6!X> z4$EBg8tB)vtc~bzHZ!yBdYp|$*zvaO2{u~E#@eoHY;+Mj(RMw_Mx$)J?fM=z8fGWk zuD7$%Dt4;v`u%KFWskL8e}Ij~toe+&bcE)Tn3!D`sbs^T6+h@jQ8oxV7zQ1#Vl>~P zanNe)#ysK!v+Eg4in4{8;gL=^o5IAbI(gwpV6n?)OOL4EhE|eMVU%6lV3!P zUK)`doy>*ltof-|EPIT_y`-Z!vL=#s6=i#D`&VE;J>qk8Zocqp)-+zT>@kMzq~mvF zt4NkF%I>r6Uxoc^BLPR}mJ6?E%>g@R82e9ftA+W#Fu!l6J)tCt1;!0pg+6Tl zESxX2_OjOaEaL*3cnc^>OzVozdgK!J!Y_b|ms!4p*mGk}&7G?);a{{TM<&tFTaENee}G zvxO|y-Jn++DeOo1H0>dH16Cd;Oi!j7l0s_Y(V#PLd)fG@MaV^sRn3Go&T3hFMy-P` z*AUzJ>w>76mpJm2nGet$43Dt)9y{ILs>fQBx>ZM#vtBlaH6;mKT2~s7+w*LKWb<5i zn;vUxy3w{KvKxmTtvk(l*Wg`?cm2qMI^$$N-MveX?aJD9Vpnh1X|Go%U%jx-DA~k} z7VFGHXO23YHE54Lxp|8=v3YZ{ZtG^Fx|{ZH683K5bYb%rKdo_6%fzG9FA@7FZEH(! zfsI|FGe<8oPc^ac&eTaJ=5Y(!xdrbwyxZ~a7-8DjB^*vJr`XSDYD=$(lUueWQ#9UN zIIH9vM^YH;2(OM6TW zzSAD~ZrPaB$af3*ZnfeV0ZnmCZnAwNR+{CzZK3Zr_-)5~Ki&uMerjGFX}6Budy;9Y z18u5=ewx}3dMWBycCTGWnvE{A>e$t5x4+ko%P#ocjdza~mr|?!d|Kx}pIIfL{cXFD zJn-E{zITsA+S;<|dv;+Bdf>XwMst-k9LtI+bJp&P$g>xOl6=rQ3X5Ugzf}9}95L&7AX9A{TCv(fG$Ni=NnQ z5Qhha195op3qTwmSTH^t^eb!&@p0(bPJA3Xc6NgAmDmLFWyYQ$K6X7?6Zn{^SIHmp z>rIlQhPOzLe6r?p`P-u6%;iE*FLQpkK z4f@#2q;Pbu7dSWB*<-YyX^=$FNGX2y*pd>Nn;dglgbe!|&8u)z#HuQvJyr;YjS2WD z1f#~4Cc?P!Ca|{D$4wb`BFfogR3FY<3L(1hBg9$DPl#a((7q~J=I5rOFw=MTSY3I5 zn?4^i{iqLZTUHU|rr*!Zz}aKVLn=1|0cHm6c4iiZxfu*HQ$2gEu`6$npKd?|NkUruc+-a5hnRhH? zv91oidS4&bB^m3Iy^hNrobkSiM`QV3tY;^!JD36+x9(C{@5Cv(Kez>z6>z^oYn6hv z=+l^U$2;PB5bIt5{R!4+2JQv4aZO7G>ons;M*^~w*Md0925Pn50QAbC7g!uOCgaeH z$CH7&xDkL(06OJ02}`GmbUNqjR5*21)Fh3`WJ()PCN-RujSARSkpH@P?^s7t#|G_M z1?<(jl!0%OHl9i))g>u|_Dd@CVAD%FO-MkJPdM`P@dke(6}Q&srkZ$f80)a=X%fRV zaU+O5X}ETWNPE+8-45(cfs1#DlX^O7?Nf1EQ^gY_VXR+K(DW@_gf*;uDegsR4Z=QF zB^i+JO+qAFLT6~mG|mdKn6W*C@gp6SD@cxSWg(U@p8L-NKH>RUq(g+t=YLi#SC-SB z2KiBr{GjtM`8oH~q8wlUJmp6j-QxtPF5KNzVgDVVdO(+>o~p&1*=Ll2>w)N~om=L> z^jj`X=R(2Nc^?6t{yEw}c&A#JSvw8)9or zCNyn4k1{L z+PJPK!%KDJvmFhPoxB!C%+;Gxi05P1LZr7uN1IMwD+k}zM?UtF&G~r3U(oCvC}^5> z59s;`-PF*#3V9K%(v4zH)US7PV!fRcOV*3?$2vK0tSd0q6n{7FRoKVOjd=($r`&OK zrV3{#H*Y9s79nTm=iIVl&QZQakZ<<+6tVQ#aSN6rrq($Xu~eK`dgsJ41{=uFbp(s? z>_I%e7_TzK(_5_?lWJHSSJk9**YUAOs=Bo@FrKFFT`Y^UW8rw)* zn}|fnrnj^vYcJOrvuQ+(s!M7azR|l^<_^yNaq*@P-7S_|`;7SMAI@s#q zb_d%WYC-2~}gU1{kcW}bN(+-|<@Hq#+;^0LGryVruvJH=pA*N@*LA!M0 z@9<#HaDSis|N3nI%KiD3hkAy3_CI*!!LEG1e`xh1s~=i*G~eIVZyX&sI@ERe=+RXV z_GG&sIe0MlNbhPRpU(^&WsSp!1{#O^2lpHJ@yp@;p!Rm=2M-So^*65E&kiH@B6|z9 ziXP8@2g;ZS4@!7Ff7r6o=s%QebX{fg{rfxfjrpE^jRQxAjsCuyGb@@JhkAx{%kjIM zgPjL*Lv|w?_qxq!9K;WKdJg5-|G8^ur1Pr>BbOh*4>YL1IDa###>c$eO+R6!M_MUs z(vo&*9@Yrg8Q?yckt&2T zP4XwfKcY$N1Rn}=x3n%J`7>}VJh)Br3*{P#!6NZGd95pJFUr8OWktIWk}Z{mBm9#d zX^~K`bW3*#s3s-kc(X?qrbl_wBfQNtsah7|%1VsVU$nc^UPlcDY;@ZKVa5?^B>WJ|C6-&YMOu0vHKbiy zR44i5cBxL*rA?A>ctU%VZP_Qkp@+4W2dkk=-XK5Z z;aMpxyfLatD?n=&jiw4eV(69dN|9f+3JOOd*-7=Bo>$L`h4sMAhqZKA5})NKaM5gS zAaKXa3V1|ZVv1rAzvXqFIr|3UZ13sAI=@E4Z$q{1+gr62&6%c5ldJrGwES>fjBc7Q zqe}mn-{-MRU;l89Wx9^`;RlB-bD-~V#^@X}nDdwT!-Fg{*x%JT+{rS-xrc`>?ao6z z`@zoT2mAL9;0LNbeFwnL?K^y6Z|A;!gSjJasi&{I-=zmT`|y=?OO|8XB;V6Vjj+tS z2k|3Hmf7Ebh<>Wc=!cNQo%?_W3~b6q_si%aej~~Dw%)g6!(Ce!jLQ5m`eRBop0v}W zPphUHls9eLT{8-l_j?D$IEn+8=;yA&=C5 zsS7shfn6#u&RE}D?IbWsV!rycvF#lYIqg}P6Cfc?8mZGGK_ z;@^e&|3$}sVf(dZwn=5t(k9&cUHmfGZtl)iZFcNC93~xbNYAa`oxd-FCpbED;hbat Z?YT_QZoMx1RS>_=e)n=)<3rM){V#Xq$vXf5 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_16.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_16.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..7683a46dc22d2f530e8440eecaab4e8e47bafb86 GIT binary patch literal 9304 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_10.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..89883498eaad93f15b683a3e26c3c95062e59f18 GIT binary patch literal 10088 zcmeHNZ*WxCbwBUDd*42-R;yiU(SPu=k;Ss0MJy7?Sb)Hof5jffaWW0DEmqP>D|xjm zuU0a6#?m5zBx52lCMj{<$X^^sapI53C= zd$`cGlZD@vztV|zL{UgS=U(t^lW16!DhKY1D|j}g zLHc*xi6ip1*eS`=q5mj6#aH8d>Ys9b_V_+xdn)Fi1y2o4b?Kv^Xv=O-bXb&CxLMvS zRIzu#wFb5zaPJfQ4|aW?X!^bQa9?sX9(_KMO(#;Lug$+3jSq}uyL&TZ>74KFXgoVG z`ugejqVc}IY+`h@dvqk;oA|~+D$^5By%Wv!_m3uW^mcS~@TG+HZgf1J8cTFPKbY?O zj^onZGuGdq$bLu#*8jEwbo4`d@WbdpHZwNTJ(?I8PNZ|){eveGecggY-?s;kffkMN z)Zjqc`qR7g!oB7P(c$=s?*3Ff*ZpE9`@F0cmcQ2!h;)27@s0>)%huRmL`SlNGCx?47sc*^3qR;mszD3G2-*awOQob8~F+QH? z&t@<_(bdlH$jQxNaEaUxaW~MLZU%@8v);SB@A#Ae?6-t^o+VZItE&#OSf0K-1%YLv6=x4K=46}TzYzDwuO5izd+3&otNn!iSR(-g6wPVVbsOjFFfE?$3c zvBsuT&@a&DrYimE@G_mg`g-Hxi)%=`sqg(F(`oi*1cA^$&yoww3{Eo^(p^s_g?^*Z ze{Q9oB?bRarvB)2o9WC=eXWK$b@+li!_dCV@u3@HzTty9W~eC`pua6pDc9i_Y9_i_ zX?&KsW~%3PI)8Hty{JCc7oNO+?i#UZ3=?xj)2#`?k71tXjy)4*u9kMet$wCIyv#gF zxE6P8&GP)!uIVcy!X)&e(#lBJ|B;$I*U=qxXS(JRR2A?$|=0D&zrght2DB>;b{s z7h9;Q3;p0&4|w|>eGPa$S?~_T78=%teBeD|^A0)o2EjWLTL^|i%yrb!VK#O4WNaqP z8X?`(n~$(f;B7?QH_|T)o2TDqo9Qi9EGm|-}BFzO$KxZH^W<$?)V3~7NzTPbePI324~>~{o>0+H-1V_>l8uzo2D1h zpWhS+b#4WUeqcz2yuPTRAB8D%QNy!eIPG54kgEza-bD?skiuNWqK5ofI9s)-;cZhm zSGTAk=N9JIEoxXUg$toY%?-TRw5XK=FGUtL5AdteMXd~YIku>Ifp2VI)XITx?p)Nc z)(cOuiileaL`t=)h)1i5 zlxcMluhtML*VaXR8bvPjCBtv^rNUSGM#7}|uJ{c->_-gzh@-#63j0glVSkw?>@W9* z{eEBAUs)0MuL*?x)m34CZB5u;Ul;bTZ3z1xS{L?fgmri0r@lTN`5oA=V?P4KQ)USq z!c!|SrISZsS|_i-5gl75U{yl`0U2;RkOOxBO<+6F1$+c( z0e1pRfR6&*zz$$3a2L=6+zl)P?g4s%oxpP7UZ9xcJbmqIUe_neJAeMOJhmKOiDeQ! z5=$kzC6-9EB)TM;61hYs(U7Q1)FhI`1WjF=2;82v-xqZD+DJLx8&tOx#ruw|bxY0r z9tYMfZP|}|U)@s6K|l@k2M(jxbxT_h5h*TFYAGgoz->hP1hx`ACa{eNHKdld6QRP? z(hi~n0^5mDV`}LUqC=B^gSPWGe&*A3R{K`%se@GW{mGv=I{z7+P5!kbduJivaOCn= zAph8rJ+DIkD@QK-GUOjQvim$_@jgV|rLXCDd{Rq0Wj`M!EEn8k`-{gTwX}<{Y=FCo z@OY$__7Ij2u#*UnM`~#=hOhc*p`WUMC2Jtd{+ZQ~W&d2YkY)c^J!IKGz813VpZ*YJ z**{~w&aTkuYc;3vGaWd;tkcB1=o-h0Bf0gUgG{H_;Hh zbaf-mU8`$i;rRf0mKpQi02djeK$UJ}7vu$GhiV>()wrtKmjg91@wZ66st$5PjDkX5 z2RRs{79ocq&&8-y$Y&v+i&2-5=i4dYb<0hYtn-|WJU`cU%R`gK_0wIqyfkUjsjgc- zn$$bLY@;jxO4qIZG)dRbblo~Yla^Swgf%-Z)+}4Mw25)bLAE@Q4U@8veF4b2i^RIF zX@HEkL~*_9BTJhxpUkw;Yq@Roc)T{ceHAuZfhrr#nmQXhw%wUOzpdBc2TLteu^U+Pv)Q(^cooKEQs`>MRXuQIS75=jub zHMw9~!D-VB86{@Y0LKvfB^MhKK4K?s7ei&?m816ZMMrM4dC16)M(=WUG}}L&%S! zy$}=63HC;nc(xd!F322pnWb1Z`H@=;H44UL3dW!=Y!;^AdM*!R-l7yWK%v=1y|NgM(WfU#T@Dd_^6?Z^rEo z2|v68uGqfN>!oaH-m*N{6Cj?;1w*S?6+i41#h7LMIO6wFVxsF#Oqk)sWbPg@5o_d? z2P7tTJTUK{SUi}F2Y2Fe_8##NYvk1jBp$z)HDbz`xSW_=xJOLH8hPyjiODCvMl2bR z5+@!P?-38NMqYnF;_-V~BW@X!QYR*t?-3KRM!xod#N-oSBOV!#GAABy+#?=45syFC z^tu6jy7KctRwB>qEw)P}Wyx5w~v<>IRc5KUx zjgP-{GCQ`tcf9YVlcUKU$(~qmYfoErGbTvw&RpYH@kk>?c>k+=8 zgSU2YpV`7I2YAH-f7B?+@m6Cr%Kb(eY{qDiuiwV~VZO;Y0cDu)ItuLzwmrx_A?U}0 ze3yYgemrJB-xcK^RBReA9N`|LJSfai3G*(qL)reYXoJeJ6?ylwtuc*yeY1uNzohTf z_(5Z<)nOW6nbe=wc)e--8wGjL`Xygu^mOo`u`bH%t;0NME36!ET+ajRdBu9}{{voe znETiB(C+ozYm^3Cc%v~Kgjfm6>pUXHR{a@X8{(cryx#B}F^xASt$#5784a|V*3aRQ zj`GKhiXg8aEzBJ&enrRkM0j{ZI8A@@tyE~#jZ!kiH7?B1nDT=6d&h&m7?iP zE@k3ukaz*ah_J>zb_36 zi|bd`BgU|@Y`~4ssrv2C2nV@A=oIpb(z!ww;uc(jul5`2IVmdC|M3WCQC4*T=P98-jYF|BnZ$h_fifzV{ ec0W7Me8sC literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_12.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c213c46a67046808343ada9d705274a037284203 GIT binary patch literal 12144 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 T4ul)UAF!TpHrkFBR>uD?=fg;N literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_14.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_14.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..eafb2172c1dc6f382591f4c5c27f2ae6090c9ad0 GIT binary patch literal 8384 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_15.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_15.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..03026b96f7b347c515521bf6162959b5a2578404 GIT binary patch literal 6368 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 URr#lwxt4uN630u(C8^f_-v_>IJOBUy literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_2.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..29fce037ef1689177a452130b5a13a20757aee73 GIT binary patch literal 8392 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 X9_LT7@bm2d!2N#*yF5h~ciR6CBg=X_ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_4.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9e90716936b6a62e5b073bf036965eb1a369f79d GIT binary patch literal 11752 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 NwtlN4Xya=A{{d#yyKVpg literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_5.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e823d19358b9628478eb09185bfc8326cb6ea812 GIT binary patch literal 9592 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_7.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..096aa62858846a8c4bbc453e2177053eae3d4c43 GIT binary patch literal 11520 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_9.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..c1dda6217c00e7efaa9768fabc7ee18f4730aa1f GIT binary patch literal 12440 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/resnet18onnx/tem_fused_linear_20.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9127e21c8f7981054decef985677e32db258c03a GIT binary patch literal 11128 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 fzqm9Lal2nT`vpXnO_3 Date: Fri, 28 Feb 2025 13:47:19 +0100 Subject: [PATCH 147/176] - fixed merge: GpuMemoryDomain on par with the others.\n- basic NVidia support enabled --- dandelion_commons/src/lib.rs | 2 + machine_interface/Cargo.toml | 5 +- machine_interface/build.rs | 20 +- machine_interface/src/function_driver.rs | 2 +- .../compute_driver/compute_driver_tests.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 66 ++-- .../compute_driver/gpu/buffer_pool.rs | 6 +- .../compute_driver/gpu/config_parsing.rs | 10 +- .../compute_driver/gpu/cuda.rs | 355 ++++++++++++++++++ .../compute_driver/gpu/cuda_tests.rs | 153 ++++++++ .../compute_driver/gpu/gpu_api.rs | 27 ++ .../compute_driver/gpu/gpu_utils.rs | 53 +-- .../function_driver/compute_driver/gpu/hip.rs | 42 +-- .../gpu/{gpu_tests.rs => hip_tests.rs} | 2 +- .../compiled_tests.rs | 44 +-- .../{gpu_tests => hip_tests}/load_models.rs | 2 +- .../{gpu_tests => hip_tests}/load_utils.rs | 6 +- .../{gpu_tests => hip_tests}/tests_utils.rs | 2 +- machine_interface/src/machine_config.rs | 12 +- machine_interface/src/memory_domain/gpu.rs | 30 +- .../tests/data/test_gpu_cuda_matmul.json | 24 ++ .../tests/data/test_gpu_cuda_minimal.json | 25 ++ .../tests/data/test_gpu_cuda_test.json | 25 ++ .../tests/libs/kernelCheck.cubin | Bin 0 -> 5568 bytes machine_interface/tests/libs/kernelCheck.ptx | 156 ++++++++ server/Cargo.toml | 2 + 26 files changed, 930 insertions(+), 143 deletions(-) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/cuda.rs create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs rename machine_interface/src/function_driver/compute_driver/gpu/{gpu_tests.rs => hip_tests.rs} (99%) rename machine_interface/src/function_driver/compute_driver/gpu/{gpu_tests => hip_tests}/compiled_tests.rs (82%) rename machine_interface/src/function_driver/compute_driver/gpu/{gpu_tests => hip_tests}/load_models.rs (99%) rename machine_interface/src/function_driver/compute_driver/gpu/{gpu_tests => hip_tests}/load_utils.rs (88%) rename machine_interface/src/function_driver/compute_driver/gpu/{gpu_tests => hip_tests}/tests_utils.rs (97%) create mode 100644 machine_interface/tests/data/test_gpu_cuda_matmul.json create mode 100644 machine_interface/tests/data/test_gpu_cuda_minimal.json create mode 100644 machine_interface/tests/data/test_gpu_cuda_test.json create mode 100644 machine_interface/tests/libs/kernelCheck.cubin create mode 100644 machine_interface/tests/libs/kernelCheck.ptx diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 2557b12a..8bc6bc68 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -132,6 +132,8 @@ pub enum DandelionError { // GPU engine specfific errors /// error from HIP Runtime HipError(String), + /// error from HIP Runtime + CudaError(String), /// identifier used in config file was not declared before UndeclaredIdentifier(String), /// argument given to the FromInput sizing was out of bounds diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 8e012f9a..423f8f7b 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -15,6 +15,8 @@ bytes_context = ["std", "dep:bytes"] wasm = ["std"] timestamp = ["dandelion_commons/timestamp"] gpu = ["std"] +hip = ["gpu"] +cuda = ["gpu"] gpu_process = ["gpu"] gpu_thread = ["gpu"] test_export = [] @@ -44,12 +46,9 @@ http = { version = "1.1", optional = true } bytes = { version = "1.6", optional = true} libloading = { version = "0.8.1" } log = "0.4.20" -<<<<<<< HEAD lazy_static = "1.4.0" -======= kvm-bindings = { version = "0.8", optional = true } kvm-ioctls = { version = "0.17", optional = true } ->>>>>>> 90d4dabae9614e75d046a477c55b212c1230800b # disable benchmarks in library, to not run all unit tests on every benchmark # also needs to be disabled for criterion flags to work that are not available for tests diff --git a/machine_interface/build.rs b/machine_interface/build.rs index 20daec1a..0123a6c3 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -18,9 +18,23 @@ fn cmake_libraries() -> () { } fn libraries_gpu() { - // Link with HIP Runtime 6.2.2 - println!("cargo:rustc-link-search=/opt/rocm-6.2.2/lib"); - println!("cargo:rustc-link-lib=amdhip64"); + #[cfg(feature = "hip")] + { + // Link with HIP Runtime 6.2.2 + println!("cargo:rustc-link-search=/opt/rocm-6.2.2/lib"); + println!("cargo:rustc-link-lib=amdhip64"); + } + + #[cfg(feature = "cuda")] + { + // Link with CUDA Device API + println!("cargo:rustc-link-search=/usr/local/cuda/lib64/stubs"); + println!("cargo:rustc-link-lib=cuda"); + + // Link with CUDA Runtime API + println!("cargo:rustc-link-search=/usr/local/cuda/lib64"); + println!("cargo:rustc-link-lib=cudart"); + } } fn main() { diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index ad272c45..e7d45ed6 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -110,7 +110,7 @@ impl Function { // Transfer code object transfer_memory( &mut ctxt, - &self.context, + self.context.clone(), cfg.code_object_offset, 0, self.context.size, diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 9a1a2ec1..4b0d2cf5 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -66,7 +66,7 @@ pub(crate) mod compute_driver_tests { .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function - .load(domain, 0x1002_0000) + .load(&domain, 0x1002_0000) .expect("Should be able to load function"); return (function_context, function.config, queue); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 6c82aeb1..a291136e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -5,7 +5,7 @@ use crate::{ ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs, DandelionSystemData}, - memory_domain::{Context, ContextTrait, ContextType}, + memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}, DataItem, DataRequirementList, DataSet, Position, }; use config_parsing::SYSDATA_OFFSET; @@ -30,16 +30,20 @@ use self::{ gpu_utils::{ copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, write_gpu_outputs, }, - hip::DEFAULT_STREAM, }; pub(crate) mod buffer_pool; pub(crate) mod config_parsing; pub mod gpu_utils; -pub mod hip; +mod gpu_api; #[cfg(test)] -mod gpu_tests; +#[cfg(feature = "hip")] +mod hip_tests; + +#[cfg(test)] +#[cfg(feature = "cuda")] +mod cuda_tests; fn execute( actions: &Vec, @@ -86,24 +90,22 @@ fn execute( }; } - unsafe { - hip::module_launch_kernel( - config - .kernels - .get(name) - .ok_or(DandelionError::UndeclaredIdentifier(name.to_owned()))?, - get_size(&launch_config.grid_dim_x, buffers, context)? as u32, - get_size(&launch_config.grid_dim_y, buffers, context)? as u32, - get_size(&launch_config.grid_dim_z, buffers, context)? as u32, - get_size(&launch_config.block_dim_x, buffers, context)? as u32, - get_size(&launch_config.block_dim_y, buffers, context)? as u32, - get_size(&launch_config.block_dim_z, buffers, context)? as u32, - get_size(&launch_config.shared_mem_bytes, buffers, context)?, - DEFAULT_STREAM, - params.as_ptr(), - null(), - )? - }; + gpu_api::module_launch_kernel( + config + .kernels + .get(name) + .ok_or(DandelionError::UndeclaredIdentifier(name.to_owned()))?, + get_size(&launch_config.grid_dim_x, buffers, context)? as u32, + get_size(&launch_config.grid_dim_y, buffers, context)? as u32, + get_size(&launch_config.grid_dim_z, buffers, context)? as u32, + get_size(&launch_config.block_dim_x, buffers, context)? as u32, + get_size(&launch_config.block_dim_y, buffers, context)? as u32, + get_size(&launch_config.block_dim_z, buffers, context)? as u32, + get_size(&launch_config.shared_mem_bytes, buffers, context)? as u32, + gpu_api::DEFAULT_STREAM, + params.as_ptr(), + null(), + )?; // Manually deallocate heap memory we performed into_raw on for ptr in dev_ptrs { @@ -137,8 +139,7 @@ pub fn gpu_run( return Err(DandelionError::EngineResourceError); } - hip::set_device(gpu_id)?; - hip::limit_heap_size(0)?; + gpu_api::set_device(gpu_id)?; let mmu_context = match &context.context { ContextType::Gpu(ref mmu_context) => mmu_context, @@ -206,8 +207,10 @@ pub struct GpuLoop { #[allow(non_upper_case_globals)] const Gi: usize = 1 << 30; -// TODO: add adaptive amount of other GPUs are used, MI210 has 64GiB -const VRAM_SIZE: usize = 60 * Gi; +// TODO: add adaptive amount of other GPUs are used: +// MI210 - 64GiB => 60 * Gi +// RTX 3090 - 24GiB => 20 * Gi +const VRAM_SIZE: usize = 20 * Gi; impl EngineLoop for GpuLoop { fn init(resource: ComputeResource) -> DandelionResult> { @@ -269,7 +272,7 @@ impl EngineLoop for GpuLoop { // Function parsing logic that can be shared between gpu_thread and gpu_process variants fn common_parse( function_path: String, - static_domain: &'static dyn crate::memory_domain::MemoryDomain, + static_domain: &Box, ) -> DandelionResult { // Deserialise user provided config JSON, extract module suffix let (mut gpu_config, modules_info) = config_parsing::parse_config(&function_path)?; @@ -330,7 +333,7 @@ fn common_parse( Ok(Function { requirements, - context, + context: Arc::new(context), config, }) } @@ -354,7 +357,8 @@ fn common_start(resource: ComputeResource) -> DandelionResult<(u8, u8, u8)> { return Err(DandelionError::EngineResourceError); } // check gpu is available - if usize::from(gpu_id) >= hip::get_device_count()? { + // gpu_api::limit_heap_size(0)?; + if usize::from(gpu_id) >= gpu_api::get_device_count()? { return Err(DandelionError::EngineResourceError); } @@ -379,7 +383,7 @@ impl Driver for GpuThreadDriver { fn parse_function( &self, function_path: String, - static_domain: &'static dyn crate::memory_domain::MemoryDomain, + static_domain: &Box, ) -> DandelionResult { common_parse(function_path, static_domain) } @@ -402,7 +406,7 @@ impl Driver for GpuProcessDriver { fn parse_function( &self, function_path: String, - static_domain: &'static dyn crate::memory_domain::MemoryDomain, + static_domain: &Box, ) -> DandelionResult { common_parse(function_path, static_domain) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 5ff97bf3..f01923b0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -1,7 +1,7 @@ use dandelion_commons::{DandelionError, DandelionResult}; use log::debug; -use super::hip::{self, DeviceAllocation, DevicePointer}; +use super::gpu_api::{self, DeviceAllocation, DevicePointer}; #[derive(Debug)] struct Buffer { @@ -25,9 +25,9 @@ pub struct BufferPool { impl BufferPool { pub fn try_new(gpu_id: u8, region_size: usize) -> DandelionResult { - hip::set_device(gpu_id)?; + gpu_api::set_device(gpu_id)?; - let mut allocation = hip::DeviceAllocation::try_new(region_size)?; + let mut allocation = gpu_api::DeviceAllocation::try_new(region_size)?; allocation.zero_out()?; // sentinel buffer to simplify logic let buffers = vec![Buffer::sentinel()]; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index bb3e79b9..c60fb9e3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize}; use crate::function_driver::GpuConfig; -use super::hip::{self, FunctionT, ModuleT}; +use super::gpu_api::{self, Function, Module}; pub const SYSDATA_OFFSET: usize = 0usize; @@ -71,8 +71,8 @@ impl From for GpuConfig { #[derive(Clone)] pub struct RuntimeGpuConfig { pub system_data_struct_offset: usize, - pub modules: Arc>, - pub kernels: Arc>, + pub modules: Arc>, + pub kernels: Arc>, pub blueprint: Arc, } @@ -97,10 +97,10 @@ impl GpuConfig { let offset = self.modules_offsets.get(module_name).ok_or(DandelionError::UnknownSymbol)?; let base_module = base.wrapping_add(offset.clone()); - let module = unsafe { hip::module_load_data(base_module as *const c_void)? }; + let module = gpu_api::module_load_data(base_module as *const c_void)?; for kernel_name in kernels_names.iter() { - let kernel = hip::module_get_function(&module, kernel_name)?; + let kernel = gpu_api::module_get_function(&module, kernel_name)?; let _ = kernels.insert(kernel_name.to_string(), kernel).ok_or(DandelionError::UnknownSymbol); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs new file mode 100644 index 00000000..32e7c855 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs @@ -0,0 +1,355 @@ +/// Rust bindings for a subset of the CUDA Device API + +use dandelion_commons::{DandelionError, DandelionResult}; +use libc::{c_void, size_t}; +use std::{ + ffi::{CStr, CString}, + ptr::null, +}; + +type ErrorT = u32; +type CUresult = u32; +type CUdevice = *const i32; +type CUcontext = *const c_void; + +type CUmodule = *const c_void; +pub struct Module(CUmodule); + +unsafe impl Send for Module {} +unsafe impl Sync for Module {} + +type CUfunction = *const c_void; +pub struct Function(CUfunction); + +unsafe impl Send for Function {} +unsafe impl Sync for Function {} + +// typedef struct iHipStream_t* hipStream_t +pub type StreamT = *const c_void; +pub const DEFAULT_STREAM: StreamT = null(); + +// has to be pub to allow address-getting when preparing args +pub struct DeviceAllocation { + pub ptr: *const c_void, + pub size: usize, + device: u8, +} + +unsafe impl Send for DeviceAllocation {} +unsafe impl Sync for DeviceAllocation {} + +// Should be associated with a DeviceAllocation; maybe use lifetimes for this in the future +#[repr(C)] // We take a raw pointers, so make sure the layout is as expected +pub struct DevicePointer { + pub ptr: *const c_void, +} + +#[link(name = "cudart")] +unsafe extern "C" { + fn cudaGetErrorString(error: ErrorT) -> *const i8; + fn cudaGetDevice(device_: *const i32) -> ErrorT; + fn cudaGetDeviceCount(count: *const i32) -> ErrorT; + fn cudaSetDevice(device: *const i32) -> ErrorT; + fn cudaDeviceSetLimit(limit: u32, value: size_t) -> ErrorT; + + fn cudaMalloc(ptr: *mut *const c_void, size: size_t) -> ErrorT; + fn cudaMemset(dst: *const c_void, value: i32, count: size_t) -> ErrorT; + fn cudaFree(ptr: *const c_void) -> ErrorT; + fn cudaMemcpy(dst: *const c_void, src: *const c_void, count: size_t, kind: u8) -> ErrorT; +} + +#[link(name = "cuda")] +unsafe extern "C" { + fn cuGetErrorString(error: CUresult, pStr: *mut *const i8) -> CUresult; + + fn cuInit(flags: u32) -> CUresult; + fn cuDeviceGet(device: *mut CUdevice, ordinal: i32) -> CUresult; + fn cuCtxCreate(pctx: *mut CUcontext, flags: u32, dev: CUdevice) -> CUresult; + fn cuDevicePrimaryCtxRetain(pctx: *mut CUcontext, dev: CUdevice) -> CUresult; + fn cuCtxSetCurrent(ctx: CUcontext) -> CUresult; + fn cuCtxDestroy(pctx: CUcontext) -> CUresult; + fn cuCtxSynchronize() -> CUresult; + + fn cuModuleLoad(module: *mut CUmodule, fname: *const i8) -> CUresult; + fn cuModuleLoadData(module: *mut CUmodule, image: *const c_void) -> CUresult; + fn cuModuleUnload(module: CUmodule) -> CUresult; + fn cuModuleGetFunction( + function: *mut CUfunction, + module: CUmodule, + kname: *const i8, + ) -> CUresult; + fn cuLaunchKernel( + function: CUfunction, + grid_dim_x: u32, + grid_dim_y: u32, + grid_dim_z: u32, + block_dim_x: u32, + block_dim_y: u32, + block_dim_z: u32, + shared_mem_bytes: u32, + stream: StreamT, + kernel_params: *const *const c_void, + extra: *const *const c_void, + ) -> CUresult; + + // fn cuMemAlloc(ptr: *mut *const c_void, size: size_t) -> CUresult; + // fn cuMemsetD8(dst: *const c_void, value: i8, sizeBytes: size_t) -> CUresult; + // fn cuMemFree(ptr: *const c_void) -> CUresult; + // fn cuMemcpyHtoD(dst: *const c_void, src: *const c_void, sizeBytes: size_t) -> CUresult; + // fn cuMemcpyDtoH(dst: *const c_void, src: *const c_void, sizeBytes: size_t) -> CUresult; +} + +fn get_cu_error_string(error_code: CUresult) -> String { + let mut error_str_ptr: *const i8 = null(); + unsafe { + let _ = cuGetErrorString(error_code, &mut error_str_ptr); + CStr::from_ptr(error_str_ptr) + .to_str() + .expect("Invalid CUDA error string (shouldn't happen)") + .to_string() + } +} + +fn get_cuda_error_string(error_code: ErrorT) -> String { + unsafe { + CStr::from_ptr(cudaGetErrorString(error_code) as *mut i8) + .to_str() + .expect("Invalid CUDA error string (shouldn't happen)") + .to_string() + } +} + +macro_rules! cu_checked_call { + ($fcall: expr) => { + unsafe { + let error = $fcall; + if error != 0 { + return Err(DandelionError::CudaError(get_cu_error_string(error))); + } + } + }; +} + +macro_rules! cuda_checked_call { + ($fcall: expr) => { + unsafe { + let error = $fcall; + if error != 0 { + return Err(DandelionError::CudaError(get_cuda_error_string(error))); + } + } + }; +} + +pub fn initialize() -> DandelionResult<()> { + cu_checked_call!(cuInit(0)); + Ok(()) +} + +pub fn get_device() -> DandelionResult { + let mut ret: i32 = 0; + cuda_checked_call!(cudaGetDevice(&mut ret as *const i32)); + + ret.try_into() + .map_err(|_| DandelionError::EngineResourceError) +} + +pub fn get_device_count() -> DandelionResult { + let mut ret: i32 = -1; + cuda_checked_call!(cudaGetDeviceCount(&mut ret as *const i32)); + + ret.try_into() + .map_err(|_| DandelionError::EngineResourceError) +} + +pub fn set_device(gpu_id: u8) -> DandelionResult<()> { + cuda_checked_call!(cudaSetDevice(gpu_id as *const i32)); + + let mut device: CUdevice = 0 as CUdevice; + cu_checked_call!(cuDeviceGet(&mut device, gpu_id as i32)); + + let mut primary_ctx: CUcontext = null(); + cu_checked_call!(cuDevicePrimaryCtxRetain(&mut primary_ctx, device)); + cu_checked_call!(cuCtxSetCurrent(primary_ctx)); + + Ok(()) +} + +pub fn create_context(device: CUdevice) -> DandelionResult { + let mut context: CUcontext = null(); + // TODO: look at the context flags + // 0 means automatic scheduling + // https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__CTX.html#group__CUDA__CTX_1g65dc0012348bc84810e2103a40d8e2cf + cu_checked_call!(cuCtxCreate(&mut context, 0, device)); + + context + .try_into() + .map_err(|_| DandelionError::EngineResourceError) +} + +pub fn finalize(context: CUcontext) -> DandelionResult<()> { + cu_checked_call!(cuCtxDestroy(context)); + Ok(()) +} + +pub fn device_synchronize() -> DandelionResult<()> { + cu_checked_call!(cuCtxSynchronize()); + Ok(()) +} + +pub fn limit_heap_size(size: usize) -> DandelionResult<()> { + // cudaLimitMallocHeapSize = 2 + cuda_checked_call!(cudaDeviceSetLimit(2, size)); + Ok(()) +} + +pub fn module_load(path: &str) -> DandelionResult { + let mut ret: CUmodule = null(); + let fname = + CString::new(path).or(Err(DandelionError::CudaError("Invalid Module Path".into())))?; + cu_checked_call!(cuModuleLoad(&mut ret, fname.as_ptr())); + Ok(Module(ret)) +} + +/// # Safety +/// Requires *image* to point to a valid hsaco code object +pub fn module_load_data(image: *const c_void) -> DandelionResult { + let mut ret: CUmodule = null(); + cu_checked_call!(cuModuleLoadData(&mut ret as *mut CUmodule, image)); + Ok(Module(ret)) +} + +pub fn module_get_function(module: &Module, name: &str) -> DandelionResult { + let mut ret: CUfunction = null(); + let kname = CString::new(name).or(Err(DandelionError::CudaError("Invalid Name".into())))?; + cu_checked_call!(cuModuleGetFunction( + &mut ret as *mut CUfunction, + module.0, + kname.as_ptr() + )); + Ok(Function(ret)) +} + +/// # Safety +/// Requires *kernel_params* to point to an array of valid pointers to kernel arguments +#[allow(clippy::too_many_arguments)] +pub fn module_launch_kernel( + function: &Function, + grid_dim_x: u32, + grid_dim_y: u32, + grid_dim_z: u32, + block_dim_x: u32, + block_dim_y: u32, + block_dim_z: u32, + shared_mem_bytes: u32, + stream: StreamT, + kernel_params: *const *const c_void, + extra: *const *const c_void, +) -> DandelionResult<()> { + cu_checked_call!(cuLaunchKernel( + function.0, + grid_dim_x, + grid_dim_y, + grid_dim_z, + block_dim_x, + block_dim_y, + block_dim_z, + shared_mem_bytes, + stream, + kernel_params, + extra, + )); + Ok(()) +} + +impl Drop for Module { + fn drop(&mut self) { + unsafe { + let error_code = cuModuleUnload(self.0); + if error_code != 0 { + panic!( + "Unloading module failed: {} - {}", + error_code, + get_cu_error_string(error_code) + ); + } + } + } +} + +pub fn gpu_malloc(ptr: *mut *const c_void, size: size_t) -> DandelionResult<()> { + cuda_checked_call!(cudaMalloc(ptr, size)); + Ok(()) +} + +pub fn gpu_zero_mem(ptr: *const c_void, size: size_t) -> DandelionResult<()> { + cuda_checked_call!(cudaMemset(ptr, 0, size)); + Ok(()) +} + +pub fn gpu_free(ptr: *const c_void) -> DandelionResult<()> { + cuda_checked_call!(cudaFree(ptr)); + Ok(()) +} + +impl DeviceAllocation { + pub fn try_new(size: usize) -> DandelionResult { + let mut ret: *const c_void = null(); + let _ = gpu_malloc(&mut ret, size); + // zero out memory + let _ = gpu_zero_mem(ret, size); + + let device = get_device()?; + Ok(Self { + ptr: ret as *const c_void, + size, + device, + }) + } + + pub fn zero_out(&mut self) -> DandelionResult<()> { + gpu_zero_mem(self.ptr, self.size) + } + + pub fn zero_size(&mut self, size: usize) -> DandelionResult<()> { + gpu_zero_mem(self.ptr, size) + } +} + +impl Drop for DeviceAllocation { + fn drop(&mut self) { + // Not entirely sure if this is required but device allocations are freed off the hot path anyway + let curr_dev = get_device().expect("Need to be able to get current device before freeing"); + set_device(self.device).expect("Need to be able to set device before freeing"); + let _ = gpu_free(self.ptr); + set_device(curr_dev).expect("Need to be able to restore device after freeing"); + } +} + +/// # Safety +/// Requires *src* to point to valid memory +pub fn memcpy_h_to_d( + dst: &DevicePointer, + dev_offset: isize, + src: *const c_void, + size_bytes: usize, +) -> DandelionResult<()> { + cuda_checked_call!(cudaMemcpy( + dst.ptr.byte_offset(dev_offset), + src, + size_bytes, + 1 + )); + Ok(()) +} + +/// # Safety +/// Requires *dst* to point to valid memory +pub fn memcpy_d_to_h( + dst: *const c_void, + src: &DevicePointer, + size_bytes: usize, +) -> DandelionResult<()> { + cuda_checked_call!(cudaMemcpy(dst, src.ptr, size_bytes, 2)); + Ok(()) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs new file mode 100644 index 00000000..5d1e12bc --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs @@ -0,0 +1,153 @@ +use std::sync::{Arc, Mutex}; + +use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; + +use crate::{ + function_driver::{ + compute_driver::{ + compute_driver_tests::compute_driver_tests::{ + engine_minimal, get_expected_mat, prepare_engine_and_function, + }, + gpu::{GpuProcessDriver, GpuThreadDriver}, + }, + ComputeResource, Driver, WorkToDo, + }, + memory_domain::{gpu::GpuMemoryDomain, ContextTrait, MemoryResource}, + DataItem, DataSet, Position, +}; + +// To force tests to run sequentially as we might otherwise run out of GPU memory +lazy_static::lazy_static! { + static ref GPU_LOCK: Mutex<()> = Mutex::new(()); +} + +fn get_driver() -> Box { + #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] + panic!("gpu_process and gpu_thread enabled simultaneously"); + + #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] + panic!("Neither gpu_process nor gpu_thread enabled"); + + #[cfg(feature = "gpu_process")] + return Box::new(GpuProcessDriver {}); + + #[cfg(feature = "gpu_thread")] + return Box::new(GpuThreadDriver {}); +} + +#[test] +fn minimal() { + let lock = GPU_LOCK.lock().unwrap(); + let driver: Box = get_driver(); + engine_minimal::( + &format!( + "{}/tests/data/test_gpu_cuda_minimal.json", + env!("CARGO_MANIFEST_DIR") + ), + MemoryResource::Shared { id: 0, size: (1<<30) }, + driver, + vec![ComputeResource::GPU(7, 1, 2)], + ); + drop(lock); +} + +#[test] +fn minimal_matmul() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_cuda_matmul.json", + env!("CARGO_MANIFEST_DIR") + ); + let dom_init = MemoryResource::Shared { id: 0, size: (1<<30) }; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + + let n = [4 as i32; 1]; + let a_size: usize = 4 * 4 * (32 / 8); + let b_size = 4 * 4 * (32 / 8); + let c_size = 4 * 4 * (32 / 8); + + let mut a_slice: Vec = vec![0.0; 4 * 4]; + let mut b_slice: Vec = vec![0.0; 4 * 4]; + for i in 0..16 { + a_slice[i] = i as f32; + b_slice[i] = (i as f32) * 2.0; + } + + let a_offset = function_context + .get_free_space_and_write_slice(&a_slice) + .expect("Should have space"); + let b_offset = function_context + .get_free_space_and_write_slice(&b_slice) + .expect("Should have space"); + + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_size, + }, + key: 0, + }], + })); + function_context.content.push(Some(DataSet { + ident: "B".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: b_offset as usize, + size: b_size, + }, + key: 0, + }], + })); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("C")]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + assert_eq!(c_size, position.size, "Checking for size of output"); + let mut read_buffer = vec![0f32; position.size / (32 / 8)]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + let expected = vec![ + 112f32, 124f32, 136f32, 148f32, + 304f32, 348f32, 392f32, 436f32, + 496f32, 572f32, 648f32, 724f32, + 688f32, 796f32, 904f32, 1012f32, + ]; + for (should, is) in expected.iter().zip(read_buffer.iter()) { + assert_eq!(should, is, "Checking final result"); + } + drop(lock); +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs new file mode 100644 index 00000000..344145c9 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs @@ -0,0 +1,27 @@ +#[cfg(feature = "hip")] +pub mod gpu_api { + include!("hip.rs"); +} + +#[cfg(feature = "cuda")] +pub mod gpu_api { + include!("cuda.rs"); +} + +pub use gpu_api::{ + initialize, + limit_heap_size, + create_context, + get_device_count, + set_device, + module_load_data, + module_launch_kernel, + module_get_function, + memcpy_h_to_d, + memcpy_d_to_h, + Function, + Module, + DeviceAllocation, + DevicePointer, + DEFAULT_STREAM +}; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 1808112e..a44c3d7b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -22,10 +22,12 @@ use std::{ thread::spawn, }; -use self::super::hip; use super::buffer_pool::BufferPool; -use super::{config_parsing::Sizing, hip::DevicePointer}; +use super::{ + config_parsing::Sizing, + gpu_api::{self, DevicePointer}, +}; pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context @@ -71,7 +73,7 @@ pub unsafe fn copy_data_to_device( let length = item.data.size; let offset = item.data.offset; let src = base.byte_offset((offset) as isize) as *const c_void; - hip::memcpy_h_to_d(dev_ptr, total, src, length)?; + gpu_api::memcpy_h_to_d(dev_ptr, total, src, length)?; total += length as isize; } Ok(()) @@ -129,7 +131,7 @@ pub unsafe fn write_gpu_outputs( let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; - hip::memcpy_d_to_h(dst, &dev_ptr, *size)?; + gpu_api::memcpy_d_to_h(dst, &dev_ptr, *size)?; output_buffers.push(IoBufferDescriptor { ident: ptr_t!(0), @@ -257,7 +259,7 @@ pub struct SendContext { pub occupation: Vec, } -impl TryFrom for Context { +/*impl TryFrom for Context { type Error = DandelionError; fn try_from(value: SendContext) -> Result { @@ -274,7 +276,7 @@ impl TryFrom for Context { occupation: value.occupation, }) } -} +}*/ impl TryFrom<&Context> for SendContext { type Error = DandelionError; @@ -332,17 +334,17 @@ fn manage_worker( mut recorder, } => { if let Err(err) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(err))); + debt.fulfill(Err(err)); continue; } // transform relevant data into serialisable counterparts let FunctionConfig::GpuConfig(config) = config else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + debt.fulfill(Err(DandelionError::ConfigMissmatch)); return; }; let Ok(send_context) = (&context).try_into() else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + debt.fulfill(Err(DandelionError::ConfigMissmatch)); return; }; @@ -357,7 +359,7 @@ fn manage_worker( task += "\n"; if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); + debt.fulfill(Err(e)); return; } @@ -379,16 +381,15 @@ fn manage_worker( } if let Err(e) = recorder.record(RecordPoint::EngineEnd) { - debt.fulfill(Box::new(Err(e))); + debt.fulfill(Err(e)); break; } else if line.trim().starts_with("__ERROR__") { error!("GPU error: {}", line); - debt.fulfill(Box::new(Err(DandelionError::EngineError))); + debt.fulfill(Err(DandelionError::EngineError)); break; } else { read_output_structs::(&mut context, 0).unwrap(); - let results = Box::new(Ok(WorkDone::Context(context))); - debt.fulfill(results); + debt.fulfill(Ok(WorkDone::Context(context))); break; } } @@ -407,13 +408,13 @@ fn manage_worker( match recorder.record(RecordPoint::TransferStart) { Ok(()) => (), Err(err) => { - debt.fulfill(Box::new(Err(err))); + debt.fulfill(Err(err)); continue; } } let transfer_result = memory_domain::transfer_data_item( &mut destination, - &source, + source, destination_set_index, destination_allignment, destination_item_index, @@ -424,12 +425,12 @@ fn manage_worker( match recorder.record(RecordPoint::TransferEnd) { Ok(()) => (), Err(err) => { - debt.fulfill(Box::new(Err(err))); + debt.fulfill(Err(err)); continue; } } let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); - debt.fulfill(Box::new(transfer_return)); + debt.fulfill(transfer_return); continue; } WorkToDo::ParsingArguments { @@ -439,11 +440,11 @@ fn manage_worker( mut recorder, } => { recorder.record(RecordPoint::ParsingStart).unwrap(); - let function_result = driver.parse_function(path, static_domain); + let function_result = driver.parse_function(path, &static_domain); recorder.record(RecordPoint::ParsingEnd).unwrap(); match function_result { - Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), - Err(err) => debt.fulfill(Box::new(Err(err))), + Ok(function) => debt.fulfill(Ok(WorkDone::Function(function))), + Err(err) => debt.fulfill(Err(err)), } continue; } @@ -454,19 +455,19 @@ fn manage_worker( mut recorder, } => { recorder.record(RecordPoint::LoadStart).unwrap(); - let load_result = function.load(domain, ctx_size); + let load_result = function.load(&domain, ctx_size); recorder.record(RecordPoint::LoadEnd).unwrap(); match load_result { - Ok(context) => debt.fulfill(Box::new(Ok(WorkDone::Context(context)))), - Err(err) => debt.fulfill(Box::new(Err(err))), + Ok(context) => debt.fulfill(Ok(WorkDone::Context(context))), + Err(err) => debt.fulfill(Err(err)), } continue; } WorkToDo::Shutdown() => { // Return original resources that were given to Engine - debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ + debt.fulfill(Ok(WorkDone::Resources(vec![ ComputeResource::GPU(resources.0, resources.1, resources.2), - ])))); + ]))); // Inform other threads to shutdown as well when they are done done.swap(true, Ordering::SeqCst); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 4b2f8c14..0679b7ab 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -11,17 +11,17 @@ type ErrorT = u32; // typedef struct ihipModule_t* hipModule_t type _ModuleT = *const c_void; -pub struct ModuleT(_ModuleT); +pub struct Module(_ModuleT); -unsafe impl Send for ModuleT {} -unsafe impl Sync for ModuleT {} +unsafe impl Send for Module {} +unsafe impl Sync for Module {} // typedef struct iHipModuleSymbol_t* hipFunction_t type _FunctionT = *const c_void; -pub struct FunctionT(_FunctionT); +pub struct Function(_FunctionT); -unsafe impl Send for FunctionT {} -unsafe impl Sync for FunctionT {} +unsafe impl Send for Function {} +unsafe impl Sync for Function {} // typedef struct iHipStream_t* hipStream_t pub type StreamT = *const c_void; @@ -60,13 +60,13 @@ extern "C" { ) -> ErrorT; fn hipModuleLaunchKernel( function: _FunctionT, - gridDimX: u32, - gridDimY: u32, - gridDimZ: u32, - blockDimX: u32, - blockDimY: u32, - blockDimZ: u32, - sharedMemBytes: usize, + grid_dim_x: u32, + grid_dim_y: u32, + grid_dim_z: u32, + block_dim_x: u32, + block_dim_y: u32, + block_dim_z: u32, + shared_mem_bytes: u32, stream: StreamT, kernel_params: *const *const c_void, extra: *const *const c_void, @@ -131,24 +131,24 @@ pub fn limit_heap_size(size: usize) -> DandelionResult<()> { Ok(()) } -pub fn module_load(path: &str) -> DandelionResult { +pub fn module_load(path: &str) -> DandelionResult { let mut ret: _ModuleT = null(); let fname = CString::new(path).or(Err(DandelionError::HipError("Invalid Module Path".into())))?; checked_call!(hipModuleLoad(&mut ret as *mut _ModuleT, fname.as_ptr())); - Ok(ModuleT(ret)) + Ok(Module(ret)) } /// # Safety /// Requires *image* to point to a valid hsaco code object -pub unsafe fn module_load_data(image: *const c_void) -> DandelionResult { +pub unsafe fn module_load_data(image: *const c_void) -> DandelionResult { let mut ret: _ModuleT = null(); checked_call!(hipModuleLoadData(&mut ret as *mut _ModuleT, image)); - Ok(ModuleT(ret)) + Ok(Module(ret)) } -pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult { +pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult { let mut ret: _FunctionT = null(); let kname = CString::new(name).or(Err(DandelionError::HipError("Invalid Name".into())))?; checked_call!(hipModuleGetFunction( @@ -156,14 +156,14 @@ pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult = get_driver(); - let (mut function_context, config, queue) = prepare_engine_and_function::( + let (function_context, config, queue) = prepare_engine_and_function::( &format!( "{}/tests/data/test_gpu_hello_world.json", env!("CARGO_MANIFEST_DIR") diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/compiled_tests.rs similarity index 82% rename from machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs rename to machine_interface/src/function_driver/compute_driver/gpu/hip_tests/compiled_tests.rs index 12d2b783..3d0b41db 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/compiled_tests.rs @@ -1,17 +1,7 @@ -use crate::{ - function_driver::{ - compute_driver::{ - compute_driver_tests::compute_driver_tests::prepare_engine_and_function, - gpu::gpu_tests::{ - get_driver, - load_models::*, - tests_utils::{compare_result, execute_test, get_result, setup_test}, - Archive, ArchiveInit, RecordPoint, GPU_LOCK, - }, - }, - Arc, ComputeResource, Driver, WorkToDo, - }, - memory_domain::{gpu::GpuMemoryDomain, ContextTrait, MemoryResource}, +use crate::function_driver::compute_driver::gpu::hip_tests::{ + load_models::*, + tests_utils::{compare_result, execute_test, get_result, setup_test}, + GPU_LOCK, }; #[test] @@ -29,7 +19,7 @@ fn full_double_matmul() { "{}/tests/data/test_gpu_full_double_matmul.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_double_matmul(function_context); let result_context = execute_test(function_context, config, queue, &output_name); @@ -45,7 +35,7 @@ fn alexnet() { "{}/tests/data/test_gpu_alexnet.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_alexnet(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -60,7 +50,7 @@ fn lenet5() { "{}/tests/data/test_gpu_lenet5.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_lenet5(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -75,7 +65,7 @@ fn resnet18base() { "{}/tests/data/test_gpu_resnet18.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, false); @@ -90,7 +80,7 @@ fn resnet18() { "{}/tests/data/test_gpu_resnet18.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -105,7 +95,7 @@ fn resnet18batch4() { "{}/tests/data/test_gpu_resnet18batch4.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18batch4(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -120,7 +110,7 @@ fn resnet18batch16() { "{}/tests/data/test_gpu_resnet18batch16.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18batch16(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -135,7 +125,7 @@ fn resnet18batch64() { "{}/tests/data/test_gpu_resnet18batch64.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18batch64(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -150,7 +140,7 @@ fn resnet18onnx() { "{}/tests/data/test_gpu_resnet18onnx.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet18onnx(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, false); @@ -165,7 +155,7 @@ fn resnet34() { "{}/tests/data/test_gpu_resnet34.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet34(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -180,7 +170,7 @@ fn resnet50() { "{}/tests/data/test_gpu_resnet50.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet50(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, false); @@ -195,7 +185,7 @@ fn resnet152() { "{}/tests/data/test_gpu_resnet152.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_resnet152(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, true); @@ -210,7 +200,7 @@ fn batch_norm() { "{}/tests/data/test_gpu_batch_norm.json", env!("CARGO_MANIFEST_DIR") ); - let (mut function_context, config, queue) = setup_test(&filename); + let (function_context, config, queue) = setup_test(&filename); let (output_size, output_name, expected, function_context) = load_batch_norm(function_context); let result_context = execute_test(function_context, config, queue, &output_name); let read_buffer = get_result(result_context, output_size, false); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_models.rs similarity index 99% rename from machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs rename to machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_models.rs index 87f65ae5..63e0f504 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_models.rs @@ -1,5 +1,5 @@ use crate::{ - function_driver::compute_driver::gpu::gpu_tests::load_utils::{ + function_driver::compute_driver::gpu::hip_tests::load_utils::{ add_buffer, add_empty_buffer, add_number, read_tensor_from_file, }, memory_domain::Context, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_utils.rs similarity index 88% rename from machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs rename to machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_utils.rs index e05881e5..44ec5e36 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_utils.rs @@ -23,7 +23,7 @@ pub fn read_tensor_from_file(file_path: &str, file_folder: &str) -> io::Result ( + dom_type, + Arc::new(crate::memory_domain::gpu::GpuMemoryDomain::init(resource).unwrap()), + ), #[cfg(feature = "wasm")] DomainType::RWasm => ( dom_type, diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index adfab65a..d8104363 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -1,6 +1,6 @@ use crate::{ memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}, - util::mmapmem::MmapMem, + util::mmapmem::{MmapMem, MmapMemPool}, }; use dandelion_commons::{DandelionError, DandelionResult}; use log::error; @@ -26,23 +26,33 @@ impl ContextTrait for GpuContext { } #[derive(Debug)] -pub struct GpuMemoryDomain {} +pub struct GpuMemoryDomain { + memory_pool: MmapMemPool, +} impl MemoryDomain for GpuMemoryDomain { - fn init(_config: MemoryResource) -> DandelionResult> { - Ok(Box::new(GpuMemoryDomain {})) + fn init(config: MemoryResource) -> DandelionResult> { + let (id, size) = match config { + MemoryResource::Shared { id, size } => (id, size), + _ => { + return Err(DandelionError::DomainError( + dandelion_commons::DomainError::ConfigMissmatch, + )) + } + }; + let memory_pool = + MmapMemPool::create(size, ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, Some(id))?; + Ok(Box::new(GpuMemoryDomain { memory_pool })) } fn acquire_context(&self, size: usize) -> DandelionResult { // create and map a shared memory region - let mem_space = - match MmapMem::create(size, ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, true) { - Ok(v) => v, - Err(_e) => return Err(DandelionError::MemoryAllocationError), - }; + let (mem_space, actual_size) = self + .memory_pool + .get_allocation(size, nix::sys::mman::MmapAdvise::MADV_DONTNEED)?; let new_context = Box::new(GpuContext { storage: mem_space }); - Ok(Context::new(ContextType::Gpu(new_context), size)) + Ok(Context::new(ContextType::Gpu(new_context), actual_size)) } } diff --git a/machine_interface/tests/data/test_gpu_cuda_matmul.json b/machine_interface/tests/data/test_gpu_cuda_matmul.json new file mode 100644 index 00000000..f75860c4 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_cuda_matmul.json @@ -0,0 +1,24 @@ +{ + "modules": [ + { "module_name": "kernelCheck.cubin", "path": "kernelCheck.cubin" } + ], + "kernels": [ + { "module_name": "kernelCheck.cubin", "kernel_name": "matmul" } + ], + "blueprint": { + "inputs": ["A", "B"], + "buffers": {"C": {"Absolute": 64}}, + "outputs": ["C"], + "control_flow": [ + {"ExecKernel": ["matmul", [{"Ptr": "A"}, {"Ptr": "B"}, {"Ptr": "C"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 4}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_cuda_minimal.json b/machine_interface/tests/data/test_gpu_cuda_minimal.json new file mode 100644 index 00000000..569ac795 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_cuda_minimal.json @@ -0,0 +1,25 @@ +{ + "modules": [ + { "module_name": "kernelCheck.cubin", "path": "kernelCheck.cubin" }, + { "module_name": "kernelCheck.ptx", "path": "kernelCheck.ptx" } + ], + "kernels": [ + { "module_name": "kernelCheck.ptx", "kernel_name": "nothing" } + ], + "blueprint": { + "inputs": [], + "buffers": {}, + "outputs": [], + "control_flow": [ + {"ExecKernel": ["nothing", [], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_cuda_test.json b/machine_interface/tests/data/test_gpu_cuda_test.json new file mode 100644 index 00000000..a179f01e --- /dev/null +++ b/machine_interface/tests/data/test_gpu_cuda_test.json @@ -0,0 +1,25 @@ +{ + "modules": [ + { "module_name": "kernelCheck.cubin", "path": "kernelCheck.cubin" }, + { "module_name": "kernelCheck.ptx", "path": "kernelCheck.ptx" } + ], + "kernels": [ + { "module_name": "kernelCheck.cubin", "kernel_name": "self_add" } + ], + "blueprint": { + "inputs": ["A"], + "buffers": {}, + "outputs": ["A"], + "control_flow": [ + {"ExecKernel": ["self_add", [{"Ptr": "A"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/kernelCheck.cubin b/machine_interface/tests/libs/kernelCheck.cubin new file mode 100644 index 0000000000000000000000000000000000000000..636ddcd6aeeb800e2d237d4795c45fdc81d82e1c GIT binary patch literal 5568 zcmeHL&1+*-6hH6frcKjKUfL;4i{f;q9f=@mQN+=WMQBISVMJvR5i;o{ofO(MB$<*F z!4yA0@S}f&s{uE&)Q!j>G7Md~R9BR7if$eqC&IUY&BY?WtRNDvu?5U z#b&iuZd0MQSy-*DY*3+9X}1dNrPliOwLlxi&1$JpDMvL|H)_pRsn(hgloF#^Sz9TV z%H=T1K8?oNrwb#6YKc|bXjNBh*TPUyg+_|1!a#wxTv@(;t+>)CtyiefsH_#@iqd`! zCj?%ltF6_I+CNC7pTY-_&tkpA)23KXLa1w3*r)lM`3>^(fbv{??bXE#v_F-H&vvx7 zqw+Hh5|oXqM6QZ{v`_!B=)FGuEzxKC^goF{*QYJl`3HY$TUm5TZWcCl_r;Y6M z&Qt84P7#*piZe-xsYx=YY~8w)BicI?UP36*aXBi?j=(NviKdJq+_Id5+wLdRCmxuP2?~vs? zWcdzRzC)JpkmWmM`FxwgcXfQum14_xmG3IwRlciyp7;c+GOu-t{G&d;;2#<=*7gMe zZovN9iQ@QjoPpyE9B1H&8F06F1HwjwSA%ann(7SMi08P=XBj6gKI3Bx=~3>hu_gVY+jgGHn`yNB#M|1pVx>odFM-5c?eL{NBU%r8?1%9$gGJxo(1f z^~i0H$(bqhWB!+0e3~pV0drH=_2}HD8KO6d#t{EDuscj|C}#id4#^Qs zQ;%fmMwao2i}T51Vw`rx0rp>jM~%TDBpCh~W2P175$}X+u=B&toB4LfGiF|K751!a zaGb(k=2NEO4&hs?cef|`;rY4rRye_fYkDCvKU{WeWBo2A8u95Z}+Fy{Qu zG*Y8Tg=lv_W&f0w1OE|=1OJf>-ZCZ4yPlJ5j#xSHPg@-Lr#-w)Vhq~#++;It<-k8_ zvHE||Ar}>6rg9mq&&3XiXm&j>Fy6zThYmpr)s z?%{dS`p5IZ>m&8eqSW{8)2Kf}{n_UM^6$-#)B-V;zc+_S`5lNr&e&pi|9jjti=d1NGF+vchh*g zugYm90AkP4-HRrbkY;;4CQOsEDHFXCGsYl2X5-W~T+mhZvD#6Me~%hA@WZztw?6)T z<@44o4Sei_asK<(+{b@iPC=sc)-G#=BR00j;&=T7NBF$Xrpx}(_9ymOJMRDh literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/kernelCheck.ptx b/machine_interface/tests/libs/kernelCheck.ptx new file mode 100644 index 00000000..a4ed98e2 --- /dev/null +++ b/machine_interface/tests/libs/kernelCheck.ptx @@ -0,0 +1,156 @@ +// +// Generated by NVIDIA NVVM Compiler +// +// Compiler Build ID: CL-30672275 +// Cuda compilation tools, release 11.5, V11.5.119 +// Based on NVVM 7.0.1 +// + +.version 7.5 +.target sm_86 +.address_size 64 + + // .globl nothing + +.visible .entry nothing() +{ + + + + ret; + +} + // .globl self_add +.visible .entry self_add( + .param .u64 self_add_param_0 +) +{ + .reg .b32 %r<8>; + .reg .b64 %rd<5>; + + + ld.param.u64 %rd1, [self_add_param_0]; + cvta.to.global.u64 %rd2, %rd1; + mov.u32 %r1, %ctaid.x; + mov.u32 %r2, %ntid.x; + mov.u32 %r3, %tid.x; + mad.lo.s32 %r4, %r1, %r2, %r3; + mul.wide.s32 %rd3, %r4, 4; + add.s64 %rd4, %rd2, %rd3; + ld.global.u32 %r5, [%rd4]; + shl.b32 %r6, %r5, 1; + add.s32 %r7, %r6, %r4; + st.global.u32 [%rd4], %r7; + ret; + +} + // .globl matmul +.visible .entry matmul( + .param .u64 matmul_param_0, + .param .u64 matmul_param_1, + .param .u64 matmul_param_2, + .param .u32 matmul_param_3 +) +{ + .reg .pred %p<9>; + .reg .b32 %r<60>; + .reg .b64 %rd<34>; + + + ld.param.u64 %rd18, [matmul_param_0]; + ld.param.u64 %rd19, [matmul_param_1]; + ld.param.u64 %rd17, [matmul_param_2]; + ld.param.u32 %r20, [matmul_param_3]; + cvta.to.global.u64 %rd1, %rd19; + cvta.to.global.u64 %rd2, %rd18; + mov.u32 %r21, %ntid.y; + mov.u32 %r22, %ctaid.y; + mov.u32 %r23, %tid.y; + mad.lo.s32 %r1, %r22, %r21, %r23; + mov.u32 %r24, %ntid.x; + mov.u32 %r25, %ctaid.x; + mov.u32 %r26, %tid.x; + mad.lo.s32 %r2, %r25, %r24, %r26; + setp.ge.s32 %p1, %r1, %r20; + setp.ge.s32 %p2, %r2, %r20; + or.pred %p3, %p1, %p2; + @%p3 bra $L__BB2_9; + + setp.lt.s32 %p4, %r20, 1; + mov.u32 %r59, 0; + mul.lo.s32 %r3, %r1, %r20; + @%p4 bra $L__BB2_8; + + add.s32 %r31, %r20, -1; + and.b32 %r58, %r20, 3; + setp.lt.u32 %p5, %r31, 3; + mov.u32 %r55, 0; + mov.u32 %r59, %r55; + @%p5 bra $L__BB2_5; + + sub.s32 %r53, %r20, %r58; + mul.wide.s32 %rd20, %r2, 4; + add.s64 %rd31, %rd1, %rd20; + add.s32 %r34, %r3, 2; + mul.wide.s32 %rd21, %r34, 4; + add.s64 %rd30, %rd2, %rd21; + mul.wide.s32 %rd5, %r20, 4; + +$L__BB2_4: + ld.global.u32 %r35, [%rd31]; + ld.global.u32 %r36, [%rd30+-8]; + mad.lo.s32 %r37, %r35, %r36, %r59; + add.s64 %rd22, %rd31, %rd5; + ld.global.u32 %r38, [%rd22]; + ld.global.u32 %r39, [%rd30+-4]; + mad.lo.s32 %r40, %r38, %r39, %r37; + add.s64 %rd23, %rd22, %rd5; + ld.global.u32 %r41, [%rd23]; + ld.global.u32 %r42, [%rd30]; + mad.lo.s32 %r43, %r41, %r42, %r40; + add.s64 %rd24, %rd23, %rd5; + add.s64 %rd31, %rd24, %rd5; + ld.global.u32 %r44, [%rd24]; + ld.global.u32 %r45, [%rd30+4]; + mad.lo.s32 %r59, %r44, %r45, %r43; + add.s32 %r55, %r55, 4; + add.s64 %rd30, %rd30, 16; + add.s32 %r53, %r53, -4; + setp.ne.s32 %p6, %r53, 0; + @%p6 bra $L__BB2_4; + +$L__BB2_5: + setp.eq.s32 %p7, %r58, 0; + @%p7 bra $L__BB2_8; + + mad.lo.s32 %r46, %r55, %r20, %r2; + mul.wide.s32 %rd25, %r46, 4; + add.s64 %rd33, %rd1, %rd25; + mul.wide.s32 %rd11, %r20, 4; + add.s32 %r47, %r55, %r3; + mul.wide.s32 %rd26, %r47, 4; + add.s64 %rd32, %rd2, %rd26; + +$L__BB2_7: + .pragma "nounroll"; + ld.global.u32 %r48, [%rd33]; + ld.global.u32 %r49, [%rd32]; + mad.lo.s32 %r59, %r48, %r49, %r59; + add.s64 %rd33, %rd33, %rd11; + add.s64 %rd32, %rd32, 4; + add.s32 %r58, %r58, -1; + setp.ne.s32 %p8, %r58, 0; + @%p8 bra $L__BB2_7; + +$L__BB2_8: + cvta.to.global.u64 %rd27, %rd17; + add.s32 %r50, %r3, %r2; + mul.wide.s32 %rd28, %r50, 4; + add.s64 %rd29, %rd27, %rd28; + st.global.u32 [%rd29], %r59; + +$L__BB2_9: + ret; + +} + diff --git a/server/Cargo.toml b/server/Cargo.toml index 6238938f..8934e828 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -42,5 +42,7 @@ wasm = ["machine_interface/wasm"] reqwest_io = ["machine_interface/reqwest_io"] timestamp = ["dispatcher/timestamp"] gpu = [] +hip = ["gpu"] +cuda = ["gpu"] gpu_thread = ["machine_interface/gpu_thread", "gpu"] gpu_process = ["machine_interface/gpu_process", "gpu"] From d81b1e053d31a4f475ff61530c9880421623c26e Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Fri, 28 Feb 2025 15:11:50 +0100 Subject: [PATCH 148/176] fix: reflect cuda changes to hip --- .../function_driver/compute_driver/gpu/cuda.rs | 2 +- .../function_driver/compute_driver/gpu/gpu_api.rs | 15 +++++---------- .../src/function_driver/compute_driver/gpu/hip.rs | 14 +++++++------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs index 32e7c855..1898c931 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs @@ -1,4 +1,4 @@ -/// Rust bindings for a subset of the CUDA Device API +//! Rust bindings for a subset of the CUDA Device API use dandelion_commons::{DandelionError, DandelionResult}; use libc::{c_void, size_t}; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs index 344145c9..25e7726c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs @@ -1,17 +1,12 @@ -#[cfg(feature = "hip")] -pub mod gpu_api { - include!("hip.rs"); -} +#[cfg(all(feature = "hip", feature = "cuda"))] +compile_error!("Cannot compile with both the hip and cuda features"); -#[cfg(feature = "cuda")] -pub mod gpu_api { - include!("cuda.rs"); -} +#[cfg_attr(feature = "hip", path = "hip.rs")] +#[cfg_attr(feature = "cuda", path = "cuda.rs")] +pub mod gpu_api; pub use gpu_api::{ - initialize, limit_heap_size, - create_context, get_device_count, set_device, module_load_data, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 0679b7ab..54f62589 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -141,14 +141,14 @@ pub fn module_load(path: &str) -> DandelionResult { /// # Safety /// Requires *image* to point to a valid hsaco code object -pub unsafe fn module_load_data(image: *const c_void) -> DandelionResult { +pub fn module_load_data(image: *const c_void) -> DandelionResult { let mut ret: _ModuleT = null(); checked_call!(hipModuleLoadData(&mut ret as *mut _ModuleT, image)); Ok(Module(ret)) } -pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult { +pub fn module_get_function(module: &Module, name: &str) -> DandelionResult { let mut ret: _FunctionT = null(); let kname = CString::new(name).or(Err(DandelionError::HipError("Invalid Name".into())))?; checked_call!(hipModuleGetFunction( @@ -162,7 +162,7 @@ pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult Date: Thu, 13 Mar 2025 15:10:26 +0100 Subject: [PATCH 149/176] TVM compiled models and Rust tests added for CUDA --- .../compute_driver/compute_driver_tests.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 7 +- .../compute_driver/gpu/cuda.rs | 8 + .../compute_driver/gpu/gpu_api.rs | 1 + .../compute_driver/gpu/gpu_tests.rs | 34 + .../gpu/{ => gpu_tests}/cuda_tests.rs | 46 +- .../gpu_tests/cuda_tests/compiled_tests.rs | 80 + .../gpu/gpu_tests/cuda_tests/load_models.rs | 621 + .../gpu/{ => gpu_tests}/hip_tests.rs | 41 +- .../hip_tests/compiled_tests.rs | 39 +- .../{ => gpu_tests}/hip_tests/load_models.rs | 2 +- .../{hip_tests => gpu_tests}/load_utils.rs | 0 .../{hip_tests => gpu_tests}/tests_utils.rs | 21 +- .../data/cuda/test_gpu_double_matmul.json | 32 + .../tests/data/cuda/test_gpu_lstm.json | 11222 ++++++++++++++++ .../test_gpu_matmul.json} | 0 .../test_gpu_minimal.json} | 0 .../tests/data/cuda/test_gpu_resnet18.json | 497 + .../tests/data/cuda/test_gpu_rnn.json | 5144 +++++++ .../tests/data/cuda/test_gpu_simple.json | 22 + .../test_gpu_test.json} | 0 .../tests/data/cuda/test_gpu_vit_b_16.json | 3136 +++++ .../data/{ => hip}/test_gpu_alexnet.json | 22 +- .../data/{ => hip}/test_gpu_basic_io.json | 0 .../data/{ => hip}/test_gpu_batch_norm.json | 8 +- .../{ => hip}/test_gpu_double_matmul.json | 4 +- .../test_gpu_first_double_matmul.json | 2 +- .../test_gpu_full_double_matmul.json | 4 +- .../data/{ => hip}/test_gpu_hello_world.json | 0 .../data/{ => hip}/test_gpu_inference.json | 0 .../{ => hip}/test_gpu_inference_batched.json | 0 .../tests/data/{ => hip}/test_gpu_lenet5.json | 16 +- .../data/{ => hip}/test_gpu_matmul_loop.json | 0 .../data/{ => hip}/test_gpu_matmul_para.json | 0 .../data/{ => hip}/test_gpu_minimal.json | 0 .../data/{ => hip}/test_gpu_resnet152.json | 62 +- .../data/{ => hip}/test_gpu_resnet18.json | 42 +- .../{ => hip}/test_gpu_resnet18batch16.json | 46 +- .../{ => hip}/test_gpu_resnet18batch2.json | 44 +- .../{ => hip}/test_gpu_resnet18batch32.json | 48 +- .../{ => hip}/test_gpu_resnet18batch4.json | 42 +- .../{ => hip}/test_gpu_resnet18batch64.json | 50 +- .../{ => hip}/test_gpu_resnet18batch8.json | 46 +- .../data/{ => hip}/test_gpu_resnet18onnx.json | 42 +- .../data/{ => hip}/test_gpu_resnet34.json | 44 +- .../{ => hip}/test_gpu_resnet34batch16.json | 50 +- .../{ => hip}/test_gpu_resnet34batch2.json | 44 +- .../{ => hip}/test_gpu_resnet34batch4.json | 46 +- .../{ => hip}/test_gpu_resnet34batch8.json | 48 +- .../data/{ => hip}/test_gpu_resnet50.json | 62 +- .../tests/libs/cuda/double_matmul.cubin | Bin 0 -> 6144 bytes machine_interface/tests/libs/cuda/lstm.cubin | Bin 0 -> 272992 bytes .../tests/libs/cuda/resnet18.cubin | Bin 0 -> 205184 bytes machine_interface/tests/libs/cuda/rnn.cubin | Bin 0 -> 220352 bytes .../tests/libs/cuda/simple.cubin | Bin 0 -> 3872 bytes .../tests/libs/cuda/vit_b_16.cubin | Bin 0 -> 116032 bytes ..._avg_pool2d_conv2d_max_pool2d_relu_7.hsaco | Bin .../poi_fused_conv2d_max_pool2d_relu_1.hsaco | Bin .../poi_fused_conv2d_max_pool2d_relu_3.hsaco | Bin .../alexnet/tem_fused_conv2d_relu_0.hsaco | Bin .../alexnet/tem_fused_conv2d_relu_2.hsaco | Bin .../alexnet/tem_fused_conv2d_relu_4.hsaco | Bin .../alexnet/tem_fused_conv2d_relu_5.hsaco | Bin .../alexnet/tem_fused_conv2d_relu_6.hsaco | Bin .../alexnet/tem_fused_linear_relu_10.hsaco | Bin .../{ => hip}/alexnet/tem_fused_relu_8.hsaco | Bin .../{ => hip}/alexnet/tem_fused_relu_9.hsaco | Bin .../{ => hip}/batch_norm/poi_fused_2.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin .../batch_norm/tem_fused_linear_3.hsaco | Bin .../double_matmul/tem_fused_linear_0.hsaco | Bin .../double_matmul/tem_fused_linear_1.hsaco | Bin .../{ => hip}/lenet5/poi_fused_conv2d_0.hsaco | Bin .../poi_fused_conv2d_max_pool2d_relu_2.hsaco | Bin .../poi_fused_conv2d_max_pool2d_relu_4.hsaco | Bin .../tem_fused_conv2d_max_pool2d_relu_3.hsaco | Bin .../lenet5/tem_fused_conv2d_relu_1.hsaco | Bin .../lenet5/tem_fused_linear_relu_7.hsaco | Bin .../{ => hip}/lenet5/tem_fused_relu_5.hsaco | Bin .../{ => hip}/lenet5/tem_fused_relu_6.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_29.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_25.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_28.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_17.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_22.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_26.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_21.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet152/tem_fused_conv2d_24.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_20.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_23.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_27.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin .../resnet152/tem_fused_linear_30.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_19.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet18/tem_fused_conv2d_16.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin .../resnet18/tem_fused_linear_20.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_22.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin .../resnet18batch/tem_fused_conv2d_0.hsaco | Bin .../resnet18batch/tem_fused_conv2d_17.hsaco | Bin .../resnet18batch/tem_fused_conv2d_20.hsaco | Bin .../resnet18batch/tem_fused_conv2d_8.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet18batch/tem_fused_linear_23.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_21.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin .../resnet18batch16/tem_fused_conv2d_0.hsaco | Bin .../resnet18batch16/tem_fused_conv2d_12.hsaco | Bin .../resnet18batch16/tem_fused_conv2d_17.hsaco | Bin .../resnet18batch16/tem_fused_conv2d_3.hsaco | Bin .../resnet18batch16/tem_fused_conv2d_8.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet18batch16/tem_fused_linear_22.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_14.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_18.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_7.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin .../resnet18batch2/tem_fused_conv2d_17.hsaco | Bin .../resnet18batch2/tem_fused_conv2d_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet18batch2/tem_fused_linear_21.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_22.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_10.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_15.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin .../resnet18batch32/tem_fused_conv2d_0.hsaco | Bin .../resnet18batch32/tem_fused_conv2d_14.hsaco | Bin .../resnet18batch32/tem_fused_conv2d_3.hsaco | Bin .../resnet18batch32/tem_fused_conv2d_6.hsaco | Bin .../resnet18batch32/tem_fused_conv2d_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_21.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet18batch32/tem_fused_linear_23.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_19.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_14.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_17.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_9.hsaco | Bin .../resnet18batch4/tem_fused_conv2d_0.hsaco | Bin .../resnet18batch4/tem_fused_conv2d_6.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet18batch4/tem_fused_linear_20.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_23.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_10.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_0.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_12.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_15.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_20.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_3.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_6.hsaco | Bin .../resnet18batch64/tem_fused_conv2d_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_22.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet18batch64/tem_fused_linear_24.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_21.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin .../resnet18batch8/tem_fused_conv2d_0.hsaco | Bin .../resnet18batch8/tem_fused_conv2d_17.hsaco | Bin .../resnet18batch8/tem_fused_conv2d_8.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet18batch8/tem_fused_linear_22.hsaco | Bin .../per_fused_add_conv2d_mean_relu_19.hsaco | Bin .../poi_fused_add_conv2d_relu_13.hsaco | Bin .../poi_fused_add_conv2d_relu_17.hsaco | Bin .../poi_fused_conv2d_max_pool2d_relu_1.hsaco | Bin .../tem_fused_add_conv2d_relu_11.hsaco | Bin .../tem_fused_add_conv2d_relu_3.hsaco | Bin .../tem_fused_add_conv2d_relu_6.hsaco | Bin .../tem_fused_add_conv2d_relu_8.hsaco | Bin .../resnet18onnx/tem_fused_conv2d_16.hsaco | Bin .../tem_fused_conv2d_relu_0.hsaco | Bin .../tem_fused_conv2d_relu_10.hsaco | Bin .../tem_fused_conv2d_relu_12.hsaco | Bin .../tem_fused_conv2d_relu_14.hsaco | Bin .../tem_fused_conv2d_relu_15.hsaco | Bin .../tem_fused_conv2d_relu_18.hsaco | Bin .../tem_fused_conv2d_relu_2.hsaco | Bin .../tem_fused_conv2d_relu_4.hsaco | Bin .../tem_fused_conv2d_relu_5.hsaco | Bin .../tem_fused_conv2d_relu_7.hsaco | Bin .../tem_fused_conv2d_relu_9.hsaco | Bin .../resnet18onnx/tem_fused_linear_20.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_19.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet34/tem_fused_conv2d_16.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin .../resnet34/tem_fused_linear_21.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_23.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_22.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin .../resnet34batch16/tem_fused_conv2d_0.hsaco | Bin .../resnet34batch16/tem_fused_conv2d_17.hsaco | Bin .../resnet34batch16/tem_fused_conv2d_20.hsaco | Bin .../resnet34batch16/tem_fused_conv2d_3.hsaco | Bin .../resnet34batch16/tem_fused_conv2d_8.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet34batch16/tem_fused_linear_24.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_20.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_14.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_19.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_7.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_17.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin .../resnet34batch2/tem_fused_conv2d_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet34batch2/tem_fused_linear_21.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_21.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_15.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_20.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_9.hsaco | Bin .../resnet34batch4/tem_fused_conv2d_0.hsaco | Bin .../resnet34batch4/tem_fused_conv2d_12.hsaco | Bin .../resnet34batch4/tem_fused_conv2d_6.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_17.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin .../resnet34batch4/tem_fused_linear_22.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_22.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_11.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_16.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_21.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_5.hsaco | Bin ...i_fused_add_miopen_batch_norm_relu_9.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_2.hsaco | Bin .../poi_fused_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_20.hsaco | Bin .../resnet34batch8/tem_fused_conv2d_0.hsaco | Bin .../resnet34batch8/tem_fused_conv2d_17.hsaco | Bin .../resnet34batch8/tem_fused_conv2d_8.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet34batch8/tem_fused_linear_23.hsaco | Bin ...pool2d_add_miopen_batch_norm_relu_29.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_25.hsaco | Bin ..._fused_add_miopen_batch_norm_relu_28.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_17.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_22.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_26.hsaco | Bin ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_14.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_19.hsaco | Bin ...add_conv2d_miopen_batch_norm_relu_21.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_5.hsaco | Bin ..._add_conv2d_miopen_batch_norm_relu_7.hsaco | Bin .../resnet50/tem_fused_conv2d_10.hsaco | Bin .../resnet50/tem_fused_conv2d_24.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_13.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_16.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_20.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_23.hsaco | Bin ...sed_conv2d_miopen_batch_norm_relu_27.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_3.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_6.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_8.hsaco | Bin ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin .../resnet50/tem_fused_linear_30.hsaco | Bin server/tests/server_tests.rs | 4 +- 464 files changed, 21249 insertions(+), 482 deletions(-) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs rename machine_interface/src/function_driver/compute_driver/gpu/{ => gpu_tests}/cuda_tests.rs (76%) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs rename machine_interface/src/function_driver/compute_driver/gpu/{ => gpu_tests}/hip_tests.rs (94%) rename machine_interface/src/function_driver/compute_driver/gpu/{ => gpu_tests}/hip_tests/compiled_tests.rs (87%) rename machine_interface/src/function_driver/compute_driver/gpu/{ => gpu_tests}/hip_tests/load_models.rs (99%) rename machine_interface/src/function_driver/compute_driver/gpu/{hip_tests => gpu_tests}/load_utils.rs (100%) rename machine_interface/src/function_driver/compute_driver/gpu/{hip_tests => gpu_tests}/tests_utils.rs (84%) create mode 100644 machine_interface/tests/data/cuda/test_gpu_double_matmul.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_lstm.json rename machine_interface/tests/data/{test_gpu_cuda_matmul.json => cuda/test_gpu_matmul.json} (100%) rename machine_interface/tests/data/{test_gpu_cuda_minimal.json => cuda/test_gpu_minimal.json} (100%) create mode 100644 machine_interface/tests/data/cuda/test_gpu_resnet18.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_rnn.json create mode 100644 machine_interface/tests/data/cuda/test_gpu_simple.json rename machine_interface/tests/data/{test_gpu_cuda_test.json => cuda/test_gpu_test.json} (100%) create mode 100644 machine_interface/tests/data/cuda/test_gpu_vit_b_16.json rename machine_interface/tests/data/{ => hip}/test_gpu_alexnet.json (91%) rename machine_interface/tests/data/{ => hip}/test_gpu_basic_io.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_batch_norm.json (87%) rename machine_interface/tests/data/{ => hip}/test_gpu_double_matmul.json (86%) rename machine_interface/tests/data/{ => hip}/test_gpu_first_double_matmul.json (87%) rename machine_interface/tests/data/{ => hip}/test_gpu_full_double_matmul.json (86%) rename machine_interface/tests/data/{ => hip}/test_gpu_hello_world.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_inference.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_inference_batched.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_lenet5.json (90%) rename machine_interface/tests/data/{ => hip}/test_gpu_matmul_loop.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_matmul_para.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_minimal.json (100%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet152.json (98%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18.json (92%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18batch16.json (92%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18batch2.json (91%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18batch32.json (91%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18batch4.json (91%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18batch64.json (91%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18batch8.json (91%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet18onnx.json (93%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet34.json (95%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet34batch16.json (94%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet34batch2.json (94%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet34batch4.json (94%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet34batch8.json (94%) rename machine_interface/tests/data/{ => hip}/test_gpu_resnet50.json (94%) create mode 100644 machine_interface/tests/libs/cuda/double_matmul.cubin create mode 100644 machine_interface/tests/libs/cuda/lstm.cubin create mode 100644 machine_interface/tests/libs/cuda/resnet18.cubin create mode 100644 machine_interface/tests/libs/cuda/rnn.cubin create mode 100644 machine_interface/tests/libs/cuda/simple.cubin create mode 100644 machine_interface/tests/libs/cuda/vit_b_16.cubin rename machine_interface/tests/libs/{ => hip}/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_conv2d_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_conv2d_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_conv2d_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_conv2d_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_conv2d_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_linear_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/alexnet/tem_fused_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/batch_norm/poi_fused_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/batch_norm/tem_fused_linear_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/double_matmul/tem_fused_linear_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/double_matmul/tem_fused_linear_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/poi_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/tem_fused_conv2d_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/tem_fused_linear_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/tem_fused_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/lenet5/tem_fused_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_24.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet152/tem_fused_linear_30.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18/tem_fused_linear_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch/tem_fused_linear_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch16/tem_fused_linear_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch2/tem_fused_linear_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch32/tem_fused_linear_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch4/tem_fused_linear_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch64/tem_fused_linear_24.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18batch8/tem_fused_linear_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_conv2d_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet18onnx/tem_fused_linear_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34/tem_fused_linear_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch16/tem_fused_linear_24.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch2/tem_fused_linear_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch4/tem_fused_linear_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet34batch8/tem_fused_linear_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_10.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_24.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco (100%) rename machine_interface/tests/libs/{ => hip}/resnet50/tem_fused_linear_30.hsaco (100%) diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 4b0d2cf5..146244d5 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -66,7 +66,7 @@ pub(crate) mod compute_driver_tests { .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function - .load(&domain, 0x1002_0000) + .load(&domain, 0x4002_0000) // TODO : choose a good value for the context size .expect("Should be able to load function"); return (function_context, function.config, queue); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index a291136e..53342392 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -38,12 +38,7 @@ pub mod gpu_utils; mod gpu_api; #[cfg(test)] -#[cfg(feature = "hip")] -mod hip_tests; - -#[cfg(test)] -#[cfg(feature = "cuda")] -mod cuda_tests; +mod gpu_tests; fn execute( actions: &Vec, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs index 1898c931..91e0c86d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/cuda.rs @@ -56,6 +56,8 @@ unsafe extern "C" { fn cudaMemset(dst: *const c_void, value: i32, count: size_t) -> ErrorT; fn cudaFree(ptr: *const c_void) -> ErrorT; fn cudaMemcpy(dst: *const c_void, src: *const c_void, count: size_t, kind: u8) -> ErrorT; + + fn cudaDeviceSynchronize() -> ErrorT; } #[link(name = "cuda")] @@ -353,3 +355,9 @@ pub fn memcpy_d_to_h( cuda_checked_call!(cudaMemcpy(dst, src.ptr, size_bytes, 2)); Ok(()) } + +pub fn synchronize() -> DandelionResult<()> { + // TODO : make synchronization more fine-grained, e.g. on stream level + cuda_checked_call!(cudaDeviceSynchronize()); + Ok(()) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs index 25e7726c..d1cd5705 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs @@ -14,6 +14,7 @@ pub use gpu_api::{ module_get_function, memcpy_h_to_d, memcpy_d_to_h, + synchronize, Function, Module, DeviceAllocation, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs new file mode 100644 index 00000000..00364f8b --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -0,0 +1,34 @@ +#[cfg(feature = "hip")] +mod hip_tests; + +#[cfg(feature = "cuda")] +mod cuda_tests; + +mod load_utils; +mod tests_utils; + +use crate::function_driver::{ + compute_driver::gpu::{GpuProcessDriver, GpuThreadDriver}, + Driver, +}; +use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; +use std::sync::{Arc, Mutex}; + +// To force tests to run sequentially as we might otherwise run out of GPU memory +lazy_static::lazy_static! { + static ref GPU_LOCK: Mutex<()> = Mutex::new(()); +} + +fn get_driver() -> Box { + #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] + panic!("gpu_process and gpu_thread enabled simultaneously"); + + #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] + panic!("Neither gpu_process nor gpu_thread enabled"); + + #[cfg(feature = "gpu_process")] + return Box::new(GpuProcessDriver {}); + + #[cfg(feature = "gpu_thread")] + return Box::new(GpuThreadDriver {}); +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs similarity index 76% rename from machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs index 5d1e12bc..e11f257f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/cuda_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests.rs @@ -1,6 +1,5 @@ -use std::sync::{Arc, Mutex}; - -use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; +mod compiled_tests; +mod load_models; use crate::{ function_driver::{ @@ -8,7 +7,7 @@ use crate::{ compute_driver_tests::compute_driver_tests::{ engine_minimal, get_expected_mat, prepare_engine_and_function, }, - gpu::{GpuProcessDriver, GpuThreadDriver}, + gpu::gpu_tests::{get_driver, Arc, Archive, ArchiveInit, RecordPoint, GPU_LOCK}, }, ComputeResource, Driver, WorkToDo, }, @@ -16,35 +15,19 @@ use crate::{ DataItem, DataSet, Position, }; -// To force tests to run sequentially as we might otherwise run out of GPU memory -lazy_static::lazy_static! { - static ref GPU_LOCK: Mutex<()> = Mutex::new(()); -} - -fn get_driver() -> Box { - #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] - panic!("gpu_process and gpu_thread enabled simultaneously"); - - #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] - panic!("Neither gpu_process nor gpu_thread enabled"); - - #[cfg(feature = "gpu_process")] - return Box::new(GpuProcessDriver {}); - - #[cfg(feature = "gpu_thread")] - return Box::new(GpuThreadDriver {}); -} - #[test] fn minimal() { let lock = GPU_LOCK.lock().unwrap(); let driver: Box = get_driver(); engine_minimal::( &format!( - "{}/tests/data/test_gpu_cuda_minimal.json", + "{}/tests/data/cuda/test_gpu_minimal.json", env!("CARGO_MANIFEST_DIR") ), - MemoryResource::Shared { id: 0, size: (1<<30) }, + MemoryResource::Shared { + id: 0, + size: (1 << 30), + }, driver, vec![ComputeResource::GPU(7, 1, 2)], ); @@ -55,10 +38,13 @@ fn minimal() { fn minimal_matmul() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_cuda_matmul.json", + "{}/tests/data/cuda/test_gpu_matmul.json", env!("CARGO_MANIFEST_DIR") ); - let dom_init = MemoryResource::Shared { id: 0, size: (1<<30) }; + let dom_init = MemoryResource::Shared { + id: 0, + size: (1 << 30), + }; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; let (mut function_context, config, queue) = @@ -141,10 +127,8 @@ fn minimal_matmul() { .read(position.offset, &mut read_buffer) .expect("Should succeed in reading"); let expected = vec![ - 112f32, 124f32, 136f32, 148f32, - 304f32, 348f32, 392f32, 436f32, - 496f32, 572f32, 648f32, 724f32, - 688f32, 796f32, 904f32, 1012f32, + 112f32, 124f32, 136f32, 148f32, 304f32, 348f32, 392f32, 436f32, 496f32, 572f32, 648f32, + 724f32, 688f32, 796f32, 904f32, 1012f32, ]; for (should, is) in expected.iter().zip(read_buffer.iter()) { assert_eq!(should, is, "Checking final result"); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs new file mode 100644 index 00000000..976302ce --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/compiled_tests.rs @@ -0,0 +1,80 @@ +use crate::{ + function_driver::compute_driver::gpu::gpu_tests::{ + cuda_tests::load_models::*, + get_driver, + tests_utils::{compare_result, execute_test, get_result, setup_test}, + GPU_LOCK, + }, + memory_domain::Context, +}; +use std::{collections::HashMap, sync::Arc}; + +#[test] +fn test_all() { + test_model("simple", true); + test_model("double_matmul", true); + test_model("resnet18", true); + test_model("rnn", true); + test_model("lstm", true); + test_model("vit_b_16", true); +} + +fn get_function(model_name: &str) -> Option (usize, String, Vec, Context)> { + let mut methods: HashMap<_, fn(Context) -> (usize, String, Vec, Context)> = HashMap::new(); + + methods.insert("simple", load_simple); + methods.insert("double_matmul", load_double_matmul); + methods.insert("resnet18", load_resnet18); + methods.insert("rnn", load_rnn); + methods.insert("lstm", load_lstm); + methods.insert("vit_b_16", load_vit_b_16); + + methods.get(model_name).copied() +} + +fn test_model(model_name: &str, asserts: bool) { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/cuda/test_gpu_{}.json", + env!("CARGO_MANIFEST_DIR"), + model_name + ); + let (function_context, config, queue) = setup_test(&filename); + let load_function = get_function(model_name) + .unwrap_or_else(|| panic!("Model name \"{model_name}\" not recognized. Add it to the methods hash map.")); + let (output_size, output_name, expected, function_context) = load_function(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size, asserts); + compare_result(expected, read_buffer, asserts); + drop(lock); +} + +#[test] +fn simple() { + test_model("simple", true); +} + +#[test] +fn double_matmul() { + test_model("double_matmul", true); +} + +#[test] +fn resnet18() { + test_model("resnet18", true); +} + +#[test] +fn rnn() { + test_model("rnn", true); +} + +#[test] +fn lstm() { + test_model("lstm", true); +} + +#[test] +fn vit_b_16() { + test_model("vit_b_16", true); +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs new file mode 100644 index 00000000..0640c3c9 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -0,0 +1,621 @@ +use crate::{ + function_driver::compute_driver::gpu::gpu_tests::load_utils::{ + add_buffer, add_empty_buffer, add_number, read_tensor_from_file, + }, + memory_domain::Context, +}; + +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/rnn/"; + + add_buffer("input", 3136, params_path, &mut function_context); + add_buffer("p0", 14336, params_path, &mut function_context); + add_buffer("p1", 512, params_path, &mut function_context); + add_buffer("p2", 512, params_path, &mut function_context); + add_buffer("p3", 65536, params_path, &mut function_context); + add_buffer("p4", 512, params_path, &mut function_context); + add_buffer("p5", 65536, params_path, &mut function_context); + add_buffer("p6", 512, params_path, &mut function_context); + add_buffer("p7", 512, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 512, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 512, params_path, &mut function_context); + add_buffer("p13", 65536, params_path, &mut function_context); + add_buffer("p14", 512, params_path, &mut function_context); + add_buffer("p15", 65536, params_path, &mut function_context); + add_buffer("p16", 512, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 65536, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 512, params_path, &mut function_context); + add_buffer("p22", 512, params_path, &mut function_context); + add_buffer("p23", 65536, params_path, &mut function_context); + add_buffer("p24", 512, params_path, &mut function_context); + add_buffer("p25", 5120, params_path, &mut function_context); + add_buffer("p26", 40, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 512; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/vit_b_16/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p163", 7077888, params_path, &mut function_context); + add_buffer("p167", 2359296, params_path, &mut function_context); + add_buffer("p171", 9437184, params_path, &mut function_context); + add_buffer("p173", 9437184, params_path, &mut function_context); + add_buffer("p149", 7077888, params_path, &mut function_context); + add_buffer("p153", 2359296, params_path, &mut function_context); + add_buffer("p157", 9437184, params_path, &mut function_context); + add_buffer("p159", 9437184, params_path, &mut function_context); + add_buffer("p135", 7077888, params_path, &mut function_context); + add_buffer("p139", 2359296, params_path, &mut function_context); + add_buffer("p143", 9437184, params_path, &mut function_context); + add_buffer("p145", 9437184, params_path, &mut function_context); + add_buffer("p121", 7077888, params_path, &mut function_context); + add_buffer("p125", 2359296, params_path, &mut function_context); + add_buffer("p129", 9437184, params_path, &mut function_context); + add_buffer("p131", 9437184, params_path, &mut function_context); + add_buffer("p107", 7077888, params_path, &mut function_context); + add_buffer("p111", 2359296, params_path, &mut function_context); + add_buffer("p115", 9437184, params_path, &mut function_context); + add_buffer("p117", 9437184, params_path, &mut function_context); + add_buffer("p93", 7077888, params_path, &mut function_context); + add_buffer("p97", 2359296, params_path, &mut function_context); + add_buffer("p101", 9437184, params_path, &mut function_context); + add_buffer("p103", 9437184, params_path, &mut function_context); + add_buffer("p79", 7077888, params_path, &mut function_context); + add_buffer("p83", 2359296, params_path, &mut function_context); + add_buffer("p87", 9437184, params_path, &mut function_context); + add_buffer("p89", 9437184, params_path, &mut function_context); + add_buffer("p65", 7077888, params_path, &mut function_context); + add_buffer("p69", 2359296, params_path, &mut function_context); + add_buffer("p73", 9437184, params_path, &mut function_context); + add_buffer("p75", 9437184, params_path, &mut function_context); + add_buffer("p51", 7077888, params_path, &mut function_context); + add_buffer("p55", 2359296, params_path, &mut function_context); + add_buffer("p59", 9437184, params_path, &mut function_context); + add_buffer("p61", 9437184, params_path, &mut function_context); + add_buffer("p37", 7077888, params_path, &mut function_context); + add_buffer("p41", 2359296, params_path, &mut function_context); + add_buffer("p45", 9437184, params_path, &mut function_context); + add_buffer("p47", 9437184, params_path, &mut function_context); + add_buffer("p23", 7077888, params_path, &mut function_context); + add_buffer("p27", 2359296, params_path, &mut function_context); + add_buffer("p31", 9437184, params_path, &mut function_context); + add_buffer("p33", 9437184, params_path, &mut function_context); + add_buffer("p1", 3072, params_path, &mut function_context); + add_buffer("p3", 605184, params_path, &mut function_context); + add_buffer("p164", 9216, params_path, &mut function_context); + add_buffer("p168", 3072, params_path, &mut function_context); + add_buffer("p169", 3072, params_path, &mut function_context); + add_buffer("p170", 3072, params_path, &mut function_context); + add_buffer("p172", 12288, params_path, &mut function_context); + add_buffer("p174", 3072, params_path, &mut function_context); + add_buffer("p175", 3072, params_path, &mut function_context); + add_buffer("p176", 3072, params_path, &mut function_context); + add_buffer("p178", 4000, params_path, &mut function_context); + add_buffer("p0", 2359296, params_path, &mut function_context); + add_buffer("p2", 3072, params_path, &mut function_context); + add_buffer("p4", 3072, params_path, &mut function_context); + add_buffer("p5", 3072, params_path, &mut function_context); + add_buffer("p7", 9216, params_path, &mut function_context); + add_buffer("p8", 8, params_path, &mut function_context); + add_buffer("p9", 4, params_path, &mut function_context); + add_buffer("p10", 8, params_path, &mut function_context); + add_buffer("p11", 4, params_path, &mut function_context); + add_buffer("p12", 8, params_path, &mut function_context); + add_buffer("p14", 3072, params_path, &mut function_context); + add_buffer("p15", 3072, params_path, &mut function_context); + add_buffer("p16", 3072, params_path, &mut function_context); + add_buffer("p18", 12288, params_path, &mut function_context); + add_buffer("p20", 3072, params_path, &mut function_context); + add_buffer("p21", 3072, params_path, &mut function_context); + add_buffer("p22", 3072, params_path, &mut function_context); + add_buffer("p24", 9216, params_path, &mut function_context); + add_buffer("p25", 4, params_path, &mut function_context); + add_buffer("p26", 4, params_path, &mut function_context); + add_buffer("p28", 3072, params_path, &mut function_context); + add_buffer("p29", 3072, params_path, &mut function_context); + add_buffer("p30", 3072, params_path, &mut function_context); + add_buffer("p32", 12288, params_path, &mut function_context); + add_buffer("p34", 3072, params_path, &mut function_context); + add_buffer("p35", 3072, params_path, &mut function_context); + add_buffer("p36", 3072, params_path, &mut function_context); + add_buffer("p38", 9216, params_path, &mut function_context); + add_buffer("p39", 4, params_path, &mut function_context); + add_buffer("p40", 4, params_path, &mut function_context); + add_buffer("p42", 3072, params_path, &mut function_context); + add_buffer("p43", 3072, params_path, &mut function_context); + add_buffer("p44", 3072, params_path, &mut function_context); + add_buffer("p46", 12288, params_path, &mut function_context); + add_buffer("p48", 3072, params_path, &mut function_context); + add_buffer("p49", 3072, params_path, &mut function_context); + add_buffer("p50", 3072, params_path, &mut function_context); + add_buffer("p52", 9216, params_path, &mut function_context); + add_buffer("p53", 4, params_path, &mut function_context); + add_buffer("p54", 4, params_path, &mut function_context); + add_buffer("p56", 3072, params_path, &mut function_context); + add_buffer("p57", 3072, params_path, &mut function_context); + add_buffer("p58", 3072, params_path, &mut function_context); + add_buffer("p60", 12288, params_path, &mut function_context); + add_buffer("p62", 3072, params_path, &mut function_context); + add_buffer("p63", 3072, params_path, &mut function_context); + add_buffer("p64", 3072, params_path, &mut function_context); + add_buffer("p66", 9216, params_path, &mut function_context); + add_buffer("p67", 4, params_path, &mut function_context); + add_buffer("p68", 4, params_path, &mut function_context); + add_buffer("p70", 3072, params_path, &mut function_context); + add_buffer("p71", 3072, params_path, &mut function_context); + add_buffer("p72", 3072, params_path, &mut function_context); + add_buffer("p74", 12288, params_path, &mut function_context); + add_buffer("p76", 3072, params_path, &mut function_context); + add_buffer("p77", 3072, params_path, &mut function_context); + add_buffer("p78", 3072, params_path, &mut function_context); + add_buffer("p80", 9216, params_path, &mut function_context); + add_buffer("p81", 4, params_path, &mut function_context); + add_buffer("p82", 4, params_path, &mut function_context); + add_buffer("p84", 3072, params_path, &mut function_context); + add_buffer("p85", 3072, params_path, &mut function_context); + add_buffer("p86", 3072, params_path, &mut function_context); + add_buffer("p88", 12288, params_path, &mut function_context); + add_buffer("p90", 3072, params_path, &mut function_context); + add_buffer("p91", 3072, params_path, &mut function_context); + add_buffer("p92", 3072, params_path, &mut function_context); + add_buffer("p94", 9216, params_path, &mut function_context); + add_buffer("p95", 4, params_path, &mut function_context); + add_buffer("p96", 4, params_path, &mut function_context); + add_buffer("p98", 3072, params_path, &mut function_context); + add_buffer("p99", 3072, params_path, &mut function_context); + add_buffer("p100", 3072, params_path, &mut function_context); + add_buffer("p102", 12288, params_path, &mut function_context); + add_buffer("p104", 3072, params_path, &mut function_context); + add_buffer("p105", 3072, params_path, &mut function_context); + add_buffer("p106", 3072, params_path, &mut function_context); + add_buffer("p108", 9216, params_path, &mut function_context); + add_buffer("p109", 4, params_path, &mut function_context); + add_buffer("p110", 4, params_path, &mut function_context); + add_buffer("p112", 3072, params_path, &mut function_context); + add_buffer("p113", 3072, params_path, &mut function_context); + add_buffer("p114", 3072, params_path, &mut function_context); + add_buffer("p116", 12288, params_path, &mut function_context); + add_buffer("p118", 3072, params_path, &mut function_context); + add_buffer("p119", 3072, params_path, &mut function_context); + add_buffer("p120", 3072, params_path, &mut function_context); + add_buffer("p122", 9216, params_path, &mut function_context); + add_buffer("p123", 4, params_path, &mut function_context); + add_buffer("p124", 4, params_path, &mut function_context); + add_buffer("p126", 3072, params_path, &mut function_context); + add_buffer("p127", 3072, params_path, &mut function_context); + add_buffer("p128", 3072, params_path, &mut function_context); + add_buffer("p130", 12288, params_path, &mut function_context); + add_buffer("p132", 3072, params_path, &mut function_context); + add_buffer("p133", 3072, params_path, &mut function_context); + add_buffer("p134", 3072, params_path, &mut function_context); + add_buffer("p136", 9216, params_path, &mut function_context); + add_buffer("p137", 4, params_path, &mut function_context); + add_buffer("p138", 4, params_path, &mut function_context); + add_buffer("p140", 3072, params_path, &mut function_context); + add_buffer("p141", 3072, params_path, &mut function_context); + add_buffer("p142", 3072, params_path, &mut function_context); + add_buffer("p144", 12288, params_path, &mut function_context); + add_buffer("p146", 3072, params_path, &mut function_context); + add_buffer("p147", 3072, params_path, &mut function_context); + add_buffer("p148", 3072, params_path, &mut function_context); + add_buffer("p150", 9216, params_path, &mut function_context); + add_buffer("p151", 4, params_path, &mut function_context); + add_buffer("p152", 4, params_path, &mut function_context); + add_buffer("p154", 3072, params_path, &mut function_context); + add_buffer("p155", 3072, params_path, &mut function_context); + add_buffer("p156", 3072, params_path, &mut function_context); + add_buffer("p158", 12288, params_path, &mut function_context); + add_buffer("p160", 3072, params_path, &mut function_context); + add_buffer("p161", 3072, params_path, &mut function_context); + add_buffer("p162", 3072, params_path, &mut function_context); + add_buffer("p165", 4, params_path, &mut function_context); + add_buffer("p166", 4, params_path, &mut function_context); + add_buffer("p6", 7077888, params_path, &mut function_context); + add_buffer("p13", 2359296, params_path, &mut function_context); + add_buffer("p17", 9437184, params_path, &mut function_context); + add_buffer("p19", 9437184, params_path, &mut function_context); + add_buffer("p177", 3072000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/double_matmul/"; + + add_buffer("input", 16, params_path, &mut function_context); + add_buffer("p0", 80, params_path, &mut function_context); + add_buffer("p1", 60, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 12; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/lstm/"; + + add_buffer("input", 3136, params_path, &mut function_context); + add_buffer("p252", 524288, params_path, &mut function_context); + add_buffer("p254", 524288, params_path, &mut function_context); + add_buffer("p256", 524288, params_path, &mut function_context); + add_buffer("p258", 524288, params_path, &mut function_context); + add_buffer("p260", 524288, params_path, &mut function_context); + add_buffer("p262", 524288, params_path, &mut function_context); + add_buffer("p264", 524288, params_path, &mut function_context); + add_buffer("p266", 524288, params_path, &mut function_context); + add_buffer("p268", 524288, params_path, &mut function_context); + add_buffer("p270", 524288, params_path, &mut function_context); + add_buffer("p272", 524288, params_path, &mut function_context); + add_buffer("p274", 524288, params_path, &mut function_context); + add_buffer("p276", 524288, params_path, &mut function_context); + add_buffer("p278", 524288, params_path, &mut function_context); + add_buffer("p280", 524288, params_path, &mut function_context); + add_buffer("p282", 524288, params_path, &mut function_context); + add_buffer("p284", 524288, params_path, &mut function_context); + add_buffer("p286", 524288, params_path, &mut function_context); + add_buffer("p288", 524288, params_path, &mut function_context); + add_buffer("p0", 512, params_path, &mut function_context); + add_buffer("p1", 319488, params_path, &mut function_context); + add_buffer("p2", 2048, params_path, &mut function_context); + add_buffer("p3", 512, params_path, &mut function_context); + add_buffer("p4", 319488, params_path, &mut function_context); + add_buffer("p5", 2048, params_path, &mut function_context); + add_buffer("p6", 319488, params_path, &mut function_context); + add_buffer("p7", 2048, params_path, &mut function_context); + add_buffer("p8", 319488, params_path, &mut function_context); + add_buffer("p9", 2048, params_path, &mut function_context); + add_buffer("p10", 319488, params_path, &mut function_context); + add_buffer("p11", 2048, params_path, &mut function_context); + add_buffer("p12", 319488, params_path, &mut function_context); + add_buffer("p13", 2048, params_path, &mut function_context); + add_buffer("p15", 2048, params_path, &mut function_context); + add_buffer("p17", 2048, params_path, &mut function_context); + add_buffer("p19", 2048, params_path, &mut function_context); + add_buffer("p21", 2048, params_path, &mut function_context); + add_buffer("p23", 2048, params_path, &mut function_context); + add_buffer("p25", 2048, params_path, &mut function_context); + add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p43", 2048, params_path, &mut function_context); + add_buffer("p45", 2048, params_path, &mut function_context); + add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p49", 2048, params_path, &mut function_context); + add_buffer("p51", 2048, params_path, &mut function_context); + add_buffer("p53", 2048, params_path, &mut function_context); + add_buffer("p55", 2048, params_path, &mut function_context); + add_buffer("p57", 2048, params_path, &mut function_context); + add_buffer("p58", 512, params_path, &mut function_context); + add_buffer("p60", 2048, params_path, &mut function_context); + add_buffer("p61", 512, params_path, &mut function_context); + add_buffer("p63", 2048, params_path, &mut function_context); + add_buffer("p65", 2048, params_path, &mut function_context); + add_buffer("p67", 2048, params_path, &mut function_context); + add_buffer("p69", 2048, params_path, &mut function_context); + add_buffer("p71", 2048, params_path, &mut function_context); + add_buffer("p73", 2048, params_path, &mut function_context); + add_buffer("p75", 2048, params_path, &mut function_context); + add_buffer("p77", 2048, params_path, &mut function_context); + add_buffer("p79", 2048, params_path, &mut function_context); + add_buffer("p81", 2048, params_path, &mut function_context); + add_buffer("p83", 2048, params_path, &mut function_context); + add_buffer("p85", 2048, params_path, &mut function_context); + add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p91", 2048, params_path, &mut function_context); + add_buffer("p93", 2048, params_path, &mut function_context); + add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p97", 2048, params_path, &mut function_context); + add_buffer("p116", 512, params_path, &mut function_context); + add_buffer("p119", 512, params_path, &mut function_context); + add_buffer("p174", 512, params_path, &mut function_context); + add_buffer("p14", 319488, params_path, &mut function_context); + add_buffer("p16", 319488, params_path, &mut function_context); + add_buffer("p18", 319488, params_path, &mut function_context); + add_buffer("p20", 319488, params_path, &mut function_context); + add_buffer("p22", 319488, params_path, &mut function_context); + add_buffer("p24", 319488, params_path, &mut function_context); + add_buffer("p99", 2048, params_path, &mut function_context); + add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p105", 2048, params_path, &mut function_context); + add_buffer("p107", 2048, params_path, &mut function_context); + add_buffer("p109", 2048, params_path, &mut function_context); + add_buffer("p111", 2048, params_path, &mut function_context); + add_buffer("p113", 2048, params_path, &mut function_context); + add_buffer("p115", 2048, params_path, &mut function_context); + add_buffer("p118", 2048, params_path, &mut function_context); + add_buffer("p121", 2048, params_path, &mut function_context); + add_buffer("p123", 2048, params_path, &mut function_context); + add_buffer("p125", 2048, params_path, &mut function_context); + add_buffer("p127", 2048, params_path, &mut function_context); + add_buffer("p129", 2048, params_path, &mut function_context); + add_buffer("p131", 2048, params_path, &mut function_context); + add_buffer("p133", 2048, params_path, &mut function_context); + add_buffer("p135", 2048, params_path, &mut function_context); + add_buffer("p137", 2048, params_path, &mut function_context); + add_buffer("p139", 2048, params_path, &mut function_context); + add_buffer("p141", 2048, params_path, &mut function_context); + add_buffer("p143", 2048, params_path, &mut function_context); + add_buffer("p145", 2048, params_path, &mut function_context); + add_buffer("p147", 2048, params_path, &mut function_context); + add_buffer("p149", 2048, params_path, &mut function_context); + add_buffer("p151", 2048, params_path, &mut function_context); + add_buffer("p153", 2048, params_path, &mut function_context); + add_buffer("p155", 2048, params_path, &mut function_context); + add_buffer("p157", 2048, params_path, &mut function_context); + add_buffer("p159", 2048, params_path, &mut function_context); + add_buffer("p161", 2048, params_path, &mut function_context); + add_buffer("p163", 2048, params_path, &mut function_context); + add_buffer("p165", 2048, params_path, &mut function_context); + add_buffer("p167", 2048, params_path, &mut function_context); + add_buffer("p169", 2048, params_path, &mut function_context); + add_buffer("p171", 2048, params_path, &mut function_context); + add_buffer("p173", 2048, params_path, &mut function_context); + add_buffer("p176", 2048, params_path, &mut function_context); + add_buffer("p177", 512, params_path, &mut function_context); + add_buffer("p179", 2048, params_path, &mut function_context); + add_buffer("p181", 2048, params_path, &mut function_context); + add_buffer("p183", 2048, params_path, &mut function_context); + add_buffer("p185", 2048, params_path, &mut function_context); + add_buffer("p187", 2048, params_path, &mut function_context); + add_buffer("p189", 2048, params_path, &mut function_context); + add_buffer("p191", 2048, params_path, &mut function_context); + add_buffer("p193", 2048, params_path, &mut function_context); + add_buffer("p195", 2048, params_path, &mut function_context); + add_buffer("p197", 2048, params_path, &mut function_context); + add_buffer("p199", 2048, params_path, &mut function_context); + add_buffer("p201", 2048, params_path, &mut function_context); + add_buffer("p203", 2048, params_path, &mut function_context); + add_buffer("p205", 2048, params_path, &mut function_context); + add_buffer("p207", 2048, params_path, &mut function_context); + add_buffer("p209", 2048, params_path, &mut function_context); + add_buffer("p211", 2048, params_path, &mut function_context); + add_buffer("p213", 2048, params_path, &mut function_context); + add_buffer("p215", 2048, params_path, &mut function_context); + add_buffer("p217", 2048, params_path, &mut function_context); + add_buffer("p219", 2048, params_path, &mut function_context); + add_buffer("p221", 2048, params_path, &mut function_context); + add_buffer("p223", 2048, params_path, &mut function_context); + add_buffer("p225", 2048, params_path, &mut function_context); + add_buffer("p227", 2048, params_path, &mut function_context); + add_buffer("p229", 2048, params_path, &mut function_context); + add_buffer("p231", 2048, params_path, &mut function_context); + add_buffer("p232", 512, params_path, &mut function_context); + add_buffer("p234", 2048, params_path, &mut function_context); + add_buffer("p235", 512, params_path, &mut function_context); + add_buffer("p237", 2048, params_path, &mut function_context); + add_buffer("p239", 2048, params_path, &mut function_context); + add_buffer("p241", 2048, params_path, &mut function_context); + add_buffer("p243", 2048, params_path, &mut function_context); + add_buffer("p245", 2048, params_path, &mut function_context); + add_buffer("p247", 2048, params_path, &mut function_context); + add_buffer("p249", 2048, params_path, &mut function_context); + add_buffer("p251", 2048, params_path, &mut function_context); + add_buffer("p253", 2048, params_path, &mut function_context); + add_buffer("p255", 2048, params_path, &mut function_context); + add_buffer("p257", 2048, params_path, &mut function_context); + add_buffer("p259", 2048, params_path, &mut function_context); + add_buffer("p261", 2048, params_path, &mut function_context); + add_buffer("p263", 2048, params_path, &mut function_context); + add_buffer("p265", 2048, params_path, &mut function_context); + add_buffer("p267", 2048, params_path, &mut function_context); + add_buffer("p269", 2048, params_path, &mut function_context); + add_buffer("p271", 2048, params_path, &mut function_context); + add_buffer("p273", 2048, params_path, &mut function_context); + add_buffer("p275", 2048, params_path, &mut function_context); + add_buffer("p277", 2048, params_path, &mut function_context); + add_buffer("p291", 40, params_path, &mut function_context); + add_buffer("p26", 319488, params_path, &mut function_context); + add_buffer("p28", 319488, params_path, &mut function_context); + add_buffer("p30", 319488, params_path, &mut function_context); + add_buffer("p32", 319488, params_path, &mut function_context); + add_buffer("p34", 319488, params_path, &mut function_context); + add_buffer("p36", 319488, params_path, &mut function_context); + add_buffer("p279", 2048, params_path, &mut function_context); + add_buffer("p281", 2048, params_path, &mut function_context); + add_buffer("p283", 2048, params_path, &mut function_context); + add_buffer("p285", 2048, params_path, &mut function_context); + add_buffer("p287", 2048, params_path, &mut function_context); + add_buffer("p289", 2048, params_path, &mut function_context); + add_buffer("p290", 5120, params_path, &mut function_context); + add_buffer("p38", 319488, params_path, &mut function_context); + add_buffer("p40", 319488, params_path, &mut function_context); + add_buffer("p42", 319488, params_path, &mut function_context); + add_buffer("p44", 319488, params_path, &mut function_context); + add_buffer("p46", 319488, params_path, &mut function_context); + add_buffer("p48", 319488, params_path, &mut function_context); + add_buffer("p50", 319488, params_path, &mut function_context); + add_buffer("p52", 319488, params_path, &mut function_context); + add_buffer("p54", 319488, params_path, &mut function_context); + add_buffer("p56", 319488, params_path, &mut function_context); + add_buffer("p59", 524288, params_path, &mut function_context); + add_buffer("p62", 524288, params_path, &mut function_context); + add_buffer("p64", 524288, params_path, &mut function_context); + add_buffer("p66", 524288, params_path, &mut function_context); + add_buffer("p68", 524288, params_path, &mut function_context); + add_buffer("p70", 524288, params_path, &mut function_context); + add_buffer("p72", 524288, params_path, &mut function_context); + add_buffer("p74", 524288, params_path, &mut function_context); + add_buffer("p76", 524288, params_path, &mut function_context); + add_buffer("p78", 524288, params_path, &mut function_context); + add_buffer("p80", 524288, params_path, &mut function_context); + add_buffer("p82", 524288, params_path, &mut function_context); + add_buffer("p84", 524288, params_path, &mut function_context); + add_buffer("p86", 524288, params_path, &mut function_context); + add_buffer("p88", 524288, params_path, &mut function_context); + add_buffer("p90", 524288, params_path, &mut function_context); + add_buffer("p92", 524288, params_path, &mut function_context); + add_buffer("p94", 524288, params_path, &mut function_context); + add_buffer("p96", 524288, params_path, &mut function_context); + add_buffer("p98", 524288, params_path, &mut function_context); + add_buffer("p100", 524288, params_path, &mut function_context); + add_buffer("p102", 524288, params_path, &mut function_context); + add_buffer("p104", 524288, params_path, &mut function_context); + add_buffer("p106", 524288, params_path, &mut function_context); + add_buffer("p108", 524288, params_path, &mut function_context); + add_buffer("p110", 524288, params_path, &mut function_context); + add_buffer("p112", 524288, params_path, &mut function_context); + add_buffer("p114", 524288, params_path, &mut function_context); + add_buffer("p117", 524288, params_path, &mut function_context); + add_buffer("p120", 524288, params_path, &mut function_context); + add_buffer("p122", 524288, params_path, &mut function_context); + add_buffer("p124", 524288, params_path, &mut function_context); + add_buffer("p126", 524288, params_path, &mut function_context); + add_buffer("p128", 524288, params_path, &mut function_context); + add_buffer("p130", 524288, params_path, &mut function_context); + add_buffer("p132", 524288, params_path, &mut function_context); + add_buffer("p134", 524288, params_path, &mut function_context); + add_buffer("p136", 524288, params_path, &mut function_context); + add_buffer("p138", 524288, params_path, &mut function_context); + add_buffer("p140", 524288, params_path, &mut function_context); + add_buffer("p142", 524288, params_path, &mut function_context); + add_buffer("p144", 524288, params_path, &mut function_context); + add_buffer("p146", 524288, params_path, &mut function_context); + add_buffer("p148", 524288, params_path, &mut function_context); + add_buffer("p150", 524288, params_path, &mut function_context); + add_buffer("p152", 524288, params_path, &mut function_context); + add_buffer("p154", 524288, params_path, &mut function_context); + add_buffer("p156", 524288, params_path, &mut function_context); + add_buffer("p158", 524288, params_path, &mut function_context); + add_buffer("p160", 524288, params_path, &mut function_context); + add_buffer("p162", 524288, params_path, &mut function_context); + add_buffer("p164", 524288, params_path, &mut function_context); + add_buffer("p166", 524288, params_path, &mut function_context); + add_buffer("p168", 524288, params_path, &mut function_context); + add_buffer("p170", 524288, params_path, &mut function_context); + add_buffer("p172", 524288, params_path, &mut function_context); + add_buffer("p175", 524288, params_path, &mut function_context); + add_buffer("p178", 524288, params_path, &mut function_context); + add_buffer("p180", 524288, params_path, &mut function_context); + add_buffer("p182", 524288, params_path, &mut function_context); + add_buffer("p184", 524288, params_path, &mut function_context); + add_buffer("p186", 524288, params_path, &mut function_context); + add_buffer("p188", 524288, params_path, &mut function_context); + add_buffer("p190", 524288, params_path, &mut function_context); + add_buffer("p192", 524288, params_path, &mut function_context); + add_buffer("p194", 524288, params_path, &mut function_context); + add_buffer("p196", 524288, params_path, &mut function_context); + add_buffer("p198", 524288, params_path, &mut function_context); + add_buffer("p200", 524288, params_path, &mut function_context); + add_buffer("p202", 524288, params_path, &mut function_context); + add_buffer("p204", 524288, params_path, &mut function_context); + add_buffer("p206", 524288, params_path, &mut function_context); + add_buffer("p208", 524288, params_path, &mut function_context); + add_buffer("p210", 524288, params_path, &mut function_context); + add_buffer("p212", 524288, params_path, &mut function_context); + add_buffer("p214", 524288, params_path, &mut function_context); + add_buffer("p216", 524288, params_path, &mut function_context); + add_buffer("p218", 524288, params_path, &mut function_context); + add_buffer("p220", 524288, params_path, &mut function_context); + add_buffer("p222", 524288, params_path, &mut function_context); + add_buffer("p224", 524288, params_path, &mut function_context); + add_buffer("p226", 524288, params_path, &mut function_context); + add_buffer("p228", 524288, params_path, &mut function_context); + add_buffer("p230", 524288, params_path, &mut function_context); + add_buffer("p233", 524288, params_path, &mut function_context); + add_buffer("p236", 524288, params_path, &mut function_context); + add_buffer("p238", 524288, params_path, &mut function_context); + add_buffer("p240", 524288, params_path, &mut function_context); + add_buffer("p242", 524288, params_path, &mut function_context); + add_buffer("p244", 524288, params_path, &mut function_context); + add_buffer("p246", 524288, params_path, &mut function_context); + add_buffer("p248", 524288, params_path, &mut function_context); + add_buffer("p250", 524288, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 512; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/simple/"; + + add_buffer("input", 16, params_path, &mut function_context); + add_buffer("p0", 8, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 8; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests.rs similarity index 94% rename from machine_interface/src/function_driver/compute_driver/gpu/hip_tests.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests.rs index 330554ab..4c585c81 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests.rs @@ -1,19 +1,13 @@ -mod compiled_tests; -mod load_models; mod load_utils; mod tests_utils; -use std::sync::{Arc, Mutex}; - -use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; - use crate::{ function_driver::{ compute_driver::{ compute_driver_tests::compute_driver_tests::{ engine_minimal, get_expected_mat, prepare_engine_and_function, }, - gpu::{GpuProcessDriver, GpuThreadDriver}, + gpu::gpu_tests::{get_driver, Arc, Archive, ArchiveInit, RecordPoint, GPU_LOCK}, }, ComputeResource, Driver, WorkToDo, }, @@ -21,32 +15,13 @@ use crate::{ DataItem, DataSet, Position, }; -// To force tests to run sequentially as we might otherwise run out of GPU memory -lazy_static::lazy_static! { - static ref GPU_LOCK: Mutex<()> = Mutex::new(()); -} - -fn get_driver() -> Box { - #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] - panic!("gpu_process and gpu_thread enabled simultaneously"); - - #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] - panic!("Neither gpu_process nor gpu_thread enabled"); - - #[cfg(feature = "gpu_process")] - return Box::new(GpuProcessDriver {}); - - #[cfg(feature = "gpu_thread")] - return Box::new(GpuThreadDriver {}); -} - #[test] fn minimal() { let lock = GPU_LOCK.lock().unwrap(); let driver: Box = get_driver(); engine_minimal::( &format!( - "{}/tests/data/test_gpu_minimal.json", + "{}/tests/data/hip/test_gpu_minimal.json", env!("CARGO_MANIFEST_DIR") ), MemoryResource::None, @@ -62,7 +37,7 @@ fn basic_input_output() { let driver: Box = get_driver(); let (mut function_context, config, queue) = prepare_engine_and_function::( &format!( - "{}/tests/data/test_gpu_basic_io.json", + "{}/tests/data/hip/test_gpu_basic_io.json", env!("CARGO_MANIFEST_DIR") ), MemoryResource::None, @@ -130,7 +105,7 @@ fn basic_input_output() { fn engine_matmul_3x3_loop() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_matmul_loop.json", + "{}/tests/data/hip/test_gpu_matmul_loop.json", env!("CARGO_MANIFEST_DIR") ); let dom_init = MemoryResource::None; @@ -216,7 +191,7 @@ fn engine_matmul_3x3_loop() { fn engine_matmul_size_sweep_parallel() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_matmul_para.json", + "{}/tests/data/hip/test_gpu_matmul_para.json", env!("CARGO_MANIFEST_DIR") ); let dom_init = MemoryResource::None; @@ -411,7 +386,7 @@ fn get_expected_inference_output() -> Vec { fn inference_benchmark_function() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_inference.json", + "{}/tests/data/hip/test_gpu_inference.json", env!("CARGO_MANIFEST_DIR") ); let dom_init = MemoryResource::None; @@ -522,7 +497,7 @@ fn hello_world() { let driver: Box = get_driver(); let (function_context, config, queue) = prepare_engine_and_function::( &format!( - "{}/tests/data/test_gpu_hello_world.json", + "{}/tests/data/hip/test_gpu_hello_world.json", env!("CARGO_MANIFEST_DIR") ), MemoryResource::None, @@ -556,7 +531,7 @@ fn engine_first_double_matmul() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_first_double_matmul.json", + "{}/tests/data/hip/test_gpu_first_double_matmul.json", env!("CARGO_MANIFEST_DIR") ); let dom_init = MemoryResource::None; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests/compiled_tests.rs similarity index 87% rename from machine_interface/src/function_driver/compute_driver/gpu/hip_tests/compiled_tests.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests/compiled_tests.rs index 3d0b41db..c6b61b63 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/compiled_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests/compiled_tests.rs @@ -1,8 +1,13 @@ -use crate::function_driver::compute_driver::gpu::hip_tests::{ - load_models::*, - tests_utils::{compare_result, execute_test, get_result, setup_test}, - GPU_LOCK, +use crate::{ + function_driver::compute_driver::gpu::gpu_tests::{ + cuda_tests::load_models::*, + get_driver, + tests_utils::{compare_result, execute_test, get_result, setup_test}, + GPU_LOCK, + }, + memory_domain::Context, }; +use std::sync::Arc; #[test] fn test_all() { @@ -16,7 +21,7 @@ fn test_all() { fn full_double_matmul() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_full_double_matmul.json", + "{}/tests/data/hip/test_gpu_full_double_matmul.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -32,7 +37,7 @@ fn full_double_matmul() { fn alexnet() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_alexnet.json", + "{}/tests/data/hip/test_gpu_alexnet.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -47,7 +52,7 @@ fn alexnet() { fn lenet5() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_lenet5.json", + "{}/tests/data/hip/test_gpu_lenet5.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -62,7 +67,7 @@ fn lenet5() { fn resnet18base() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet18.json", + "{}/tests/data/hip/test_gpu_resnet18.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -77,7 +82,7 @@ fn resnet18base() { fn resnet18() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet18.json", + "{}/tests/data/hip/test_gpu_resnet18.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -92,7 +97,7 @@ fn resnet18() { fn resnet18batch4() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet18batch4.json", + "{}/tests/data/hip/test_gpu_resnet18batch4.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -107,7 +112,7 @@ fn resnet18batch4() { fn resnet18batch16() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet18batch16.json", + "{}/tests/data/hip/test_gpu_resnet18batch16.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -122,7 +127,7 @@ fn resnet18batch16() { fn resnet18batch64() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet18batch64.json", + "{}/tests/data/hip/test_gpu_resnet18batch64.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -137,7 +142,7 @@ fn resnet18batch64() { fn resnet18onnx() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet18onnx.json", + "{}/tests/data/hip/test_gpu_resnet18onnx.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -152,7 +157,7 @@ fn resnet18onnx() { fn resnet34() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet34.json", + "{}/tests/data/hip/test_gpu_resnet34.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -167,7 +172,7 @@ fn resnet34() { fn resnet50() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet50.json", + "{}/tests/data/hip/test_gpu_resnet50.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -182,7 +187,7 @@ fn resnet50() { fn resnet152() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_resnet152.json", + "{}/tests/data/hip/test_gpu_resnet152.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); @@ -197,7 +202,7 @@ fn resnet152() { fn batch_norm() { let lock = GPU_LOCK.lock().unwrap(); let filename = &format!( - "{}/tests/data/test_gpu_batch_norm.json", + "{}/tests/data/hip/test_gpu_batch_norm.json", env!("CARGO_MANIFEST_DIR") ); let (function_context, config, queue) = setup_test(&filename); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests/load_models.rs similarity index 99% rename from machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_models.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests/load_models.rs index 63e0f504..87f65ae5 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/hip_tests/load_models.rs @@ -1,5 +1,5 @@ use crate::{ - function_driver::compute_driver::gpu::hip_tests::load_utils::{ + function_driver::compute_driver::gpu::gpu_tests::load_utils::{ add_buffer, add_empty_buffer, add_number, read_tensor_from_file, }, memory_domain::Context, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs similarity index 100% rename from machine_interface/src/function_driver/compute_driver/gpu/hip_tests/load_utils.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs similarity index 84% rename from machine_interface/src/function_driver/compute_driver/gpu/hip_tests/tests_utils.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs index f13b4c52..04982ea7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip_tests/tests_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -2,7 +2,7 @@ use crate::{ function_driver::{ compute_driver::{ compute_driver_tests::compute_driver_tests::prepare_engine_and_function, - gpu::hip_tests::{get_driver, Archive, ArchiveInit, RecordPoint}, + gpu::gpu_tests::{get_driver, Archive, ArchiveInit, RecordPoint}, }, test_queue::TestQueue, Arc, ComputeResource, Driver, FunctionConfig, WorkToDo, @@ -11,7 +11,10 @@ use crate::{ }; pub fn setup_test(filename: &str) -> (Context, FunctionConfig, Box) { - let dom_init = MemoryResource::None; + let dom_init = MemoryResource::Shared { + id: 0, + size: (1 << 32), // TODO : choose a good value for the context size + }; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; @@ -59,7 +62,10 @@ pub fn get_result(result_context: Context, output_size: usize, asserts: bool) -> if asserts { assert_eq!(output_size, position.size, "Checking for size of output"); } else { - println!("Expected output size: {output_size}\t\tActual size: {0}", position.size); + println!( + "Expected output size: {output_size}\t\tActual size: {0}", + position.size + ); } let mut read_buffer = vec![0f32; position.size / 4]; result_context @@ -74,11 +80,16 @@ pub fn compare_result(expected: Vec, read_buffer: Vec, asserts: bool) for (should, is) in expected.iter().zip(read_buffer.iter()) { let abs_diff = (should - is).abs(); let mut ratio = should / is; - if ratio.is_nan() { ratio = 1.0; } + if ratio.is_nan() { + ratio = 1.0; + } let diff_ratio = ratio - 1.0; let abs_diff_ratio = diff_ratio.abs(); if asserts { - assert!(abs_diff_ratio <= DELTA, "Checking final result: {should} - {is}"); + assert!( + abs_diff_ratio <= DELTA, + "Checking final result: {should} - {is}" + ); } else { println!("{should:10.3}\t{is:10.3}\t{abs_diff:10.3}\t{ratio:10.3}"); } diff --git a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json new file mode 100644 index 00000000..f2fc50fe --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json @@ -0,0 +1,32 @@ +{ + "modules": [{"module_name": "double_matmul.cubin", "path": "cuda/double_matmul.cubin"}], + "kernels": [ + {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1"], + "buffers": {"b2": {"Absolute": 20}, "output": {"Absolute": 12}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "input"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 5}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "output"}, {"Ptr": "b2"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_lstm.json b/machine_interface/tests/data/cuda/test_gpu_lstm.json new file mode 100644 index 00000000..802d9b83 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_lstm.json @@ -0,0 +1,11222 @@ +{ + "modules": [{"module_name": "lstm.cubin", "path": "cuda/lstm.cubin"}], + "kernels": [ + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_3"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_7"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_40_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_2_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_53_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_14"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_22_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_46_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_20_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_3_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_38_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_34_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_48_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_28_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_35_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_14_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_25"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_24_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_11"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_12_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_17"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_14"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_12"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_3"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_49_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_4e0306112785fa15__kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_54_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_33_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_8_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_4_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_21_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_16"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_43_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_6"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_10_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_1_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_51_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_18"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_39_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_27"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_10"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_26"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_42_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_23"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_47_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_50_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_41_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel_2"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_2"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_23"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_23_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_4"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_25_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_16"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_30_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_20"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_2_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_18_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_26_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_27_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_16_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_44_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_19_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_9_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_17_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_29_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_1"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_11"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_55_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_13"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_19"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_21"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_36_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_6_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_8"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_13_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_24"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_18"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_5_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_2"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_11_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_37_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_32_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_15"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_31_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_9"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_22"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_45_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_15_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_sigmoid_tanh_multiply_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_52_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_5"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_squeeze_concatenate_7_kernel"}, + {"module_name": "lstm.cubin", "kernel_name": "tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19"} + ], + "blueprint": { + "inputs": ["input", "p252", "p254", "p256", "p258", "p260", "p262", "p264", "p266", "p268", "p270", "p272", "p274", "p276", "p278", "p280", "p282", "p284", "p286", "p288", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p15", "p17", "p19", "p21", "p23", "p25", "p27", "p29", "p31", "p33", "p35", "p37", "p39", "p41", "p43", "p45", "p47", "p49", "p51", "p53", "p55", "p57", "p58", "p60", "p61", "p63", "p65", "p67", "p69", "p71", "p73", "p75", "p77", "p79", "p81", "p83", "p85", "p87", "p89", "p91", "p93", "p95", "p97", "p116", "p119", "p174", "p14", "p16", "p18", "p20", "p22", "p24", "p99", "p101", "p103", "p105", "p107", "p109", "p111", "p113", "p115", "p118", "p121", "p123", "p125", "p127", "p129", "p131", "p133", "p135", "p137", "p139", "p141", "p143", "p145", "p147", "p149", "p151", "p153", "p155", "p157", "p159", "p161", "p163", "p165", "p167", "p169", "p171", "p173", "p176", "p177", "p179", "p181", "p183", "p185", "p187", "p189", "p191", "p193", "p195", "p197", "p199", "p201", "p203", "p205", "p207", "p209", "p211", "p213", "p215", "p217", "p219", "p221", "p223", "p225", "p227", "p229", "p231", "p232", "p234", "p235", "p237", "p239", "p241", "p243", "p245", "p247", "p249", "p251", "p253", "p255", "p257", "p259", "p261", "p263", "p265", "p267", "p269", "p271", "p273", "p275", "p277", "p291", "p26", "p28", "p30", "p32", "p34", "p36", "p279", "p281", "p283", "p285", "p287", "p289", "p290", "p38", "p40", "p42", "p44", "p46", "p48", "p50", "p52", "p54", "p56", "p59", "p62", "p64", "p66", "p68", "p70", "p72", "p74", "p76", "p78", "p80", "p82", "p84", "p86", "p88", "p90", "p92", "p94", "p96", "p98", "p100", "p102", "p104", "p106", "p108", "p110", "p112", "p114", "p117", "p120", "p122", "p124", "p126", "p128", "p130", "p132", "p134", "p136", "p138", "p140", "p142", "p144", "p146", "p148", "p150", "p152", "p154", "p156", "p158", "p160", "p162", "p164", "p166", "p168", "p170", "p172", "p175", "p178", "p180", "p182", "p184", "p186", "p188", "p190", "p192", "p194", "p196", "p198", "p200", "p202", "p204", "p206", "p208", "p210", "p212", "p214", "p216", "p218", "p220", "p222", "p224", "p226", "p228", "p230", "p233", "p236", "p238", "p240", "p242", "p244", "p246", "p248", "p250"], + "buffers": {"b1": {"Absolute": 512}, "b2": {"Absolute": 2048}, "b3": {"Absolute": 512}, "b4": {"Absolute": 512}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b7": {"Absolute": 512}, "b9": {"Absolute": 512}, "b10": {"Absolute": 512}, "b11": {"Absolute": 512}, "b12": {"Absolute": 512}, "b13": {"Absolute": 512}, "b14": {"Absolute": 512}, "b15": {"Absolute": 512}, "b16": {"Absolute": 512}, "b17": {"Absolute": 512}, "b18": {"Absolute": 512}, "b19": {"Absolute": 512}, "b20": {"Absolute": 512}, "b21": {"Absolute": 512}, "b22": {"Absolute": 512}, "b23": {"Absolute": 512}, "b24": {"Absolute": 512}, "b25": {"Absolute": 512}, "b26": {"Absolute": 512}, "b27": {"Absolute": 512}, "b28": {"Absolute": 512}, "b30": {"Absolute": 2048}, "b33": {"Absolute": 2048}, "b34": {"Absolute": 512}, "b35": {"Absolute": 512}, "b36": {"Absolute": 2048}, "b38": {"Absolute": 512}, "b41": {"Absolute": 2048}, "b44": {"Absolute": 2048}, "b47": {"Absolute": 2048}, "b50": {"Absolute": 2048}, "b53": {"Absolute": 2048}, "b56": {"Absolute": 2048}, "b59": {"Absolute": 2048}, "b62": {"Absolute": 2048}, "b65": {"Absolute": 2048}, "b68": {"Absolute": 2048}, "b71": {"Absolute": 2048}, "b74": {"Absolute": 2048}, "b77": {"Absolute": 2048}, "b80": {"Absolute": 2048}, "b83": {"Absolute": 2048}, "b86": {"Absolute": 2048}, "b89": {"Absolute": 2048}, "b92": {"Absolute": 2048}, "b95": {"Absolute": 2048}, "b98": {"Absolute": 2048}, "b101": {"Absolute": 2048}, "b104": {"Absolute": 2048}, "b107": {"Absolute": 2048}, "b110": {"Absolute": 2048}, "b113": {"Absolute": 2048}, "b116": {"Absolute": 2048}, "output": {"Absolute": 512}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_1", [{"Ptr": "b2"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_2", [{"Ptr": "b3"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_3", [{"Ptr": "b4"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_4", [{"Ptr": "b5"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_5", [{"Ptr": "b6"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_6", [{"Ptr": "b7"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_7", [{"Ptr": "output"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_8", [{"Ptr": "b9"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_9", [{"Ptr": "b10"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_10", [{"Ptr": "b11"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_11", [{"Ptr": "b12"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_12", [{"Ptr": "b13"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_13", [{"Ptr": "b14"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_14", [{"Ptr": "b15"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_15", [{"Ptr": "b16"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_16", [{"Ptr": "b17"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_17", [{"Ptr": "b18"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_18", [{"Ptr": "b19"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_19", [{"Ptr": "b20"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_20", [{"Ptr": "b21"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_21", [{"Ptr": "b22"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_22", [{"Ptr": "b23"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_23", [{"Ptr": "b24"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_24", [{"Ptr": "b25"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_25", [{"Ptr": "b26"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_26", [{"Ptr": "b27"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_27", [{"Ptr": "b28"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_kernel", [{"Ptr": "b30"}, {"Ptr": "b1"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b30"}, {"Ptr": "p1"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b30"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b34"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b35"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b36"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b35"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b38"}, {"Ptr": "b36"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b2"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b30"}, {"Ptr": "p4"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b41"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b33"}, {"Ptr": "b41"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_2_kernel", [{"Ptr": "b30"}, {"Ptr": "b3"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b30"}, {"Ptr": "p6"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b36"}, {"Ptr": "b44"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_3_kernel", [{"Ptr": "b30"}, {"Ptr": "b4"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b30"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b47"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b41"}, {"Ptr": "b47"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_4_kernel", [{"Ptr": "b30"}, {"Ptr": "b5"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b30"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b50"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b44"}, {"Ptr": "b50"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_5_kernel", [{"Ptr": "b30"}, {"Ptr": "b6"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b30"}, {"Ptr": "p12"}, {"Ptr": "p13"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b53"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b47"}, {"Ptr": "b53"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_6_kernel", [{"Ptr": "b30"}, {"Ptr": "b7"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b53"}, {"Ptr": "b30"}, {"Ptr": "p14"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b56"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b53"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b50"}, {"Ptr": "b56"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_7_kernel", [{"Ptr": "b30"}, {"Ptr": "output"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b56"}, {"Ptr": "b30"}, {"Ptr": "p16"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b56"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b53"}, {"Ptr": "b59"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_8_kernel", [{"Ptr": "b30"}, {"Ptr": "b9"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b30"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b56"}, {"Ptr": "b62"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_9_kernel", [{"Ptr": "b30"}, {"Ptr": "b10"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b30"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b65"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b59"}, {"Ptr": "b65"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_10_kernel", [{"Ptr": "b30"}, {"Ptr": "b11"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b65"}, {"Ptr": "b30"}, {"Ptr": "p22"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b68"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b65"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b62"}, {"Ptr": "b68"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_11_kernel", [{"Ptr": "b30"}, {"Ptr": "b12"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b68"}, {"Ptr": "b30"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b71"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b68"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b65"}, {"Ptr": "b71"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_12_kernel", [{"Ptr": "b30"}, {"Ptr": "b13"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b71"}, {"Ptr": "b30"}, {"Ptr": "p26"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b74"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b71"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b68"}, {"Ptr": "b74"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_13_kernel", [{"Ptr": "b30"}, {"Ptr": "b14"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b74"}, {"Ptr": "b30"}, {"Ptr": "p28"}, {"Ptr": "p29"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b77"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b74"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b71"}, {"Ptr": "b77"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_14_kernel", [{"Ptr": "b30"}, {"Ptr": "b15"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b77"}, {"Ptr": "b30"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b80"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b77"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b74"}, {"Ptr": "b80"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_15_kernel", [{"Ptr": "b30"}, {"Ptr": "b16"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b80"}, {"Ptr": "b30"}, {"Ptr": "p32"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b83"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b80"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b77"}, {"Ptr": "b83"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_16_kernel", [{"Ptr": "b30"}, {"Ptr": "b17"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b83"}, {"Ptr": "b30"}, {"Ptr": "p34"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b86"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b83"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b80"}, {"Ptr": "b86"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_17_kernel", [{"Ptr": "b30"}, {"Ptr": "b18"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b86"}, {"Ptr": "b30"}, {"Ptr": "p36"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b89"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b86"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b83"}, {"Ptr": "b89"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_18_kernel", [{"Ptr": "b30"}, {"Ptr": "b19"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b89"}, {"Ptr": "b30"}, {"Ptr": "p38"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b92"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b89"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b86"}, {"Ptr": "b92"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_19_kernel", [{"Ptr": "b30"}, {"Ptr": "b20"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b92"}, {"Ptr": "b30"}, {"Ptr": "p40"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b95"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b92"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b89"}, {"Ptr": "b95"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_20_kernel", [{"Ptr": "b30"}, {"Ptr": "b21"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b30"}, {"Ptr": "p42"}, {"Ptr": "p43"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b98"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b92"}, {"Ptr": "b98"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_21_kernel", [{"Ptr": "b30"}, {"Ptr": "b22"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b98"}, {"Ptr": "b30"}, {"Ptr": "p44"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b101"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b98"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b95"}, {"Ptr": "b101"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_22_kernel", [{"Ptr": "b30"}, {"Ptr": "b23"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b101"}, {"Ptr": "b30"}, {"Ptr": "p46"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b104"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b98"}, {"Ptr": "b104"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_23_kernel", [{"Ptr": "b30"}, {"Ptr": "b24"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b104"}, {"Ptr": "b30"}, {"Ptr": "p48"}, {"Ptr": "p49"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b107"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b104"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b101"}, {"Ptr": "b107"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_24_kernel", [{"Ptr": "b30"}, {"Ptr": "b25"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b107"}, {"Ptr": "b30"}, {"Ptr": "p50"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b110"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b107"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b104"}, {"Ptr": "b110"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_25_kernel", [{"Ptr": "b30"}, {"Ptr": "b26"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b110"}, {"Ptr": "b30"}, {"Ptr": "p52"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b113"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b110"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b107"}, {"Ptr": "b113"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_26_kernel", [{"Ptr": "b30"}, {"Ptr": "b27"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b113"}, {"Ptr": "b30"}, {"Ptr": "p54"}, {"Ptr": "p55"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b34"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b35"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b113"}, {"Ptr": "b35"}, {"Ptr": "b34"}, {"Ptr": "b30"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b110"}, {"Ptr": "b116"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_27_kernel", [{"Ptr": "b30"}, {"Ptr": "b28"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 156}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b116"}, {"Ptr": "b30"}, {"Ptr": "p56"}, {"Ptr": "p57"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel", [{"Ptr": "b34"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1", [{"Ptr": "b35"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_2", [{"Ptr": "b30"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3", [{"Ptr": "b28"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4", [{"Ptr": "b27"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5", [{"Ptr": "b26"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6", [{"Ptr": "b25"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7", [{"Ptr": "b24"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8", [{"Ptr": "b23"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9", [{"Ptr": "b22"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10", [{"Ptr": "b21"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_11", [{"Ptr": "b20"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12", [{"Ptr": "b19"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13", [{"Ptr": "b18"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_14", [{"Ptr": "b17"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15", [{"Ptr": "b16"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_16", [{"Ptr": "b15"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17", [{"Ptr": "b14"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_18", [{"Ptr": "b13"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19", [{"Ptr": "b12"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20", [{"Ptr": "b11"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21", [{"Ptr": "b10"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22", [{"Ptr": "b9"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_23", [{"Ptr": "output"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24", [{"Ptr": "b7"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25", [{"Ptr": "b6"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26", [{"Ptr": "b5"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27", [{"Ptr": "b4"}, {"Ptr": "b116"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_28_kernel", [{"Ptr": "b116"}, {"Ptr": "b34"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b113"}, {"Ptr": "b116"}, {"Ptr": "p59"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b33"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b36"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b41"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b33"}, {"Ptr": "b38"}, {"Ptr": "b36"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b47"}, {"Ptr": "b41"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_29_kernel", [{"Ptr": "b50"}, {"Ptr": "b35"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b50"}, {"Ptr": "p62"}, {"Ptr": "p63"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b56"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b65"}, {"Ptr": "b56"}, {"Ptr": "b38"}, {"Ptr": "b59"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b68"}, {"Ptr": "b62"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_30_kernel", [{"Ptr": "b71"}, {"Ptr": "b30"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b71"}, {"Ptr": "p64"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b77"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b80"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b83"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b86"}, {"Ptr": "b77"}, {"Ptr": "b38"}, {"Ptr": "b80"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b89"}, {"Ptr": "b83"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_31_kernel", [{"Ptr": "b92"}, {"Ptr": "b28"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b92"}, {"Ptr": "p66"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b98"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b101"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b104"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b107"}, {"Ptr": "b98"}, {"Ptr": "b38"}, {"Ptr": "b101"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b110"}, {"Ptr": "b104"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_32_kernel", [{"Ptr": "b116"}, {"Ptr": "b27"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b113"}, {"Ptr": "b116"}, {"Ptr": "p68"}, {"Ptr": "p69"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b33"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b36"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b41"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b33"}, {"Ptr": "b38"}, {"Ptr": "b36"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b53"}, {"Ptr": "b41"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_33_kernel", [{"Ptr": "b44"}, {"Ptr": "b26"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b44"}, {"Ptr": "p70"}, {"Ptr": "p71"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b59"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b71"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b74"}, {"Ptr": "b59"}, {"Ptr": "b38"}, {"Ptr": "b62"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b65"}, {"Ptr": "b71"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_34_kernel", [{"Ptr": "b77"}, {"Ptr": "b25"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b80"}, {"Ptr": "b77"}, {"Ptr": "p72"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b83"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b92"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b95"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b86"}, {"Ptr": "b83"}, {"Ptr": "b38"}, {"Ptr": "b92"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b98"}, {"Ptr": "b95"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_35_kernel", [{"Ptr": "b101"}, {"Ptr": "b24"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b104"}, {"Ptr": "b101"}, {"Ptr": "p74"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b113"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b107"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b116"}, {"Ptr": "b38"}, {"Ptr": "b113"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b36"}, {"Ptr": "b107"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_36_kernel", [{"Ptr": "b41"}, {"Ptr": "b23"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b41"}, {"Ptr": "p76"}, {"Ptr": "p77"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b56"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b50"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b56"}, {"Ptr": "b38"}, {"Ptr": "b50"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b71"}, {"Ptr": "b59"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_37_kernel", [{"Ptr": "b77"}, {"Ptr": "b22"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b80"}, {"Ptr": "b77"}, {"Ptr": "p78"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b74"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b83"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b92"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b74"}, {"Ptr": "b38"}, {"Ptr": "b83"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b101"}, {"Ptr": "b92"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_38_kernel", [{"Ptr": "b104"}, {"Ptr": "b21"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b86"}, {"Ptr": "b104"}, {"Ptr": "p80"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b116"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b113"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b107"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b116"}, {"Ptr": "b38"}, {"Ptr": "b113"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b44"}, {"Ptr": "b107"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_39_kernel", [{"Ptr": "b33"}, {"Ptr": "b20"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b33"}, {"Ptr": "p82"}, {"Ptr": "p83"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b77"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b80"}, {"Ptr": "b50"}, {"Ptr": "b38"}, {"Ptr": "b59"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b62"}, {"Ptr": "b77"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_40_kernel", [{"Ptr": "b74"}, {"Ptr": "b19"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b83"}, {"Ptr": "b74"}, {"Ptr": "p84"}, {"Ptr": "p85"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b92"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b104"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b86"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b92"}, {"Ptr": "b38"}, {"Ptr": "b104"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b116"}, {"Ptr": "b86"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_41_kernel", [{"Ptr": "b113"}, {"Ptr": "b18"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b113"}, {"Ptr": "p86"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b33"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b56"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b41"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b33"}, {"Ptr": "b38"}, {"Ptr": "b56"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b59"}, {"Ptr": "b41"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_42_kernel", [{"Ptr": "b77"}, {"Ptr": "b17"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b77"}, {"Ptr": "p88"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b83"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b80"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b92"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b104"}, {"Ptr": "b83"}, {"Ptr": "b38"}, {"Ptr": "b80"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b86"}, {"Ptr": "b92"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_43_kernel", [{"Ptr": "b113"}, {"Ptr": "b16"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b113"}, {"Ptr": "p90"}, {"Ptr": "p91"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b95"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b33"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b56"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b95"}, {"Ptr": "b38"}, {"Ptr": "b33"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b77"}, {"Ptr": "b56"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_44_kernel", [{"Ptr": "b74"}, {"Ptr": "b15"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b74"}, {"Ptr": "p92"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b83"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b80"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b92"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b113"}, {"Ptr": "b83"}, {"Ptr": "b38"}, {"Ptr": "b80"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b107"}, {"Ptr": "b92"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_45_kernel", [{"Ptr": "b104"}, {"Ptr": "b14"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b104"}, {"Ptr": "p94"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b33"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b56"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b74"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b33"}, {"Ptr": "b38"}, {"Ptr": "b56"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b41"}, {"Ptr": "b74"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_46_kernel", [{"Ptr": "b83"}, {"Ptr": "b13"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b80"}, {"Ptr": "b83"}, {"Ptr": "p96"}, {"Ptr": "p97"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b92"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b104"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b95"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b113"}, {"Ptr": "b92"}, {"Ptr": "b38"}, {"Ptr": "b104"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b33"}, {"Ptr": "b95"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_47_kernel", [{"Ptr": "b56"}, {"Ptr": "b12"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b56"}, {"Ptr": "p98"}, {"Ptr": "p99"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b83"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b80"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b50"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b92"}, {"Ptr": "b83"}, {"Ptr": "b38"}, {"Ptr": "b80"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b104"}, {"Ptr": "b50"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_48_kernel", [{"Ptr": "b95"}, {"Ptr": "b11"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b95"}, {"Ptr": "p100"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b74"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b113"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b83"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b80"}, {"Ptr": "b74"}, {"Ptr": "b38"}, {"Ptr": "b113"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b50"}, {"Ptr": "b83"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_49_kernel", [{"Ptr": "b95"}, {"Ptr": "b10"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b95"}, {"Ptr": "p102"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b92"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b74"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b113"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b83"}, {"Ptr": "b92"}, {"Ptr": "b38"}, {"Ptr": "b74"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b95"}, {"Ptr": "b113"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_50_kernel", [{"Ptr": "b56"}, {"Ptr": "b9"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b80"}, {"Ptr": "b56"}, {"Ptr": "p104"}, {"Ptr": "p105"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b92"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b74"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b113"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b56"}, {"Ptr": "b92"}, {"Ptr": "b38"}, {"Ptr": "b74"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b80"}, {"Ptr": "b113"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_51_kernel", [{"Ptr": "b83"}, {"Ptr": "output"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b92"}, {"Ptr": "b83"}, {"Ptr": "p106"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b74"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b113"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b83"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b92"}, {"Ptr": "b74"}, {"Ptr": "b38"}, {"Ptr": "b113"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b56"}, {"Ptr": "b83"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_52_kernel", [{"Ptr": "b74"}, {"Ptr": "b7"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b113"}, {"Ptr": "b74"}, {"Ptr": "p108"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b83"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b74"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b3"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b113"}, {"Ptr": "b83"}, {"Ptr": "b38"}, {"Ptr": "b74"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b92"}, {"Ptr": "b3"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_53_kernel", [{"Ptr": "b83"}, {"Ptr": "b6"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b83"}, {"Ptr": "p110"}, {"Ptr": "p111"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b3"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b83"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b2"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b74"}, {"Ptr": "b3"}, {"Ptr": "b38"}, {"Ptr": "b83"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b113"}, {"Ptr": "b2"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_54_kernel", [{"Ptr": "b83"}, {"Ptr": "b5"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b83"}, {"Ptr": "p112"}, {"Ptr": "p113"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b38"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b3"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b83"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b1"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b3"}, {"Ptr": "b38"}, {"Ptr": "b83"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b74"}, {"Ptr": "b1"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_55_kernel", [{"Ptr": "b83"}, {"Ptr": "b4"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b83"}, {"Ptr": "p114"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel", [{"Ptr": "b38"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1", [{"Ptr": "b3"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_2", [{"Ptr": "b1"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3", [{"Ptr": "b34"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4", [{"Ptr": "b35"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5", [{"Ptr": "b28"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6", [{"Ptr": "b27"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7", [{"Ptr": "b26"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8", [{"Ptr": "b25"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9", [{"Ptr": "b24"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10", [{"Ptr": "b23"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_11", [{"Ptr": "b22"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12", [{"Ptr": "b21"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13", [{"Ptr": "b20"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_14", [{"Ptr": "b19"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15", [{"Ptr": "b18"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_16", [{"Ptr": "b17"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17", [{"Ptr": "b16"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_18", [{"Ptr": "b15"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19", [{"Ptr": "b14"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20", [{"Ptr": "b13"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21", [{"Ptr": "b12"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22", [{"Ptr": "b11"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_23", [{"Ptr": "b10"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24", [{"Ptr": "b9"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25", [{"Ptr": "output"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26", [{"Ptr": "b7"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27", [{"Ptr": "b6"}, {"Ptr": "b30"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_28_kernel", [{"Ptr": "b83"}, {"Ptr": "b38"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b83"}, {"Ptr": "p117"}, {"Ptr": "p118"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b47"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b68"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "p119"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b89"}, {"Ptr": "b47"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_29_kernel", [{"Ptr": "b110"}, {"Ptr": "b3"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b110"}, {"Ptr": "p120"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b65"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b98"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b65"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b71"}, {"Ptr": "b98"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_30_kernel", [{"Ptr": "b101"}, {"Ptr": "b1"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b101"}, {"Ptr": "p122"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b62"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b86"}, {"Ptr": "b116"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_31_kernel", [{"Ptr": "b77"}, {"Ptr": "b34"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b77"}, {"Ptr": "p124"}, {"Ptr": "p125"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b41"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b104"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b41"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b50"}, {"Ptr": "b33"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_32_kernel", [{"Ptr": "b95"}, {"Ptr": "b35"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b80"}, {"Ptr": "b95"}, {"Ptr": "p126"}, {"Ptr": "p127"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b56"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b92"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b113"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b56"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b74"}, {"Ptr": "b92"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_33_kernel", [{"Ptr": "b83"}, {"Ptr": "b28"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b83"}, {"Ptr": "p128"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b47"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b110"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b53"}, {"Ptr": "b47"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_34_kernel", [{"Ptr": "b68"}, {"Ptr": "b27"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b65"}, {"Ptr": "b68"}, {"Ptr": "p130"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b98"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b101"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b98"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b36"}, {"Ptr": "b101"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_35_kernel", [{"Ptr": "b62"}, {"Ptr": "b26"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b116"}, {"Ptr": "b62"}, {"Ptr": "p132"}, {"Ptr": "p133"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b77"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b107"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b77"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b41"}, {"Ptr": "b107"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_36_kernel", [{"Ptr": "b33"}, {"Ptr": "b25"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b33"}, {"Ptr": "p134"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b80"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b104"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b56"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b80"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b92"}, {"Ptr": "b104"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_37_kernel", [{"Ptr": "b83"}, {"Ptr": "b24"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b83"}, {"Ptr": "p136"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b113"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b2"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b113"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b68"}, {"Ptr": "b2"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_38_kernel", [{"Ptr": "b65"}, {"Ptr": "b23"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b110"}, {"Ptr": "b65"}, {"Ptr": "p138"}, {"Ptr": "p139"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b98"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b101"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b98"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b116"}, {"Ptr": "b101"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_39_kernel", [{"Ptr": "b44"}, {"Ptr": "b22"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b77"}, {"Ptr": "b44"}, {"Ptr": "p140"}, {"Ptr": "p141"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b107"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b107"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b59"}, {"Ptr": "b33"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_40_kernel", [{"Ptr": "b80"}, {"Ptr": "b21"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b104"}, {"Ptr": "b80"}, {"Ptr": "p142"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b83"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b30"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b56"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b83"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b113"}, {"Ptr": "b30"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_41_kernel", [{"Ptr": "b2"}, {"Ptr": "b20"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b65"}, {"Ptr": "b2"}, {"Ptr": "p144"}, {"Ptr": "p145"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b110"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b47"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b98"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b110"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b101"}, {"Ptr": "b47"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_42_kernel", [{"Ptr": "b44"}, {"Ptr": "b19"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b77"}, {"Ptr": "b44"}, {"Ptr": "p146"}, {"Ptr": "p147"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b107"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b62"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b80"}, {"Ptr": "b107"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_43_kernel", [{"Ptr": "b104"}, {"Ptr": "b18"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b104"}, {"Ptr": "p148"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b83"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b30"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b2"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b83"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b65"}, {"Ptr": "b30"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_44_kernel", [{"Ptr": "b56"}, {"Ptr": "b17"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b110"}, {"Ptr": "b56"}, {"Ptr": "p150"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b47"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b77"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b47"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b98"}, {"Ptr": "b44"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_45_kernel", [{"Ptr": "b62"}, {"Ptr": "b16"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b62"}, {"Ptr": "p152"}, {"Ptr": "p153"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b104"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b95"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b104"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b83"}, {"Ptr": "b95"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_46_kernel", [{"Ptr": "b30"}, {"Ptr": "b15"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b30"}, {"Ptr": "p154"}, {"Ptr": "p155"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b110"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b2"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b110"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b44"}, {"Ptr": "b2"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_47_kernel", [{"Ptr": "b62"}, {"Ptr": "b14"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b62"}, {"Ptr": "p156"}, {"Ptr": "p157"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b77"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b104"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b77"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b30"}, {"Ptr": "b104"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_48_kernel", [{"Ptr": "b56"}, {"Ptr": "b13"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b33"}, {"Ptr": "b56"}, {"Ptr": "p158"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b110"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b2"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b110"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b107"}, {"Ptr": "b2"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_49_kernel", [{"Ptr": "b47"}, {"Ptr": "b12"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b77"}, {"Ptr": "b47"}, {"Ptr": "p160"}, {"Ptr": "p161"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b104"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b56"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b104"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b95"}, {"Ptr": "b56"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_50_kernel", [{"Ptr": "b110"}, {"Ptr": "b11"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b2"}, {"Ptr": "b110"}, {"Ptr": "p162"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b47"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b77"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b47"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b104"}, {"Ptr": "b77"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_51_kernel", [{"Ptr": "b56"}, {"Ptr": "b10"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b110"}, {"Ptr": "b56"}, {"Ptr": "p164"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b77"}, {"Ptr": "b33"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_52_kernel", [{"Ptr": "b56"}, {"Ptr": "b9"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b110"}, {"Ptr": "b56"}, {"Ptr": "p166"}, {"Ptr": "p167"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b2"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b62"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b56"}, {"Ptr": "b2"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_53_kernel", [{"Ptr": "b110"}, {"Ptr": "output"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b47"}, {"Ptr": "b110"}, {"Ptr": "p168"}, {"Ptr": "p169"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b2"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b110"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b62"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b47"}, {"Ptr": "b2"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_54_kernel", [{"Ptr": "b33"}, {"Ptr": "b7"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b62"}, {"Ptr": "b33"}, {"Ptr": "p170"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b5"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b4"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b4"}, {"Ptr": "b5"}, {"Ptr": "b2"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b110"}, {"Ptr": "b33"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_55_kernel", [{"Ptr": "b2"}, {"Ptr": "b6"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b33"}, {"Ptr": "b2"}, {"Ptr": "p172"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel", [{"Ptr": "b5"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1", [{"Ptr": "b4"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_2", [{"Ptr": "b38"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3", [{"Ptr": "b3"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4", [{"Ptr": "b1"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5", [{"Ptr": "b34"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6", [{"Ptr": "b35"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7", [{"Ptr": "b28"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8", [{"Ptr": "b27"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9", [{"Ptr": "b26"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10", [{"Ptr": "b25"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_11", [{"Ptr": "b24"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12", [{"Ptr": "b23"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13", [{"Ptr": "b22"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_14", [{"Ptr": "b21"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15", [{"Ptr": "b20"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_16", [{"Ptr": "b19"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17", [{"Ptr": "b18"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_18", [{"Ptr": "b17"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19", [{"Ptr": "b16"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20", [{"Ptr": "b15"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21", [{"Ptr": "b14"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22", [{"Ptr": "b13"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_23", [{"Ptr": "b12"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24", [{"Ptr": "b11"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25", [{"Ptr": "b10"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26", [{"Ptr": "b9"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27", [{"Ptr": "output"}, {"Ptr": "b33"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_28_kernel", [{"Ptr": "b2"}, {"Ptr": "b5"}, {"Ptr": "p174"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b33"}, {"Ptr": "b2"}, {"Ptr": "p175"}, {"Ptr": "p176"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b89"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b71"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b62"}, {"Ptr": "p177"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b86"}, {"Ptr": "b89"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_29_kernel", [{"Ptr": "b50"}, {"Ptr": "b4"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b50"}, {"Ptr": "p178"}, {"Ptr": "p179"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b53"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b36"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b53"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b92"}, {"Ptr": "b36"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_30_kernel", [{"Ptr": "b68"}, {"Ptr": "b38"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b116"}, {"Ptr": "b68"}, {"Ptr": "p180"}, {"Ptr": "p181"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b113"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b59"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b80"}, {"Ptr": "b113"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_31_kernel", [{"Ptr": "b65"}, {"Ptr": "b3"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b98"}, {"Ptr": "b65"}, {"Ptr": "p182"}, {"Ptr": "p183"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b83"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b30"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b83"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b107"}, {"Ptr": "b44"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_32_kernel", [{"Ptr": "b95"}, {"Ptr": "b1"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b104"}, {"Ptr": "b95"}, {"Ptr": "p184"}, {"Ptr": "p185"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b77"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b56"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b77"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b110"}, {"Ptr": "b56"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_33_kernel", [{"Ptr": "b2"}, {"Ptr": "b34"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b33"}, {"Ptr": "b2"}, {"Ptr": "p186"}, {"Ptr": "p187"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b89"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b62"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b74"}, {"Ptr": "b89"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_34_kernel", [{"Ptr": "b71"}, {"Ptr": "b35"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b71"}, {"Ptr": "p188"}, {"Ptr": "p189"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b36"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b68"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b116"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b36"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b41"}, {"Ptr": "b68"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_35_kernel", [{"Ptr": "b59"}, {"Ptr": "b28"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b113"}, {"Ptr": "b59"}, {"Ptr": "p190"}, {"Ptr": "p191"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b65"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b98"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b65"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b83"}, {"Ptr": "b98"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_36_kernel", [{"Ptr": "b44"}, {"Ptr": "b27"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b44"}, {"Ptr": "p192"}, {"Ptr": "p193"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b104"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b30"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b77"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b104"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b56"}, {"Ptr": "b30"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_37_kernel", [{"Ptr": "b2"}, {"Ptr": "b26"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b33"}, {"Ptr": "b2"}, {"Ptr": "p194"}, {"Ptr": "p195"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b47"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b89"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b47"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b71"}, {"Ptr": "b62"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_38_kernel", [{"Ptr": "b53"}, {"Ptr": "b25"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b53"}, {"Ptr": "p196"}, {"Ptr": "p197"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b36"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b68"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b36"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b113"}, {"Ptr": "b68"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_39_kernel", [{"Ptr": "b116"}, {"Ptr": "b24"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b65"}, {"Ptr": "b116"}, {"Ptr": "p198"}, {"Ptr": "p199"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b98"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b98"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b101"}, {"Ptr": "b44"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_40_kernel", [{"Ptr": "b104"}, {"Ptr": "b23"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b104"}, {"Ptr": "p200"}, {"Ptr": "p201"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b77"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b2"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b47"}, {"Ptr": "b33"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_41_kernel", [{"Ptr": "b62"}, {"Ptr": "b22"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b62"}, {"Ptr": "p202"}, {"Ptr": "p203"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b50"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b89"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b50"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b68"}, {"Ptr": "b89"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_42_kernel", [{"Ptr": "b116"}, {"Ptr": "b21"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b65"}, {"Ptr": "b116"}, {"Ptr": "p204"}, {"Ptr": "p205"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b98"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b59"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b104"}, {"Ptr": "b98"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_43_kernel", [{"Ptr": "b30"}, {"Ptr": "b20"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b30"}, {"Ptr": "p206"}, {"Ptr": "p207"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b2"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b53"}, {"Ptr": "b33"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_44_kernel", [{"Ptr": "b77"}, {"Ptr": "b19"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b77"}, {"Ptr": "p208"}, {"Ptr": "p209"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b89"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b65"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b89"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b36"}, {"Ptr": "b116"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_45_kernel", [{"Ptr": "b59"}, {"Ptr": "b18"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b98"}, {"Ptr": "b59"}, {"Ptr": "p210"}, {"Ptr": "p211"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b95"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b30"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b2"}, {"Ptr": "b95"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_46_kernel", [{"Ptr": "b33"}, {"Ptr": "b17"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b77"}, {"Ptr": "b33"}, {"Ptr": "p212"}, {"Ptr": "p213"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b50"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b89"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b50"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b116"}, {"Ptr": "b62"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_47_kernel", [{"Ptr": "b59"}, {"Ptr": "b16"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b98"}, {"Ptr": "b59"}, {"Ptr": "p214"}, {"Ptr": "p215"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b65"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b30"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b65"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b33"}, {"Ptr": "b30"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_48_kernel", [{"Ptr": "b77"}, {"Ptr": "b15"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b77"}, {"Ptr": "p216"}, {"Ptr": "p217"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b50"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b50"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b98"}, {"Ptr": "b62"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_49_kernel", [{"Ptr": "b89"}, {"Ptr": "b14"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b65"}, {"Ptr": "b89"}, {"Ptr": "p218"}, {"Ptr": "p219"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b77"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b30"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b95"}, {"Ptr": "b77"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_50_kernel", [{"Ptr": "b50"}, {"Ptr": "b13"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b62"}, {"Ptr": "b50"}, {"Ptr": "p220"}, {"Ptr": "p221"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b89"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b65"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b89"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b30"}, {"Ptr": "b65"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_51_kernel", [{"Ptr": "b77"}, {"Ptr": "b12"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b77"}, {"Ptr": "p222"}, {"Ptr": "p223"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b89"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b62"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b65"}, {"Ptr": "b44"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_52_kernel", [{"Ptr": "b77"}, {"Ptr": "b11"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b77"}, {"Ptr": "p224"}, {"Ptr": "p225"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b59"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b77"}, {"Ptr": "b62"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_53_kernel", [{"Ptr": "b50"}, {"Ptr": "b10"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b89"}, {"Ptr": "b50"}, {"Ptr": "p226"}, {"Ptr": "p227"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b62"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b59"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b89"}, {"Ptr": "b62"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_54_kernel", [{"Ptr": "b44"}, {"Ptr": "b9"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b59"}, {"Ptr": "b44"}, {"Ptr": "p228"}, {"Ptr": "p229"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b7"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "b6"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "b62"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b50"}, {"Ptr": "b44"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_55_kernel", [{"Ptr": "b62"}, {"Ptr": "output"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b62"}, {"Ptr": "p230"}, {"Ptr": "p231"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel", [{"Ptr": "b7"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_1", [{"Ptr": "b6"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_2", [{"Ptr": "b5"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_3", [{"Ptr": "b4"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_4", [{"Ptr": "b38"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_5", [{"Ptr": "b3"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_6", [{"Ptr": "b1"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_7", [{"Ptr": "b34"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_8", [{"Ptr": "b35"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_9", [{"Ptr": "b28"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_10", [{"Ptr": "b27"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_11", [{"Ptr": "b26"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_12", [{"Ptr": "b25"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_13", [{"Ptr": "b24"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_14", [{"Ptr": "b23"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_15", [{"Ptr": "b22"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_16", [{"Ptr": "b21"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_17", [{"Ptr": "b20"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_18", [{"Ptr": "b19"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_19", [{"Ptr": "b18"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_20", [{"Ptr": "b17"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_21", [{"Ptr": "b16"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_22", [{"Ptr": "b15"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_23", [{"Ptr": "b14"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_24", [{"Ptr": "b13"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_25", [{"Ptr": "b12"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_26", [{"Ptr": "b11"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_2bcd01aae566f75b__kernel_27", [{"Ptr": "b10"}, {"Ptr": "b44"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_28_kernel", [{"Ptr": "b62"}, {"Ptr": "b7"}, {"Ptr": "p232"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b62"}, {"Ptr": "p233"}, {"Ptr": "p234"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b86"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b92"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b59"}, {"Ptr": "p235"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b80"}, {"Ptr": "b86"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_29_kernel", [{"Ptr": "b107"}, {"Ptr": "b6"}, {"Ptr": "b80"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b110"}, {"Ptr": "b107"}, {"Ptr": "p236"}, {"Ptr": "p237"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b74"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b41"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b83"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b74"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b56"}, {"Ptr": "b41"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_30_kernel", [{"Ptr": "b71"}, {"Ptr": "b5"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b113"}, {"Ptr": "b71"}, {"Ptr": "p238"}, {"Ptr": "p239"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b101"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b47"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b68"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b101"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b104"}, {"Ptr": "b47"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_31_kernel", [{"Ptr": "b53"}, {"Ptr": "b4"}, {"Ptr": "b104"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b53"}, {"Ptr": "p240"}, {"Ptr": "p241"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b33"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b2"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b98"}, {"Ptr": "b116"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_32_kernel", [{"Ptr": "b95"}, {"Ptr": "b38"}, {"Ptr": "b98"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b30"}, {"Ptr": "b95"}, {"Ptr": "p242"}, {"Ptr": "p243"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b65"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b77"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b89"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b65"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b50"}, {"Ptr": "b77"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_33_kernel", [{"Ptr": "b62"}, {"Ptr": "b3"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b62"}, {"Ptr": "p244"}, {"Ptr": "p245"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b86"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b107"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b59"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b110"}, {"Ptr": "b86"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_34_kernel", [{"Ptr": "b92"}, {"Ptr": "b1"}, {"Ptr": "b110"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b92"}, {"Ptr": "p246"}, {"Ptr": "p247"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b41"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b71"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b113"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b41"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b83"}, {"Ptr": "b71"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_35_kernel", [{"Ptr": "b101"}, {"Ptr": "b34"}, {"Ptr": "b83"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b47"}, {"Ptr": "b101"}, {"Ptr": "p248"}, {"Ptr": "p249"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b53"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b36"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b68"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b53"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b2"}, {"Ptr": "b36"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_36_kernel", [{"Ptr": "b116"}, {"Ptr": "b35"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b116"}, {"Ptr": "p250"}, {"Ptr": "p251"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b30"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b65"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b30"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b77"}, {"Ptr": "b33"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_37_kernel", [{"Ptr": "b62"}, {"Ptr": "b28"}, {"Ptr": "b77"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b62"}, {"Ptr": "p252"}, {"Ptr": "p253"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b89"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b86"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b89"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b92"}, {"Ptr": "b59"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_38_kernel", [{"Ptr": "b74"}, {"Ptr": "b27"}, {"Ptr": "b92"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b74"}, {"Ptr": "p254"}, {"Ptr": "p255"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b41"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b71"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b41"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b47"}, {"Ptr": "b71"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_39_kernel", [{"Ptr": "b113"}, {"Ptr": "b26"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b113"}, {"Ptr": "p256"}, {"Ptr": "p257"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b36"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b36"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b68"}, {"Ptr": "b116"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_40_kernel", [{"Ptr": "b30"}, {"Ptr": "b25"}, {"Ptr": "b68"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b33"}, {"Ptr": "b30"}, {"Ptr": "p258"}, {"Ptr": "p259"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b65"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b62"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b89"}, {"Ptr": "b44"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_41_kernel", [{"Ptr": "b59"}, {"Ptr": "b24"}, {"Ptr": "b89"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b74"}, {"Ptr": "b59"}, {"Ptr": "p260"}, {"Ptr": "p261"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b107"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b86"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b41"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b107"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b71"}, {"Ptr": "b86"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_42_kernel", [{"Ptr": "b113"}, {"Ptr": "b23"}, {"Ptr": "b71"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b113"}, {"Ptr": "p262"}, {"Ptr": "p263"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b101"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b36"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b116"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b101"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b30"}, {"Ptr": "b36"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_43_kernel", [{"Ptr": "b33"}, {"Ptr": "b22"}, {"Ptr": "b30"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b95"}, {"Ptr": "b33"}, {"Ptr": "p264"}, {"Ptr": "p265"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b62"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b44"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b59"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b62"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b74"}, {"Ptr": "b44"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_44_kernel", [{"Ptr": "b65"}, {"Ptr": "b21"}, {"Ptr": "b74"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b65"}, {"Ptr": "p266"}, {"Ptr": "p267"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b86"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b113"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b53"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b86"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b41"}, {"Ptr": "b113"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_45_kernel", [{"Ptr": "b101"}, {"Ptr": "b20"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b101"}, {"Ptr": "p268"}, {"Ptr": "p269"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b33"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b95"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b116"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b33"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b62"}, {"Ptr": "b95"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_46_kernel", [{"Ptr": "b44"}, {"Ptr": "b19"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b65"}, {"Ptr": "b44"}, {"Ptr": "p270"}, {"Ptr": "p271"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b107"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b86"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b107"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b113"}, {"Ptr": "b59"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_47_kernel", [{"Ptr": "b101"}, {"Ptr": "b18"}, {"Ptr": "b113"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b101"}, {"Ptr": "p272"}, {"Ptr": "p273"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b53"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b33"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b95"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b53"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b44"}, {"Ptr": "b33"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_48_kernel", [{"Ptr": "b65"}, {"Ptr": "b17"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b116"}, {"Ptr": "b65"}, {"Ptr": "p274"}, {"Ptr": "p275"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b107"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b107"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b36"}, {"Ptr": "b59"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_49_kernel", [{"Ptr": "b86"}, {"Ptr": "b16"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b86"}, {"Ptr": "p276"}, {"Ptr": "p277"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b33"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b65"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b116"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b33"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b95"}, {"Ptr": "b65"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_50_kernel", [{"Ptr": "b107"}, {"Ptr": "b15"}, {"Ptr": "b95"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b59"}, {"Ptr": "b107"}, {"Ptr": "p278"}, {"Ptr": "p279"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b86"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b53"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b86"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b33"}, {"Ptr": "b53"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_51_kernel", [{"Ptr": "b65"}, {"Ptr": "b14"}, {"Ptr": "b33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b65"}, {"Ptr": "p280"}, {"Ptr": "p281"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b86"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b59"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b53"}, {"Ptr": "b116"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_52_kernel", [{"Ptr": "b65"}, {"Ptr": "b13"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b107"}, {"Ptr": "b65"}, {"Ptr": "p282"}, {"Ptr": "p283"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b101"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b116"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b101"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b65"}, {"Ptr": "b59"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_53_kernel", [{"Ptr": "b107"}, {"Ptr": "b12"}, {"Ptr": "b65"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b86"}, {"Ptr": "b107"}, {"Ptr": "p284"}, {"Ptr": "p285"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b101"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b59"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b107"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b101"}, {"Ptr": "b116"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b86"}, {"Ptr": "b59"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_54_kernel", [{"Ptr": "b116"}, {"Ptr": "b11"}, {"Ptr": "b86"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b101"}, {"Ptr": "b116"}, {"Ptr": "p286"}, {"Ptr": "p287"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel", [{"Ptr": "b9"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_1", [{"Ptr": "output"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_2", [{"Ptr": "b59"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_kernel_3", [{"Ptr": "b116"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_multiply_sigmoid_tanh_multiply_add_kernel", [{"Ptr": "b101"}, {"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "b59"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_sigmoid_tanh_multiply_kernel", [{"Ptr": "b107"}, {"Ptr": "b116"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_concatenate_55_kernel", [{"Ptr": "b59"}, {"Ptr": "b10"}, {"Ptr": "b107"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "b116"}, {"Ptr": "b59"}, {"Ptr": "p288"}, {"Ptr": "p289"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_split_sigmoid_sigmoid_multiply_sigmoid_tanh_multiply_add_tanh_multiply_sta_4e0306112785fa15__kernel", [{"Ptr": "b9"}, {"Ptr": "b116"}, {"Ptr": "b101"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_2_kernel", [{"Ptr": "output"}, {"Ptr": "b9"}, {"Ptr": "p290"}, {"Ptr": "p291"}], { + "grid_dim_x": {"Absolute": 10}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_cuda_matmul.json b/machine_interface/tests/data/cuda/test_gpu_matmul.json similarity index 100% rename from machine_interface/tests/data/test_gpu_cuda_matmul.json rename to machine_interface/tests/data/cuda/test_gpu_matmul.json diff --git a/machine_interface/tests/data/test_gpu_cuda_minimal.json b/machine_interface/tests/data/cuda/test_gpu_minimal.json similarity index 100% rename from machine_interface/tests/data/test_gpu_cuda_minimal.json rename to machine_interface/tests/data/cuda/test_gpu_minimal.json diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet18.json b/machine_interface/tests/data/cuda/test_gpu_resnet18.json new file mode 100644 index 00000000..b1117405 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_resnet18.json @@ -0,0 +1,497 @@ +{ + "modules": [{"module_name": "resnet18.cubin", "path": "cuda/resnet18.cubin"}], + "kernels": [ + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"} + ], + "blueprint": { + "inputs": ["input", "p36", "p38", "p0", "p1", "p2", "p3", "p5", "p7", "p9", "p11", "p13", "p14", "p15", "p17", "p19", "p21", "p23", "p25", "p27", "p29", "p31", "p33", "p35", "p4", "p6", "p37", "p39", "p41", "p8", "p10", "p12", "p24", "p16", "p18", "p20", "p34", "p22", "p26", "p28", "p40", "p30", "p32"], + "buffers": {"b4": {"Absolute": 802816}, "b3": {"Absolute": 3211264}, "b9": {"Absolute": 802816}, "b40": {"Absolute": 100352}, "b45": {"Absolute": 2048}, "b49": {"Absolute": 1806336}, "b50": {"Absolute": 1806336}, "output": {"Absolute": 4000}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 112}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 8}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_max_pool2d_kernel", [{"Ptr": "b3"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b50"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel", [{"Ptr": "b49"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b50"}, {"Ptr": "p5"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel", [{"Ptr": "b49"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b50"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 36}, + "block_dim_x": {"Absolute": 98}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b50"}, {"Ptr": "p9"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 4}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p14"}, {"Ptr": "p15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 28}, + "grid_dim_z": {"Absolute": 2}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b50"}, {"Ptr": "p13"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel", [{"Ptr": "b49"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b50"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 4}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b50"}, {"Ptr": "p19"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel", [{"Ptr": "b4"}, {"Ptr": "b9"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b9"}, {"Ptr": "p24"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 14}, + "grid_dim_z": {"Absolute": 8}, + "block_dim_x": {"Absolute": 14}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b50"}, {"Ptr": "p23"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel", [{"Ptr": "b49"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b50"}, {"Ptr": "p27"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 49}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2", [{"Ptr": "b3"}, {"Ptr": "b50"}, {"Ptr": "p29"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel", [{"Ptr": "b4"}, {"Ptr": "b3"}, {"Ptr": "p30"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 32}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_2_kernel", [{"Ptr": "b9"}, {"Ptr": "b3"}, {"Ptr": "p34"}, {"Ptr": "p35"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 7}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 7}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 32}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2", [{"Ptr": "b40"}, {"Ptr": "b50"}, {"Ptr": "p33"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel", [{"Ptr": "b49"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2", [{"Ptr": "b4"}, {"Ptr": "b50"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 16}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2", [{"Ptr": "b9"}, {"Ptr": "b50"}, {"Ptr": "p39"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel", [{"Ptr": "b49"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 16}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_global_avg_pool2d_kernel_1", [{"Ptr": "b45"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "output"}, {"Ptr": "b45"}, {"Ptr": "p40"}, {"Ptr": "p41"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_rnn.json b/machine_interface/tests/data/cuda/test_gpu_rnn.json new file mode 100644 index 00000000..f04fa074 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_rnn.json @@ -0,0 +1,5144 @@ +{ + "modules": [{"module_name": "rnn.cubin", "path": "cuda/rnn.cubin"}], + "kernels": [ + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_35_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_9"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_16"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_24"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_50_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_12"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_27"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_33_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_10_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_49_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_7"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_5"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_8_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_10"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_34_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_14"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_39_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_55_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_24_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_20"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_30_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_18"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_53_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_21"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_20_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_38_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_5_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_8"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_54_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_13_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_23_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_26_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_12_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_41_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_22"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_21_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_23"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_44_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_43_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_25"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_4_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_7_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_6"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_18_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_40_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_51_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_25_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_27_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_6_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_19_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_28_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_4"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_46_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_13"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_tanh_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_15_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_37_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_31_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_48_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_22_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_19"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_11"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_42_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_2_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_45_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_11"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_32_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_13"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_tanh_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_3_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_14_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_15"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_36_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_15"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_add_tanh_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_3"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_17_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_22"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_26"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_9_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_17"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_26"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_47_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_1"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_5"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_transpose_take_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_16_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_11_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_7"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_52_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_squeeze_29_kernel"}, + {"module_name": "rnn.cubin", "kernel_name": "tvmgen_default_fused_transpose_split_kernel_2"} + ], + "blueprint": { + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26"], + "buffers": {"b1": {"Absolute": 512}, "b2": {"Absolute": 512}, "b3": {"Absolute": 512}, "b4": {"Absolute": 512}, "b5": {"Absolute": 512}, "b6": {"Absolute": 512}, "b7": {"Absolute": 512}, "b8": {"Absolute": 512}, "b9": {"Absolute": 512}, "b10": {"Absolute": 512}, "b11": {"Absolute": 512}, "b12": {"Absolute": 512}, "b13": {"Absolute": 512}, "b14": {"Absolute": 512}, "b15": {"Absolute": 512}, "b16": {"Absolute": 512}, "b17": {"Absolute": 512}, "b18": {"Absolute": 512}, "b19": {"Absolute": 512}, "b20": {"Absolute": 512}, "b21": {"Absolute": 512}, "b22": {"Absolute": 512}, "b23": {"Absolute": 512}, "b25": {"Absolute": 512}, "b26": {"Absolute": 512}, "b27": {"Absolute": 512}, "b28": {"Absolute": 512}, "b29": {"Absolute": 512}, "b32": {"Absolute": 512}, "b36": {"Absolute": 512}, "b37": {"Absolute": 512}, "b38": {"Absolute": 512}, "b39": {"Absolute": 512}, "b40": {"Absolute": 512}, "b41": {"Absolute": 512}, "b42": {"Absolute": 512}, "b43": {"Absolute": 512}, "b44": {"Absolute": 512}, "b45": {"Absolute": 512}, "b46": {"Absolute": 512}, "b47": {"Absolute": 512}, "b48": {"Absolute": 512}, "b49": {"Absolute": 512}, "b50": {"Absolute": 512}, "b51": {"Absolute": 512}, "b52": {"Absolute": 512}, "b53": {"Absolute": 512}, "b54": {"Absolute": 512}, "b55": {"Absolute": 512}, "b56": {"Absolute": 512}, "b57": {"Absolute": 512}, "b58": {"Absolute": 512}, "b59": {"Absolute": 512}, "b60": {"Absolute": 512}, "b61": {"Absolute": 512}, "b62": {"Absolute": 512}, "output": {"Absolute": 512}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel", [{"Ptr": "b1"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_1", [{"Ptr": "b2"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_2", [{"Ptr": "b3"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_3", [{"Ptr": "b4"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_4", [{"Ptr": "b5"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_5", [{"Ptr": "b6"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_6", [{"Ptr": "b7"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_7", [{"Ptr": "b8"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_8", [{"Ptr": "b9"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_9", [{"Ptr": "b10"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_10", [{"Ptr": "b11"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_11", [{"Ptr": "b12"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_12", [{"Ptr": "b13"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_13", [{"Ptr": "b14"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_14", [{"Ptr": "b15"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_15", [{"Ptr": "b16"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_16", [{"Ptr": "b17"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_17", [{"Ptr": "b18"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_18", [{"Ptr": "b19"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_19", [{"Ptr": "b20"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_20", [{"Ptr": "b21"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_21", [{"Ptr": "b22"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_22", [{"Ptr": "b23"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_23", [{"Ptr": "output"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_24", [{"Ptr": "b25"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_25", [{"Ptr": "b26"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_26", [{"Ptr": "b27"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_transpose_split_kernel_27", [{"Ptr": "b28"}, {"Ptr": "input"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_kernel", [{"Ptr": "b29"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_tanh_kernel", [{"Ptr": "b32"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b32"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b37"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_2_kernel", [{"Ptr": "b29"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b37"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_3_kernel", [{"Ptr": "b29"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b38"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b39"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_4_kernel", [{"Ptr": "b29"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b39"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b40"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_5_kernel", [{"Ptr": "b29"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b40"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b41"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_6_kernel", [{"Ptr": "b29"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b41"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b42"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_7_kernel", [{"Ptr": "b29"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b42"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b43"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_8_kernel", [{"Ptr": "b29"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b43"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b44"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_9_kernel", [{"Ptr": "b29"}, {"Ptr": "b10"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b44"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b45"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_10_kernel", [{"Ptr": "b29"}, {"Ptr": "b11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b45"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b46"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_11_kernel", [{"Ptr": "b29"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b46"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b47"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_12_kernel", [{"Ptr": "b29"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b47"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b48"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_13_kernel", [{"Ptr": "b29"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b48"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b49"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_14_kernel", [{"Ptr": "b29"}, {"Ptr": "b15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b49"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b50"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_15_kernel", [{"Ptr": "b29"}, {"Ptr": "b16"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b50"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b51"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_16_kernel", [{"Ptr": "b29"}, {"Ptr": "b17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b51"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b52"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_17_kernel", [{"Ptr": "b29"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b52"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b53"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_18_kernel", [{"Ptr": "b29"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b53"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b54"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_19_kernel", [{"Ptr": "b29"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b54"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b55"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_20_kernel", [{"Ptr": "b29"}, {"Ptr": "b21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b55"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b56"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_21_kernel", [{"Ptr": "b29"}, {"Ptr": "b22"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b56"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b57"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_22_kernel", [{"Ptr": "b29"}, {"Ptr": "b23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b57"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b58"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_23_kernel", [{"Ptr": "b29"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b58"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b59"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_24_kernel", [{"Ptr": "b29"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b59"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b60"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_25_kernel", [{"Ptr": "b29"}, {"Ptr": "b26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b60"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b61"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_26_kernel", [{"Ptr": "b29"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b61"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b62"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_27_kernel", [{"Ptr": "b29"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 28}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b36"}, {"Ptr": "b62"}, {"Ptr": "p3"}, {"Ptr": "p4"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_kernel", [{"Ptr": "b28"}, {"Ptr": "b29"}, {"Ptr": "p0"}, {"Ptr": "p2"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel", [{"Ptr": "b36"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1", [{"Ptr": "b29"}, {"Ptr": "b37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2", [{"Ptr": "b27"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3", [{"Ptr": "b26"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4", [{"Ptr": "b25"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_5", [{"Ptr": "output"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6", [{"Ptr": "b23"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_7", [{"Ptr": "b22"}, {"Ptr": "b43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8", [{"Ptr": "b21"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9", [{"Ptr": "b20"}, {"Ptr": "b45"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10", [{"Ptr": "b19"}, {"Ptr": "b46"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_11", [{"Ptr": "b18"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12", [{"Ptr": "b17"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_13", [{"Ptr": "b16"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14", [{"Ptr": "b15"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_15", [{"Ptr": "b14"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16", [{"Ptr": "b13"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17", [{"Ptr": "b12"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18", [{"Ptr": "b11"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19", [{"Ptr": "b10"}, {"Ptr": "b55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20", [{"Ptr": "b9"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21", [{"Ptr": "b8"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_22", [{"Ptr": "b7"}, {"Ptr": "b58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23", [{"Ptr": "b6"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24", [{"Ptr": "b5"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25", [{"Ptr": "b4"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_26", [{"Ptr": "b3"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27", [{"Ptr": "b2"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_28_kernel", [{"Ptr": "b32"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_tanh_1_kernel", [{"Ptr": "b37"}, {"Ptr": "b32"}, {"Ptr": "p5"}, {"Ptr": "p6"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_29_kernel", [{"Ptr": "b38"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b37"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b38"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_30_kernel", [{"Ptr": "b41"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b42"}, {"Ptr": "b40"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b43"}, {"Ptr": "b41"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_31_kernel", [{"Ptr": "b44"}, {"Ptr": "b26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b45"}, {"Ptr": "b43"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b46"}, {"Ptr": "b44"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b45"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_32_kernel", [{"Ptr": "b47"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b48"}, {"Ptr": "b46"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b49"}, {"Ptr": "b47"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_33_kernel", [{"Ptr": "b50"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b49"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b52"}, {"Ptr": "b50"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_34_kernel", [{"Ptr": "b53"}, {"Ptr": "b23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b54"}, {"Ptr": "b52"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b55"}, {"Ptr": "b53"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_35_kernel", [{"Ptr": "b56"}, {"Ptr": "b22"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b55"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b58"}, {"Ptr": "b56"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_36_kernel", [{"Ptr": "b59"}, {"Ptr": "b21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b58"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b61"}, {"Ptr": "b59"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_37_kernel", [{"Ptr": "b62"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b28"}, {"Ptr": "b61"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b32"}, {"Ptr": "b62"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_38_kernel", [{"Ptr": "b38"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b32"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_39_kernel", [{"Ptr": "b42"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b41"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b45"}, {"Ptr": "b42"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_40_kernel", [{"Ptr": "b47"}, {"Ptr": "b17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b48"}, {"Ptr": "b45"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b47"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_41_kernel", [{"Ptr": "b51"}, {"Ptr": "b16"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b53"}, {"Ptr": "b50"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b54"}, {"Ptr": "b51"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_42_kernel", [{"Ptr": "b56"}, {"Ptr": "b15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b54"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b59"}, {"Ptr": "b56"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_43_kernel", [{"Ptr": "b60"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b59"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b28"}, {"Ptr": "b60"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_44_kernel", [{"Ptr": "b38"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b28"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b42"}, {"Ptr": "b38"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_45_kernel", [{"Ptr": "b44"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b42"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b48"}, {"Ptr": "b44"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_46_kernel", [{"Ptr": "b51"}, {"Ptr": "b11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b53"}, {"Ptr": "b48"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b51"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_47_kernel", [{"Ptr": "b57"}, {"Ptr": "b10"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b56"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b62"}, {"Ptr": "b57"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_48_kernel", [{"Ptr": "b38"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b62"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b38"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_49_kernel", [{"Ptr": "b47"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b44"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b47"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_50_kernel", [{"Ptr": "b57"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b53"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b38"}, {"Ptr": "b57"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_51_kernel", [{"Ptr": "b39"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b47"}, {"Ptr": "b38"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b51"}, {"Ptr": "b39"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_52_kernel", [{"Ptr": "b57"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b51"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b57"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_53_kernel", [{"Ptr": "b47"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b39"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b60"}, {"Ptr": "b47"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_54_kernel", [{"Ptr": "b47"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b60"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b1"}, {"Ptr": "b47"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_55_kernel", [{"Ptr": "b47"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b1"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b47"}, {"Ptr": "p5"}, {"Ptr": "p7"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel", [{"Ptr": "b29"}, {"Ptr": "b37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1", [{"Ptr": "b27"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2", [{"Ptr": "b26"}, {"Ptr": "b43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3", [{"Ptr": "b25"}, {"Ptr": "b46"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4", [{"Ptr": "output"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_5", [{"Ptr": "b23"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6", [{"Ptr": "b22"}, {"Ptr": "b55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_7", [{"Ptr": "b21"}, {"Ptr": "b58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8", [{"Ptr": "b20"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9", [{"Ptr": "b19"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10", [{"Ptr": "b18"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_11", [{"Ptr": "b17"}, {"Ptr": "b45"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12", [{"Ptr": "b16"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_13", [{"Ptr": "b15"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14", [{"Ptr": "b14"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_15", [{"Ptr": "b13"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16", [{"Ptr": "b12"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17", [{"Ptr": "b11"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18", [{"Ptr": "b10"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19", [{"Ptr": "b9"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20", [{"Ptr": "b8"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21", [{"Ptr": "b7"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_22", [{"Ptr": "b6"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23", [{"Ptr": "b5"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24", [{"Ptr": "b4"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25", [{"Ptr": "b3"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_26", [{"Ptr": "b2"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27", [{"Ptr": "b47"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_28_kernel", [{"Ptr": "b57"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_tanh_1_kernel", [{"Ptr": "b37"}, {"Ptr": "b57"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_29_kernel", [{"Ptr": "b40"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b43"}, {"Ptr": "b37"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b46"}, {"Ptr": "b40"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b43"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_30_kernel", [{"Ptr": "b49"}, {"Ptr": "b26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b52"}, {"Ptr": "b46"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b55"}, {"Ptr": "b49"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_31_kernel", [{"Ptr": "b58"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b61"}, {"Ptr": "b55"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b32"}, {"Ptr": "b58"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_32_kernel", [{"Ptr": "b41"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b45"}, {"Ptr": "b32"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b41"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b45"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_33_kernel", [{"Ptr": "b54"}, {"Ptr": "b23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b50"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b28"}, {"Ptr": "b54"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_34_kernel", [{"Ptr": "b42"}, {"Ptr": "b22"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b48"}, {"Ptr": "b28"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b42"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_35_kernel", [{"Ptr": "b62"}, {"Ptr": "b21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b56"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b62"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_36_kernel", [{"Ptr": "b38"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b53"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b38"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_37_kernel", [{"Ptr": "b60"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b39"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b60"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_38_kernel", [{"Ptr": "b57"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b36"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b43"}, {"Ptr": "b57"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_39_kernel", [{"Ptr": "b49"}, {"Ptr": "b17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b52"}, {"Ptr": "b43"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b58"}, {"Ptr": "b49"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_40_kernel", [{"Ptr": "b61"}, {"Ptr": "b16"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b41"}, {"Ptr": "b58"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b45"}, {"Ptr": "b61"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_41_kernel", [{"Ptr": "b54"}, {"Ptr": "b15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b59"}, {"Ptr": "b45"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b42"}, {"Ptr": "b54"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_42_kernel", [{"Ptr": "b48"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b42"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b48"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_43_kernel", [{"Ptr": "b38"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b44"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b60"}, {"Ptr": "b38"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_44_kernel", [{"Ptr": "b1"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b60"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b1"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_45_kernel", [{"Ptr": "b49"}, {"Ptr": "b11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b52"}, {"Ptr": "b40"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b61"}, {"Ptr": "b49"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_46_kernel", [{"Ptr": "b41"}, {"Ptr": "b10"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b54"}, {"Ptr": "b61"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b59"}, {"Ptr": "b41"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_47_kernel", [{"Ptr": "b48"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b59"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b38"}, {"Ptr": "b48"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_48_kernel", [{"Ptr": "b51"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b38"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b57"}, {"Ptr": "b51"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_49_kernel", [{"Ptr": "b49"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b52"}, {"Ptr": "b57"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b49"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_50_kernel", [{"Ptr": "b54"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b48"}, {"Ptr": "b41"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b62"}, {"Ptr": "b54"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_51_kernel", [{"Ptr": "b51"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b62"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b49"}, {"Ptr": "b51"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_52_kernel", [{"Ptr": "b52"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b54"}, {"Ptr": "b49"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b48"}, {"Ptr": "b52"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_53_kernel", [{"Ptr": "b51"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b48"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b52"}, {"Ptr": "b51"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_54_kernel", [{"Ptr": "b54"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b52"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b1"}, {"Ptr": "b54"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_55_kernel", [{"Ptr": "b54"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b1"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b54"}, {"Ptr": "p10"}, {"Ptr": "p12"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel", [{"Ptr": "b27"}, {"Ptr": "b37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1", [{"Ptr": "b26"}, {"Ptr": "b46"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2", [{"Ptr": "b25"}, {"Ptr": "b55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3", [{"Ptr": "output"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4", [{"Ptr": "b23"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_5", [{"Ptr": "b22"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6", [{"Ptr": "b21"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_7", [{"Ptr": "b20"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8", [{"Ptr": "b19"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9", [{"Ptr": "b18"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10", [{"Ptr": "b17"}, {"Ptr": "b43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_11", [{"Ptr": "b16"}, {"Ptr": "b58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12", [{"Ptr": "b15"}, {"Ptr": "b45"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_13", [{"Ptr": "b14"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14", [{"Ptr": "b13"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_15", [{"Ptr": "b12"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16", [{"Ptr": "b11"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17", [{"Ptr": "b10"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18", [{"Ptr": "b9"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19", [{"Ptr": "b8"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20", [{"Ptr": "b7"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21", [{"Ptr": "b6"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_22", [{"Ptr": "b5"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23", [{"Ptr": "b4"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24", [{"Ptr": "b3"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25", [{"Ptr": "b2"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_26", [{"Ptr": "b47"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27", [{"Ptr": "b54"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_28_kernel", [{"Ptr": "b51"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_tanh_1_kernel", [{"Ptr": "b37"}, {"Ptr": "b51"}, {"Ptr": "p15"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_29_kernel", [{"Ptr": "b46"}, {"Ptr": "b26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b55"}, {"Ptr": "b37"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b32"}, {"Ptr": "b46"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b55"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_30_kernel", [{"Ptr": "b50"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b28"}, {"Ptr": "b32"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b50"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_31_kernel", [{"Ptr": "b53"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b56"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b53"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_32_kernel", [{"Ptr": "b43"}, {"Ptr": "b23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b58"}, {"Ptr": "b36"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b45"}, {"Ptr": "b43"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b58"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_33_kernel", [{"Ptr": "b42"}, {"Ptr": "b22"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b45"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b60"}, {"Ptr": "b42"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_34_kernel", [{"Ptr": "b40"}, {"Ptr": "b21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b61"}, {"Ptr": "b60"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b59"}, {"Ptr": "b40"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_35_kernel", [{"Ptr": "b38"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b59"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b38"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_36_kernel", [{"Ptr": "b62"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b49"}, {"Ptr": "b41"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b48"}, {"Ptr": "b62"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_37_kernel", [{"Ptr": "b52"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b48"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b52"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_38_kernel", [{"Ptr": "b51"}, {"Ptr": "b17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b46"}, {"Ptr": "b29"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b55"}, {"Ptr": "b51"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b46"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_39_kernel", [{"Ptr": "b50"}, {"Ptr": "b16"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b28"}, {"Ptr": "b55"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b50"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_40_kernel", [{"Ptr": "b39"}, {"Ptr": "b15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b43"}, {"Ptr": "b53"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b58"}, {"Ptr": "b39"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b43"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_41_kernel", [{"Ptr": "b42"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b44"}, {"Ptr": "b58"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b40"}, {"Ptr": "b42"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_42_kernel", [{"Ptr": "b61"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b38"}, {"Ptr": "b40"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b57"}, {"Ptr": "b61"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_43_kernel", [{"Ptr": "b62"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b49"}, {"Ptr": "b57"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b52"}, {"Ptr": "b62"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_44_kernel", [{"Ptr": "b1"}, {"Ptr": "b11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b52"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b46"}, {"Ptr": "b1"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_45_kernel", [{"Ptr": "b50"}, {"Ptr": "b10"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b28"}, {"Ptr": "b46"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b50"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_46_kernel", [{"Ptr": "b43"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b42"}, {"Ptr": "b39"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b43"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_47_kernel", [{"Ptr": "b61"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b38"}, {"Ptr": "b44"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b62"}, {"Ptr": "b61"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_48_kernel", [{"Ptr": "b49"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b62"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b51"}, {"Ptr": "b49"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_49_kernel", [{"Ptr": "b50"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b28"}, {"Ptr": "b51"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b43"}, {"Ptr": "b50"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_50_kernel", [{"Ptr": "b42"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b61"}, {"Ptr": "b43"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b38"}, {"Ptr": "b42"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_51_kernel", [{"Ptr": "b49"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b38"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b50"}, {"Ptr": "b49"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_52_kernel", [{"Ptr": "b28"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b42"}, {"Ptr": "b50"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b61"}, {"Ptr": "b28"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_53_kernel", [{"Ptr": "b49"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b61"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b28"}, {"Ptr": "b49"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_54_kernel", [{"Ptr": "b42"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b49"}, {"Ptr": "b28"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b1"}, {"Ptr": "b42"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_55_kernel", [{"Ptr": "b42"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b49"}, {"Ptr": "b1"}, {"Ptr": "p18"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b42"}, {"Ptr": "p15"}, {"Ptr": "p17"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel", [{"Ptr": "b26"}, {"Ptr": "b37"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_1", [{"Ptr": "b25"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_2", [{"Ptr": "output"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_3", [{"Ptr": "b23"}, {"Ptr": "b36"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_4", [{"Ptr": "b22"}, {"Ptr": "b45"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_5", [{"Ptr": "b21"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_6", [{"Ptr": "b20"}, {"Ptr": "b59"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_7", [{"Ptr": "b19"}, {"Ptr": "b41"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_8", [{"Ptr": "b18"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_9", [{"Ptr": "b17"}, {"Ptr": "b29"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_10", [{"Ptr": "b16"}, {"Ptr": "b55"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_11", [{"Ptr": "b15"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_12", [{"Ptr": "b14"}, {"Ptr": "b58"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_13", [{"Ptr": "b13"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_14", [{"Ptr": "b12"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_15", [{"Ptr": "b11"}, {"Ptr": "b52"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_16", [{"Ptr": "b10"}, {"Ptr": "b46"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_17", [{"Ptr": "b9"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_18", [{"Ptr": "b8"}, {"Ptr": "b44"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_19", [{"Ptr": "b7"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_20", [{"Ptr": "b6"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_21", [{"Ptr": "b5"}, {"Ptr": "b43"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_22", [{"Ptr": "b4"}, {"Ptr": "b38"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_23", [{"Ptr": "b3"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_24", [{"Ptr": "b2"}, {"Ptr": "b61"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_25", [{"Ptr": "b47"}, {"Ptr": "b28"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_26", [{"Ptr": "b54"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_split_kernel_27", [{"Ptr": "b42"}, {"Ptr": "b27"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_28_kernel", [{"Ptr": "b49"}, {"Ptr": "b26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_tanh_1_kernel", [{"Ptr": "b37"}, {"Ptr": "b49"}, {"Ptr": "p20"}, {"Ptr": "p21"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_29_kernel", [{"Ptr": "b32"}, {"Ptr": "b25"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b56"}, {"Ptr": "b37"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b36"}, {"Ptr": "b32"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b56"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_30_kernel", [{"Ptr": "b45"}, {"Ptr": "output"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b36"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b59"}, {"Ptr": "b45"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_31_kernel", [{"Ptr": "b41"}, {"Ptr": "b23"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b48"}, {"Ptr": "b59"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b29"}, {"Ptr": "b41"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b48"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_32_kernel", [{"Ptr": "b55"}, {"Ptr": "b22"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b53"}, {"Ptr": "b29"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b58"}, {"Ptr": "b55"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b53"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_33_kernel", [{"Ptr": "b40"}, {"Ptr": "b21"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b58"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b52"}, {"Ptr": "b40"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_34_kernel", [{"Ptr": "b46"}, {"Ptr": "b20"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b52"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b44"}, {"Ptr": "b46"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_35_kernel", [{"Ptr": "b62"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b51"}, {"Ptr": "b44"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b43"}, {"Ptr": "b62"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b51"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_36_kernel", [{"Ptr": "b38"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b43"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b61"}, {"Ptr": "b38"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_37_kernel", [{"Ptr": "b28"}, {"Ptr": "b17"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b61"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b27"}, {"Ptr": "b28"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_38_kernel", [{"Ptr": "b49"}, {"Ptr": "b16"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b32"}, {"Ptr": "b27"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b56"}, {"Ptr": "b49"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b32"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_39_kernel", [{"Ptr": "b45"}, {"Ptr": "b15"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b56"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b41"}, {"Ptr": "b45"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_40_kernel", [{"Ptr": "b48"}, {"Ptr": "b14"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b55"}, {"Ptr": "b41"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b53"}, {"Ptr": "b48"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b55"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_41_kernel", [{"Ptr": "b40"}, {"Ptr": "b13"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b57"}, {"Ptr": "b53"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b46"}, {"Ptr": "b40"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b57"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_42_kernel", [{"Ptr": "b39"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b46"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b51"}, {"Ptr": "b39"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_43_kernel", [{"Ptr": "b38"}, {"Ptr": "b11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b51"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b28"}, {"Ptr": "b38"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_44_kernel", [{"Ptr": "b1"}, {"Ptr": "b10"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b49"}, {"Ptr": "b28"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b32"}, {"Ptr": "b1"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b49"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_45_kernel", [{"Ptr": "b45"}, {"Ptr": "b9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b32"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b48"}, {"Ptr": "b45"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_46_kernel", [{"Ptr": "b55"}, {"Ptr": "b8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b48"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b57"}, {"Ptr": "b55"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_47_kernel", [{"Ptr": "b39"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b62"}, {"Ptr": "b57"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b38"}, {"Ptr": "b39"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b62"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_48_kernel", [{"Ptr": "b50"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b38"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b49"}, {"Ptr": "b50"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_49_kernel", [{"Ptr": "b45"}, {"Ptr": "b5"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b60"}, {"Ptr": "b49"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b55"}, {"Ptr": "b45"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b60"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_50_kernel", [{"Ptr": "b40"}, {"Ptr": "b4"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b39"}, {"Ptr": "b55"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b62"}, {"Ptr": "b40"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b39"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_51_kernel", [{"Ptr": "b50"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b62"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b45"}, {"Ptr": "b50"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_52_kernel", [{"Ptr": "b60"}, {"Ptr": "b2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b40"}, {"Ptr": "b45"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b39"}, {"Ptr": "b60"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b40"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_53_kernel", [{"Ptr": "b50"}, {"Ptr": "b47"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b1"}, {"Ptr": "b39"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b60"}, {"Ptr": "b50"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b1"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_54_kernel", [{"Ptr": "b40"}, {"Ptr": "b54"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b60"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b1"}, {"Ptr": "b40"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_squeeze_55_kernel", [{"Ptr": "b40"}, {"Ptr": "b42"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b50"}, {"Ptr": "b1"}, {"Ptr": "p23"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_add_tanh_1_kernel", [{"Ptr": "b26"}, {"Ptr": "b40"}, {"Ptr": "p20"}, {"Ptr": "p22"}, {"Ptr": "b50"}], { + "grid_dim_x": {"Absolute": 128}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_stack_expand_dims_squeeze_transpose_take_kernel", [{"Ptr": "b25"}, {"Ptr": "b26"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "output"}, {"Ptr": "b25"}, {"Ptr": "p25"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 10}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/cuda/test_gpu_simple.json b/machine_interface/tests/data/cuda/test_gpu_simple.json new file mode 100644 index 00000000..02f6acf8 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_simple.json @@ -0,0 +1,22 @@ +{ + "modules": [{"module_name": "simple.cubin", "path": "cuda/simple.cubin"}], + "kernels": [ + {"module_name": "simple.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"} + ], + "blueprint": { + "inputs": ["input", "p0"], + "buffers": {"output": {"Absolute": 8}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "output"}, {"Ptr": "input"}, {"Ptr": "p0"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_cuda_test.json b/machine_interface/tests/data/cuda/test_gpu_test.json similarity index 100% rename from machine_interface/tests/data/test_gpu_cuda_test.json rename to machine_interface/tests/data/cuda/test_gpu_test.json diff --git a/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json b/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json new file mode 100644 index 00000000..e07e0d20 --- /dev/null +++ b/machine_interface/tests/data/cuda/test_gpu_vit_b_16.json @@ -0,0 +1,3136 @@ +{ + "modules": [{"module_name": "vit_b_16.cubin", "path": "cuda/vit_b_16.cubin"}], + "kernels": [ + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel_1"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_1_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_1_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_batch_matmul_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_1"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_3"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_variance_kernel_1"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_2_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_add_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_concatenate_add_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_take_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_mean_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_nn_softmax_kernel_2"}, + {"module_name": "vit_b_16.cubin", "kernel_name": "tvmgen_default_fused_reshape_transpose_reshape_kernel"} + ], + "blueprint": { + "inputs": ["input", "p163", "p167", "p171", "p173", "p149", "p153", "p157", "p159", "p135", "p139", "p143", "p145", "p121", "p125", "p129", "p131", "p107", "p111", "p115", "p117", "p93", "p97", "p101", "p103", "p79", "p83", "p87", "p89", "p65", "p69", "p73", "p75", "p51", "p55", "p59", "p61", "p37", "p41", "p45", "p47", "p23", "p27", "p31", "p33", "p1", "p3", "p164", "p168", "p169", "p170", "p172", "p174", "p175", "p176", "p178", "p0", "p2", "p4", "p5", "p7", "p8", "p9", "p10", "p11", "p12", "p14", "p15", "p16", "p18", "p20", "p21", "p22", "p24", "p25", "p26", "p28", "p29", "p30", "p32", "p34", "p35", "p36", "p38", "p39", "p40", "p42", "p43", "p44", "p46", "p48", "p49", "p50", "p52", "p53", "p54", "p56", "p57", "p58", "p60", "p62", "p63", "p64", "p66", "p67", "p68", "p70", "p71", "p72", "p74", "p76", "p77", "p78", "p80", "p81", "p82", "p84", "p85", "p86", "p88", "p90", "p91", "p92", "p94", "p95", "p96", "p98", "p99", "p100", "p102", "p104", "p105", "p106", "p108", "p109", "p110", "p112", "p113", "p114", "p116", "p118", "p119", "p120", "p122", "p123", "p124", "p126", "p127", "p128", "p130", "p132", "p133", "p134", "p136", "p137", "p138", "p140", "p141", "p142", "p144", "p146", "p147", "p148", "p150", "p151", "p152", "p154", "p155", "p156", "p158", "p160", "p161", "p162", "p165", "p166", "p6", "p13", "p17", "p19", "p177"], + "buffers": {"b18": {"Absolute": 605184}, "b185": {"Absolute": 3072}, "b188": {"Absolute": 12288}, "b3": {"Absolute": 1862832}, "b7": {"Absolute": 788}, "b6": {"Absolute": 1862832}, "b12": {"Absolute": 2420736}, "b19": {"Absolute": 2420736}, "b189": {"Absolute": 1863680}, "output": {"Absolute": 4000}}, + "outputs": ["output"], + "control_flow": [ + {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { + "grid_dim_x": {"Absolute": 14}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 16}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 2}, + "block_dim_z": {"Absolute": 16}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_concatenate_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p2"}, {"Ptr": "p3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p4"}, {"Ptr": "p5"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "p6"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p7"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "p8"}, {"Ptr": "p9"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "p10"}, {"Ptr": "p11"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b19"}, {"Ptr": "b12"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b19"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p13"}, {"Ptr": "p14"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p15"}, {"Ptr": "p16"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "p17"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b19"}, {"Ptr": "b12"}, {"Ptr": "p18"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p19"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p20"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b3"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p21"}, {"Ptr": "p22"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "p23"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b12"}, {"Ptr": "p24"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p25"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p26"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p27"}, {"Ptr": "p28"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p29"}, {"Ptr": "p30"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p31"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p32"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p33"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p34"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p35"}, {"Ptr": "p36"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p37"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p38"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p39"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p40"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p41"}, {"Ptr": "p42"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p43"}, {"Ptr": "p44"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p45"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p46"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b12"}, {"Ptr": "p47"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p48"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b3"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p49"}, {"Ptr": "p50"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p51"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p52"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p53"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p54"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p55"}, {"Ptr": "p56"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p57"}, {"Ptr": "p58"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p59"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p60"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p61"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p62"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p63"}, {"Ptr": "p64"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p65"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p66"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p67"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p68"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p69"}, {"Ptr": "p70"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p71"}, {"Ptr": "p72"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p73"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p74"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b12"}, {"Ptr": "p75"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p76"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b3"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p77"}, {"Ptr": "p78"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p79"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p80"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p81"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p82"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p83"}, {"Ptr": "p84"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p85"}, {"Ptr": "p86"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p87"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p88"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p89"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p90"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p91"}, {"Ptr": "p92"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p93"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p94"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p95"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p96"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p97"}, {"Ptr": "p98"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p99"}, {"Ptr": "p100"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p101"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p102"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b12"}, {"Ptr": "p103"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p104"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b3"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p105"}, {"Ptr": "p106"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p107"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p108"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p109"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p110"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p111"}, {"Ptr": "p112"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p113"}, {"Ptr": "p114"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p115"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p116"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p117"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p118"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p119"}, {"Ptr": "p120"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p121"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p122"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p123"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p124"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p125"}, {"Ptr": "p126"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p127"}, {"Ptr": "p128"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p129"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p130"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b12"}, {"Ptr": "p131"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p132"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b3"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p133"}, {"Ptr": "p134"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p135"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p136"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p137"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p138"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p139"}, {"Ptr": "p140"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p141"}, {"Ptr": "p142"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p143"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p144"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p145"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p146"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p147"}, {"Ptr": "p148"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p149"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p150"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p151"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b3"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p152"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b3"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "p153"}, {"Ptr": "p154"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b3"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p155"}, {"Ptr": "p156"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b3"}, {"Ptr": "p157"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p158"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b6"}, {"Ptr": "b12"}, {"Ptr": "p159"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b3"}, {"Ptr": "b6"}, {"Ptr": "p160"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b3"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b3"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b3"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p161"}, {"Ptr": "p162"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p163"}], { + "grid_dim_x": {"Absolute": 2304}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_reshape_expand_dims_transpose_squeeze_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p164"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_multiply_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p8"}, {"Ptr": "p165"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_multiply_reshape_transpose_kernel", [{"Ptr": "b6"}, {"Ptr": "b19"}, {"Ptr": "p10"}, {"Ptr": "p166"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_kernel", [{"Ptr": "b12"}, {"Ptr": "b18"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 197}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel", [{"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_1", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_2", [{"Ptr": "b189"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_softmax_kernel_3", [{"Ptr": "b189"}, {"Ptr": "b188"}, {"Ptr": "b6"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_take_reshape_transpose_reshape_transpose_kernel", [{"Ptr": "b18"}, {"Ptr": "b19"}, {"Ptr": "p12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_batch_matmul_1_kernel", [{"Ptr": "b12"}, {"Ptr": "b6"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 12}, + "block_dim_x": {"Absolute": 8}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_reshape_kernel", [{"Ptr": "b18"}, {"Ptr": "b12"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "p167"}, {"Ptr": "p168"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_transpose_add_kernel", [{"Ptr": "b18"}, {"Ptr": "b6"}, {"Ptr": "b3"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b18"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b18"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_reshape_kernel", [{"Ptr": "b6"}, {"Ptr": "b18"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p169"}, {"Ptr": "p170"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_1_kernel", [{"Ptr": "b19"}, {"Ptr": "b6"}, {"Ptr": "p171"}], { + "grid_dim_x": {"Absolute": 3072}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_divide_erf_add_multiply_multiply_reshape_kernel", [{"Ptr": "b12"}, {"Ptr": "b19"}, {"Ptr": "p172"}], { + "grid_dim_x": {"Absolute": 256}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_2_kernel", [{"Ptr": "b3"}, {"Ptr": "b12"}, {"Ptr": "p173"}], { + "grid_dim_x": {"Absolute": 768}, + "grid_dim_y": {"Absolute": 197}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_reshape_add_add_kernel", [{"Ptr": "b6"}, {"Ptr": "b3"}, {"Ptr": "p174"}, {"Ptr": "b18"}], { + "grid_dim_x": {"Absolute": 148}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel", [{"Ptr": "b6"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_mean_kernel_1", [{"Ptr": "b7"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel", [{"Ptr": "b188"}, {"Ptr": "b6"}, {"Ptr": "b7"}], { + "grid_dim_x": {"Absolute": 7}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_variance_kernel_1", [{"Ptr": "output"}, {"Ptr": "b188"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 197}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_subtract_add_rsqrt_multiply_multiply_add_take_kernel", [{"Ptr": "b185"}, {"Ptr": "b6"}, {"Ptr": "b7"}, {"Ptr": "output"}, {"Ptr": "p175"}, {"Ptr": "p176"}, {"Ptr": "p8"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 768}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["tvmgen_default_fused_nn_dense_add_1_kernel", [{"Ptr": "output"}, {"Ptr": "b185"}, {"Ptr": "p177"}, {"Ptr": "p178"}], { + "grid_dim_x": {"Absolute": 1000}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_alexnet.json b/machine_interface/tests/data/hip/test_gpu_alexnet.json similarity index 91% rename from machine_interface/tests/data/test_gpu_alexnet.json rename to machine_interface/tests/data/hip/test_gpu_alexnet.json index b09083b9..700593d0 100644 --- a/machine_interface/tests/data/test_gpu_alexnet.json +++ b/machine_interface/tests/data/hip/test_gpu_alexnet.json @@ -1,16 +1,16 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_relu_0.hsaco", "path": "alexnet/tem_fused_conv2d_relu_0.hsaco"}, - {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "path": "alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_2.hsaco", "path": "alexnet/tem_fused_conv2d_relu_2.hsaco"}, - {"module_name": "poi_fused_conv2d_max_pool2d_relu_3.hsaco", "path": "alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_4.hsaco", "path": "alexnet/tem_fused_conv2d_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_5.hsaco", "path": "alexnet/tem_fused_conv2d_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_6.hsaco", "path": "alexnet/tem_fused_conv2d_relu_6.hsaco"}, - {"module_name": "poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco", "path": "alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco"}, - {"module_name": "tem_fused_relu_8.hsaco", "path": "alexnet/tem_fused_relu_8.hsaco"}, - {"module_name": "tem_fused_relu_9.hsaco", "path": "alexnet/tem_fused_relu_9.hsaco"}, - {"module_name": "tem_fused_linear_relu_10.hsaco", "path": "alexnet/tem_fused_linear_relu_10.hsaco"} + {"module_name": "tem_fused_conv2d_relu_0.hsaco", "path": "hip/alexnet/tem_fused_conv2d_relu_0.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "path": "hip/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_2.hsaco", "path": "hip/alexnet/tem_fused_conv2d_relu_2.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_3.hsaco", "path": "hip/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_4.hsaco", "path": "hip/alexnet/tem_fused_conv2d_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_5.hsaco", "path": "hip/alexnet/tem_fused_conv2d_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_6.hsaco", "path": "hip/alexnet/tem_fused_conv2d_relu_6.hsaco"}, + {"module_name": "poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco", "path": "hip/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco"}, + {"module_name": "tem_fused_relu_8.hsaco", "path": "hip/alexnet/tem_fused_relu_8.hsaco"}, + {"module_name": "tem_fused_relu_9.hsaco", "path": "hip/alexnet/tem_fused_relu_9.hsaco"}, + {"module_name": "tem_fused_linear_relu_10.hsaco", "path": "hip/alexnet/tem_fused_linear_relu_10.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_basic_io.json b/machine_interface/tests/data/hip/test_gpu_basic_io.json similarity index 100% rename from machine_interface/tests/data/test_gpu_basic_io.json rename to machine_interface/tests/data/hip/test_gpu_basic_io.json diff --git a/machine_interface/tests/data/test_gpu_batch_norm.json b/machine_interface/tests/data/hip/test_gpu_batch_norm.json similarity index 87% rename from machine_interface/tests/data/test_gpu_batch_norm.json rename to machine_interface/tests/data/hip/test_gpu_batch_norm.json index c3ca3ed5..aa54671e 100644 --- a/machine_interface/tests/data/test_gpu_batch_norm.json +++ b/machine_interface/tests/data/hip/test_gpu_batch_norm.json @@ -1,9 +1,9 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_2.hsaco", "path": "batch_norm/poi_fused_2.hsaco"}, - {"module_name": "tem_fused_linear_3.hsaco", "path": "batch_norm/tem_fused_linear_3.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_2.hsaco", "path": "hip/batch_norm/poi_fused_2.hsaco"}, + {"module_name": "tem_fused_linear_3.hsaco", "path": "hip/batch_norm/tem_fused_linear_3.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_double_matmul.json b/machine_interface/tests/data/hip/test_gpu_double_matmul.json similarity index 86% rename from machine_interface/tests/data/test_gpu_double_matmul.json rename to machine_interface/tests/data/hip/test_gpu_double_matmul.json index dc10417a..38bd15da 100644 --- a/machine_interface/tests/data/test_gpu_double_matmul.json +++ b/machine_interface/tests/data/hip/test_gpu_double_matmul.json @@ -1,7 +1,7 @@ { "modules": [ - {"module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco"}, - {"module_name": "tem_fused_linear_1.hsaco", "path": "double_matmul/tem_fused_linear_1.hsaco"} + {"module_name": "tem_fused_linear_0.hsaco", "path": "hip/double_matmul/tem_fused_linear_0.hsaco"}, + {"module_name": "tem_fused_linear_1.hsaco", "path": "hip/double_matmul/tem_fused_linear_1.hsaco"} ], "kernels": [ {"module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_first_double_matmul.json b/machine_interface/tests/data/hip/test_gpu_first_double_matmul.json similarity index 87% rename from machine_interface/tests/data/test_gpu_first_double_matmul.json rename to machine_interface/tests/data/hip/test_gpu_first_double_matmul.json index fa6d3cd8..7d2e9661 100644 --- a/machine_interface/tests/data/test_gpu_first_double_matmul.json +++ b/machine_interface/tests/data/hip/test_gpu_first_double_matmul.json @@ -1,6 +1,6 @@ { "modules": [ - { "module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco" } + { "module_name": "tem_fused_linear_0.hsaco", "path": "hip/double_matmul/tem_fused_linear_0.hsaco" } ], "kernels": [ { "module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000" } diff --git a/machine_interface/tests/data/test_gpu_full_double_matmul.json b/machine_interface/tests/data/hip/test_gpu_full_double_matmul.json similarity index 86% rename from machine_interface/tests/data/test_gpu_full_double_matmul.json rename to machine_interface/tests/data/hip/test_gpu_full_double_matmul.json index dc10417a..38bd15da 100644 --- a/machine_interface/tests/data/test_gpu_full_double_matmul.json +++ b/machine_interface/tests/data/hip/test_gpu_full_double_matmul.json @@ -1,7 +1,7 @@ { "modules": [ - {"module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco"}, - {"module_name": "tem_fused_linear_1.hsaco", "path": "double_matmul/tem_fused_linear_1.hsaco"} + {"module_name": "tem_fused_linear_0.hsaco", "path": "hip/double_matmul/tem_fused_linear_0.hsaco"}, + {"module_name": "tem_fused_linear_1.hsaco", "path": "hip/double_matmul/tem_fused_linear_1.hsaco"} ], "kernels": [ {"module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_hello_world.json b/machine_interface/tests/data/hip/test_gpu_hello_world.json similarity index 100% rename from machine_interface/tests/data/test_gpu_hello_world.json rename to machine_interface/tests/data/hip/test_gpu_hello_world.json diff --git a/machine_interface/tests/data/test_gpu_inference.json b/machine_interface/tests/data/hip/test_gpu_inference.json similarity index 100% rename from machine_interface/tests/data/test_gpu_inference.json rename to machine_interface/tests/data/hip/test_gpu_inference.json diff --git a/machine_interface/tests/data/test_gpu_inference_batched.json b/machine_interface/tests/data/hip/test_gpu_inference_batched.json similarity index 100% rename from machine_interface/tests/data/test_gpu_inference_batched.json rename to machine_interface/tests/data/hip/test_gpu_inference_batched.json diff --git a/machine_interface/tests/data/test_gpu_lenet5.json b/machine_interface/tests/data/hip/test_gpu_lenet5.json similarity index 90% rename from machine_interface/tests/data/test_gpu_lenet5.json rename to machine_interface/tests/data/hip/test_gpu_lenet5.json index 5f8e5782..50a875b2 100644 --- a/machine_interface/tests/data/test_gpu_lenet5.json +++ b/machine_interface/tests/data/hip/test_gpu_lenet5.json @@ -1,13 +1,13 @@ { "modules": [ - {"module_name": "poi_fused_conv2d_0.hsaco", "path": "lenet5/poi_fused_conv2d_0.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_1.hsaco", "path": "lenet5/tem_fused_conv2d_relu_1.hsaco"}, - {"module_name": "poi_fused_conv2d_max_pool2d_relu_2.hsaco", "path": "lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_max_pool2d_relu_3.hsaco", "path": "lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco"}, - {"module_name": "poi_fused_conv2d_max_pool2d_relu_4.hsaco", "path": "lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco"}, - {"module_name": "tem_fused_relu_5.hsaco", "path": "lenet5/tem_fused_relu_5.hsaco"}, - {"module_name": "tem_fused_relu_6.hsaco", "path": "lenet5/tem_fused_relu_6.hsaco"}, - {"module_name": "tem_fused_linear_relu_7.hsaco", "path": "lenet5/tem_fused_linear_relu_7.hsaco"} + {"module_name": "poi_fused_conv2d_0.hsaco", "path": "hip/lenet5/poi_fused_conv2d_0.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_1.hsaco", "path": "hip/lenet5/tem_fused_conv2d_relu_1.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_2.hsaco", "path": "hip/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_max_pool2d_relu_3.hsaco", "path": "hip/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_4.hsaco", "path": "hip/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco"}, + {"module_name": "tem_fused_relu_5.hsaco", "path": "hip/lenet5/tem_fused_relu_5.hsaco"}, + {"module_name": "tem_fused_relu_6.hsaco", "path": "hip/lenet5/tem_fused_relu_6.hsaco"}, + {"module_name": "tem_fused_linear_relu_7.hsaco", "path": "hip/lenet5/tem_fused_linear_relu_7.hsaco"} ], "kernels": [ {"module_name": "poi_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_matmul_loop.json b/machine_interface/tests/data/hip/test_gpu_matmul_loop.json similarity index 100% rename from machine_interface/tests/data/test_gpu_matmul_loop.json rename to machine_interface/tests/data/hip/test_gpu_matmul_loop.json diff --git a/machine_interface/tests/data/test_gpu_matmul_para.json b/machine_interface/tests/data/hip/test_gpu_matmul_para.json similarity index 100% rename from machine_interface/tests/data/test_gpu_matmul_para.json rename to machine_interface/tests/data/hip/test_gpu_matmul_para.json diff --git a/machine_interface/tests/data/test_gpu_minimal.json b/machine_interface/tests/data/hip/test_gpu_minimal.json similarity index 100% rename from machine_interface/tests/data/test_gpu_minimal.json rename to machine_interface/tests/data/hip/test_gpu_minimal.json diff --git a/machine_interface/tests/data/test_gpu_resnet152.json b/machine_interface/tests/data/hip/test_gpu_resnet152.json similarity index 98% rename from machine_interface/tests/data/test_gpu_resnet152.json rename to machine_interface/tests/data/hip/test_gpu_resnet152.json index 55b68c6f..5b0b6a73 100644 --- a/machine_interface/tests/data/test_gpu_resnet152.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet152.json @@ -1,36 +1,36 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco"}, - {"module_name": "tem_fused_conv2d_24.hsaco", "path": "resnet152/tem_fused_conv2d_24.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "path": "resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "path": "resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "path": "resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "path": "resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "path": "resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco"}, - {"module_name": "tem_fused_linear_30.hsaco", "path": "resnet152/tem_fused_linear_30.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_conv2d_24.hsaco", "path": "hip/resnet152/tem_fused_conv2d_24.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "path": "hip/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "path": "hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "path": "hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "path": "hip/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "path": "hip/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco"}, + {"module_name": "tem_fused_linear_30.hsaco", "path": "hip/resnet152/tem_fused_linear_30.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18.json b/machine_interface/tests/data/hip/test_gpu_resnet18.json similarity index 92% rename from machine_interface/tests/data/test_gpu_resnet18.json rename to machine_interface/tests/data/hip/test_gpu_resnet18.json index 2b4e9320..3c222c9b 100644 --- a/machine_interface/tests/data/test_gpu_resnet18.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18.json @@ -1,26 +1,26 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet18/tem_fused_conv2d_16.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18/tem_fused_linear_20.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "hip/resnet18/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "hip/resnet18/tem_fused_linear_20.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18batch16.json b/machine_interface/tests/data/hip/test_gpu_resnet18batch16.json similarity index 92% rename from machine_interface/tests/data/test_gpu_resnet18batch16.json rename to machine_interface/tests/data/hip/test_gpu_resnet18batch16.json index 2b036aa0..6997f253 100644 --- a/machine_interface/tests/data/test_gpu_resnet18batch16.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18batch16.json @@ -1,28 +1,28 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch16/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet18batch16/tem_fused_conv2d_3.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet18batch16/tem_fused_conv2d_8.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_12.hsaco", "path": "resnet18batch16/tem_fused_conv2d_12.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18batch16/tem_fused_conv2d_17.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "tem_fused_linear_22.hsaco", "path": "resnet18batch16/tem_fused_linear_22.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_linear_22.hsaco", "path": "hip/resnet18batch16/tem_fused_linear_22.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18batch2.json b/machine_interface/tests/data/hip/test_gpu_resnet18batch2.json similarity index 91% rename from machine_interface/tests/data/test_gpu_resnet18batch2.json rename to machine_interface/tests/data/hip/test_gpu_resnet18batch2.json index 4053a888..69cdd594 100644 --- a/machine_interface/tests/data/test_gpu_resnet18batch2.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18batch2.json @@ -1,27 +1,27 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch2/tem_fused_conv2d_6.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18batch2/tem_fused_conv2d_17.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet18batch2/tem_fused_linear_21.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "hip/resnet18batch2/tem_fused_linear_21.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18batch32.json b/machine_interface/tests/data/hip/test_gpu_resnet18batch32.json similarity index 91% rename from machine_interface/tests/data/test_gpu_resnet18batch32.json rename to machine_interface/tests/data/hip/test_gpu_resnet18batch32.json index 0de013c6..70ab1616 100644 --- a/machine_interface/tests/data/test_gpu_resnet18batch32.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18batch32.json @@ -1,29 +1,29 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch32/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet18batch32/tem_fused_conv2d_3.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch32/tem_fused_conv2d_6.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_9.hsaco", "path": "resnet18batch32/tem_fused_conv2d_9.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_14.hsaco", "path": "resnet18batch32/tem_fused_conv2d_14.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "path": "resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco"}, - {"module_name": "tem_fused_linear_23.hsaco", "path": "resnet18batch32/tem_fused_linear_23.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_9.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_9.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_14.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_14.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "path": "hip/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_linear_23.hsaco", "path": "hip/resnet18batch32/tem_fused_linear_23.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18batch4.json b/machine_interface/tests/data/hip/test_gpu_resnet18batch4.json similarity index 91% rename from machine_interface/tests/data/test_gpu_resnet18batch4.json rename to machine_interface/tests/data/hip/test_gpu_resnet18batch4.json index de90995a..29b46ca8 100644 --- a/machine_interface/tests/data/test_gpu_resnet18batch4.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18batch4.json @@ -1,26 +1,26 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch4/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch4/tem_fused_conv2d_6.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18batch4/tem_fused_linear_20.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "hip/resnet18batch4/tem_fused_linear_20.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18batch64.json b/machine_interface/tests/data/hip/test_gpu_resnet18batch64.json similarity index 91% rename from machine_interface/tests/data/test_gpu_resnet18batch64.json rename to machine_interface/tests/data/hip/test_gpu_resnet18batch64.json index 5358bf1a..fad13f8b 100644 --- a/machine_interface/tests/data/test_gpu_resnet18batch64.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18batch64.json @@ -1,30 +1,30 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch64/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet18batch64/tem_fused_conv2d_3.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet18batch64/tem_fused_conv2d_6.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_9.hsaco", "path": "resnet18batch64/tem_fused_conv2d_9.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_12.hsaco", "path": "resnet18batch64/tem_fused_conv2d_12.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_15.hsaco", "path": "resnet18batch64/tem_fused_conv2d_15.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_conv2d_20.hsaco", "path": "resnet18batch64/tem_fused_conv2d_20.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "path": "resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco"}, - {"module_name": "tem_fused_linear_24.hsaco", "path": "resnet18batch64/tem_fused_linear_24.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_9.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_9.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_15.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_20.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_20.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "path": "hip/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_linear_24.hsaco", "path": "hip/resnet18batch64/tem_fused_linear_24.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18batch8.json b/machine_interface/tests/data/hip/test_gpu_resnet18batch8.json similarity index 91% rename from machine_interface/tests/data/test_gpu_resnet18batch8.json rename to machine_interface/tests/data/hip/test_gpu_resnet18batch8.json index 8a1918e5..9492a2cd 100644 --- a/machine_interface/tests/data/test_gpu_resnet18batch8.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18batch8.json @@ -1,28 +1,28 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet18batch8/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet18batch8/tem_fused_conv2d_8.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet18batch8/tem_fused_conv2d_17.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "tem_fused_linear_22.hsaco", "path": "resnet18batch8/tem_fused_linear_22.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_linear_22.hsaco", "path": "hip/resnet18batch8/tem_fused_linear_22.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet18onnx.json b/machine_interface/tests/data/hip/test_gpu_resnet18onnx.json similarity index 93% rename from machine_interface/tests/data/test_gpu_resnet18onnx.json rename to machine_interface/tests/data/hip/test_gpu_resnet18onnx.json index ce0a4ad5..5c5d0d5b 100644 --- a/machine_interface/tests/data/test_gpu_resnet18onnx.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet18onnx.json @@ -1,26 +1,26 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_relu_0.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_0.hsaco"}, - {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "path": "resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_2.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_2.hsaco"}, - {"module_name": "tem_fused_add_conv2d_relu_3.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_4.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_5.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_5.hsaco"}, - {"module_name": "tem_fused_add_conv2d_relu_6.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_7.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_7.hsaco"}, - {"module_name": "tem_fused_add_conv2d_relu_8.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_9.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_10.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_10.hsaco"}, - {"module_name": "tem_fused_add_conv2d_relu_11.hsaco", "path": "resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_12.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_12.hsaco"}, - {"module_name": "poi_fused_add_conv2d_relu_13.hsaco", "path": "resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_14.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_15.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet18onnx/tem_fused_conv2d_16.hsaco"}, - {"module_name": "poi_fused_add_conv2d_relu_17.hsaco", "path": "resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_relu_18.hsaco", "path": "resnet18onnx/tem_fused_conv2d_relu_18.hsaco"}, - {"module_name": "per_fused_add_conv2d_mean_relu_19.hsaco", "path": "resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco"}, - {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18onnx/tem_fused_linear_20.hsaco"} + {"module_name": "tem_fused_conv2d_relu_0.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_0.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "path": "hip/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_2.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_3.hsaco", "path": "hip/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_4.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_5.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_5.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_6.hsaco", "path": "hip/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_7.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_8.hsaco", "path": "hip/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_9.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_10.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_relu_11.hsaco", "path": "hip/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_12.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_12.hsaco"}, + {"module_name": "poi_fused_add_conv2d_relu_13.hsaco", "path": "hip/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_14.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_15.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_conv2d_relu_17.hsaco", "path": "hip/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_18.hsaco", "path": "hip/resnet18onnx/tem_fused_conv2d_relu_18.hsaco"}, + {"module_name": "per_fused_add_conv2d_mean_relu_19.hsaco", "path": "hip/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "hip/resnet18onnx/tem_fused_linear_20.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet34.json b/machine_interface/tests/data/hip/test_gpu_resnet34.json similarity index 95% rename from machine_interface/tests/data/test_gpu_resnet34.json rename to machine_interface/tests/data/hip/test_gpu_resnet34.json index ad53f49c..497c0b8b 100644 --- a/machine_interface/tests/data/test_gpu_resnet34.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet34.json @@ -1,27 +1,27 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet34/tem_fused_conv2d_16.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet34/tem_fused_linear_21.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "hip/resnet34/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "hip/resnet34/tem_fused_linear_21.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet34batch16.json b/machine_interface/tests/data/hip/test_gpu_resnet34batch16.json similarity index 94% rename from machine_interface/tests/data/test_gpu_resnet34batch16.json rename to machine_interface/tests/data/hip/test_gpu_resnet34batch16.json index 7446a40e..c5885302 100644 --- a/machine_interface/tests/data/test_gpu_resnet34batch16.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet34batch16.json @@ -1,30 +1,30 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet34batch16/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_3.hsaco", "path": "resnet34batch16/tem_fused_conv2d_3.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet34batch16/tem_fused_conv2d_8.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet34batch16/tem_fused_conv2d_17.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_conv2d_20.hsaco", "path": "resnet34batch16/tem_fused_conv2d_20.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_22.hsaco", "path": "resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "path": "resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco"}, - {"module_name": "tem_fused_linear_24.hsaco", "path": "resnet34batch16/tem_fused_linear_24.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_3.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_3.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_20.hsaco", "path": "hip/resnet34batch16/tem_fused_conv2d_20.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_22.hsaco", "path": "hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco", "path": "hip/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_linear_24.hsaco", "path": "hip/resnet34batch16/tem_fused_linear_24.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet34batch2.json b/machine_interface/tests/data/hip/test_gpu_resnet34batch2.json similarity index 94% rename from machine_interface/tests/data/test_gpu_resnet34batch2.json rename to machine_interface/tests/data/hip/test_gpu_resnet34batch2.json index 8243d8d9..7775dbc5 100644 --- a/machine_interface/tests/data/test_gpu_resnet34batch2.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet34batch2.json @@ -1,27 +1,27 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet34batch2/tem_fused_conv2d_6.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_linear_21.hsaco", "path": "resnet34batch2/tem_fused_linear_21.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_6.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_linear_21.hsaco", "path": "hip/resnet34batch2/tem_fused_linear_21.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet34batch4.json b/machine_interface/tests/data/hip/test_gpu_resnet34batch4.json similarity index 94% rename from machine_interface/tests/data/test_gpu_resnet34batch4.json rename to machine_interface/tests/data/hip/test_gpu_resnet34batch4.json index f5a62729..0e60f8e9 100644 --- a/machine_interface/tests/data/test_gpu_resnet34batch4.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet34batch4.json @@ -1,28 +1,28 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet34batch4/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_6.hsaco", "path": "resnet34batch4/tem_fused_conv2d_6.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_12.hsaco", "path": "resnet34batch4/tem_fused_conv2d_12.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_20.hsaco", "path": "resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "tem_fused_linear_22.hsaco", "path": "resnet34batch4/tem_fused_linear_22.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_6.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_12.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "tem_fused_linear_22.hsaco", "path": "hip/resnet34batch4/tem_fused_linear_22.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet34batch8.json b/machine_interface/tests/data/hip/test_gpu_resnet34batch8.json similarity index 94% rename from machine_interface/tests/data/test_gpu_resnet34batch8.json rename to machine_interface/tests/data/hip/test_gpu_resnet34batch8.json index 6265612d..6a730470 100644 --- a/machine_interface/tests/data/test_gpu_resnet34batch8.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet34batch8.json @@ -1,29 +1,29 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_0.hsaco", "path": "resnet34batch8/tem_fused_conv2d_0.hsaco"}, - {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_8.hsaco", "path": "resnet34batch8/tem_fused_conv2d_8.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "tem_fused_conv2d_17.hsaco", "path": "resnet34batch8/tem_fused_conv2d_17.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "path": "resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco"}, - {"module_name": "tem_fused_linear_23.hsaco", "path": "resnet34batch8/tem_fused_linear_23.hsaco"} + {"module_name": "tem_fused_conv2d_0.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_0.hsaco"}, + {"module_name": "poi_fused_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_8.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_8.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "hip/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "tem_fused_conv2d_17.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_17.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco", "path": "hip/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_linear_23.hsaco", "path": "hip/resnet34batch8/tem_fused_linear_23.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/data/test_gpu_resnet50.json b/machine_interface/tests/data/hip/test_gpu_resnet50.json similarity index 94% rename from machine_interface/tests/data/test_gpu_resnet50.json rename to machine_interface/tests/data/hip/test_gpu_resnet50.json index 73e2c330..b2fab18d 100644 --- a/machine_interface/tests/data/test_gpu_resnet50.json +++ b/machine_interface/tests/data/hip/test_gpu_resnet50.json @@ -1,36 +1,36 @@ { "modules": [ - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, - {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, - {"module_name": "tem_fused_conv2d_10.hsaco", "path": "resnet50/tem_fused_conv2d_10.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco"}, - {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco"}, - {"module_name": "tem_fused_conv2d_24.hsaco", "path": "resnet50/tem_fused_conv2d_24.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "path": "resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco"}, - {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "path": "resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco"}, - {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "path": "resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco"}, - {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "path": "resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco"}, - {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "path": "resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco"}, - {"module_name": "tem_fused_linear_30.hsaco", "path": "resnet50/tem_fused_linear_30.hsaco"} + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "hip/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_10.hsaco", "path": "hip/resnet50/tem_fused_conv2d_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco", "path": "hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco", "path": "hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco", "path": "hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco", "path": "hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco"}, + {"module_name": "tem_fused_conv2d_24.hsaco", "path": "hip/resnet50/tem_fused_conv2d_24.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_25.hsaco", "path": "hip/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco", "path": "hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco", "path": "hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_28.hsaco", "path": "hip/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco", "path": "hip/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco"}, + {"module_name": "tem_fused_linear_30.hsaco", "path": "hip/resnet50/tem_fused_linear_30.hsaco"} ], "kernels": [ {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, diff --git a/machine_interface/tests/libs/cuda/double_matmul.cubin b/machine_interface/tests/libs/cuda/double_matmul.cubin new file mode 100644 index 0000000000000000000000000000000000000000..56d1b1ea3979caeeb98383b0502fce5addbe7ffb GIT binary patch literal 6144 zcmeHLPiP!f82{$aCS$tY-Nt|kYPQ>^kb-OyV{JVMv5>Z4ON)mRgD~B6Cx5V+EVG-i zTZL?Bk@TXy_U=LOQap%WG(st*rye{=PbGLL;vstQy8gcR-b`j^)^@fAhu~@g#Dr8xz3dU z)s1|0vE(`BZV;DO+-j}l*2WWq68O-a2O;T1_J`z?TJJ;3&fMyPJ@1v49V&Xxm12}p zYUdzvELFN(TUv3SA>m0=ogk+F;Jg^IZF_ch@pj4aggyPaU3+|f3uRP_5VyHt zypOrgrZ<|+QLD@?SisPRlT*&M`6Dluk1G12VTSL8{rfY^ojX(CPe#lL$UU%y$I|@ zAQA!nDpoQdn|u`B$u^6N7i(U zW{FaQ&Vt5?_JN`?-bTaF#g2PxI89$n$tK@>|Vb_+zp^yth|Q{x1A2c!qKS%pdbKv`H;t?*OD=|BZFsfIfH) zeIpqvc)G!RlPLG|=uhdCZz9Nke@bWkZoiqL{8XslObP#3K;U~#%Jbgp<9kj2?#lg} z*N7lNbOz7kEWP>>16BDoOV@ApSR&xu4}a4hzAMnIyoY?<74hiV)jtgTjh?{a2SPu- zOHg1zC;jJwO;^VEdLt!5FXTnO)mIef8{-W%RCIVglrx-foo0|T&iDN>`lLZ3KIRZU zrnd8RE|R~~pm+FVrghDrtt<@&{m}Oxp#P5b$N71t^@sIzz%va_Z7YZP-`!h(1#fTt z@&5FGU4L-xxeA{R!TuQ1G^N_Vu|TLqNO8aEgr88`;@L=N6#pW02j@#@oTfTd#Nnl6 zcx&dh&4q7-T)u+Bs7~f@@`VNEk$CUEqOwP2SM)kai|SCiq@cbV!C9vG_Fv%dDZIL_ ziWu`PE{ZQmgJR>)C`ZG1zI8|O+rZ_Rk$j}*SnovL*5e;xgu@H2dIMhW9P`Op6;7~jKp<8V>GC~%64!WB%~ v*OX-N{sXN}_@+`9#^WO^hW`wBj)^}%0>$coyS%weZYTfGWALQ-PX7N1$`oIM literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/lstm.cubin b/machine_interface/tests/libs/cuda/lstm.cubin new file mode 100644 index 0000000000000000000000000000000000000000..700c074a9339d03626cf373ff6a1c320245325a5 GIT binary patch literal 272992 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 IxHx|PKW~scdjJ3c literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/resnet18.cubin b/machine_interface/tests/libs/cuda/resnet18.cubin new file mode 100644 index 0000000000000000000000000000000000000000..e8db3a572f57be85245eb558d6abac46d6f5562d GIT binary patch literal 205184 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%0D9be#NXU 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 F{{zuv1R?+c literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/simple.cubin b/machine_interface/tests/libs/cuda/simple.cubin new file mode 100644 index 0000000000000000000000000000000000000000..abd5cea6d262bc64035517d7df1782ab638c30d0 GIT binary patch literal 3872 zcmeHK&2Jk;6#sd5?JVx%O+qCc0ddkMD7`pU`8-+$3I{4ABr1fc9Jk)Y70%kMH<4Ws z-KYo^6;)LasJS5oe*^-d91ubk;t%KvMI0)`A?g`0@6EhjZ`V15a)FAc%)IY6?~Uip zY%aa@>M0|adujq2419|Zgl1GL33Eu}Gx;;9;dxjzKa3nu?X`Mg5H`*c730CW<`u5@ zT7I*Ss=ryi;IDR24ZVI?4L8@+`|};Y7dHIx_yJu4ug!)0UALxpZey*!8Z_2DR5?ag(70E^OElW;wV=^$sa@y> zov;%Qy5vqej?g$CUg-G$>HWXY&HPvG|AEf2w9tO&1PM(@bEOQfD!G%AX!5R-7sup_ z)QTo`WftC0^0>Q4+IN-Q9tnhsNIpF|$|o|lVo0zcHcT_ndhauKovkQZf<4@dmTW}= zEPr||x)#JSEl$_^geD!pIy`c)mThp>E}Kkgnzhz+ihj;gcUA5gk{4~NA6UtiVa}9c zJ*xN4z$CCYpYScfhzvr-a*?5Be`I zW(Lyp^TZ!1;j4?(B&UdGn_U-99}b_Z?#a6*ZdWj~Ee-mlwl{80=v#o}-Ey(`spa5p zI!ng23Ff!9q1q1HvkpEtFm=N)dBvg4`U=?_2Hq0;AKBhCxJ|Wv2}V$WI?R%9p)Yq! z?wZN@PxpsTh2!l+6Sz(FT(O3E;+?~k_3ko`-YBR(RWWY8hL0~jR6vERqYsUR66OPt zK!EZgJxEVethbrbp!GH?5jAzJFWUF&^F>r@DZNqTd=w~u(?De|rOz9(qqKh&T)9jw z%^UCvjXN%$cu%{k4*$)?hueo7wc)I%->c9UJ@3bN^m_$xxYq9LdnSHxsUEuQll5k) zUUPKW{-oBUdzFAP!kygMdZ&}(A``#T`h&dMN@ag!7DiuQ0seiy=kvrj2?3vvW(kX% z^!vU^Z-qJ!%lK#jgZIOlnRKvQ!RY}TGwAp)6Te6I)Npv&#Ey${q9>CFfLEpdgNb`F zIWMU=HKF;9NJEBIFaLi2J7V}{#v#Mv5ehE9aC#ZEB(BIhlE7Ih1 zDSswo|9BtxJBZ?r`A6bEDgH5v{bGEA{JAA-v4P<08Gp{7*N*+-xL=cuLf|BgG<+uh zeO3zWS3iG0vPprzb5cOJuL9~~1&m1KMw(6Lt3+{5FC-EncrgNbjTF7#`g~V&s>%O} q%5pUQEM$!1`Z;Izi|Z7#1g%K@F;4rb_d)VY95O_lciQiM^85?rkNiOZ literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/cuda/vit_b_16.cubin b/machine_interface/tests/libs/cuda/vit_b_16.cubin new file mode 100644 index 0000000000000000000000000000000000000000..6e79c039baab1ca986c06c67ce817676c1448e61 GIT binary patch literal 116032 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 b??VGm$J_G5eaB>R<4j} literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco b/machine_interface/tests/libs/hip/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco rename to machine_interface/tests/libs/hip/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco diff --git a/machine_interface/tests/libs/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco b/machine_interface/tests/libs/hip/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco rename to machine_interface/tests/libs/hip/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco diff --git a/machine_interface/tests/libs/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco b/machine_interface/tests/libs/hip/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco rename to machine_interface/tests/libs/hip/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_0.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_0.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_0.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_2.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_2.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_2.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_4.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_4.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_4.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_5.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_5.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_5.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_6.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_6.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_conv2d_relu_6.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_linear_relu_10.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_linear_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_linear_relu_10.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_linear_relu_10.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_relu_8.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_relu_8.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_relu_8.hsaco diff --git a/machine_interface/tests/libs/alexnet/tem_fused_relu_9.hsaco b/machine_interface/tests/libs/hip/alexnet/tem_fused_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/alexnet/tem_fused_relu_9.hsaco rename to machine_interface/tests/libs/hip/alexnet/tem_fused_relu_9.hsaco diff --git a/machine_interface/tests/libs/batch_norm/poi_fused_2.hsaco b/machine_interface/tests/libs/hip/batch_norm/poi_fused_2.hsaco similarity index 100% rename from machine_interface/tests/libs/batch_norm/poi_fused_2.hsaco rename to machine_interface/tests/libs/hip/batch_norm/poi_fused_2.hsaco diff --git a/machine_interface/tests/libs/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/batch_norm/poi_fused_avg_pool2d_conv2d_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/batch_norm/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/batch_norm/tem_fused_linear_3.hsaco b/machine_interface/tests/libs/hip/batch_norm/tem_fused_linear_3.hsaco similarity index 100% rename from machine_interface/tests/libs/batch_norm/tem_fused_linear_3.hsaco rename to machine_interface/tests/libs/hip/batch_norm/tem_fused_linear_3.hsaco diff --git a/machine_interface/tests/libs/double_matmul/tem_fused_linear_0.hsaco b/machine_interface/tests/libs/hip/double_matmul/tem_fused_linear_0.hsaco similarity index 100% rename from machine_interface/tests/libs/double_matmul/tem_fused_linear_0.hsaco rename to machine_interface/tests/libs/hip/double_matmul/tem_fused_linear_0.hsaco diff --git a/machine_interface/tests/libs/double_matmul/tem_fused_linear_1.hsaco b/machine_interface/tests/libs/hip/double_matmul/tem_fused_linear_1.hsaco similarity index 100% rename from machine_interface/tests/libs/double_matmul/tem_fused_linear_1.hsaco rename to machine_interface/tests/libs/hip/double_matmul/tem_fused_linear_1.hsaco diff --git a/machine_interface/tests/libs/lenet5/poi_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/lenet5/poi_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/poi_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/lenet5/poi_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco b/machine_interface/tests/libs/hip/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco rename to machine_interface/tests/libs/hip/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco diff --git a/machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco b/machine_interface/tests/libs/hip/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco rename to machine_interface/tests/libs/hip/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco diff --git a/machine_interface/tests/libs/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco b/machine_interface/tests/libs/hip/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco rename to machine_interface/tests/libs/hip/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco diff --git a/machine_interface/tests/libs/lenet5/tem_fused_conv2d_relu_1.hsaco b/machine_interface/tests/libs/hip/lenet5/tem_fused_conv2d_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/tem_fused_conv2d_relu_1.hsaco rename to machine_interface/tests/libs/hip/lenet5/tem_fused_conv2d_relu_1.hsaco diff --git a/machine_interface/tests/libs/lenet5/tem_fused_linear_relu_7.hsaco b/machine_interface/tests/libs/hip/lenet5/tem_fused_linear_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/tem_fused_linear_relu_7.hsaco rename to machine_interface/tests/libs/hip/lenet5/tem_fused_linear_relu_7.hsaco diff --git a/machine_interface/tests/libs/lenet5/tem_fused_relu_5.hsaco b/machine_interface/tests/libs/hip/lenet5/tem_fused_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/tem_fused_relu_5.hsaco rename to machine_interface/tests/libs/hip/lenet5/tem_fused_relu_5.hsaco diff --git a/machine_interface/tests/libs/lenet5/tem_fused_relu_6.hsaco b/machine_interface/tests/libs/hip/lenet5/tem_fused_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/lenet5/tem_fused_relu_6.hsaco rename to machine_interface/tests/libs/hip/lenet5/tem_fused_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco b/machine_interface/tests/libs/hip/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco rename to machine_interface/tests/libs/hip/resnet152/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco diff --git a/machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco b/machine_interface/tests/libs/hip/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco rename to machine_interface/tests/libs/hip/resnet152/poi_fused_add_miopen_batch_norm_relu_25.hsaco diff --git a/machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco b/machine_interface/tests/libs/hip/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco rename to machine_interface/tests/libs/hip/resnet152/poi_fused_add_miopen_batch_norm_relu_28.hsaco diff --git a/machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco b/machine_interface/tests/libs/hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco rename to machine_interface/tests/libs/hip/resnet152/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco diff --git a/machine_interface/tests/libs/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet152/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_24.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_24.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_24.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_24.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet152/tem_fused_linear_30.hsaco b/machine_interface/tests/libs/hip/resnet152/tem_fused_linear_30.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet152/tem_fused_linear_30.hsaco rename to machine_interface/tests/libs/hip/resnet152/tem_fused_linear_30.hsaco diff --git a/machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_16.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/hip/resnet18/tem_fused_linear_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco rename to machine_interface/tests/libs/hip/resnet18/tem_fused_linear_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch/tem_fused_linear_23.hsaco b/machine_interface/tests/libs/hip/resnet18batch/tem_fused_linear_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch/tem_fused_linear_23.hsaco rename to machine_interface/tests/libs/hip/resnet18batch/tem_fused_linear_23.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch16/tem_fused_linear_22.hsaco b/machine_interface/tests/libs/hip/resnet18batch16/tem_fused_linear_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch16/tem_fused_linear_22.hsaco rename to machine_interface/tests/libs/hip/resnet18batch16/tem_fused_linear_22.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch2/tem_fused_linear_21.hsaco b/machine_interface/tests/libs/hip/resnet18batch2/tem_fused_linear_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch2/tem_fused_linear_21.hsaco rename to machine_interface/tests/libs/hip/resnet18batch2/tem_fused_linear_21.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch32/tem_fused_linear_23.hsaco b/machine_interface/tests/libs/hip/resnet18batch32/tem_fused_linear_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch32/tem_fused_linear_23.hsaco rename to machine_interface/tests/libs/hip/resnet18batch32/tem_fused_linear_23.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/poi_fused_add_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch4/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch4/tem_fused_linear_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch4/tem_fused_linear_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch4/tem_fused_linear_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch64/tem_fused_linear_24.hsaco b/machine_interface/tests/libs/hip/resnet18batch64/tem_fused_linear_24.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch64/tem_fused_linear_24.hsaco rename to machine_interface/tests/libs/hip/resnet18batch64/tem_fused_linear_24.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_17.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_8.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_8.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_8.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18batch8/tem_fused_linear_22.hsaco b/machine_interface/tests/libs/hip/resnet18batch8/tem_fused_linear_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18batch8/tem_fused_linear_22.hsaco rename to machine_interface/tests/libs/hip/resnet18batch8/tem_fused_linear_22.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/per_fused_add_conv2d_mean_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/poi_fused_add_conv2d_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/poi_fused_add_conv2d_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/poi_fused_conv2d_max_pool2d_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_add_conv2d_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_16.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_16.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_16.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_conv2d_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_conv2d_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet18onnx/tem_fused_linear_20.hsaco b/machine_interface/tests/libs/hip/resnet18onnx/tem_fused_linear_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet18onnx/tem_fused_linear_20.hsaco rename to machine_interface/tests/libs/hip/resnet18onnx/tem_fused_linear_20.hsaco diff --git a/machine_interface/tests/libs/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet34/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet34/poi_fused_add_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet34/poi_fused_add_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet34/poi_fused_add_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet34/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet34/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_16.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_16.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_16.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet34/tem_fused_linear_21.hsaco b/machine_interface/tests/libs/hip/resnet34/tem_fused_linear_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34/tem_fused_linear_21.hsaco rename to machine_interface/tests/libs/hip/resnet34/tem_fused_linear_21.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_23.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_17.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_20.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_20.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_20.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_3.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_3.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_3.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_8.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_8.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_8.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet34batch16/tem_fused_linear_24.hsaco b/machine_interface/tests/libs/hip/resnet34batch16/tem_fused_linear_24.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch16/tem_fused_linear_24.hsaco rename to machine_interface/tests/libs/hip/resnet34batch16/tem_fused_linear_24.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/poi_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_6.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_6.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet34batch2/tem_fused_linear_21.hsaco b/machine_interface/tests/libs/hip/resnet34batch2/tem_fused_linear_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch2/tem_fused_linear_21.hsaco rename to machine_interface/tests/libs/hip/resnet34batch2/tem_fused_linear_21.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_add_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_add_conv2d_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_12.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_12.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_12.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_6.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_6.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_6.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet34batch4/tem_fused_linear_22.hsaco b/machine_interface/tests/libs/hip/resnet34batch4/tem_fused_linear_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch4/tem_fused_linear_22.hsaco rename to machine_interface/tests/libs/hip/resnet34batch4/tem_fused_linear_22.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_add_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_10.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_max_pool2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/poi_fused_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_add_conv2d_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_0.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_0.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_0.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_17.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_17.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_17.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_8.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_8.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_8.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet34batch8/tem_fused_linear_23.hsaco b/machine_interface/tests/libs/hip/resnet34batch8/tem_fused_linear_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet34batch8/tem_fused_linear_23.hsaco rename to machine_interface/tests/libs/hip/resnet34batch8/tem_fused_linear_23.hsaco diff --git a/machine_interface/tests/libs/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco b/machine_interface/tests/libs/hip/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco rename to machine_interface/tests/libs/hip/resnet50/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_29.hsaco diff --git a/machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco b/machine_interface/tests/libs/hip/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco rename to machine_interface/tests/libs/hip/resnet50/poi_fused_add_miopen_batch_norm_relu_25.hsaco diff --git a/machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco b/machine_interface/tests/libs/hip/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco rename to machine_interface/tests/libs/hip/resnet50/poi_fused_add_miopen_batch_norm_relu_28.hsaco diff --git a/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco rename to machine_interface/tests/libs/hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_17.hsaco diff --git a/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco b/machine_interface/tests/libs/hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco rename to machine_interface/tests/libs/hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_22.hsaco diff --git a/machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco b/machine_interface/tests/libs/hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco rename to machine_interface/tests/libs/hip/resnet50/poi_fused_conv2d_miopen_batch_norm_relu_26.hsaco diff --git a/machine_interface/tests/libs/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco b/machine_interface/tests/libs/hip/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco rename to machine_interface/tests/libs/hip/resnet50/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_14.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_19.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_21.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_5.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_add_conv2d_miopen_batch_norm_relu_7.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_10.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_10.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_10.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_10.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_24.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_24.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_24.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_24.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_12.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_13.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_16.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_20.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_23.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_27.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_3.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_6.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_8.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco diff --git a/machine_interface/tests/libs/resnet50/tem_fused_linear_30.hsaco b/machine_interface/tests/libs/hip/resnet50/tem_fused_linear_30.hsaco similarity index 100% rename from machine_interface/tests/libs/resnet50/tem_fused_linear_30.hsaco rename to machine_interface/tests/libs/hip/resnet50/tem_fused_linear_30.hsaco diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 4993b16f..e688531c 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -192,7 +192,7 @@ mod server_tests { #[cfg(feature = "gpu")] { matmul_path = format!( - "{}/../machine_interface/tests/data/test_gpu_matmul_para.json", + "{}/../machine_interface/tests/data/hip/test_gpu_matmul_para.json", env!("CARGO_MANIFEST_DIR"), ); #[cfg(feature = "gpu_thread")] @@ -517,7 +517,7 @@ mod server_tests { let engine_type; #[cfg(feature = "gpu")] let inference_path = format!( - "{}/../machine_interface/tests/data/test_gpu_inference.json", + "{}/../machine_interface/tests/data/hip/test_gpu_inference.json", env!("CARGO_MANIFEST_DIR"), ); #[cfg(feature = "mmu")] From 4d044d6c8ca839eb167ffbc4da5a6ec6fd21f4a5 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Mon, 17 Mar 2025 13:23:07 +0100 Subject: [PATCH 150/176] gpu_thread works --- machine_interface/Cargo.toml | 2 +- .../compute_driver/gpu/gpu_api.rs | 6 +- .../gpu/gpu_tests/cuda_tests/load_models.rs | 470 +++++++++--------- machine_interface/src/machine_config.rs | 2 +- .../data/cuda/test_gpu_double_matmul.json | 6 +- .../tests/data/cuda/test_gpu_resnet18.json | 56 +-- .../tests/libs/cuda/double_matmul.cubin | Bin 6144 -> 6304 bytes .../tests/libs/cuda/resnet18.cubin | Bin 205184 -> 208288 bytes server/src/main.rs | 8 + 9 files changed, 279 insertions(+), 271 deletions(-) diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 423f8f7b..86f846fa 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -15,8 +15,8 @@ bytes_context = ["std", "dep:bytes"] wasm = ["std"] timestamp = ["dandelion_commons/timestamp"] gpu = ["std"] -hip = ["gpu"] cuda = ["gpu"] +hip = ["gpu"] gpu_process = ["gpu"] gpu_thread = ["gpu"] test_export = [] diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs index d1cd5705..73d816c0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_api.rs @@ -1,8 +1,8 @@ -#[cfg(all(feature = "hip", feature = "cuda"))] -compile_error!("Cannot compile with both the hip and cuda features"); +#[cfg(all(feature = "cuda", feature = "hip"))] +compile_error!("Cannot compile with both the cuda and hip features"); -#[cfg_attr(feature = "hip", path = "hip.rs")] #[cfg_attr(feature = "cuda", path = "cuda.rs")] +#[cfg_attr(feature = "hip", path = "hip.rs")] pub mod gpu_api; pub use gpu_api::{ diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs index 0640c3c9..e5d8a084 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/cuda_tests/load_models.rs @@ -5,101 +5,8 @@ use crate::{ memory_domain::Context, }; -pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/resnet18/"; - - add_buffer("input", 602112, params_path, &mut function_context); - add_buffer("p36", 16777216, params_path, &mut function_context); - add_buffer("p38", 16777216, params_path, &mut function_context); - add_buffer("p0", 37632, params_path, &mut function_context); - add_buffer("p1", 256, params_path, &mut function_context); - add_buffer("p2", 589824, params_path, &mut function_context); - add_buffer("p3", 256, params_path, &mut function_context); - add_buffer("p5", 256, params_path, &mut function_context); - add_buffer("p7", 256, params_path, &mut function_context); - add_buffer("p9", 256, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p13", 512, params_path, &mut function_context); - add_buffer("p14", 32768, params_path, &mut function_context); - add_buffer("p15", 512, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p21", 1024, params_path, &mut function_context); - add_buffer("p23", 1024, params_path, &mut function_context); - add_buffer("p25", 1024, params_path, &mut function_context); - add_buffer("p27", 1024, params_path, &mut function_context); - add_buffer("p29", 1024, params_path, &mut function_context); - add_buffer("p31", 2048, params_path, &mut function_context); - add_buffer("p33", 2048, params_path, &mut function_context); - add_buffer("p35", 2048, params_path, &mut function_context); - add_buffer("p4", 589824, params_path, &mut function_context); - add_buffer("p6", 589824, params_path, &mut function_context); - add_buffer("p37", 2048, params_path, &mut function_context); - add_buffer("p39", 2048, params_path, &mut function_context); - add_buffer("p41", 4000, params_path, &mut function_context); - add_buffer("p8", 589824, params_path, &mut function_context); - add_buffer("p10", 294912, params_path, &mut function_context); - add_buffer("p12", 1048576, params_path, &mut function_context); - add_buffer("p24", 131072, params_path, &mut function_context); - add_buffer("p16", 1048576, params_path, &mut function_context); - add_buffer("p18", 1048576, params_path, &mut function_context); - add_buffer("p20", 1179648, params_path, &mut function_context); - add_buffer("p34", 524288, params_path, &mut function_context); - add_buffer("p22", 4194304, params_path, &mut function_context); - add_buffer("p26", 4194304, params_path, &mut function_context); - add_buffer("p28", 4194304, params_path, &mut function_context); - add_buffer("p40", 2048000, params_path, &mut function_context); - add_buffer("p30", 4718592, params_path, &mut function_context); - add_buffer("p32", 16777216, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 4000; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - -pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/rnn/"; - - add_buffer("input", 3136, params_path, &mut function_context); - add_buffer("p0", 14336, params_path, &mut function_context); - add_buffer("p1", 512, params_path, &mut function_context); - add_buffer("p2", 512, params_path, &mut function_context); - add_buffer("p3", 65536, params_path, &mut function_context); - add_buffer("p4", 512, params_path, &mut function_context); - add_buffer("p5", 65536, params_path, &mut function_context); - add_buffer("p6", 512, params_path, &mut function_context); - add_buffer("p7", 512, params_path, &mut function_context); - add_buffer("p8", 65536, params_path, &mut function_context); - add_buffer("p9", 512, params_path, &mut function_context); - add_buffer("p10", 65536, params_path, &mut function_context); - add_buffer("p11", 512, params_path, &mut function_context); - add_buffer("p12", 512, params_path, &mut function_context); - add_buffer("p13", 65536, params_path, &mut function_context); - add_buffer("p14", 512, params_path, &mut function_context); - add_buffer("p15", 65536, params_path, &mut function_context); - add_buffer("p16", 512, params_path, &mut function_context); - add_buffer("p17", 512, params_path, &mut function_context); - add_buffer("p18", 65536, params_path, &mut function_context); - add_buffer("p19", 512, params_path, &mut function_context); - add_buffer("p20", 65536, params_path, &mut function_context); - add_buffer("p21", 512, params_path, &mut function_context); - add_buffer("p22", 512, params_path, &mut function_context); - add_buffer("p23", 65536, params_path, &mut function_context); - add_buffer("p24", 512, params_path, &mut function_context); - add_buffer("p25", 5120, params_path, &mut function_context); - add_buffer("p26", 40, params_path, &mut function_context); - - let output_name: &str = "output"; - let output_size: usize = 512; - let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); - - (output_size, output_name.to_string(), expected, function_context) -} - pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/vit_b_16/"; + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/vit_b_16/"; add_buffer("input", 602112, params_path, &mut function_context); add_buffer("p163", 7077888, params_path, &mut function_context); @@ -289,8 +196,47 @@ pub fn load_vit_b_16(mut function_context: Context) -> (usize, String, Vec, (output_size, output_name.to_string(), expected, function_context) } +pub fn load_rnn(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/rnn/"; + + add_buffer("input", 3136, params_path, &mut function_context); + add_buffer("p0", 14336, params_path, &mut function_context); + add_buffer("p1", 512, params_path, &mut function_context); + add_buffer("p2", 512, params_path, &mut function_context); + add_buffer("p3", 65536, params_path, &mut function_context); + add_buffer("p4", 512, params_path, &mut function_context); + add_buffer("p5", 65536, params_path, &mut function_context); + add_buffer("p6", 512, params_path, &mut function_context); + add_buffer("p7", 512, params_path, &mut function_context); + add_buffer("p8", 65536, params_path, &mut function_context); + add_buffer("p9", 512, params_path, &mut function_context); + add_buffer("p10", 65536, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 512, params_path, &mut function_context); + add_buffer("p13", 65536, params_path, &mut function_context); + add_buffer("p14", 512, params_path, &mut function_context); + add_buffer("p15", 65536, params_path, &mut function_context); + add_buffer("p16", 512, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 65536, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 65536, params_path, &mut function_context); + add_buffer("p21", 512, params_path, &mut function_context); + add_buffer("p22", 512, params_path, &mut function_context); + add_buffer("p23", 65536, params_path, &mut function_context); + add_buffer("p24", 512, params_path, &mut function_context); + add_buffer("p25", 5120, params_path, &mut function_context); + add_buffer("p26", 40, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 512; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/double_matmul/"; + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/double_matmul/"; add_buffer("input", 16, params_path, &mut function_context); add_buffer("p0", 80, params_path, &mut function_context); @@ -304,28 +250,9 @@ pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec< } pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/lstm/"; + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/lstm/"; add_buffer("input", 3136, params_path, &mut function_context); - add_buffer("p252", 524288, params_path, &mut function_context); - add_buffer("p254", 524288, params_path, &mut function_context); - add_buffer("p256", 524288, params_path, &mut function_context); - add_buffer("p258", 524288, params_path, &mut function_context); - add_buffer("p260", 524288, params_path, &mut function_context); - add_buffer("p262", 524288, params_path, &mut function_context); - add_buffer("p264", 524288, params_path, &mut function_context); - add_buffer("p266", 524288, params_path, &mut function_context); - add_buffer("p268", 524288, params_path, &mut function_context); - add_buffer("p270", 524288, params_path, &mut function_context); - add_buffer("p272", 524288, params_path, &mut function_context); - add_buffer("p274", 524288, params_path, &mut function_context); - add_buffer("p276", 524288, params_path, &mut function_context); - add_buffer("p278", 524288, params_path, &mut function_context); - add_buffer("p280", 524288, params_path, &mut function_context); - add_buffer("p282", 524288, params_path, &mut function_context); - add_buffer("p284", 524288, params_path, &mut function_context); - add_buffer("p286", 524288, params_path, &mut function_context); - add_buffer("p288", 524288, params_path, &mut function_context); add_buffer("p0", 512, params_path, &mut function_context); add_buffer("p1", 319488, params_path, &mut function_context); add_buffer("p2", 2048, params_path, &mut function_context); @@ -340,265 +267,284 @@ pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Con add_buffer("p11", 2048, params_path, &mut function_context); add_buffer("p12", 319488, params_path, &mut function_context); add_buffer("p13", 2048, params_path, &mut function_context); + add_buffer("p14", 319488, params_path, &mut function_context); add_buffer("p15", 2048, params_path, &mut function_context); + add_buffer("p16", 319488, params_path, &mut function_context); add_buffer("p17", 2048, params_path, &mut function_context); + add_buffer("p18", 319488, params_path, &mut function_context); add_buffer("p19", 2048, params_path, &mut function_context); + add_buffer("p20", 319488, params_path, &mut function_context); add_buffer("p21", 2048, params_path, &mut function_context); + add_buffer("p22", 319488, params_path, &mut function_context); add_buffer("p23", 2048, params_path, &mut function_context); + add_buffer("p24", 319488, params_path, &mut function_context); add_buffer("p25", 2048, params_path, &mut function_context); + add_buffer("p26", 319488, params_path, &mut function_context); add_buffer("p27", 2048, params_path, &mut function_context); + add_buffer("p28", 319488, params_path, &mut function_context); add_buffer("p29", 2048, params_path, &mut function_context); + add_buffer("p30", 319488, params_path, &mut function_context); add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 319488, params_path, &mut function_context); add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 319488, params_path, &mut function_context); add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 319488, params_path, &mut function_context); add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 319488, params_path, &mut function_context); add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 319488, params_path, &mut function_context); add_buffer("p41", 2048, params_path, &mut function_context); + add_buffer("p42", 319488, params_path, &mut function_context); add_buffer("p43", 2048, params_path, &mut function_context); + add_buffer("p44", 319488, params_path, &mut function_context); add_buffer("p45", 2048, params_path, &mut function_context); + add_buffer("p46", 319488, params_path, &mut function_context); add_buffer("p47", 2048, params_path, &mut function_context); + add_buffer("p48", 319488, params_path, &mut function_context); add_buffer("p49", 2048, params_path, &mut function_context); + add_buffer("p50", 319488, params_path, &mut function_context); add_buffer("p51", 2048, params_path, &mut function_context); + add_buffer("p52", 319488, params_path, &mut function_context); add_buffer("p53", 2048, params_path, &mut function_context); + add_buffer("p54", 319488, params_path, &mut function_context); add_buffer("p55", 2048, params_path, &mut function_context); + add_buffer("p56", 319488, params_path, &mut function_context); add_buffer("p57", 2048, params_path, &mut function_context); add_buffer("p58", 512, params_path, &mut function_context); + add_buffer("p59", 524288, params_path, &mut function_context); add_buffer("p60", 2048, params_path, &mut function_context); add_buffer("p61", 512, params_path, &mut function_context); + add_buffer("p62", 524288, params_path, &mut function_context); add_buffer("p63", 2048, params_path, &mut function_context); + add_buffer("p64", 524288, params_path, &mut function_context); add_buffer("p65", 2048, params_path, &mut function_context); + add_buffer("p66", 524288, params_path, &mut function_context); add_buffer("p67", 2048, params_path, &mut function_context); + add_buffer("p68", 524288, params_path, &mut function_context); add_buffer("p69", 2048, params_path, &mut function_context); + add_buffer("p70", 524288, params_path, &mut function_context); add_buffer("p71", 2048, params_path, &mut function_context); + add_buffer("p72", 524288, params_path, &mut function_context); add_buffer("p73", 2048, params_path, &mut function_context); + add_buffer("p74", 524288, params_path, &mut function_context); add_buffer("p75", 2048, params_path, &mut function_context); + add_buffer("p76", 524288, params_path, &mut function_context); add_buffer("p77", 2048, params_path, &mut function_context); + add_buffer("p78", 524288, params_path, &mut function_context); add_buffer("p79", 2048, params_path, &mut function_context); + add_buffer("p80", 524288, params_path, &mut function_context); add_buffer("p81", 2048, params_path, &mut function_context); + add_buffer("p82", 524288, params_path, &mut function_context); add_buffer("p83", 2048, params_path, &mut function_context); + add_buffer("p84", 524288, params_path, &mut function_context); add_buffer("p85", 2048, params_path, &mut function_context); + add_buffer("p86", 524288, params_path, &mut function_context); add_buffer("p87", 2048, params_path, &mut function_context); + add_buffer("p88", 524288, params_path, &mut function_context); add_buffer("p89", 2048, params_path, &mut function_context); + add_buffer("p90", 524288, params_path, &mut function_context); add_buffer("p91", 2048, params_path, &mut function_context); + add_buffer("p92", 524288, params_path, &mut function_context); add_buffer("p93", 2048, params_path, &mut function_context); + add_buffer("p94", 524288, params_path, &mut function_context); add_buffer("p95", 2048, params_path, &mut function_context); + add_buffer("p96", 524288, params_path, &mut function_context); add_buffer("p97", 2048, params_path, &mut function_context); - add_buffer("p116", 512, params_path, &mut function_context); - add_buffer("p119", 512, params_path, &mut function_context); - add_buffer("p174", 512, params_path, &mut function_context); - add_buffer("p14", 319488, params_path, &mut function_context); - add_buffer("p16", 319488, params_path, &mut function_context); - add_buffer("p18", 319488, params_path, &mut function_context); - add_buffer("p20", 319488, params_path, &mut function_context); - add_buffer("p22", 319488, params_path, &mut function_context); - add_buffer("p24", 319488, params_path, &mut function_context); + add_buffer("p98", 524288, params_path, &mut function_context); add_buffer("p99", 2048, params_path, &mut function_context); + add_buffer("p100", 524288, params_path, &mut function_context); add_buffer("p101", 2048, params_path, &mut function_context); + add_buffer("p102", 524288, params_path, &mut function_context); add_buffer("p103", 2048, params_path, &mut function_context); + add_buffer("p104", 524288, params_path, &mut function_context); add_buffer("p105", 2048, params_path, &mut function_context); + add_buffer("p106", 524288, params_path, &mut function_context); add_buffer("p107", 2048, params_path, &mut function_context); + add_buffer("p108", 524288, params_path, &mut function_context); add_buffer("p109", 2048, params_path, &mut function_context); + add_buffer("p110", 524288, params_path, &mut function_context); add_buffer("p111", 2048, params_path, &mut function_context); + add_buffer("p112", 524288, params_path, &mut function_context); add_buffer("p113", 2048, params_path, &mut function_context); + add_buffer("p114", 524288, params_path, &mut function_context); add_buffer("p115", 2048, params_path, &mut function_context); + add_buffer("p116", 512, params_path, &mut function_context); + add_buffer("p117", 524288, params_path, &mut function_context); add_buffer("p118", 2048, params_path, &mut function_context); + add_buffer("p119", 512, params_path, &mut function_context); + add_buffer("p120", 524288, params_path, &mut function_context); add_buffer("p121", 2048, params_path, &mut function_context); + add_buffer("p122", 524288, params_path, &mut function_context); add_buffer("p123", 2048, params_path, &mut function_context); + add_buffer("p124", 524288, params_path, &mut function_context); add_buffer("p125", 2048, params_path, &mut function_context); + add_buffer("p126", 524288, params_path, &mut function_context); add_buffer("p127", 2048, params_path, &mut function_context); + add_buffer("p128", 524288, params_path, &mut function_context); add_buffer("p129", 2048, params_path, &mut function_context); + add_buffer("p130", 524288, params_path, &mut function_context); add_buffer("p131", 2048, params_path, &mut function_context); + add_buffer("p132", 524288, params_path, &mut function_context); add_buffer("p133", 2048, params_path, &mut function_context); + add_buffer("p134", 524288, params_path, &mut function_context); add_buffer("p135", 2048, params_path, &mut function_context); + add_buffer("p136", 524288, params_path, &mut function_context); add_buffer("p137", 2048, params_path, &mut function_context); + add_buffer("p138", 524288, params_path, &mut function_context); add_buffer("p139", 2048, params_path, &mut function_context); + add_buffer("p140", 524288, params_path, &mut function_context); add_buffer("p141", 2048, params_path, &mut function_context); + add_buffer("p142", 524288, params_path, &mut function_context); add_buffer("p143", 2048, params_path, &mut function_context); + add_buffer("p144", 524288, params_path, &mut function_context); add_buffer("p145", 2048, params_path, &mut function_context); + add_buffer("p146", 524288, params_path, &mut function_context); add_buffer("p147", 2048, params_path, &mut function_context); + add_buffer("p148", 524288, params_path, &mut function_context); add_buffer("p149", 2048, params_path, &mut function_context); + add_buffer("p150", 524288, params_path, &mut function_context); add_buffer("p151", 2048, params_path, &mut function_context); + add_buffer("p152", 524288, params_path, &mut function_context); add_buffer("p153", 2048, params_path, &mut function_context); + add_buffer("p154", 524288, params_path, &mut function_context); add_buffer("p155", 2048, params_path, &mut function_context); + add_buffer("p156", 524288, params_path, &mut function_context); add_buffer("p157", 2048, params_path, &mut function_context); + add_buffer("p158", 524288, params_path, &mut function_context); add_buffer("p159", 2048, params_path, &mut function_context); + add_buffer("p160", 524288, params_path, &mut function_context); add_buffer("p161", 2048, params_path, &mut function_context); + add_buffer("p162", 524288, params_path, &mut function_context); add_buffer("p163", 2048, params_path, &mut function_context); + add_buffer("p164", 524288, params_path, &mut function_context); add_buffer("p165", 2048, params_path, &mut function_context); + add_buffer("p166", 524288, params_path, &mut function_context); add_buffer("p167", 2048, params_path, &mut function_context); + add_buffer("p168", 524288, params_path, &mut function_context); add_buffer("p169", 2048, params_path, &mut function_context); + add_buffer("p170", 524288, params_path, &mut function_context); add_buffer("p171", 2048, params_path, &mut function_context); + add_buffer("p172", 524288, params_path, &mut function_context); add_buffer("p173", 2048, params_path, &mut function_context); + add_buffer("p174", 512, params_path, &mut function_context); + add_buffer("p175", 524288, params_path, &mut function_context); add_buffer("p176", 2048, params_path, &mut function_context); add_buffer("p177", 512, params_path, &mut function_context); + add_buffer("p178", 524288, params_path, &mut function_context); add_buffer("p179", 2048, params_path, &mut function_context); + add_buffer("p180", 524288, params_path, &mut function_context); add_buffer("p181", 2048, params_path, &mut function_context); + add_buffer("p182", 524288, params_path, &mut function_context); add_buffer("p183", 2048, params_path, &mut function_context); + add_buffer("p184", 524288, params_path, &mut function_context); add_buffer("p185", 2048, params_path, &mut function_context); + add_buffer("p186", 524288, params_path, &mut function_context); add_buffer("p187", 2048, params_path, &mut function_context); + add_buffer("p188", 524288, params_path, &mut function_context); add_buffer("p189", 2048, params_path, &mut function_context); + add_buffer("p190", 524288, params_path, &mut function_context); add_buffer("p191", 2048, params_path, &mut function_context); + add_buffer("p192", 524288, params_path, &mut function_context); add_buffer("p193", 2048, params_path, &mut function_context); + add_buffer("p194", 524288, params_path, &mut function_context); add_buffer("p195", 2048, params_path, &mut function_context); + add_buffer("p196", 524288, params_path, &mut function_context); add_buffer("p197", 2048, params_path, &mut function_context); + add_buffer("p198", 524288, params_path, &mut function_context); add_buffer("p199", 2048, params_path, &mut function_context); + add_buffer("p200", 524288, params_path, &mut function_context); add_buffer("p201", 2048, params_path, &mut function_context); + add_buffer("p202", 524288, params_path, &mut function_context); add_buffer("p203", 2048, params_path, &mut function_context); + add_buffer("p204", 524288, params_path, &mut function_context); add_buffer("p205", 2048, params_path, &mut function_context); + add_buffer("p206", 524288, params_path, &mut function_context); add_buffer("p207", 2048, params_path, &mut function_context); + add_buffer("p208", 524288, params_path, &mut function_context); add_buffer("p209", 2048, params_path, &mut function_context); + add_buffer("p210", 524288, params_path, &mut function_context); add_buffer("p211", 2048, params_path, &mut function_context); + add_buffer("p212", 524288, params_path, &mut function_context); add_buffer("p213", 2048, params_path, &mut function_context); + add_buffer("p214", 524288, params_path, &mut function_context); add_buffer("p215", 2048, params_path, &mut function_context); + add_buffer("p216", 524288, params_path, &mut function_context); add_buffer("p217", 2048, params_path, &mut function_context); + add_buffer("p218", 524288, params_path, &mut function_context); add_buffer("p219", 2048, params_path, &mut function_context); + add_buffer("p220", 524288, params_path, &mut function_context); add_buffer("p221", 2048, params_path, &mut function_context); + add_buffer("p222", 524288, params_path, &mut function_context); add_buffer("p223", 2048, params_path, &mut function_context); + add_buffer("p224", 524288, params_path, &mut function_context); add_buffer("p225", 2048, params_path, &mut function_context); + add_buffer("p226", 524288, params_path, &mut function_context); add_buffer("p227", 2048, params_path, &mut function_context); + add_buffer("p228", 524288, params_path, &mut function_context); add_buffer("p229", 2048, params_path, &mut function_context); + add_buffer("p230", 524288, params_path, &mut function_context); add_buffer("p231", 2048, params_path, &mut function_context); add_buffer("p232", 512, params_path, &mut function_context); + add_buffer("p233", 524288, params_path, &mut function_context); add_buffer("p234", 2048, params_path, &mut function_context); add_buffer("p235", 512, params_path, &mut function_context); + add_buffer("p236", 524288, params_path, &mut function_context); add_buffer("p237", 2048, params_path, &mut function_context); + add_buffer("p238", 524288, params_path, &mut function_context); add_buffer("p239", 2048, params_path, &mut function_context); + add_buffer("p240", 524288, params_path, &mut function_context); add_buffer("p241", 2048, params_path, &mut function_context); + add_buffer("p242", 524288, params_path, &mut function_context); add_buffer("p243", 2048, params_path, &mut function_context); + add_buffer("p244", 524288, params_path, &mut function_context); add_buffer("p245", 2048, params_path, &mut function_context); + add_buffer("p246", 524288, params_path, &mut function_context); add_buffer("p247", 2048, params_path, &mut function_context); + add_buffer("p248", 524288, params_path, &mut function_context); add_buffer("p249", 2048, params_path, &mut function_context); + add_buffer("p250", 524288, params_path, &mut function_context); add_buffer("p251", 2048, params_path, &mut function_context); + add_buffer("p252", 524288, params_path, &mut function_context); add_buffer("p253", 2048, params_path, &mut function_context); + add_buffer("p254", 524288, params_path, &mut function_context); add_buffer("p255", 2048, params_path, &mut function_context); + add_buffer("p256", 524288, params_path, &mut function_context); add_buffer("p257", 2048, params_path, &mut function_context); + add_buffer("p258", 524288, params_path, &mut function_context); add_buffer("p259", 2048, params_path, &mut function_context); + add_buffer("p260", 524288, params_path, &mut function_context); add_buffer("p261", 2048, params_path, &mut function_context); + add_buffer("p262", 524288, params_path, &mut function_context); add_buffer("p263", 2048, params_path, &mut function_context); + add_buffer("p264", 524288, params_path, &mut function_context); add_buffer("p265", 2048, params_path, &mut function_context); + add_buffer("p266", 524288, params_path, &mut function_context); add_buffer("p267", 2048, params_path, &mut function_context); + add_buffer("p268", 524288, params_path, &mut function_context); add_buffer("p269", 2048, params_path, &mut function_context); + add_buffer("p270", 524288, params_path, &mut function_context); add_buffer("p271", 2048, params_path, &mut function_context); + add_buffer("p272", 524288, params_path, &mut function_context); add_buffer("p273", 2048, params_path, &mut function_context); + add_buffer("p274", 524288, params_path, &mut function_context); add_buffer("p275", 2048, params_path, &mut function_context); + add_buffer("p276", 524288, params_path, &mut function_context); add_buffer("p277", 2048, params_path, &mut function_context); - add_buffer("p291", 40, params_path, &mut function_context); - add_buffer("p26", 319488, params_path, &mut function_context); - add_buffer("p28", 319488, params_path, &mut function_context); - add_buffer("p30", 319488, params_path, &mut function_context); - add_buffer("p32", 319488, params_path, &mut function_context); - add_buffer("p34", 319488, params_path, &mut function_context); - add_buffer("p36", 319488, params_path, &mut function_context); + add_buffer("p278", 524288, params_path, &mut function_context); add_buffer("p279", 2048, params_path, &mut function_context); + add_buffer("p280", 524288, params_path, &mut function_context); add_buffer("p281", 2048, params_path, &mut function_context); + add_buffer("p282", 524288, params_path, &mut function_context); add_buffer("p283", 2048, params_path, &mut function_context); + add_buffer("p284", 524288, params_path, &mut function_context); add_buffer("p285", 2048, params_path, &mut function_context); + add_buffer("p286", 524288, params_path, &mut function_context); add_buffer("p287", 2048, params_path, &mut function_context); + add_buffer("p288", 524288, params_path, &mut function_context); add_buffer("p289", 2048, params_path, &mut function_context); add_buffer("p290", 5120, params_path, &mut function_context); - add_buffer("p38", 319488, params_path, &mut function_context); - add_buffer("p40", 319488, params_path, &mut function_context); - add_buffer("p42", 319488, params_path, &mut function_context); - add_buffer("p44", 319488, params_path, &mut function_context); - add_buffer("p46", 319488, params_path, &mut function_context); - add_buffer("p48", 319488, params_path, &mut function_context); - add_buffer("p50", 319488, params_path, &mut function_context); - add_buffer("p52", 319488, params_path, &mut function_context); - add_buffer("p54", 319488, params_path, &mut function_context); - add_buffer("p56", 319488, params_path, &mut function_context); - add_buffer("p59", 524288, params_path, &mut function_context); - add_buffer("p62", 524288, params_path, &mut function_context); - add_buffer("p64", 524288, params_path, &mut function_context); - add_buffer("p66", 524288, params_path, &mut function_context); - add_buffer("p68", 524288, params_path, &mut function_context); - add_buffer("p70", 524288, params_path, &mut function_context); - add_buffer("p72", 524288, params_path, &mut function_context); - add_buffer("p74", 524288, params_path, &mut function_context); - add_buffer("p76", 524288, params_path, &mut function_context); - add_buffer("p78", 524288, params_path, &mut function_context); - add_buffer("p80", 524288, params_path, &mut function_context); - add_buffer("p82", 524288, params_path, &mut function_context); - add_buffer("p84", 524288, params_path, &mut function_context); - add_buffer("p86", 524288, params_path, &mut function_context); - add_buffer("p88", 524288, params_path, &mut function_context); - add_buffer("p90", 524288, params_path, &mut function_context); - add_buffer("p92", 524288, params_path, &mut function_context); - add_buffer("p94", 524288, params_path, &mut function_context); - add_buffer("p96", 524288, params_path, &mut function_context); - add_buffer("p98", 524288, params_path, &mut function_context); - add_buffer("p100", 524288, params_path, &mut function_context); - add_buffer("p102", 524288, params_path, &mut function_context); - add_buffer("p104", 524288, params_path, &mut function_context); - add_buffer("p106", 524288, params_path, &mut function_context); - add_buffer("p108", 524288, params_path, &mut function_context); - add_buffer("p110", 524288, params_path, &mut function_context); - add_buffer("p112", 524288, params_path, &mut function_context); - add_buffer("p114", 524288, params_path, &mut function_context); - add_buffer("p117", 524288, params_path, &mut function_context); - add_buffer("p120", 524288, params_path, &mut function_context); - add_buffer("p122", 524288, params_path, &mut function_context); - add_buffer("p124", 524288, params_path, &mut function_context); - add_buffer("p126", 524288, params_path, &mut function_context); - add_buffer("p128", 524288, params_path, &mut function_context); - add_buffer("p130", 524288, params_path, &mut function_context); - add_buffer("p132", 524288, params_path, &mut function_context); - add_buffer("p134", 524288, params_path, &mut function_context); - add_buffer("p136", 524288, params_path, &mut function_context); - add_buffer("p138", 524288, params_path, &mut function_context); - add_buffer("p140", 524288, params_path, &mut function_context); - add_buffer("p142", 524288, params_path, &mut function_context); - add_buffer("p144", 524288, params_path, &mut function_context); - add_buffer("p146", 524288, params_path, &mut function_context); - add_buffer("p148", 524288, params_path, &mut function_context); - add_buffer("p150", 524288, params_path, &mut function_context); - add_buffer("p152", 524288, params_path, &mut function_context); - add_buffer("p154", 524288, params_path, &mut function_context); - add_buffer("p156", 524288, params_path, &mut function_context); - add_buffer("p158", 524288, params_path, &mut function_context); - add_buffer("p160", 524288, params_path, &mut function_context); - add_buffer("p162", 524288, params_path, &mut function_context); - add_buffer("p164", 524288, params_path, &mut function_context); - add_buffer("p166", 524288, params_path, &mut function_context); - add_buffer("p168", 524288, params_path, &mut function_context); - add_buffer("p170", 524288, params_path, &mut function_context); - add_buffer("p172", 524288, params_path, &mut function_context); - add_buffer("p175", 524288, params_path, &mut function_context); - add_buffer("p178", 524288, params_path, &mut function_context); - add_buffer("p180", 524288, params_path, &mut function_context); - add_buffer("p182", 524288, params_path, &mut function_context); - add_buffer("p184", 524288, params_path, &mut function_context); - add_buffer("p186", 524288, params_path, &mut function_context); - add_buffer("p188", 524288, params_path, &mut function_context); - add_buffer("p190", 524288, params_path, &mut function_context); - add_buffer("p192", 524288, params_path, &mut function_context); - add_buffer("p194", 524288, params_path, &mut function_context); - add_buffer("p196", 524288, params_path, &mut function_context); - add_buffer("p198", 524288, params_path, &mut function_context); - add_buffer("p200", 524288, params_path, &mut function_context); - add_buffer("p202", 524288, params_path, &mut function_context); - add_buffer("p204", 524288, params_path, &mut function_context); - add_buffer("p206", 524288, params_path, &mut function_context); - add_buffer("p208", 524288, params_path, &mut function_context); - add_buffer("p210", 524288, params_path, &mut function_context); - add_buffer("p212", 524288, params_path, &mut function_context); - add_buffer("p214", 524288, params_path, &mut function_context); - add_buffer("p216", 524288, params_path, &mut function_context); - add_buffer("p218", 524288, params_path, &mut function_context); - add_buffer("p220", 524288, params_path, &mut function_context); - add_buffer("p222", 524288, params_path, &mut function_context); - add_buffer("p224", 524288, params_path, &mut function_context); - add_buffer("p226", 524288, params_path, &mut function_context); - add_buffer("p228", 524288, params_path, &mut function_context); - add_buffer("p230", 524288, params_path, &mut function_context); - add_buffer("p233", 524288, params_path, &mut function_context); - add_buffer("p236", 524288, params_path, &mut function_context); - add_buffer("p238", 524288, params_path, &mut function_context); - add_buffer("p240", 524288, params_path, &mut function_context); - add_buffer("p242", 524288, params_path, &mut function_context); - add_buffer("p244", 524288, params_path, &mut function_context); - add_buffer("p246", 524288, params_path, &mut function_context); - add_buffer("p248", 524288, params_path, &mut function_context); - add_buffer("p250", 524288, params_path, &mut function_context); + add_buffer("p291", 40, params_path, &mut function_context); let output_name: &str = "output"; let output_size: usize = 512; @@ -607,8 +553,62 @@ pub fn load_lstm(mut function_context: Context) -> (usize, String, Vec, Con (output_size, output_name.to_string(), expected, function_context) } +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/resnet18/"; + + add_buffer("input", 602112, params_path, &mut function_context); + add_buffer("p0", 37632, params_path, &mut function_context); + add_buffer("p1", 256, params_path, &mut function_context); + add_buffer("p2", 589824, params_path, &mut function_context); + add_buffer("p3", 256, params_path, &mut function_context); + add_buffer("p4", 589824, params_path, &mut function_context); + add_buffer("p5", 256, params_path, &mut function_context); + add_buffer("p6", 589824, params_path, &mut function_context); + add_buffer("p7", 256, params_path, &mut function_context); + add_buffer("p8", 589824, params_path, &mut function_context); + add_buffer("p9", 256, params_path, &mut function_context); + add_buffer("p10", 294912, params_path, &mut function_context); + add_buffer("p11", 512, params_path, &mut function_context); + add_buffer("p12", 1048576, params_path, &mut function_context); + add_buffer("p13", 512, params_path, &mut function_context); + add_buffer("p14", 32768, params_path, &mut function_context); + add_buffer("p15", 512, params_path, &mut function_context); + add_buffer("p16", 1048576, params_path, &mut function_context); + add_buffer("p17", 512, params_path, &mut function_context); + add_buffer("p18", 1048576, params_path, &mut function_context); + add_buffer("p19", 512, params_path, &mut function_context); + add_buffer("p20", 1179648, params_path, &mut function_context); + add_buffer("p21", 1024, params_path, &mut function_context); + add_buffer("p22", 4194304, params_path, &mut function_context); + add_buffer("p23", 1024, params_path, &mut function_context); + add_buffer("p24", 131072, params_path, &mut function_context); + add_buffer("p25", 1024, params_path, &mut function_context); + add_buffer("p26", 4194304, params_path, &mut function_context); + add_buffer("p27", 1024, params_path, &mut function_context); + add_buffer("p28", 4194304, params_path, &mut function_context); + add_buffer("p29", 1024, params_path, &mut function_context); + add_buffer("p30", 4718592, params_path, &mut function_context); + add_buffer("p31", 2048, params_path, &mut function_context); + add_buffer("p32", 16777216, params_path, &mut function_context); + add_buffer("p33", 2048, params_path, &mut function_context); + add_buffer("p34", 524288, params_path, &mut function_context); + add_buffer("p35", 2048, params_path, &mut function_context); + add_buffer("p36", 16777216, params_path, &mut function_context); + add_buffer("p37", 2048, params_path, &mut function_context); + add_buffer("p38", 16777216, params_path, &mut function_context); + add_buffer("p39", 2048, params_path, &mut function_context); + add_buffer("p40", 2048000, params_path, &mut function_context); + add_buffer("p41", 4000, params_path, &mut function_context); + + let output_name: &str = "output"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, params_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + pub fn load_simple(mut function_context: Context) -> (usize, String, Vec, Context) { - let params_path = "/pub/scratch/alrusso/compiler-tests/model_parameters/simple/"; + let params_path = "/pub/scratch/alrusso/TVM-compilation/model_parameters/simple/"; add_buffer("input", 16, params_path, &mut function_context); add_buffer("p0", 8, params_path, &mut function_context); diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index fa848799..b1fac4b1 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -88,7 +88,7 @@ pub fn get_available_domains( }, ), #[cfg(feature = "gpu")] - (DomainType::Gpu, MemoryResource::Anonymous { size: 0 }), + (DomainType::Gpu, MemoryResource::Shared { id: u64::MAX, size: 0 }), #[cfg(feature = "wasm")] (DomainType::RWasm, MemoryResource::Anonymous { size: 0 }), ]); diff --git a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json index f2fc50fe..5daf035c 100644 --- a/machine_interface/tests/data/cuda/test_gpu_double_matmul.json +++ b/machine_interface/tests/data/cuda/test_gpu_double_matmul.json @@ -1,12 +1,12 @@ { "modules": [{"module_name": "double_matmul.cubin", "path": "cuda/double_matmul.cubin"}], "kernels": [ - {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"}, - {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"} + {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_1_kernel"}, + {"module_name": "double_matmul.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_kernel"} ], "blueprint": { "inputs": ["input", "p0", "p1"], - "buffers": {"b2": {"Absolute": 20}, "output": {"Absolute": 12}}, + "buffers": {"output": {"Absolute": 12}, "b2": {"Absolute": 20}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_dense_kernel", [{"Ptr": "b2"}, {"Ptr": "input"}, {"Ptr": "p0"}], { diff --git a/machine_interface/tests/data/cuda/test_gpu_resnet18.json b/machine_interface/tests/data/cuda/test_gpu_resnet18.json index b1117405..f5ef637f 100644 --- a/machine_interface/tests/data/cuda/test_gpu_resnet18.json +++ b/machine_interface/tests/data/cuda/test_gpu_resnet18.json @@ -1,45 +1,45 @@ { "modules": [{"module_name": "resnet18.cubin", "path": "cuda/resnet18.cubin"}], "kernels": [ - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_2"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_1_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_1"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_2_kernel_2"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_3_kernel_2"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_kernel_1"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_2_kernel_2"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_2"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_add_nn_relu_3_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_kernel_2"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_kernel"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_1_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_2_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_3_kernel"}, {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel"}, - {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_contrib_conv2d_winograd_without_weight_transform_add_nn_relu_1_kernel"} + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_dense_add_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_global_avg_pool2d_kernel_1"}, + {"module_name": "resnet18.cubin", "kernel_name": "tvmgen_default_fused_nn_max_pool2d_kernel"} ], "blueprint": { - "inputs": ["input", "p36", "p38", "p0", "p1", "p2", "p3", "p5", "p7", "p9", "p11", "p13", "p14", "p15", "p17", "p19", "p21", "p23", "p25", "p27", "p29", "p31", "p33", "p35", "p4", "p6", "p37", "p39", "p41", "p8", "p10", "p12", "p24", "p16", "p18", "p20", "p34", "p22", "p26", "p28", "p40", "p30", "p32"], - "buffers": {"b4": {"Absolute": 802816}, "b3": {"Absolute": 3211264}, "b9": {"Absolute": 802816}, "b40": {"Absolute": 100352}, "b45": {"Absolute": 2048}, "b49": {"Absolute": 1806336}, "b50": {"Absolute": 1806336}, "output": {"Absolute": 4000}}, + "inputs": ["input", "p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16", "p17", "p18", "p19", "p20", "p21", "p22", "p23", "p24", "p25", "p26", "p27", "p28", "p29", "p30", "p31", "p32", "p33", "p34", "p35", "p36", "p37", "p38", "p39", "p40", "p41"], + "buffers": {"b3": {"Absolute": 3211264}, "b4": {"Absolute": 802816}, "b9": {"Absolute": 802816}, "b40": {"Absolute": 100352}, "b45": {"Absolute": 2048}, "b49": {"Absolute": 1806336}, "b50": {"Absolute": 1806336}, "output": {"Absolute": 4000}}, "outputs": ["output"], "control_flow": [ {"ExecKernel": ["tvmgen_default_fused_nn_conv2d_add_nn_relu_kernel", [{"Ptr": "b3"}, {"Ptr": "input"}, {"Ptr": "p0"}, {"Ptr": "p1"}], { diff --git a/machine_interface/tests/libs/cuda/double_matmul.cubin b/machine_interface/tests/libs/cuda/double_matmul.cubin index 56d1b1ea3979caeeb98383b0502fce5addbe7ffb..cd53db0939a9a3a6d0faeec039d6b57c6da48710 100644 GIT binary patch literal 6304 zcmeHL&2Jk;6o1}byKcJJNvKpuK%AtBlwO=tzIwC*6b@8KIaCONT(@?TiezK0H<4XF zx=B%$s8YqXx2odMKcE+cKsi;A6K76Q#GyhUMLh%V`^|^F-nC#IF0JH|c4y|z`@MM| zGjDeG#=9R}FcOK^j*%<|{YYP_HmcoIvg5xf>r2T?RHXA{@q2_4M1}ft-E+P26>jOe zxhngjF4dQvN`nf{M&X*XxJCu9+VBeA#_CelDOIYA<@FV>w76ccR!R;CPQ6xXkWjwrU0ZXW>&4fnI|Dl+ zZs;`R8C!gP8s1q)eeAmqD7@CXmm2GGGTTPi;d%e#w(WDn5L$?Jz8=*fD z^b-;K45w<7G7c3TR#MPLVLiS;owYZ8f0oj%O@B5mnna+#9+_1Vv`h$Z-#^_C^h@5CF-Gn6K{^>QLd=2(ubQ!<_g zal8*F+x-M_+yZ^bMBjX=Mb?=d@wY)T{4ht-n#~bD0nYMsnIE5@d;Ac`(0VydMXv9m zowTXQWDMa6>zHENv!)}fB-Rk>e|RmR{#(_5aa{*NmXR4szWGpf*jy3EcLIGKGesIy z0}l*5pgdq)=Zv5e+;3SLYpOG6k{PBl^xbt%(igZ5o`Wpe4YHBbYV(IC{hFt-9d&Tb zNPc5GDNiRPQkFNeWtouJ8oqOk9_4A~mSNM!oV*O~|CHrEp8}t#KJ#zxm^7FOJCnTVT%BPe>TJVak^~FA7^_EeUyp$S$+#S6-N|3PISxvBTEYyWZlr?)LrtY@*`2K#T)9qd1` zod)|)-eZ2~u5nuK_e_He=0o^pg>M7`*2{kndAt{XAB%-c5Z}vx_&)-C3U}H- z@zrOfuN;SpMP~f~51RNd(hIM}1@Y|X2>v$9fKT3rut3rO%as~pq?i5p{}LD9%YJMV uY&HF#KA?hV?kj?>b^Ks6a5_$ktzG4m|8*V2VNPvd8xU&f{T;*|MbD>p4SDMT literal 6144 zcmeHLPiP!f82{$aCS$tY-Nt|kYPQ>^kb-OyV{JVMv5>Z4ON)mRgD~B6Cx5V+EVG-i zTZL?Bk@TXy_U=LOQap%WG(st*rye{=PbGLL;vstQy8gcR-b`j^)^@fAhu~@g#Dr8xz3dU z)s1|0vE(`BZV;DO+-j}l*2WWq68O-a2O;T1_J`z?TJJ;3&fMyPJ@1v49V&Xxm12}p zYUdzvELFN(TUv3SA>m0=ogk+F;Jg^IZF_ch@pj4aggyPaU3+|f3uRP_5VyHt zypOrgrZ<|+QLD@?SisPRlT*&M`6Dluk1G12VTSL8{rfY^ojX(CPe#lL$UU%y$I|@ zAQA!nDpoQdn|u`B$u^6N7i(U zW{FaQ&Vt5?_JN`?-bTaF#g2PxI89$n$tK@>|Vb_+zp^yth|Q{x1A2c!qKS%pdbKv`H;t?*OD=|BZFsfIfH) zeIpqvc)G!RlPLG|=uhdCZz9Nke@bWkZoiqL{8XslObP#3K;U~#%Jbgp<9kj2?#lg} z*N7lNbOz7kEWP>>16BDoOV@ApSR&xu4}a4hzAMnIyoY?<74hiV)jtgTjh?{a2SPu- zOHg1zC;jJwO;^VEdLt!5FXTnO)mIef8{-W%RCIVglrx-foo0|T&iDN>`lLZ3KIRZU zrnd8RE|R~~pm+FVrghDrtt<@&{m}Oxp#P5b$N71t^@sIzz%va_Z7YZP-`!h(1#fTt z@&5FGU4L-xxeA{R!TuQ1G^N_Vu|TLqNO8aEgr88`;@L=N6#pW02j@#@oTfTd#Nnl6 zcx&dh&4q7-T)u+Bs7~f@@`VNEk$CUEqOwP2SM)kai|SCiq@cbV!C9vG_Fv%dDZIL_ ziWu`PE{ZQmgJR>)C`ZG1zI8|O+rZ_Rk$j}*SnovL*5e;xgu@H2dIMhW9P`Op6;7~jKp<8V>GC~%64!WB%~ v*OX-N{sXN}_@+`9#^WO^hW`wBj)^}%0>$coyS%weZYTfGWALQ-PX7N1$`oIM diff --git a/machine_interface/tests/libs/cuda/resnet18.cubin b/machine_interface/tests/libs/cuda/resnet18.cubin index e8db3a572f57be85245eb558d6abac46d6f5562d..2ad8d329742e2bb1ff601557489400dc8da41075 100644 GIT binary patch literal 208288 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 From 3475f6f662f38d86137e69971de430fda1440dd8 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 21 Feb 2024 13:49:01 +0100 Subject: [PATCH 012/176] Adapt system driver tests and hyper engine to new interface --- machine_interface/src/function_driver.rs | 2 + .../compute_driver/compute_driver_tests.rs | 104 +------------ .../function_driver/system_driver/hyper.rs | 142 ++++-------------- .../system_driver/system_driver_tests.rs | 51 ++++--- .../src/function_driver/test_queue.rs | 83 ++++++++++ .../src/function_driver/thread_utils.rs | 32 ++-- 6 files changed, 175 insertions(+), 239 deletions(-) create mode 100644 machine_interface/src/function_driver/test_queue.rs diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 6eaf2b57..065052c5 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -12,6 +12,8 @@ use libloading::Library; pub mod compute_driver; mod load_utils; pub mod system_driver; +#[cfg(test)] +mod test_queue; mod thread_utils; #[derive(Clone)] diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index a3210e2a..b628dfeb 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -2,10 +2,9 @@ mod compute_driver_tests { use crate::{ function_driver::{ - ComputeResource, Driver, Engine, EngineArguments, FunctionConfig, WorkQueue, + test_queue::TestQueue, ComputeResource, Driver, Engine, EngineArguments, FunctionConfig, }, memory_domain::{Context, ContextState, ContextTrait, MemoryDomain}, - promise::Promise, DataItem, DataSet, Position, }; use core::panic; @@ -13,73 +12,7 @@ mod compute_driver_tests { records::{Archive, RecordPoint, Recorder}, DandelionError, }; - use std::sync::{Arc, Condvar, Mutex}; - - struct TestQueueInternal { - args: Option, - promise: Option, - } - - #[derive(Clone)] - struct TestQueue { - internal: Arc<(Mutex, Condvar, Condvar)>, - } - - impl TestQueue { - fn enqueu(&self, args: EngineArguments) -> Promise { - let (lock, arg_var, promise_var) = self.internal.as_ref(); - let mut lock_guard = lock.lock().expect("Test queue failed to lock on enqueuing"); - if lock_guard.args.is_some() { - lock_guard = arg_var - .wait_while(lock_guard, |guard| guard.args.is_some()) - .expect("Test queue enqueue failed waiting on inserting args"); - } - if lock_guard.args.replace(args).is_some() { - panic!("Test queue replace args still present") - }; - arg_var.notify_all(); - if lock_guard.promise.is_none() { - lock_guard = promise_var - .wait_while(lock_guard, |guard| guard.promise.is_none()) - .expect("Test queue failed to lock on taking promise"); - } - let promise = lock_guard - .promise - .take() - .expect("Test queue return promis should be there because of condvar"); - promise_var.notify_all(); - return promise; - } - } - - impl WorkQueue for TestQueue { - fn get_engine_args(&self, promise: Promise) -> EngineArguments { - let (lock, arg_var, promise_var) = self.internal.as_ref(); - let mut lock_guard = lock - .lock() - .expect("Test queue failed to lock on get_engine_args"); - if lock_guard.promise.is_some() { - lock_guard = promise_var - .wait_while(lock_guard, |guard| guard.promise.is_some()) - .expect("Test queue failed to wait to place new promise"); - } - if lock_guard.promise.replace(promise).is_some() { - panic!("Test queue no promise should be present") - }; - promise_var.notify_all(); - if lock_guard.args.is_none() { - lock_guard = arg_var - .wait_while(lock_guard, |guard| guard.args.is_none()) - .expect("Test queue failed waiting to take args"); - } - let args = lock_guard - .args - .take() - .expect("Test queue tried to take args from empty queue"); - arg_var.notify_all(); - return args; - } - } + use std::sync::{Arc, Mutex}; fn loader_empty(dom_init: Vec, driver: Box) { // load elf file @@ -96,16 +29,7 @@ mod compute_driver_tests { wrong_init: Vec, ) { for wronge_resource in wrong_init { - let queue_box = Box::new(TestQueue { - internal: Arc::new(( - Mutex::new(TestQueueInternal { - args: None, - promise: None, - }), - Condvar::new(), - Condvar::new(), - )), - }); + let queue_box = Box::new(TestQueue::new()); let wrong_resource_engine = driver.start_engine(wronge_resource, queue_box); match wrong_resource_engine { Ok(_) => panic!("Should not be able to get engine"), @@ -114,16 +38,7 @@ mod compute_driver_tests { } for resource in init { - let queue_box = Box::new(TestQueue { - internal: Arc::new(( - Mutex::new(TestQueueInternal { - args: None, - promise: None, - }), - Condvar::new(), - Condvar::new(), - )), - }); + let queue_box = Box::new(TestQueue::new()); let engine = driver.start_engine(resource, queue_box); engine.expect("Should be able to get engine"); } @@ -135,16 +50,7 @@ mod compute_driver_tests { driver: &Box, drv_init: Vec, ) -> (Box, Context, FunctionConfig, Box) { - let queue = Box::new(TestQueue { - internal: Arc::new(( - Mutex::new(TestQueueInternal { - args: None, - promise: None, - }), - Condvar::new(), - Condvar::new(), - )), - }); + let queue = Box::new(TestQueue::new()); let mut domain = Dom::init(dom_init).expect("Should have initialized domain"); let function = driver .parse_function(filename.to_string(), &mut domain) diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index b616fe7b..e66dbd4e 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -1,23 +1,15 @@ use crate::{ function_driver::{ - thread_utils::{ThreadCommand, ThreadController, ThreadPayload, ThreadState}, - ComputeResource, Driver, Engine, Function, FunctionConfig, SystemFunction, + thread_utils::{EngineLoop, ThreadController}, + ComputeResource, Driver, Engine, Function, FunctionConfig, SystemFunction, WorkQueue, }, memory_domain::{Context, ContextTrait}, DataItem, DataSet, Position, }; -use core::{ - future::{ready, Future}, - task::Poll, -}; use core_affinity::set_for_current; -use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; +use dandelion_commons::{DandelionError, DandelionResult}; use hyper::{body::HttpBody, Body, Client, HeaderMap, Method, Request, Version}; use log::error; -use std::{ - pin::Pin, - sync::{Arc, Mutex}, -}; use tokio::runtime::{Builder, Runtime}; struct RequestInformation { @@ -307,12 +299,10 @@ fn http_context_write( } fn http_run( - context_ref: &Arc>>, + mut context: Context, runtime: &Runtime, output_set_names: Vec, -) -> DandelionResult<()> { - let mut context_guard = context_ref.lock().unwrap(); - let mut context = context_guard.take().unwrap(); +) -> DandelionResult { let response_result = { let _guard = runtime.enter(); let request = http_setup(&context)?; @@ -323,19 +313,18 @@ fn http_run( let response = match response_result { Ok(resp) => resp, Err(err) => { - let _ = context_guard.insert(context); return Err(err); } }; - let write_result = http_context_write(&mut context, output_set_names, response); - let _ = context_guard.insert(context); - return write_result; + http_context_write(&mut context, output_set_names, response)?; + return Ok(context); } -struct HyperState { +struct HyperLoop { runtime: Runtime, } -impl ThreadState for HyperState { + +impl EngineLoop for HyperLoop { fn init(core_id: u8) -> DandelionResult> { let runtime = Builder::new_multi_thread() .on_thread_start(move || { @@ -348,109 +337,40 @@ impl ThreadState for HyperState { .build() .or(Err(DandelionError::EngineError))?; - return Ok(Box::new(HyperState { runtime })); - } -} - -struct HyperCommand { - system_function: SystemFunction, - context: Arc>>, - output_set_names: Vec, -} -impl ThreadPayload for HyperCommand { - type State = HyperState; - fn run(self, state: &mut Self::State) -> DandelionResult<()> { - return match self.system_function { - SystemFunction::HTTP => http_run(&self.context, &state.runtime, self.output_set_names), - _ => Err(DandelionError::MalformedConfig), - }; - } -} - -pub struct HyperEngine { - thread_controller: ThreadController, -} - -// TODO check if there is a better way than this, for here and for wasm -// potentially coupling the sending back of the message and dropping the contex -struct HyperFuture<'a> { - engine: &'a mut HyperEngine, - context: Arc>>, -} - -impl Future for HyperFuture<'_> { - type Output = (DandelionResult<()>, Context); - fn poll( - mut self: Pin<&mut Self>, - cx: &mut futures::task::Context, - ) -> futures::task::Poll { - match self.engine.thread_controller.poll_next(cx) { - Poll::Pending => return Poll::Pending, - Poll::Ready(Some(Ok(()))) => { - // TODO handle errors (we don't have a context if locking fails) - let mut guard = self.context.lock().unwrap(); - if !guard.is_some() { - return Poll::Pending; - }; - let context = guard.take().unwrap(); - Poll::Ready((Ok(()), context)) - } - _ => { - let context = self.context.lock().unwrap().take().unwrap(); - Poll::Ready((Err(DandelionError::EngineError), context)) - } - } + return Ok(Box::new(HyperLoop { runtime })); } -} - -impl Engine for HyperEngine { fn run( &mut self, - config: &FunctionConfig, + config: FunctionConfig, context: Context, - output_set_names: &Vec, - mut recorder: Recorder, - ) -> Pin, Context)> + '_ + Send>> { + output_sets: Vec, + ) -> DandelionResult { let function = match config { FunctionConfig::SysConfig(sys_func) => sys_func, - _ => return Box::pin(ready((Err(DandelionError::ConfigMissmatch), context))), + _ => return Err(DandelionError::ConfigMissmatch), }; - if let Err(err) = recorder.record(dandelion_commons::records::RecordPoint::EngineStart) { - return Box::pin(core::future::ready((Err(err), context))); - } - let context_ = Arc::new(Mutex::new(Some(context))); - let command = ThreadCommand::Run( - recorder, - HyperCommand { - system_function: *function, - context: context_.clone(), - output_set_names: output_set_names.clone(), - }, - ); - match self.thread_controller.send_command(command) { - Ok(()) => (), - Err(err) => { - return Box::pin(futures::future::ready(( - Err(err), - context_.lock().unwrap().take().unwrap(), - ))) - } - } - return Box::pin(HyperFuture { - engine: self, - context: context_, - }); - } - fn abort(&mut self) -> DandelionResult<()> { - return Ok(()); + return match function { + SystemFunction::HTTP => http_run(context, &self.runtime, output_sets), + _ => Err(DandelionError::MalformedConfig), + }; } } +pub struct HyperEngine { + thread_controller: ThreadController, +} + +impl Engine for HyperEngine {} + pub struct HyperDriver {} impl Driver for HyperDriver { - fn start_engine(&self, resource: ComputeResource) -> DandelionResult> { + fn start_engine( + &self, + resource: ComputeResource, + queue: Box, + ) -> DandelionResult> { let core_id = match resource { ComputeResource::CPU(core) => core, _ => return Err(DandelionError::EngineResourceError), @@ -468,7 +388,7 @@ impl Driver for HyperDriver { return Err(DandelionError::EngineResourceError); } return Ok(Box::new(HyperEngine { - thread_controller: ThreadController::new(core_id), + thread_controller: ThreadController::new(core_id, queue), })); } diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 6d2a4248..09a2db52 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -2,8 +2,8 @@ mod system_driver_tests { use crate::{ function_driver::{ - system_driver::get_system_function_output_sets, ComputeResource, Driver, - FunctionConfig, SystemFunction, + system_driver::get_system_function_output_sets, test_queue::TestQueue, ComputeResource, + Driver, EngineArguments, FunctionConfig, SystemFunction, }, memory_domain::{Context, ContextTrait, MemoryDomain}, DataItem, DataSet, Position, @@ -60,11 +60,12 @@ mod system_driver_tests { drv_init: ComputeResource, ) -> () { let domain = Dom::init(dom_init).expect("Should be able to get domain"); + let queue = Box::new(TestQueue::new()); let mut context = domain .acquire_context(_CONTEXT_SIZE) .expect("Should be able to get context"); - let mut engine = driver - .start_engine(drv_init) + let _engine = driver + .start_engine(drv_init, queue.clone()) .expect("Should be able to get engine"); let config = FunctionConfig::SysConfig(SystemFunction::HTTP); @@ -75,14 +76,20 @@ mod system_driver_tests { write_request_line(&mut context, request).expect("Should be able to prepare request line"); let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let output_set_names = get_system_function_output_sets(SystemFunction::HTTP); - let (result, result_context) = tokio::runtime::Builder::new_current_thread() + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let output_sets = get_system_function_output_sets(SystemFunction::HTTP); + let promise = queue.enqueu(EngineArguments { + config, + context, + output_sets, + recorder, + }); + let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(engine.run(&config, context, &output_set_names, recorder.clone())); - assert_eq!(Ok(()), result); - recorder + .block_on(promise) + .expect("Engine should return without error"); + result_recorder .record(RecordPoint::FutureReturn) .expect("Should have advanced record"); @@ -115,12 +122,13 @@ mod system_driver_tests { driver: Box, drv_init: ComputeResource, ) -> () { + let queue = Box::new(TestQueue::new()); let domain = Dom::init(dom_init).expect("Should be able to get domain"); let mut context = domain .acquire_context(_CONTEXT_SIZE) .expect("Should be able to get context"); - let mut engine = driver - .start_engine(drv_init) + let _engine = driver + .start_engine(drv_init, queue.clone()) .expect("Should be able to get engine"); let config = FunctionConfig::SysConfig(SystemFunction::HTTP); @@ -141,15 +149,20 @@ mod system_driver_tests { .expect("Should be able to write body"); let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let output_set_names = get_system_function_output_sets(SystemFunction::HTTP); - - let (result, result_context) = tokio::runtime::Builder::new_current_thread() + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let output_sets = get_system_function_output_sets(SystemFunction::HTTP); + let promise = queue.enqueu(EngineArguments { + config, + context, + output_sets, + recorder, + }); + let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(engine.run(&config, context, &output_set_names, recorder.clone())); - assert_eq!(Ok(()), result); - recorder + .block_on(promise) + .expect("Engine should not fail"); + result_recorder .record(RecordPoint::FutureReturn) .expect("Should have advanced record"); diff --git a/machine_interface/src/function_driver/test_queue.rs b/machine_interface/src/function_driver/test_queue.rs new file mode 100644 index 00000000..b4ac0161 --- /dev/null +++ b/machine_interface/src/function_driver/test_queue.rs @@ -0,0 +1,83 @@ +use crate::{ + function_driver::{EngineArguments, WorkQueue}, + promise::Promise, +}; +use std::sync::{Arc, Condvar, Mutex}; + +struct TestQueueInternal { + args: Option, + promise: Option, +} + +#[derive(Clone)] +pub struct TestQueue { + internal: Arc<(Mutex, Condvar, Condvar)>, +} + +impl TestQueue { + pub fn new() -> Self { + return TestQueue { + internal: Arc::new(( + Mutex::new(TestQueueInternal { + args: None, + promise: None, + }), + Condvar::new(), + Condvar::new(), + )), + }; + } + pub fn enqueu(&self, args: EngineArguments) -> Promise { + let (lock, arg_var, promise_var) = self.internal.as_ref(); + let mut lock_guard = lock.lock().expect("Test queue failed to lock on enqueuing"); + if lock_guard.args.is_some() { + lock_guard = arg_var + .wait_while(lock_guard, |guard| guard.args.is_some()) + .expect("Test queue enqueue failed waiting on inserting args"); + } + if lock_guard.args.replace(args).is_some() { + panic!("Test queue replace args still present") + }; + arg_var.notify_all(); + if lock_guard.promise.is_none() { + lock_guard = promise_var + .wait_while(lock_guard, |guard| guard.promise.is_none()) + .expect("Test queue failed to lock on taking promise"); + } + let promise = lock_guard + .promise + .take() + .expect("Test queue return promis should be there because of condvar"); + promise_var.notify_all(); + return promise; + } +} + +impl WorkQueue for TestQueue { + fn get_engine_args(&self, promise: Promise) -> EngineArguments { + let (lock, arg_var, promise_var) = self.internal.as_ref(); + let mut lock_guard = lock + .lock() + .expect("Test queue failed to lock on get_engine_args"); + if lock_guard.promise.is_some() { + lock_guard = promise_var + .wait_while(lock_guard, |guard| guard.promise.is_some()) + .expect("Test queue failed to wait to place new promise"); + } + if lock_guard.promise.replace(promise).is_some() { + panic!("Test queue no promise should be present") + }; + promise_var.notify_all(); + if lock_guard.args.is_none() { + lock_guard = arg_var + .wait_while(lock_guard, |guard| guard.args.is_none()) + .expect("Test queue failed waiting to take args"); + } + let args = lock_guard + .args + .take() + .expect("Test queue tried to take args from empty queue"); + arg_var.notify_all(); + return args; + } +} diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 578ea8d7..349292e6 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -34,6 +34,8 @@ pub struct ThreadController { thread_handle: Option>, } +fn thread_abort() -> () {} + fn run_thread( core_id: u8, command_receiver: CommandReceiver, @@ -49,16 +51,24 @@ fn run_thread( if command_receiver.try_recv().is_ok() { return; } - let (promise, debt) = Promise::new(); + let (promise, debt) = Promise::new(thread_abort); let EngineArguments { config, context, output_sets, mut recorder, } = queue.get_engine_args(promise); - recorder.record(RecordPoint::EngineStart); + if let Err(err) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(err))); + continue; + } let result = engine_state.run(config, context, output_sets); - recorder.record(RecordPoint::EngineEnd); + if result.is_ok() { + if let Err(err) = recorder.record(RecordPoint::EngineEnd) { + debt.fulfill(Box::new(Err(err))); + continue; + } + } let results = Box::new(result.and_then(|context| Ok((context, recorder)))); debt.fulfill(results); } @@ -75,6 +85,7 @@ impl ThreadController { }; } + // TODO remove if better way to abort is ready fn send_command(&mut self) -> DandelionResult<()> { match self.command_sender.send(()) { Err(_) => Err(DandelionError::EngineError), @@ -85,12 +96,13 @@ impl ThreadController { impl Drop for ThreadController { fn drop(&mut self) { - if let Some(handle) = self.thread_handle.take() { - // drop channel - let _res = self.command_sender.send(()); - handle - .join() - .expect("Join thread handle in Thread controller should not panic"); - } + // TODO: actually interrup the thread and handle take down + // if let Some(handle) = self.thread_handle.take() { + // // drop channel + // let _res = self.command_sender.send(()); + // handle + // .join() + // .expect("Join thread handle in Thread controller should not panic"); + // } } } From 22429061725188c5e09e08f141ca0df18846fece Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Thu, 22 Feb 2024 11:18:28 +0100 Subject: [PATCH 013/176] Make switch away from acutal engine struct as it has become obsolete --- machine_interface/src/function_driver.rs | 12 +- .../compute_driver/compute_driver_tests.rs | 39 ++++--- .../src/function_driver/compute_driver/mmu.rs | 16 +-- .../function_driver/compute_driver/wasm.rs | 17 +-- .../function_driver/system_driver/hyper.rs | 17 +-- .../system_driver/system_driver_tests.rs | 10 +- .../src/function_driver/thread_utils.rs | 108 ++++++------------ 7 files changed, 81 insertions(+), 138 deletions(-) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 065052c5..87acafe5 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -83,7 +83,12 @@ pub enum ComputeResource { GPU(u8), } -pub struct EngineArguments { +pub enum EngineArguments { + FunctionArguments(FunctionArguments), + Shutdown(fn(Vec) -> ()), +} + +pub struct FunctionArguments { config: FunctionConfig, context: Context, output_sets: Vec, @@ -94,9 +99,6 @@ pub trait WorkQueue { fn get_engine_args(&self, promise: crate::promise::Promise) -> EngineArguments; } -/// Engines need to free up the resource they occupy when dropped -pub trait Engine {} - pub trait Driver: Send + Sync { // the resource descirbed by config and make it into an engine of the type fn start_engine( @@ -104,7 +106,7 @@ pub trait Driver: Send + Sync { resource: ComputeResource, // TODO check out why this can't be impl instead of Box, - ) -> DandelionResult>; + ) -> DandelionResult<()>; // parses an executable, // returns the layout requirements and a context containing static data, diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index b628dfeb..85d489d3 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -2,7 +2,8 @@ mod compute_driver_tests { use crate::{ function_driver::{ - test_queue::TestQueue, ComputeResource, Driver, Engine, EngineArguments, FunctionConfig, + test_queue::TestQueue, ComputeResource, Driver, EngineArguments, FunctionArguments, + FunctionConfig, }, memory_domain::{Context, ContextState, ContextTrait, MemoryDomain}, DataItem, DataSet, Position, @@ -49,19 +50,19 @@ mod compute_driver_tests { dom_init: Vec, driver: &Box, drv_init: Vec, - ) -> (Box, Context, FunctionConfig, Box) { + ) -> (Context, FunctionConfig, Box) { let queue = Box::new(TestQueue::new()); let mut domain = Dom::init(dom_init).expect("Should have initialized domain"); let function = driver .parse_function(filename.to_string(), &mut domain) .expect("Should be able to parse function"); - let engine = driver + driver .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function .load(&mut domain, 0x802_0000) .expect("Should be able to load function"); - return (engine, function_context, function.config, queue); + return (function_context, function.config, queue); } fn engine_minimal( @@ -70,16 +71,16 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (_engine, function_context, config, queue) = + let (function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, output_sets: Vec::new(), recorder: recorder.clone(), - }); + })); let _ = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -93,7 +94,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (_engine, mut function_context, config, queue) = + let (mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); // add inputs let in_size_offset = function_context @@ -112,12 +113,12 @@ mod compute_driver_tests { })); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, output_sets: vec![String::from("")], recorder, - }); + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -169,7 +170,7 @@ mod compute_driver_tests { const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { - let (_engine, mut function_context, config, queue) = prepare_engine_and_function::( + let (mut function_context, config, queue) = prepare_engine_and_function::( filename, dom_init.clone(), &driver, @@ -197,12 +198,12 @@ mod compute_driver_tests { })); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive.clone(), RecordPoint::TransferEnd); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, output_sets: vec![String::from("")], recorder, - }); + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() @@ -242,7 +243,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (_engine, mut function_context, config, queue) = + let (mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let stdin_content = "Test line \n line 2\n"; let stdin_offset = function_context @@ -288,12 +289,12 @@ mod compute_driver_tests { })); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, output_sets: vec![String::from("stdio")], recorder, - }); + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -358,7 +359,7 @@ mod compute_driver_tests { driver: Box, drv_init: Vec, ) { - let (_engine, mut function_context, config, queue) = + let (mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let in_file_content = "Test file 0\n line 2\n"; let in_file_offset = function_context @@ -430,7 +431,7 @@ mod compute_driver_tests { })); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, output_sets: vec![ @@ -439,7 +440,7 @@ mod compute_driver_tests { "out_nested".to_string(), ], recorder, - }); + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index 28af4f39..f3a72835 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -1,8 +1,8 @@ use crate::{ function_driver::{ load_utils::load_u8_from_file, - thread_utils::{EngineLoop, ThreadController}, - ComputeResource, Driver, ElfConfig, Engine, Function, FunctionConfig, WorkQueue, + thread_utils::{start_thread, EngineLoop}, + ComputeResource, Driver, ElfConfig, Function, FunctionConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}, @@ -210,11 +210,6 @@ impl EngineLoop for MmuLoop { } } -pub struct MmuEngine { - thread_controller: ThreadController, -} -impl Engine for MmuEngine {} - pub struct MmuDriver {} impl Driver for MmuDriver { @@ -223,7 +218,7 @@ impl Driver for MmuDriver { &self, resource: ComputeResource, queue: Box, - ) -> DandelionResult> { + ) -> DandelionResult<()> { let cpu_slot = match resource { ComputeResource::CPU(core) => core, _ => return Err(DandelionError::EngineResourceError), @@ -240,9 +235,8 @@ impl Driver for MmuDriver { { return Err(DandelionError::EngineResourceError); } - return Ok(Box::new(MmuEngine { - thread_controller: ThreadController::new(cpu_slot, queue), - })); + start_thread::(cpu_slot, queue); + return Ok(()); } // parses an executable, diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index 0e474bc5..489444e0 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -1,7 +1,7 @@ use crate::{ function_driver::{ - thread_utils::{EngineLoop, ThreadController}, - ComputeResource, Driver, Engine, Function, FunctionConfig, WasmConfig, WorkQueue, + thread_utils::{start_thread, EngineLoop}, + ComputeResource, Driver, Function, FunctionConfig, WasmConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, memory_domain::{Context, ContextType, MemoryDomain}, @@ -64,12 +64,6 @@ impl EngineLoop for WasmLoop { } } -pub struct WasmEngine { - thread_controller: ThreadController, -} - -impl Engine for WasmEngine {} - pub struct WasmDriver {} impl Driver for WasmDriver { @@ -77,7 +71,7 @@ impl Driver for WasmDriver { &self, resource: ComputeResource, queue: Box, - ) -> DandelionResult> { + ) -> DandelionResult<()> { // sanity checks; extract core id let cpu_slot = match resource { ComputeResource::CPU(core) => core, @@ -97,9 +91,8 @@ impl Driver for WasmDriver { } // create channels and spawn threads - return Ok(Box::new(WasmEngine { - thread_controller: ThreadController::new(cpu_slot, queue), - })); + start_thread::(cpu_slot, queue); + return Ok(()); } fn parse_function( diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index e66dbd4e..70a30513 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -1,7 +1,7 @@ use crate::{ function_driver::{ - thread_utils::{EngineLoop, ThreadController}, - ComputeResource, Driver, Engine, Function, FunctionConfig, SystemFunction, WorkQueue, + thread_utils::{start_thread, EngineLoop}, + ComputeResource, Driver, Function, FunctionConfig, SystemFunction, WorkQueue, }, memory_domain::{Context, ContextTrait}, DataItem, DataSet, Position, @@ -357,12 +357,6 @@ impl EngineLoop for HyperLoop { } } -pub struct HyperEngine { - thread_controller: ThreadController, -} - -impl Engine for HyperEngine {} - pub struct HyperDriver {} impl Driver for HyperDriver { @@ -370,7 +364,7 @@ impl Driver for HyperDriver { &self, resource: ComputeResource, queue: Box, - ) -> DandelionResult> { + ) -> DandelionResult<()> { let core_id = match resource { ComputeResource::CPU(core) => core, _ => return Err(DandelionError::EngineResourceError), @@ -387,9 +381,8 @@ impl Driver for HyperDriver { { return Err(DandelionError::EngineResourceError); } - return Ok(Box::new(HyperEngine { - thread_controller: ThreadController::new(core_id, queue), - })); + start_thread::(core_id, queue); + return Ok(()); } fn parse_function( diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 09a2db52..d38e49ed 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -3,7 +3,7 @@ mod system_driver_tests { use crate::{ function_driver::{ system_driver::get_system_function_output_sets, test_queue::TestQueue, ComputeResource, - Driver, EngineArguments, FunctionConfig, SystemFunction, + Driver, EngineArguments, FunctionArguments, FunctionConfig, SystemFunction, }, memory_domain::{Context, ContextTrait, MemoryDomain}, DataItem, DataSet, Position, @@ -78,12 +78,12 @@ mod system_driver_tests { let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); let output_sets = get_system_function_output_sets(SystemFunction::HTTP); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context, output_sets, recorder, - }); + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -151,12 +151,12 @@ mod system_driver_tests { let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); let output_sets = get_system_function_output_sets(SystemFunction::HTTP); - let promise = queue.enqueu(EngineArguments { + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context, output_sets, recorder, - }); + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() .unwrap() diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 349292e6..7d8fdc8a 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -1,14 +1,13 @@ use crate::{ - function_driver::{EngineArguments, FunctionConfig, WorkQueue}, + function_driver::{ + ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, WorkQueue, + }, memory_domain::Context, promise::Promise, }; use core::marker::Send; -use dandelion_commons::{records::RecordPoint, DandelionError, DandelionResult}; -use std::{ - marker::PhantomData, - thread::{spawn, JoinHandle}, -}; +use dandelion_commons::{records::RecordPoint, DandelionResult}; +use std::thread::spawn; extern crate alloc; @@ -22,25 +21,9 @@ pub trait EngineLoop { ) -> DandelionResult; } -/// Need the command receiver to be blocking on the worker thread, -/// that is easier if with this type, as it does not need async to block -type CommandSender = std::sync::mpsc::Sender<()>; -type CommandReceiver = std::sync::mpsc::Receiver<()>; - -pub struct ThreadController { - _loop_marker: PhantomData, - /// command sender that works accross threads - command_sender: CommandSender, - thread_handle: Option>, -} - fn thread_abort() -> () {} -fn run_thread( - core_id: u8, - command_receiver: CommandReceiver, - queue: Box, -) { +fn run_thread(core_id: u8, queue: Box) { // set core affinity if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { log::error!("core received core id that could not be set"); @@ -48,61 +31,38 @@ fn run_thread( } let mut engine_state = E::init(core_id).expect("Failed to initialize thread state"); loop { - if command_receiver.try_recv().is_ok() { - return; - } let (promise, debt) = Promise::new(thread_abort); - let EngineArguments { - config, - context, - output_sets, - mut recorder, - } = queue.get_engine_args(promise); - if let Err(err) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(err))); - continue; - } - let result = engine_state.run(config, context, output_sets); - if result.is_ok() { - if let Err(err) = recorder.record(RecordPoint::EngineEnd) { - debt.fulfill(Box::new(Err(err))); - continue; + // TODO catch unwind so we can always return an error or shut down gracefully + match queue.get_engine_args(promise) { + EngineArguments::FunctionArguments(func_args) => { + let FunctionArguments { + config, + context, + output_sets, + mut recorder, + } = func_args; + if let Err(err) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(err))); + continue; + } + let result = engine_state.run(config, context, output_sets); + if result.is_ok() { + if let Err(err) = recorder.record(RecordPoint::EngineEnd) { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let results = Box::new(result.and_then(|context| Ok((context, recorder)))); + debt.fulfill(results); + } + EngineArguments::Shutdown(resource_returner) => { + resource_returner(vec![ComputeResource::CPU(core_id)]); + return; } - } - let results = Box::new(result.and_then(|context| Ok((context, recorder)))); - debt.fulfill(results); - } -} - -impl ThreadController { - pub fn new(cpu_slot: u8, queue: Box) -> Self { - let (command_sender, command_receiver) = std::sync::mpsc::channel(); - let thread_handle = spawn(move || run_thread::(cpu_slot, command_receiver, queue)); - return ThreadController { - command_sender, - thread_handle: Some(thread_handle), - _loop_marker: PhantomData, - }; - } - - // TODO remove if better way to abort is ready - fn send_command(&mut self) -> DandelionResult<()> { - match self.command_sender.send(()) { - Err(_) => Err(DandelionError::EngineError), - Ok(_) => Ok(()), } } } -impl Drop for ThreadController { - fn drop(&mut self) { - // TODO: actually interrup the thread and handle take down - // if let Some(handle) = self.thread_handle.take() { - // // drop channel - // let _res = self.command_sender.send(()); - // handle - // .join() - // .expect("Join thread handle in Thread controller should not panic"); - // } - } +pub fn start_thread(cpu_slot: u8, queue: Box) -> () { + spawn(move || run_thread::(cpu_slot, queue)); } From ac3e5e14233594ea863201fffb907473802f21dc Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 23 Feb 2024 10:14:34 +0100 Subject: [PATCH 014/176] Switched engine argument get to allow promises to be generated outside for easier handling --- dandelion_commons/src/lib.rs | 12 +++-- machine_interface/src/function_driver.rs | 2 +- .../src/function_driver/test_queue.rs | 44 ++++--------------- .../src/function_driver/thread_utils.rs | 7 +-- machine_interface/src/promise.rs | 42 +++++++++++++----- 5 files changed, 53 insertions(+), 54 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 02af4819..dc5792b9 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -14,8 +14,15 @@ pub enum DandelionError { // errors in configurations /// configuration vector was malformed MalformedConfig, + // errors in parsing or creating compositions + /// failed to parse function + CompositionParsingError, /// parser did not find symbol that it was searching for UnknownSymbol, + /// Composition contains function that does not exist + CompositionContainsInvalidFunction, + /// Function in parsing has identifier that is not defined in composition + CompositionFunctionInvalidIdentifier, // domain and context errors /// error creating layout for read only context ContextReadOnlyLayout, @@ -59,6 +66,8 @@ pub enum DandelionError { EngineError, /// asked driver for engine, but there are no more available NoEngineAvailable, + /// debt was dropped without fulfilling it + PromiseDroppedDebt, /// there was a non recoverable issue when spawning or running the MMU worker MmuWorkerError, // system engine errors @@ -106,9 +115,6 @@ pub enum DandelionError { // errors from the functions /// Function indicated it failed FunctionError(i32), - - // TODO: resort this - InvalidComposition, } pub type DandelionResult = std::result::Result; diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 87acafe5..4529ce78 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -96,7 +96,7 @@ pub struct FunctionArguments { } pub trait WorkQueue { - fn get_engine_args(&self, promise: crate::promise::Promise) -> EngineArguments; + fn get_engine_args(&self) -> (EngineArguments, crate::promise::Debt); } pub trait Driver: Send + Sync { diff --git a/machine_interface/src/function_driver/test_queue.rs b/machine_interface/src/function_driver/test_queue.rs index b4ac0161..08368acf 100644 --- a/machine_interface/src/function_driver/test_queue.rs +++ b/machine_interface/src/function_driver/test_queue.rs @@ -1,73 +1,47 @@ use crate::{ function_driver::{EngineArguments, WorkQueue}, - promise::Promise, + promise::{Debt, Promise}, }; use std::sync::{Arc, Condvar, Mutex}; struct TestQueueInternal { - args: Option, - promise: Option, + args: Option<(EngineArguments, Debt)>, } #[derive(Clone)] pub struct TestQueue { - internal: Arc<(Mutex, Condvar, Condvar)>, + internal: Arc<(Mutex, Condvar)>, } impl TestQueue { pub fn new() -> Self { return TestQueue { - internal: Arc::new(( - Mutex::new(TestQueueInternal { - args: None, - promise: None, - }), - Condvar::new(), - Condvar::new(), - )), + internal: Arc::new((Mutex::new(TestQueueInternal { args: None }), Condvar::new())), }; } pub fn enqueu(&self, args: EngineArguments) -> Promise { - let (lock, arg_var, promise_var) = self.internal.as_ref(); + let (lock, arg_var) = self.internal.as_ref(); let mut lock_guard = lock.lock().expect("Test queue failed to lock on enqueuing"); if lock_guard.args.is_some() { lock_guard = arg_var .wait_while(lock_guard, |guard| guard.args.is_some()) .expect("Test queue enqueue failed waiting on inserting args"); } - if lock_guard.args.replace(args).is_some() { + let (promise, debt) = Promise::new(); + if lock_guard.args.replace((args, debt)).is_some() { panic!("Test queue replace args still present") }; arg_var.notify_all(); - if lock_guard.promise.is_none() { - lock_guard = promise_var - .wait_while(lock_guard, |guard| guard.promise.is_none()) - .expect("Test queue failed to lock on taking promise"); - } - let promise = lock_guard - .promise - .take() - .expect("Test queue return promis should be there because of condvar"); - promise_var.notify_all(); return promise; } } impl WorkQueue for TestQueue { - fn get_engine_args(&self, promise: Promise) -> EngineArguments { - let (lock, arg_var, promise_var) = self.internal.as_ref(); + fn get_engine_args(&self) -> (EngineArguments, Debt) { + let (lock, arg_var) = self.internal.as_ref(); let mut lock_guard = lock .lock() .expect("Test queue failed to lock on get_engine_args"); - if lock_guard.promise.is_some() { - lock_guard = promise_var - .wait_while(lock_guard, |guard| guard.promise.is_some()) - .expect("Test queue failed to wait to place new promise"); - } - if lock_guard.promise.replace(promise).is_some() { - panic!("Test queue no promise should be present") - }; - promise_var.notify_all(); if lock_guard.args.is_none() { lock_guard = arg_var .wait_while(lock_guard, |guard| guard.args.is_none()) diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 7d8fdc8a..a9404f9f 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -3,7 +3,6 @@ use crate::{ ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, WorkQueue, }, memory_domain::Context, - promise::Promise, }; use core::marker::Send; use dandelion_commons::{records::RecordPoint, DandelionResult}; @@ -21,8 +20,6 @@ pub trait EngineLoop { ) -> DandelionResult; } -fn thread_abort() -> () {} - fn run_thread(core_id: u8, queue: Box) { // set core affinity if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { @@ -31,9 +28,9 @@ fn run_thread(core_id: u8, queue: Box) { } let mut engine_state = E::init(core_id).expect("Failed to initialize thread state"); loop { - let (promise, debt) = Promise::new(thread_abort); // TODO catch unwind so we can always return an error or shut down gracefully - match queue.get_engine_args(promise) { + let (args, debt) = queue.get_engine_args(); + match args { EngineArguments::FunctionArguments(func_args) => { let FunctionArguments { config, diff --git a/machine_interface/src/promise.rs b/machine_interface/src/promise.rs index f1e5daeb..fdc5c51a 100644 --- a/machine_interface/src/promise.rs +++ b/machine_interface/src/promise.rs @@ -6,7 +6,7 @@ use core::{ sync::atomic::{AtomicPtr, AtomicU8, Ordering}, task::Poll, }; -use dandelion_commons::{records::Recorder, DandelionResult}; +use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; pub struct Promise { data: *const PromiseData, @@ -14,9 +14,9 @@ pub struct Promise { unsafe impl Send for Promise {} impl Promise { - pub fn new(abort_handle: fn()) -> (Promise, Debt) { + pub fn new() -> (Promise, Debt) { let data = Box::new(PromiseData { - abort_handle: AtomicPtr::new(abort_handle as *mut fn()), + abort_handle: AtomicPtr::new(ptr::null_mut()), results: AtomicPtr::new(ptr::null_mut()), waker: AtomicPtr::new(ptr::null_mut()), references: AtomicU8::new(2), @@ -26,7 +26,10 @@ impl Promise { let debt = Debt { data: data_ptr }; return (promise, debt); } - pub fn abort(self) -> () { + pub fn abort(mut self) -> () { + self.abort_internal(); + } + fn abort_internal(&mut self) { let data = unsafe { &*self.data }; let abort_hanlde = data.abort_handle.swap(ptr::null_mut(), Ordering::SeqCst); if !abort_hanlde.is_null() { @@ -65,14 +68,11 @@ pub struct Debt { unsafe impl Send for Debt {} impl Debt { - pub fn fulfill(self, results: Box>) -> () { - // make sure we are not aborted by this promise anymore + pub fn fulfill(self, results: Box>) { let data = unsafe { &*self.data }; - let abort_handle = data.abort_handle.swap(ptr::null_mut(), Ordering::SeqCst); - if abort_handle.is_null() { - return; - } // make sure we are not aborted by this promise anymore + data.abort_handle.store(ptr::null_mut(), Ordering::Release); + // write a result data.results.store(Box::into_raw(results), Ordering::SeqCst); let waker_ptr = data.waker.swap(ptr::null_mut(), Ordering::SeqCst); if !waker_ptr.is_null() { @@ -80,6 +80,11 @@ impl Debt { waker.wake(); } } + pub fn install_abort_handle(&self, handle: fn()) { + let data = unsafe { &*self.data }; + data.abort_handle + .store(handle as *mut fn(), Ordering::Release); + } } fn drop_promise_data(data_ptr: *const PromiseData) { @@ -91,11 +96,28 @@ fn drop_promise_data(data_ptr: *const PromiseData) { impl Drop for Promise { fn drop(&mut self) { + self.abort_internal(); drop_promise_data(self.data); } } impl Drop for Debt { fn drop(&mut self) { + let data = unsafe { &*self.data }; + // make sure we can't get aborted by this handle anymore + data.abort_handle.store(ptr::null_mut(), Ordering::Release); + // if abort_handle is not null, there is still a promise waiting for a result + if data.results.load(Ordering::Acquire).is_null() { + // always pay your debts + let error_box = Box::new(Err(DandelionError::PromiseDroppedDebt)); + // only need to store, because the debt is being dropped and only the debts could be used to fill in a result + data.results + .store(Box::into_raw(error_box), Ordering::SeqCst); + let waker_ptr = data.waker.swap(ptr::null_mut(), Ordering::SeqCst); + if !waker_ptr.is_null() { + let waker = unsafe { Box::from_raw(waker_ptr) }; + waker.wake(); + } + } drop_promise_data(self.data); } } From 55aef8cfccba1fd773b1584ca334291fb130f798 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 23 Feb 2024 15:31:37 +0100 Subject: [PATCH 015/176] Add new queueing to dispatcher --- dispatcher/src/composition.rs | 155 ++++++++++++++++-- dispatcher/src/dispatcher.rs | 38 ++--- dispatcher/src/execution_qs.rs | 108 ++++++------ dispatcher/src/function_registry.rs | 40 ++--- dispatcher/tests/dispatcher_tests.rs | 6 +- .../tests/dispatcher_tests/registry_tests.rs | 8 +- machine_interface/src/function_driver.rs | 8 +- .../compute_driver/compute_driver_tests.rs | 12 +- .../src/function_driver/compute_driver/mmu.rs | 2 +- .../function_driver/compute_driver/wasm.rs | 2 +- .../function_driver/system_driver/hyper.rs | 7 +- .../system_driver/system_driver_tests.rs | 5 +- .../src/function_driver/thread_utils.rs | 2 +- server/src/main.rs | 40 +++-- 14 files changed, 281 insertions(+), 152 deletions(-) diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index 25af8066..f5c15058 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -1,6 +1,9 @@ +use crate::function_registry::{FunctionDict, Metadata}; use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; +use dparser; +use itertools::Itertools; use machine_interface::memory_domain::Context; -use std::{collections::{BTreeMap, HashMap}, sync::Arc, vec}; +use std::{collections::BTreeMap, sync::Arc}; /// A composition has a composition wide id space that maps ids of /// the input and output sets to sets of individual functions to a unified @@ -23,28 +26,154 @@ pub struct FunctionDependencies { pub output_set_ids: Vec>, } -impl Composition { - pub fn from_module(module: &dparser::Module, - function_ids: &mut crate::function_registry::FunctionDict) -> DandelionResult> { - - let mut known_functions = HashMap::new(); - // let mut known_collections = HashMap::new(); +impl ShardingMode { + pub fn from_parser_sharding(sharding: &dparser::Sharding) -> Self { + return match sharding { + dparser::Sharding::All => Self::All, + dparser::Sharding::Keyed => Self::Key, + dparser::Sharding::Each => Self::Each, + }; + } +} +impl Composition { + pub fn from_module( + module: &dparser::Module, + function_ids: &mut FunctionDict, + ) -> DandelionResult> { + // TODO: do we need module somewhere else outside? Otherwise take ownership to safe a lot of clones + let mut known_functions = BTreeMap::new(); + let mut compositions = Vec::new(); for item in module.0.iter() { match item { dparser::Item::FunctionDecl(fdecl) => { - known_functions.insert(fdecl.v.name, ( - function_ids.lookup(&fdecl.v.name).ok_or(DandelionError::InvalidComposition)?, - fdecl.v) + known_functions.insert( + fdecl.v.name.clone(), + ( + function_ids + .lookup(&fdecl.v.name) + .ok_or(DandelionError::CompositionContainsInvalidFunction)?, + fdecl, + ), ); } dparser::Item::Composition(comp) => { - + let composition_id = function_ids.insert_or_lookup(comp.v.name.clone()); + let mut set_counter = 1usize; + let mut set_numbers = BTreeMap::new(); + // add composition input sets + for input_set_name in comp.v.params.iter() { + if (set_numbers.insert(input_set_name.clone(), set_counter)).is_some() { + // TODO: handle duplicate set names or guarantee the parser already errored on them + } + set_counter += 1; + } + // add all return sets from functions + let composition_set_identifiers = comp + .v + .statements + .iter() + .flat_map(|statement| match statement { + dparser::Statement::FunctionApplication(a) => { + a.v.rets.iter().map(|ret| ret.v.ident.clone()) + } + dparser::Statement::Loop(_) => + todo!("loop semantics need to be fleshed out and compositions extended to acoomodate them"), + }); + for set_identifier in composition_set_identifiers { + if (set_numbers.insert(set_identifier, set_counter)).is_some() { + // TODO: handle duplicate set names or guarantee the parser already errored on them + } + set_counter += 1; + } + // have enumerated all set that are available so can start putting the composition together + let dependencies = comp + .v + .statements + .iter() + .map(|statement| match statement { + dparser::Statement::FunctionApplication(a) => { + let (function_id, function_decl) = + known_functions.get(&a.v.name).ok_or( + DandelionError::CompositionContainsInvalidFunction, + )?; + if function_decl.v.params.len() < a.v.args.len() + || function_decl.v.params.len() < a.v.rets.len() + { + return Err(DandelionError::CompositionContainsInvalidFunction); + } + let mut input_set_ids = Vec::new(); + input_set_ids + .try_reserve(function_decl.v.params.len()) + .or(Err(DandelionError::OutOfMemory))?; + input_set_ids.resize(function_decl.v.params.len(), None); + for (index, param_name) in function_decl.v.params.iter().enumerate() + { + if let Some(arg) = + a.v.args.iter().find(|&arg| arg.v.name == *param_name) + { + let set_id = set_numbers.get(&arg.v.ident).ok_or( + DandelionError::CompositionFunctionInvalidIdentifier, + )?; + input_set_ids[index] = Some(( + *set_id, + ShardingMode::from_parser_sharding(&arg.v.sharding), + )); + } + } + let mut output_set_ids = Vec::new(); + output_set_ids + .try_reserve(function_decl.v.returns.len()) + .or(Err(DandelionError::OutOfMemory))?; + output_set_ids.resize(function_decl.v.returns.len(), None); + for (index, ret_name) in function_decl.v.returns.iter().enumerate() + { + if a.v + .rets + .iter() + .find(|&arg| arg.v.name == *ret_name) + .is_some() + { + let set_id = set_numbers.get(ret_name).ok_or( + DandelionError::CompositionContainsInvalidFunction, + )?; + output_set_ids[index] = Some(*set_id); + } + } + Ok(FunctionDependencies { + function: *function_id, + input_set_ids, + output_set_ids, + }) + } + dparser::Statement::Loop(_) => { + todo!("Need to implement loop support in compositions") + } + }) + .collect::>>()?; + let metadata = Metadata { + input_sets: comp + .v + .params + .iter() + .map(|name| (name.clone(), None)) + .collect_vec() + .into(), + output_sets: comp + .v + .returns + .iter() + .map(|name| name.clone()) + .collect_vec() + .into(), + }; + + compositions.push((composition_id, Composition { dependencies }, metadata)); } } } - - Ok(todo!()) + + Ok(compositions) } } diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index e1c3ea9a..167b48dd 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -11,7 +11,6 @@ use dandelion_commons::{ }; use futures::{ future::join_all, - lock::Mutex, stream::{FuturesUnordered, StreamExt}, Future, }; @@ -21,7 +20,7 @@ use machine_interface::{ memory_domain::{transer_data_item, Context, MemoryDomain}, }; use std::{ - collections::{BTreeMap, BTreeSet, VecDeque}, + collections::{BTreeMap, BTreeSet}, sync::Arc, sync::Mutex as SyncMutex, }; @@ -30,7 +29,7 @@ use std::{ // That have compile time size and static indexing pub struct Dispatcher { domains: BTreeMap>, - engines: BTreeMap, + engines: BTreeMap>, type_map: BTreeMap, function_registry: FunctionRegistry, pub archive: Arc>, @@ -47,16 +46,14 @@ impl Dispatcher { // Use up all engine resources to start with for (engine_id, driver) in function_registry.drivers.iter() { let mut engine_vec = Vec::new(); + let engine_queue = Box::new(EngineQueue::new()); while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(engine_id.clone()) { - let engine = driver.start_engine(resource)?; + let engine = driver.start_engine(resource, engine_queue.clone())?; engine_vec.push(engine); } - let engine_queue = EngineQueue { - internals: Mutex::new((engine_vec, VecDeque::new())), - }; - engines.insert(engine_id.clone(), engine_queue); + engines.insert(*engine_id, engine_queue); } let archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); return Ok(Dispatcher { @@ -76,8 +73,11 @@ impl Dispatcher { path: &str, metadata: Metadata, ) -> DandelionResult<()> { + // self.function_registry + // .insert_metadata(todo!("funciton name"), metadata) + // .await; self.function_registry - .insert_metadata(todo!("funciton name"), metadata) + .insert_metadata(function_id, metadata) .await; return self .function_registry @@ -85,6 +85,7 @@ impl Dispatcher { .await; } + // TODO: change test to use the queue function and remove this from being public pub async fn queue_composition( &self, composition: Composition, @@ -244,7 +245,7 @@ impl Dispatcher { >, > { Box::pin(async move { - let mut recorder = Recorder::new(self.archive.clone(), RecordPoint::Arrival); + let recorder = Recorder::new(self.archive.clone(), RecordPoint::Arrival); // start new record for the function // find an engine capable of running the function // TODO actual scheduling decisions @@ -262,16 +263,15 @@ impl Dispatcher { recorder.clone(), ) .await?; - let (result, context) = self + let (context, mut recorder) = self .run_on_engine( *engine_id, config, - &metadata.output_sets, + metadata.output_sets, context, recorder.clone(), ) - .await; - result?; + .await?; recorder.record(RecordPoint::FutureReturn)?; let context_arc = Arc::new(context); let composition_sets = output_mapping @@ -333,7 +333,7 @@ impl Dispatcher { ctx_size: usize, non_caching: bool, mut recorder: Recorder, - ) -> DandelionResult<(Context, FunctionConfig, Arc)> { + ) -> DandelionResult<(Context, FunctionConfig, Metadata)> { let metadata = self.function_registry.get_metadata(function_id).await?; // get context and load static data let context_id = match self.type_map.get(&engine_type) { @@ -410,17 +410,17 @@ impl Dispatcher { &self, engine_type: EngineTypeId, function_config: FunctionConfig, - output_sets: &Vec, + output_sets: Arc>, function_context: Context, recorder: Recorder, - ) -> (DandelionResult<()>, Context) { + ) -> DandelionResult<(Context, Recorder)> { // preparation is done, get engine to receive engine let engine_queue = match self.engines.get(&engine_type) { Some(q) => q, - None => return (Err(DandelionError::DispatcherConfigError), function_context), + None => return Err(DandelionError::DispatcherConfigError), }; return engine_queue - .perform_single_run(&function_config, function_context, output_sets, recorder) + .perform_single_run(function_config, function_context, output_sets, recorder) .await; } } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 2404ff63..009adba7 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,72 +1,64 @@ -use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; -use futures::{channel::oneshot, lock::Mutex}; +use dandelion_commons::{records::Recorder, DandelionResult}; use machine_interface::{ - function_driver::{Engine, FunctionConfig}, + function_driver::{ + ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, WorkQueue, + }, memory_domain::Context, + promise::{Debt, Promise}, }; -use std::collections::VecDeque; +use std::sync::Arc; +/// Datastructure that implements priority queueing +/// Highest priority queue holds promises if there are any +#[derive(Clone)] pub struct EngineQueue { - pub internals: Mutex<( - Vec>, - VecDeque>>, - )>, + queue_in: Arc>>, + queue_out: Arc>>, +} + +fn shutdown_fn(_: Vec) {} + +/// This is run on the engine so it performs asyncornous access to the local state +impl WorkQueue for EngineQueue { + fn get_engine_args(&self) -> (EngineArguments, Debt) { + let lock_guard = self.queue_out.lock().unwrap(); + let args = lock_guard.recv(); + return match args { + Ok(args) => args, + Err(_) => { + let (_, debt) = Promise::new(); + let shutdown_args = EngineArguments::Shutdown(shutdown_fn); + return (shutdown_args, debt); + } + }; + } } -// TODO:fix it for cases where single run can be cancelled: -// - when yielding make sure the one notified is stil uncacnelled -// - make sure engine is yielded when task is cancelled -// one option is to use look further into sinks for the engines https://docs.rs/futures/latest/futures/sink/index.html impl EngineQueue { + pub fn new() -> Self { + let (sender, receiver) = std::sync::mpsc::channel(); + return EngineQueue { + queue_in: Arc::new(futures::lock::Mutex::new(sender)), + queue_out: Arc::new(std::sync::Mutex::new(receiver)), + }; + } + pub async fn perform_single_run( &self, - config: &FunctionConfig, + config: FunctionConfig, context: Context, - output_sets: &Vec, + output_sets: Arc>, recorder: Recorder, - ) -> (DandelionResult<()>, Context) { - let engine_rec = match self.get_engine().await { - Ok(rec) => rec, - Err(err) => return (Err(err), context), - }; - let mut engine = match engine_rec.await { - Ok(eng) => eng, - Err(_) => return (Err(DandelionError::DispatcherChannelError), context), - }; - let (engine_result, out_context) = engine.run(config, context, output_sets, recorder).await; - let yield_result = self.yield_engine(engine).await; - let end_result = match (engine_result, yield_result) { - (Ok(()), Ok(())) => Ok(()), - (Err(err), _) | (Ok(()), Err(err)) => Err(err), - }; - return (end_result, out_context); - } - - async fn get_engine(&self) -> DandelionResult>> { - let mut mux_guard = self.internals.lock().await; - // create new lock - let (sender, receiver) = oneshot::channel(); - if let Some(engine) = mux_guard.0.pop() { - let sender_result: Result<(), Box> = sender.send(engine); - if let Err(engine) = sender_result { - mux_guard.0.push(engine); - return Err(DandelionError::DispatcherChannelError); - } - } else { - mux_guard.1.push_back(sender); - } - return Ok(receiver); - } - async fn yield_engine(&self, engine: Box) -> DandelionResult<()> { - let mut mux_guard = self.internals.lock().await; - if let Some(sender) = mux_guard.1.pop_front() { - match sender.send(engine) { - Ok(()) => (), - Err(_) => return Err(DandelionError::DispatcherChannelError), - } - } else { - mux_guard.0.push(engine); - } - Ok(()) + ) -> DandelionResult<(Context, Recorder)> { + let args = EngineArguments::FunctionArguments(FunctionArguments { + config, + context, + output_sets, + recorder, + }); + let (promise, debt) = Promise::new(); + let lock_guard = self.queue_in.lock().await; + lock_guard.send((args, debt)).unwrap(); + return *promise.await; } } diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index dee793d6..a205dc69 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -28,13 +28,13 @@ pub struct Alternative { } /// Struct to describe meatadata about a function that is true accross all drivers -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Metadata { /// input set names and optionally a static composition that is to be used for that input /// if the static input set is defined, any new input to that set is to be ignored - pub input_sets: Vec<(String, Option)>, + pub input_sets: Arc)>>, /// output set names - pub output_sets: Vec, + pub output_sets: Arc>, } pub struct FunctionDict { @@ -49,19 +49,19 @@ impl FunctionDict { pub fn insert_or_lookup(&mut self, function_name: String) -> FunctionId { use std::collections::btree_map::Entry; - match self.map.entry(&function_name) { + match self.map.entry(function_name) { Entry::Vacant(v) => { let new_id = self.next_id; v.insert(new_id); self.next_id += 1; new_id }, - Entry::Occupied(o) => *o, + Entry::Occupied(o) => *o.get(), } } pub fn lookup(&self, function_name: &str) -> Option { - self.map.get(function_name) + self.map.get(function_name).cloned() } } @@ -79,7 +79,7 @@ pub struct FunctionRegistry { /// map with file paths for functions for on disk available functons on_disk: Mutex>, /// map with input and output set names for functions - metadata: Mutex>>, + metadata: Mutex>, /// map name to function id function_dict: Mutex, } @@ -109,13 +109,13 @@ impl FunctionRegistry { /// function that tries to insert metadata, returns true if metadata was successfully inserted /// or false if there was already metadata present - pub async fn insert_metadata(&self, function_name: String, metadata: Metadata) -> () { - self.function_dict.lock().await.insert_or_lookup(function_name); - self.metadata.lock().await.insert(function_id, Arc::new(metadata)); + pub async fn insert_metadata(&self, function_id: FunctionId, metadata: Metadata) -> () { + // let function_id = self.function_dict.lock().await.insert_or_lookup(function_name); + self.metadata.lock().await.insert(function_id, metadata); return; } - pub async fn get_metadata(&self, function_id: FunctionId) -> DandelionResult> { + pub async fn get_metadata(&self, function_id: FunctionId) -> DandelionResult { return self .metadata .lock() @@ -125,7 +125,7 @@ impl FunctionRegistry { .ok_or(DandelionError::DispatcherUnavailableFunction); } - pub fn add_composition_from_module( + pub async fn add_composition_from_module( &mut self, // maybe? function_name: FunctionId, module: &str, @@ -133,8 +133,9 @@ impl FunctionRegistry { ) -> DandelionResult<()> { // TODO actually handle the error in some sensible way // the error contains the parsing failure - let module = dparser::parse(module).map_err(|_| DandelionError::InvalidComposition)?; - Composition::from_module(&module, self.function_dict.) + let module = dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; + Composition::from_module(&module, &mut *self.function_dict.lock().await); + Ok(todo!()) } pub fn add_composition( @@ -303,15 +304,14 @@ impl FunctionRegistry { let function_context = function.load(domain, ctx_size)?; let function_config = function.config.clone(); if !non_caching { - if self + self .in_memory .lock() .await - .insert((function_id, engine_id), Arc::new(function)) - .is_some() - { - panic!("Function not in registry even after Ok from loading"); - }; + .insert((function_id, engine_id), Arc::new(function)); + // TODO: insert can return something, so there was something loaded + // this happens when the same binary is loaded independently multiple times, + // need to figure out how to avoid this } return Ok((function_context, function_config)); } diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index bad27c9f..f2dec60b 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -14,7 +14,7 @@ mod dispatcher_tests { function_driver::{ComputeResource, Driver}, memory_domain::{Context, ContextTrait, MemoryDomain}, }; - use std::collections::BTreeMap; + use std::{collections::BTreeMap, sync::Arc}; // using 0x802_0000 because that is what WASM specifies const DEFAULT_CONTEXT_SIZE: usize = 0x802_0000; // 128MiB @@ -46,8 +46,8 @@ mod dispatcher_tests { path.push(name); let path_string = path.to_str().expect("Path should be string"); let metadata = Metadata { - input_sets: in_set_names, - output_sets: out_set_names, + input_sets: Arc::new(in_set_names), + output_sets: Arc::new(out_set_names), }; let mut pool_map = BTreeMap::new(); pool_map.insert(engine_id, engine_resource); diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index c356833f..cbf1ad96 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -84,8 +84,8 @@ pub fn single_input_fixed( DEFAULT_CONTEXT_SIZE, absolute_path.to_str().expect("Path should be valid string"), Metadata { - input_sets: local_names, - output_sets: out_set_names.clone(), + input_sets: Arc::new(local_names), + output_sets: Arc::new(out_set_names.clone()), }, )) .expect("should be able to update function"); @@ -188,8 +188,8 @@ pub fn multiple_input_fixed( DEFAULT_CONTEXT_SIZE, absolute_path.to_str().expect("Path should be valid string"), Metadata { - input_sets: local_names, - output_sets: out_set_names.clone(), + input_sets: Arc::new(local_names), + output_sets: Arc::new(out_set_names.clone()), }, )) .expect("should be able to update function"); diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 4529ce78..78caaa51 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -89,10 +89,10 @@ pub enum EngineArguments { } pub struct FunctionArguments { - config: FunctionConfig, - context: Context, - output_sets: Vec, - recorder: Recorder, + pub config: FunctionConfig, + pub context: Context, + pub output_sets: Arc>, + pub recorder: Recorder, } pub trait WorkQueue { diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 85d489d3..2cfddbf4 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -78,7 +78,7 @@ mod compute_driver_tests { let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, - output_sets: Vec::new(), + output_sets: Arc::new(Vec::new()), recorder: recorder.clone(), })); let _ = tokio::runtime::Builder::new_current_thread() @@ -116,7 +116,7 @@ mod compute_driver_tests { let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, - output_sets: vec![String::from("")], + output_sets: Arc::new(vec![String::from("")]), recorder, })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() @@ -201,7 +201,7 @@ mod compute_driver_tests { let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, - output_sets: vec![String::from("")], + output_sets: Arc::new(vec![String::from("")]), recorder, })); let (result_context, mut result_recorder) = @@ -292,7 +292,7 @@ mod compute_driver_tests { let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, - output_sets: vec![String::from("stdio")], + output_sets: Arc::new(vec![String::from("stdio")]), recorder, })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() @@ -434,11 +434,11 @@ mod compute_driver_tests { let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, - output_sets: vec![ + output_sets: Arc::new(vec![ "stdio".to_string(), "out".to_string(), "out_nested".to_string(), - ], + ]), recorder, })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index f3a72835..d42a43e8 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -179,7 +179,7 @@ impl EngineLoop for MmuLoop { &mut self, config: FunctionConfig, mut context: Context, - output_sets: Vec, + output_sets: Arc>, ) -> DandelionResult { let elf_config = match config { FunctionConfig::ElfConfig(conf) => conf, diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index 489444e0..2c98c3cc 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -24,7 +24,7 @@ impl EngineLoop for WasmLoop { &mut self, config: FunctionConfig, mut context: Context, - output_set_names: Vec, + output_set_names: Arc>, ) -> DandelionResult { let wasm_config = match config { FunctionConfig::WasmConfig(wasm_config) => wasm_config, diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index 70a30513..2bba92fd 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -10,6 +10,7 @@ use core_affinity::set_for_current; use dandelion_commons::{DandelionError, DandelionResult}; use hyper::{body::HttpBody, Body, Client, HeaderMap, Method, Request, Version}; use log::error; +use std::sync::Arc; use tokio::runtime::{Builder, Runtime}; struct RequestInformation { @@ -224,7 +225,7 @@ async fn http_request(request_info: RequestInformation) -> DandelionResult, + output_set_names: Arc>, response: ResponseInformation, ) -> DandelionResult<()> { context.clear_metadata(); @@ -301,7 +302,7 @@ fn http_context_write( fn http_run( mut context: Context, runtime: &Runtime, - output_set_names: Vec, + output_set_names: Arc>, ) -> DandelionResult { let response_result = { let _guard = runtime.enter(); @@ -343,7 +344,7 @@ impl EngineLoop for HyperLoop { &mut self, config: FunctionConfig, context: Context, - output_sets: Vec, + output_sets: Arc>, ) -> DandelionResult { let function = match config { FunctionConfig::SysConfig(sys_func) => sys_func, diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index d38e49ed..07740a00 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -12,6 +12,7 @@ mod system_driver_tests { records::{Archive, RecordPoint, Recorder}, DandelionResult, }; + use std::sync::Arc; const _CONTEXT_SIZE: usize = 2048 * 1024; @@ -77,7 +78,7 @@ mod system_driver_tests { let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let output_sets = get_system_function_output_sets(SystemFunction::HTTP); + let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context, @@ -150,7 +151,7 @@ mod system_driver_tests { let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let output_sets = get_system_function_output_sets(SystemFunction::HTTP); + let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context, diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index a9404f9f..b90b708b 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -16,7 +16,7 @@ pub trait EngineLoop { &mut self, config: FunctionConfig, context: Context, - output_sets: Vec, + output_sets: std::sync::Arc>, ) -> DandelionResult; } diff --git a/server/src/main.rs b/server/src/main.rs index 143d9734..82bbd071 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -445,14 +445,16 @@ async fn add_cold_functions( std::fs::create_dir_all(&tmp_dir).unwrap(); for i in 0..max_cold { let metadata = Metadata { - input_sets: vec![(String::from(""), None)], - output_sets: vec![String::from("")], + input_sets: Arc::new(vec![(String::from(""), None)]), + output_sets: Arc::new(vec![String::from("")]), }; let tmp_path = tmp_dir.join(i.to_string()); if !tmp_path.exists() { std::fs::copy(path, &tmp_path).unwrap(); } - registry.insert_metadata(todo!("function name: cold_id_base + i"), metadata).await; + registry + .insert_metadata(todo!("function name: cold_id_base + i"), metadata) + .await; registry .add_local( cold_id_base + i, @@ -593,8 +595,8 @@ fn main() -> () { drivers.insert(SYS_ENGINE, system_driver); registry = FunctionRegistry::new(drivers); let mmm_metadata = Metadata { - input_sets: vec![(String::from(""), None)], - output_sets: vec![String::from("")], + input_sets: Arc::new(vec![(String::from(""), None)]), + output_sets: Arc::new(vec![String::from("")]), }; runtime.block_on(registry.insert_metadata(MMM_ID, mmm_metadata)); // add for mmm hot function @@ -617,8 +619,8 @@ fn main() -> () { // )); // add for busy hot functions let busy_metadata = Metadata { - input_sets: vec![(String::from(""), None)], - output_sets: vec![String::from("")], + input_sets: Arc::new(vec![(String::from(""), None)]), + output_sets: Arc::new(vec![String::from("")]), }; runtime.block_on(registry.insert_metadata(BUSY_ID, busy_metadata)); runtime @@ -644,11 +646,13 @@ fn main() -> () { registry.insert_metadata( HTTP_ID, Metadata { - input_sets: get_system_function_input_sets(SystemFunction::HTTP) - .into_iter() - .map(|name| (name, None)) - .collect(), - output_sets: get_system_function_output_sets(SystemFunction::HTTP), + input_sets: Arc::new( + get_system_function_input_sets(SystemFunction::HTTP) + .into_iter() + .map(|name| (name, None)) + .collect(), + ), + output_sets: Arc::new(get_system_function_output_sets(SystemFunction::HTTP)), }, ), ); @@ -680,11 +684,13 @@ fn main() -> () { ], }; let output_set_map = BTreeMap::from([(4, 0), (6, 1)]); - let input_sets = get_system_function_input_sets(SystemFunction::HTTP) - .into_iter() - .map(|name| (name, None)) - .collect(); - let output_sets = get_system_function_output_sets(SystemFunction::HTTP); + let input_sets = Arc::new( + get_system_function_input_sets(SystemFunction::HTTP) + .into_iter() + .map(|name| (name, None)) + .collect(), + ); + let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let composition_metadata = Metadata { input_sets, output_sets, From 5c2dbb1cdb7f7ea166da1710727ef8dd054ce63b Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 26 Feb 2024 13:56:09 +0100 Subject: [PATCH 016/176] Remove unnecessary lock from sender in queue --- dispatcher/src/execution_qs.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 009adba7..4eeee3d2 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -12,7 +12,7 @@ use std::sync::Arc; /// Highest priority queue holds promises if there are any #[derive(Clone)] pub struct EngineQueue { - queue_in: Arc>>, + queue_in: Arc>, queue_out: Arc>>, } @@ -38,7 +38,7 @@ impl EngineQueue { pub fn new() -> Self { let (sender, receiver) = std::sync::mpsc::channel(); return EngineQueue { - queue_in: Arc::new(futures::lock::Mutex::new(sender)), + queue_in: Arc::new(sender), queue_out: Arc::new(std::sync::Mutex::new(receiver)), }; } @@ -57,8 +57,7 @@ impl EngineQueue { recorder, }); let (promise, debt) = Promise::new(); - let lock_guard = self.queue_in.lock().await; - lock_guard.send((args, debt)).unwrap(); + self.queue_in.send((args, debt)).unwrap(); return *promise.await; } } From c384b54aad7271802ac167089e5c01766680fb01 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 27 Feb 2024 11:26:39 +0100 Subject: [PATCH 017/176] Added check for debt to still be valid when picked up --- dispatcher/src/execution_qs.rs | 14 +++++--------- machine_interface/src/promise.rs | 5 +++++ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 4eeee3d2..c958968b 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -21,16 +21,12 @@ fn shutdown_fn(_: Vec) {} /// This is run on the engine so it performs asyncornous access to the local state impl WorkQueue for EngineQueue { fn get_engine_args(&self) -> (EngineArguments, Debt) { - let lock_guard = self.queue_out.lock().unwrap(); - let args = lock_guard.recv(); - return match args { - Ok(args) => args, - Err(_) => { - let (_, debt) = Promise::new(); - let shutdown_args = EngineArguments::Shutdown(shutdown_fn); - return (shutdown_args, debt); + loop { + let (recieved_args, recieved_debt) = self.queue_out.lock().unwrap().recv().unwrap(); + if recieved_debt.is_alive() { + return (recieved_args, recieved_debt); } - }; + } } } diff --git a/machine_interface/src/promise.rs b/machine_interface/src/promise.rs index fdc5c51a..b74ca17a 100644 --- a/machine_interface/src/promise.rs +++ b/machine_interface/src/promise.rs @@ -68,6 +68,11 @@ pub struct Debt { unsafe impl Send for Debt {} impl Debt { + pub fn is_alive(&self) -> bool { + let data = unsafe { &*self.data }; + return data.references.load(Ordering::Acquire) > 1; + } + pub fn fulfill(self, results: Box>) { let data = unsafe { &*self.data }; // make sure we are not aborted by this promise anymore From 6ff41dab7254d8e9aedc811ad154310c7fd75856 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 28 Feb 2024 16:56:12 +0100 Subject: [PATCH 018/176] Change transfers to also use the workqueues --- dispatcher/src/dispatcher.rs | 87 +++++++++++-------- dispatcher/src/execution_qs.rs | 14 +-- machine_interface/src/function_driver.rs | 13 +++ .../src/function_driver/load_utils.rs | 4 +- .../src/function_driver/thread_utils.rs | 31 ++++++- machine_interface/src/memory_domain.rs | 16 ++-- .../src/memory_domain/domain_tests.rs | 6 +- 7 files changed, 107 insertions(+), 64 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 167b48dd..c572275b 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -16,8 +16,8 @@ use futures::{ }; use itertools::Itertools; use machine_interface::{ - function_driver::FunctionConfig, - memory_domain::{transer_data_item, Context, MemoryDomain}, + function_driver::{EngineArguments, FunctionArguments, FunctionConfig, TransferArguments}, + memory_domain::{Context, MemoryDomain}, }; use std::{ collections::{BTreeMap, BTreeSet}, @@ -28,8 +28,8 @@ use std::{ // TODO here and in registry can probably replace driver and loader function maps with fixed size arrays // That have compile time size and static indexing pub struct Dispatcher { - domains: BTreeMap>, - engines: BTreeMap>, + domains: BTreeMap, Box)>, + engine_queues: BTreeMap>, type_map: BTreeMap, function_registry: FunctionRegistry, pub archive: Arc>, @@ -42,23 +42,30 @@ impl Dispatcher { function_registry: FunctionRegistry, mut resource_pool: ResourcePool, ) -> DandelionResult { - let mut engines = BTreeMap::new(); + let work_queue = Box::new(EngineQueue::new()); + + // add the work queue for each domain + let domain_map = domains + .into_iter() + .map(|(k, v)| (k, (v, work_queue.clone()))) + .collect(); + // Use up all engine resources to start with + let mut engine_queues = BTreeMap::new(); for (engine_id, driver) in function_registry.drivers.iter() { let mut engine_vec = Vec::new(); - let engine_queue = Box::new(EngineQueue::new()); while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(engine_id.clone()) { - let engine = driver.start_engine(resource, engine_queue.clone())?; + let engine = driver.start_engine(resource, work_queue.clone())?; engine_vec.push(engine); } - engines.insert(*engine_id, engine_queue); + engine_queues.insert(*engine_id, work_queue.clone()); } let archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); return Ok(Dispatcher { - domains, - engines, + domains: domain_map, + engine_queues, type_map, function_registry, archive, @@ -340,7 +347,7 @@ impl Dispatcher { Some(id) => id, None => return Err(DandelionError::DispatcherConfigError), }; - let domain = match self.domains.get(context_id) { + let (domain, transfer_queue) = match self.domains.get(context_id) { Some(d) => d, None => return Err(DandelionError::DispatcherConfigError), }; @@ -366,16 +373,18 @@ impl Dispatcher { static_sets.insert(function_set_index); let mut function_buffer = 0usize; for (subset, item, source_context) in composition_set { - transer_data_item( - &mut function_context, - &source_context, - function_set_index, - 128, - function_buffer, - in_set_name, - subset, - item, - )?; + let args = EngineArguments::TransferArguments(TransferArguments { + destination: function_context, + source: source_context, + destination_set_index: function_set_index, + destination_allignment: 128, + destination_item_index: function_buffer, + destination_set_name: in_set_name.clone(), + source_set_index: subset, + source_item_index: item, + recorder, + }); + (function_context, recorder) = transfer_queue.enqueu_work(args).await?; function_buffer += 1; } } @@ -388,17 +397,19 @@ impl Dispatcher { for (subset, item, source_context) in context_set { // TODO get allignment information let set_name = &metadata.input_sets[function_set].0; - transer_data_item( - &mut function_context, - &source_context, - function_set, - // TODO get allignment information from function - 128, - function_item, - set_name, - subset, - item, - )?; + // (function_context, recorder) = self. + let args = EngineArguments::TransferArguments(TransferArguments { + destination: function_context, + source: source_context, + destination_set_index: function_set, + destination_allignment: 128, + destination_item_index: function_item, + destination_set_name: set_name.clone(), + source_set_index: subset, + source_item_index: item, + recorder, + }); + (function_context, recorder) = transfer_queue.enqueu_work(args).await?; function_item += 1; } } @@ -415,12 +426,16 @@ impl Dispatcher { recorder: Recorder, ) -> DandelionResult<(Context, Recorder)> { // preparation is done, get engine to receive engine - let engine_queue = match self.engines.get(&engine_type) { + let engine_queue = match self.engine_queues.get(&engine_type) { Some(q) => q, None => return Err(DandelionError::DispatcherConfigError), }; - return engine_queue - .perform_single_run(function_config, function_context, output_sets, recorder) - .await; + let args = EngineArguments::FunctionArguments(FunctionArguments { + config: function_config, + context: function_context, + output_sets, + recorder, + }); + return engine_queue.enqueu_work(args).await; } } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index c958968b..8493b874 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -39,19 +39,7 @@ impl EngineQueue { }; } - pub async fn perform_single_run( - &self, - config: FunctionConfig, - context: Context, - output_sets: Arc>, - recorder: Recorder, - ) -> DandelionResult<(Context, Recorder)> { - let args = EngineArguments::FunctionArguments(FunctionArguments { - config, - context, - output_sets, - recorder, - }); + pub async fn enqueu_work(&self, args: EngineArguments) -> DandelionResult<(Context, Recorder)> { let (promise, debt) = Promise::new(); self.queue_in.send((args, debt)).unwrap(); return *promise.await; diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 78caaa51..4f0db628 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -85,6 +85,7 @@ pub enum ComputeResource { pub enum EngineArguments { FunctionArguments(FunctionArguments), + TransferArguments(TransferArguments), Shutdown(fn(Vec) -> ()), } @@ -95,6 +96,18 @@ pub struct FunctionArguments { pub recorder: Recorder, } +pub struct TransferArguments { + pub destination: Context, + pub source: Arc, + pub destination_set_index: usize, + pub destination_allignment: usize, + pub destination_item_index: usize, + pub destination_set_name: String, + pub source_set_index: usize, + pub source_item_index: usize, + pub recorder: Recorder, +} + pub trait WorkQueue { fn get_engine_args(&self) -> (EngineArguments, crate::promise::Debt); } diff --git a/machine_interface/src/function_driver/load_utils.rs b/machine_interface/src/function_driver/load_utils.rs index e20889c1..eeb0df51 100644 --- a/machine_interface/src/function_driver/load_utils.rs +++ b/machine_interface/src/function_driver/load_utils.rs @@ -1,5 +1,5 @@ use crate::{ - memory_domain::{transefer_memory, Context, MemoryDomain}, + memory_domain::{transfer_memory, Context, MemoryDomain}, DataRequirementList, }; use dandelion_commons::{DandelionError, DandelionResult}; @@ -47,7 +47,7 @@ pub fn load_static( if requirement.size < position.size { return Err(DandelionError::ConfigMissmatch); } - transefer_memory( + transfer_memory( &mut function_context, static_context, requirement.offset, diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index b90b708b..ec909b0b 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -1,8 +1,9 @@ use crate::{ function_driver::{ - ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, WorkQueue, + ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, TransferArguments, + WorkQueue, }, - memory_domain::Context, + memory_domain::{self, Context}, }; use core::marker::Send; use dandelion_commons::{records::RecordPoint, DandelionResult}; @@ -52,6 +53,32 @@ fn run_thread(core_id: u8, queue: Box) { let results = Box::new(result.and_then(|context| Ok((context, recorder)))); debt.fulfill(results); } + EngineArguments::TransferArguments(transfer_args) => { + let TransferArguments { + source, + mut destination, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name, + source_set_index, + source_item_index, + recorder, + } = transfer_args; + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ) + .and(Ok((destination, recorder))); + debt.fulfill(Box::new(transfer_result)); + continue; + } EngineArguments::Shutdown(resource_returner) => { resource_returner(vec![ComputeResource::CPU(core_id)]); return; diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 5b1bcb7f..ec52a2a4 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -202,7 +202,7 @@ pub trait MemoryDomain: Sync + Send { } // Code to specialize transfers between different domains -pub fn transefer_memory( +pub fn transfer_memory( destination: &mut Context, source: &Context, destination_offset: usize, @@ -285,7 +285,7 @@ pub fn transfer_data_set( .and_then(|set| Some(set.buffers.len())) .unwrap_or(0); for index in 0..source_set.buffers.len() { - transer_data_item( + transfer_data_item( destination, source, destionation_set_index, @@ -302,10 +302,10 @@ pub fn transfer_data_set( /// Transfer a data item from one context to another. /// If the destination does not yet have a set at the index, /// a new one is created using the set name given. -pub fn transer_data_item( +pub fn transfer_data_item( destination: &mut Context, source: &Context, - destionation_set_index: usize, + destination_set_index: usize, destination_allignment: usize, destination_item_index: usize, destination_set_name: &str, @@ -323,17 +323,17 @@ pub fn transer_data_item( return Err(DandelionError::TransferInputNoSetAvailable); } - if destination.content.len() <= destionation_set_index { + if destination.content.len() <= destination_set_index { destination .content - .resize_with(destionation_set_index + 1, || None) + .resize_with(destination_set_index + 1, || None) } let source_item = &source_set.buffers[source_item_index]; let destination_offset = destination.get_free_space(source_item.data.size, destination_allignment)?; { let destination_set = - &mut destination.content[destionation_set_index].get_or_insert(DataSet { + &mut destination.content[destination_set_index].get_or_insert(DataSet { ident: destination_set_name.to_string(), buffers: vec![], }); @@ -353,7 +353,7 @@ pub fn transer_data_item( destination_set.buffers[destination_item_index].ident = source_item.ident.clone(); } - transefer_memory( + transfer_memory( destination, source, destination_offset, diff --git a/machine_interface/src/memory_domain/domain_tests.rs b/machine_interface/src/memory_domain/domain_tests.rs index 08165bd0..ecdb8723 100644 --- a/machine_interface/src/memory_domain/domain_tests.rs +++ b/machine_interface/src/memory_domain/domain_tests.rs @@ -1,6 +1,6 @@ use std::vec; -use crate::memory_domain::{transefer_memory, transfer_data_set, ContextTrait, MemoryDomain}; +use crate::memory_domain::{transfer_data_set, transfer_memory, ContextTrait, MemoryDomain}; use dandelion_commons::{DandelionError, DandelionResult}; // produces binary pattern 0b0101_01010 or 0x55 const BYTEPATTERN: u8 = 85; @@ -84,7 +84,7 @@ fn transefer(arg: Vec, size: usize) { source .write(0, &vec![BYTEPATTERN; size]) .expect("Writing should succeed"); - transefer_memory(&mut destination, &mut source, 0, 0, size) + transfer_memory(&mut destination, &mut source, 0, 0, size) .expect("Should successfully transfer"); let mut read_buffer = vec![0; size]; destination @@ -225,4 +225,4 @@ domainTests!(mmu; mmuType; Vec::new()); #[cfg(feature = "wasm")] use super::wasm::WasmMemoryDomain as wasmType; #[cfg(feature = "wasm")] -domainTests!(wasm; wasmType; Vec::new()); \ No newline at end of file +domainTests!(wasm; wasmType; Vec::new()); From fcb36c7c10c4859ba7757d7ba3c926f98609ffc8 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 5 Mar 2024 13:31:44 +0100 Subject: [PATCH 019/176] Add composition to registry, update related functions, specific types for resources and automated configuration --- dandelion_commons/src/lib.rs | 8 +- dispatcher/src/composition.rs | 99 ++++-- dispatcher/src/dispatcher.rs | 62 ++-- dispatcher/src/execution_qs.rs | 6 +- dispatcher/src/function_registry.rs | 89 ++--- dispatcher/src/lib.rs | 3 + dispatcher/src/resource_pool.rs | 12 +- dispatcher/src/tests/composition_tests.rs | 330 ++++++++++++++++++ dispatcher/src/tests/mod.rs | 1 + dispatcher/tests/dispatcher_tests.rs | 100 +++--- .../tests/dispatcher_tests/function_tests.rs | 101 +++--- .../tests/dispatcher_tests/registry_tests.rs | 46 ++- .../compute_driver/cheri/test.rs | 4 +- .../compute_driver/compute_driver_tests.rs | 26 +- .../compute_driver/mmu/test.rs | 4 +- .../system_driver/system_driver_tests.rs | 8 +- machine_interface/src/lib.rs | 4 + machine_interface/src/machine_config.rs | 89 +++++ machine_interface/src/memory_domain.rs | 8 +- machine_interface/src/memory_domain/cheri.rs | 4 +- .../src/memory_domain/domain_tests.rs | 29 +- machine_interface/src/memory_domain/malloc.rs | 4 +- machine_interface/src/memory_domain/mmu.rs | 4 +- machine_interface/src/memory_domain/wasm.rs | 56 +-- 24 files changed, 785 insertions(+), 312 deletions(-) create mode 100644 dispatcher/src/tests/composition_tests.rs create mode 100644 dispatcher/src/tests/mod.rs create mode 100644 machine_interface/src/machine_config.rs diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index dc5792b9..b202b22b 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -2,8 +2,6 @@ pub mod records; use records::RecordPoint; -pub type EngineTypeId = u8; -pub type ContextTypeId = u8; pub type FunctionId = u64; // TODO define error types, possibly better printing than debug @@ -23,6 +21,8 @@ pub enum DandelionError { CompositionContainsInvalidFunction, /// Function in parsing has identifier that is not defined in composition CompositionFunctionInvalidIdentifier, + /// Set indentifier is produced by multiple functions in a composition + CompositionDuplicateSetName, // domain and context errors /// error creating layout for read only context ContextReadOnlyLayout, @@ -82,11 +82,13 @@ pub enum DandelionError { CalledSystemFuncParser, // dispatcher errors /// dispatcher does not find a loader for this engine type - DispatcherMissingLoader(EngineTypeId), + DispatcherMissingLoader(String), /// error from resulting from assumptions based on config passed to dispatcher DispatcherConfigError, /// dispatcher was asked to queue function it can't find DispatcherUnavailableFunction, + /// dispatcher was asked to add function to registry that is already present + DispatcherDuplicateFunction, /// function to register did not have metadata available DispatcherMetaDataUnavailable, /// dispatcher encountered an issue when trasmitting data between tasks diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index f5c15058..3ba1c202 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -3,7 +3,10 @@ use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; use dparser; use itertools::Itertools; use machine_interface::memory_domain::Context; -use std::{collections::BTreeMap, sync::Arc}; +use std::{ + collections::{btree_map::Entry, BTreeMap}, + sync::Arc, +}; /// A composition has a composition wide id space that maps ids of /// the input and output sets to sets of individual functions to a unified @@ -12,6 +15,7 @@ use std::{collections::BTreeMap, sync::Arc}; #[derive(Clone, Debug)] pub struct Composition { pub dependencies: Vec, + pub output_map: BTreeMap, } #[derive(Clone, Debug)] @@ -37,6 +41,9 @@ impl ShardingMode { } impl Composition { + /// For each composition the composition set indexes start enumerating the input sets from 0. + /// The output sets are enumerated starting with the number directly after the highest input set index. + /// For internal numbering there are no guarnatees. pub fn from_module( module: &dparser::Module, function_ids: &mut FunctionDict, @@ -59,32 +66,60 @@ impl Composition { } dparser::Item::Composition(comp) => { let composition_id = function_ids.insert_or_lookup(comp.v.name.clone()); - let mut set_counter = 1usize; + let mut set_counter = 0usize; let mut set_numbers = BTreeMap::new(); // add composition input sets for input_set_name in comp.v.params.iter() { - if (set_numbers.insert(input_set_name.clone(), set_counter)).is_some() { - // TODO: handle duplicate set names or guarantee the parser already errored on them - } + match set_numbers.entry(input_set_name.clone()) { + Entry::Vacant(v) => v.insert(set_counter), + Entry::Occupied(_) => { + return Err(DandelionError::CompositionDuplicateSetName) + } + }; + set_counter += 1; + } + let mut output_map = BTreeMap::new(); + let output_sets_start = set_counter; + // add composition output sets + for (output_index, output_set_name) in comp.v.returns.iter().enumerate() { + match set_numbers.entry(output_set_name.clone()) { + Entry::Vacant(v) => { + v.insert(set_counter); + output_map.insert(set_counter, output_index); + } + Entry::Occupied(_) => { + return Err(DandelionError::CompositionDuplicateSetName); + } + }; set_counter += 1; } + let output_sets_end = set_counter; // add all return sets from functions let composition_set_identifiers = comp .v .statements .iter() .flat_map(|statement| match statement { - dparser::Statement::FunctionApplication(a) => { - a.v.rets.iter().map(|ret| ret.v.ident.clone()) + dparser::Statement::FunctionApplication(function_application) => { + function_application.v.rets.iter().map(|ret| ret.v.ident.clone()) } dparser::Statement::Loop(_) => todo!("loop semantics need to be fleshed out and compositions extended to acoomodate them"), }); for set_identifier in composition_set_identifiers { - if (set_numbers.insert(set_identifier, set_counter)).is_some() { - // TODO: handle duplicate set names or guarantee the parser already errored on them + match set_numbers.entry(set_identifier.clone()) { + Entry::Vacant(v) => { + v.insert(set_counter); + set_counter += 1; + } + Entry::Occupied(o) => { + if output_sets_start <= *o.get() && *o.get() < output_sets_end { + continue; + } else { + return Err(DandelionError::CompositionDuplicateSetName); + } + } } - set_counter += 1; } // have enumerated all set that are available so can start putting the composition together let dependencies = comp @@ -92,13 +127,13 @@ impl Composition { .statements .iter() .map(|statement| match statement { - dparser::Statement::FunctionApplication(a) => { - let (function_id, function_decl) = - known_functions.get(&a.v.name).ok_or( - DandelionError::CompositionContainsInvalidFunction, - )?; - if function_decl.v.params.len() < a.v.args.len() - || function_decl.v.params.len() < a.v.rets.len() + dparser::Statement::FunctionApplication(function_application) => { + let (function_id, function_decl) = known_functions + .get(&function_application.v.name) + .ok_or(DandelionError::CompositionContainsInvalidFunction)?; + if function_decl.v.params.len() < function_application.v.args.len() + || function_decl.v.params.len() + < function_application.v.rets.len() { return Err(DandelionError::CompositionContainsInvalidFunction); } @@ -109,8 +144,11 @@ impl Composition { input_set_ids.resize(function_decl.v.params.len(), None); for (index, param_name) in function_decl.v.params.iter().enumerate() { - if let Some(arg) = - a.v.args.iter().find(|&arg| arg.v.name == *param_name) + if let Some(arg) = function_application + .v + .args + .iter() + .find(|&arg| arg.v.name == *param_name) { let set_id = set_numbers.get(&arg.v.ident).ok_or( DandelionError::CompositionFunctionInvalidIdentifier, @@ -128,16 +166,20 @@ impl Composition { output_set_ids.resize(function_decl.v.returns.len(), None); for (index, ret_name) in function_decl.v.returns.iter().enumerate() { - if a.v + if let Some(ret) = function_application + .v .rets .iter() - .find(|&arg| arg.v.name == *ret_name) - .is_some() + .find(|&ret| ret.v.name == *ret_name) { - let set_id = set_numbers.get(ret_name).ok_or( + let set_id = set_numbers.get(&ret.v.ident).ok_or( DandelionError::CompositionContainsInvalidFunction, )?; output_set_ids[index] = Some(*set_id); + } else { + return Err( + DandelionError::CompositionFunctionInvalidIdentifier, + ); } } Ok(FunctionDependencies { @@ -168,7 +210,14 @@ impl Composition { .into(), }; - compositions.push((composition_id, Composition { dependencies }, metadata)); + compositions.push(( + composition_id, + Composition { + dependencies, + output_map, + }, + metadata, + )); } } } @@ -178,7 +227,7 @@ impl Composition { } /// Modes for the composition set iteratior to return sharding -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq)] pub enum ShardingMode { All, Key, diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index c572275b..9559a4df 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -7,7 +7,7 @@ use crate::{ use core::pin::Pin; use dandelion_commons::{ records::{Archive, RecordPoint, Recorder}, - ContextTypeId, DandelionError, DandelionResult, EngineTypeId, FunctionId, + DandelionError, DandelionResult, FunctionId, }; use futures::{ future::join_all, @@ -17,6 +17,10 @@ use futures::{ use itertools::Itertools; use machine_interface::{ function_driver::{EngineArguments, FunctionArguments, FunctionConfig, TransferArguments}, + machine_config::{ + get_available_domains, get_available_drivers, get_compatibilty_table, DomainType, + EngineType, + }, memory_domain::{Context, MemoryDomain}, }; use std::{ @@ -28,22 +32,22 @@ use std::{ // TODO here and in registry can probably replace driver and loader function maps with fixed size arrays // That have compile time size and static indexing pub struct Dispatcher { - domains: BTreeMap, Box)>, - engine_queues: BTreeMap>, - type_map: BTreeMap, + domains: BTreeMap, Box)>, + engine_queues: BTreeMap>, + type_map: BTreeMap, function_registry: FunctionRegistry, pub archive: Arc>, } impl Dispatcher { - pub fn init( - domains: BTreeMap>, - type_map: BTreeMap, - function_registry: FunctionRegistry, - mut resource_pool: ResourcePool, - ) -> DandelionResult { - let work_queue = Box::new(EngineQueue::new()); + pub fn init(mut resource_pool: ResourcePool) -> DandelionResult { + // get machine specific configurations + let type_map = get_compatibilty_table(); + let domains = get_available_domains(); + let drivers = get_available_drivers(); + let work_queue = Box::new(EngineQueue::new()); + let function_registry = FunctionRegistry::new(drivers); // add the work queue for each domain let domain_map = domains .into_iter() @@ -54,9 +58,7 @@ impl Dispatcher { let mut engine_queues = BTreeMap::new(); for (engine_id, driver) in function_registry.drivers.iter() { let mut engine_vec = Vec::new(); - while let Ok(Some(resource)) = - resource_pool.sync_acquire_engine_resource(engine_id.clone()) - { + while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(*engine_id) { let engine = driver.start_engine(resource, work_queue.clone())?; engine_vec.push(engine); } @@ -72,23 +74,24 @@ impl Dispatcher { }); } - pub async fn update_func( + pub async fn insert_func( &self, - function_id: FunctionId, - engine_type: EngineTypeId, + function_name: String, + engine_type: EngineType, ctx_size: usize, path: &str, metadata: Metadata, - ) -> DandelionResult<()> { - // self.function_registry - // .insert_metadata(todo!("funciton name"), metadata) - // .await; - self.function_registry - .insert_metadata(function_id, metadata) + ) -> DandelionResult { + return self + .function_registry + .insert_function(function_name, engine_type, ctx_size, path, metadata) .await; + } + + pub async fn insert_compositions(&self, compositions: String) -> DandelionResult<()> { return self .function_registry - .add_local(function_id, engine_type, ctx_size, path) + .insert_compositions(&compositions) .await; } @@ -97,7 +100,6 @@ impl Dispatcher { &self, composition: Composition, mut inputs: BTreeMap, - output_sets: BTreeMap, non_caching: bool, ) -> DandelionResult> { // build up ready sets @@ -187,7 +189,8 @@ impl Dispatcher { return Ok(inputs .into_iter() .filter_map(|(set_index, composition_set)| { - output_sets + composition + .output_map .get(&set_index) .and_then(|output_index| Some((*output_index, composition_set))) }) @@ -303,13 +306,12 @@ impl Dispatcher { .collect(); return Ok(composition_sets); } - FunctionType::Composition(composition, out_sets) => { + FunctionType::Composition(composition) => { // need to set the inner composition indexing to the outer composition indexing let compositon_output = self .queue_composition( composition.clone(), BTreeMap::from_iter(inputs), - out_sets.clone(), non_caching, ) .await?; @@ -335,7 +337,7 @@ impl Dispatcher { async fn prepare_for_engine( &self, function_id: FunctionId, - engine_type: EngineTypeId, + engine_type: EngineType, inputs: Vec<(usize, CompositionSet)>, ctx_size: usize, non_caching: bool, @@ -419,7 +421,7 @@ impl Dispatcher { async fn run_on_engine( &self, - engine_type: EngineTypeId, + engine_type: EngineType, function_config: FunctionConfig, output_sets: Arc>, function_context: Context, diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 8493b874..7d096583 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,8 +1,6 @@ use dandelion_commons::{records::Recorder, DandelionResult}; use machine_interface::{ - function_driver::{ - ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, WorkQueue, - }, + function_driver::{EngineArguments, WorkQueue}, memory_domain::Context, promise::{Debt, Promise}, }; @@ -16,8 +14,6 @@ pub struct EngineQueue { queue_out: Arc>>, } -fn shutdown_fn(_: Vec) {} - /// This is run on the engine so it performs asyncornous access to the local state impl WorkQueue for EngineQueue { fn get_engine_args(&self) -> (EngineArguments, Debt) { diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index a205dc69..3d69717c 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -1,11 +1,9 @@ -use dandelion_commons::{DandelionError, DandelionResult, EngineTypeId, FunctionId}; +use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; use machine_interface::{ - function_driver::{Driver, Function, FunctionConfig}, - memory_domain::{malloc::MallocMemoryDomain, Context, MemoryDomain}, + function_driver::{Driver, Function, FunctionConfig}, machine_config::EngineType, memory_domain::{malloc::MallocMemoryDomain, Context, MemoryDomain} }; use std::{ - collections::{BTreeMap, BTreeSet}, - sync::Arc, + collections::{BTreeMap, BTreeSet}, sync::Arc }; use futures::lock::Mutex; @@ -15,10 +13,10 @@ use crate::composition::{Composition, CompositionSet}; pub enum FunctionType { /// Function available on an engine holding the engine ID /// and the default size of the function context - Function(EngineTypeId, usize), + Function(EngineType, usize), /// Function available as composition, holding the composition graph /// and the set with the inidecs of the sets in the composition that are output sets - Composition(Composition, BTreeMap), + Composition(Composition), } #[derive(Clone, Debug)] @@ -44,6 +42,7 @@ pub struct FunctionDict { impl FunctionDict { pub fn new() -> Self { + // TODO free up ids as they are not used anymore? Self { next_id: 1, map: BTreeMap::new() } } @@ -68,16 +67,16 @@ impl FunctionDict { pub struct FunctionRegistry { /// List of engines available for each function - engine_map: Mutex>>, + engine_map: Mutex>>, /// Drivers for the engines to prepare function (get them from available to ready) - pub(crate) drivers: BTreeMap>, + pub(crate) drivers: BTreeMap>, /// map with list of all options for each function /// TODO: change structure to avoid copy on get_options options: Mutex>>, /// map with function information for functions that are available in memory - in_memory: Mutex>>, + in_memory: Mutex>>, /// map with file paths for functions for on disk available functons - on_disk: Mutex>, + on_disk: Mutex>, /// map with input and output set names for functions metadata: Mutex>, /// map name to function id @@ -86,7 +85,7 @@ pub struct FunctionRegistry { impl FunctionRegistry { // TODO registr all system function on creation and make sure that no other method can add to their entries - pub fn new(drivers: BTreeMap>) -> Self { + pub fn new(drivers: BTreeMap>) -> Self { return FunctionRegistry { engine_map: Mutex::new(BTreeMap::new()), drivers, @@ -107,14 +106,6 @@ impl FunctionRegistry { .ok_or(DandelionError::DispatcherUnavailableFunction); } - /// function that tries to insert metadata, returns true if metadata was successfully inserted - /// or false if there was already metadata present - pub async fn insert_metadata(&self, function_id: FunctionId, metadata: Metadata) -> () { - // let function_id = self.function_dict.lock().await.insert_or_lookup(function_name); - self.metadata.lock().await.insert(function_id, metadata); - return; - } - pub async fn get_metadata(&self, function_id: FunctionId) -> DandelionResult { return self .metadata @@ -124,43 +115,61 @@ impl FunctionRegistry { .and_then(|meta| Some(meta.clone())) .ok_or(DandelionError::DispatcherUnavailableFunction); } - - pub async fn add_composition_from_module( - &mut self, // maybe? - function_name: FunctionId, + + /// TODO: find a better way to keep track of functions, so we can support updates to functions and compositions + pub async fn insert_function(&self, function_name: String, engine_id: EngineType, ctx_size: usize, path: &str, metadata: Metadata) -> DandelionResult{ + // check if function is already present, get ID if not + let function_id; + { + let mut dict_lock = + self.function_dict.lock().await; + if dict_lock.lookup(&function_name).is_some(){ + return Err(DandelionError::DispatcherDuplicateFunction); + } + function_id = dict_lock.insert_or_lookup(function_name); + } + self.metadata.lock().await.insert(function_id, metadata); + self.add_local(function_id, engine_id, ctx_size, path).await?; + return Ok(function_id); + } + + /// TODO: for compositions that are already present the metadata is not overwritten + pub async fn insert_compositions( + &self, module: &str, - output_set_map: BTreeMap, // TODO necessary? ) -> DandelionResult<()> { // TODO actually handle the error in some sensible way // the error contains the parsing failure let module = dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; - Composition::from_module(&module, &mut *self.function_dict.lock().await); - Ok(todo!()) + let composition_meta_pairs = Composition::from_module(&module, &mut *self.function_dict.lock().await)?; + for (function_id, composition, metadata) in composition_meta_pairs { + self.metadata.lock().await.insert(function_id, metadata); + self.add_composition(function_id, composition).await?; + } + return Ok(()); } - pub fn add_composition( - &mut self, + async fn add_composition( + &self, function_id: FunctionId, composition: Composition, - output_set_map: BTreeMap, // TODO necessary? ) -> DandelionResult<()> { - if !self.metadata.get_mut().contains_key(&function_id) { + if !self.metadata.lock().await.contains_key(&function_id) { return Err(DandelionError::DispatcherMetaDataUnavailable); }; self.options - .get_mut() + .lock().await .entry(function_id) .and_modify(|option_vec| { option_vec.push(Alternative { function_type: FunctionType::Composition( composition.clone(), - output_set_map.clone(), ), in_memory: true, }) }) .or_insert(vec![Alternative { - function_type: FunctionType::Composition(composition, output_set_map), + function_type: FunctionType::Composition(composition), in_memory: true, }]); return Ok(()); @@ -169,7 +178,7 @@ impl FunctionRegistry { pub fn add_system( &mut self, function_id: FunctionId, - engine_id: EngineTypeId, + engine_id: EngineType, ctx_size: usize, ) -> DandelionResult<()> { if !self.metadata.get_mut().contains_key(&function_id) { @@ -178,7 +187,7 @@ impl FunctionRegistry { let driver = self .drivers .get(&engine_id) - .ok_or(DandelionError::DispatcherMissingLoader(engine_id))?; + .ok_or(DandelionError::DispatcherMissingLoader(format!("{:?}", engine_id)))?; // domain for the static context, expected to not be used let malloc_domain = Box::new(MallocMemoryDomain {}); let function_config = @@ -219,7 +228,7 @@ impl FunctionRegistry { pub async fn add_local( &self, function_id: FunctionId, - engine_id: EngineTypeId, + engine_id: EngineType, ctx_size: usize, path: &str, ) -> DandelionResult<()> { @@ -258,13 +267,13 @@ impl FunctionRegistry { async fn load_local( &self, function_id: FunctionId, - engine_id: EngineTypeId, + engine_id: EngineType, domain: &Box, ) -> DandelionResult { // get loader let driver = match self.drivers.get(&engine_id) { Some(l) => l, - None => return Err(DandelionError::DispatcherMissingLoader(engine_id)), + None => return Err(DandelionError::DispatcherMissingLoader(format!("{:?}", engine_id))), }; // get function code let path = @@ -283,7 +292,7 @@ impl FunctionRegistry { pub async fn load( &self, function_id: FunctionId, - engine_id: EngineTypeId, + engine_id: EngineType, domain: &Box, ctx_size: usize, non_caching: bool, diff --git a/dispatcher/src/lib.rs b/dispatcher/src/lib.rs index df33d02e..07605b37 100644 --- a/dispatcher/src/lib.rs +++ b/dispatcher/src/lib.rs @@ -3,3 +3,6 @@ pub mod dispatcher; pub mod execution_qs; pub mod function_registry; pub mod resource_pool; + +#[cfg(test)] +mod tests; diff --git a/dispatcher/src/resource_pool.rs b/dispatcher/src/resource_pool.rs index 27c7c9b8..c1cfb1ef 100644 --- a/dispatcher/src/resource_pool.rs +++ b/dispatcher/src/resource_pool.rs @@ -1,19 +1,19 @@ -use dandelion_commons::{DandelionError, DandelionResult, EngineTypeId}; +use dandelion_commons::{DandelionError, DandelionResult}; use futures::lock::Mutex; -use machine_interface::function_driver::ComputeResource; +use machine_interface::{function_driver::ComputeResource, machine_config::EngineType}; use std::collections::BTreeMap; // Struct to potentially trade off resource as runtime // mainly for GPUs or FPGAs where we can have different sizes of slicing pub struct ResourcePool { // TODO write init and make this private - pub engine_pool: Mutex>>, + pub engine_pool: Mutex>>, } impl ResourcePool { pub fn sync_acquire_engine_resource( &mut self, - engine_id: EngineTypeId, + engine_id: EngineType, ) -> DandelionResult> { let pool_guard = self.engine_pool.get_mut(); let pool = pool_guard.get_mut(&engine_id).and_then(|x| x.pop()); @@ -21,7 +21,7 @@ impl ResourcePool { } pub async fn acquire_engine_resource( &self, - engine_id: EngineTypeId, + engine_id: EngineType, ) -> DandelionResult> { let mut pool_guard = self.engine_pool.lock().await; let pool = pool_guard.get_mut(&engine_id).and_then(|x| x.pop()); @@ -29,7 +29,7 @@ impl ResourcePool { } pub async fn release_engine_resource( &self, - engine_id: EngineTypeId, + engine_id: EngineType, resource: ComputeResource, ) -> DandelionResult<()> { let mut pool_guard = self.engine_pool.lock().await; diff --git a/dispatcher/src/tests/composition_tests.rs b/dispatcher/src/tests/composition_tests.rs new file mode 100644 index 00000000..255b6fe3 --- /dev/null +++ b/dispatcher/src/tests/composition_tests.rs @@ -0,0 +1,330 @@ +use std::{collections::BTreeMap, ops::Range, sync::Arc, vec}; + +use crate::{ + composition::{Composition, FunctionDependencies, ShardingMode}, + function_registry::{FunctionDict, Metadata}, +}; +use dandelion_commons::DandelionError; +use dparser::Module; +use itertools::Itertools; + +fn get_module(comp_string: &str) -> Module { + return dparser::parse(comp_string).unwrap_or_else(|err| { + dparser::print_errors(comp_string, err); + panic!("parsing failed"); + }); +} + +fn check_metadata(actual_meta: &Metadata, expected_meta: &Metadata) -> bool { + // check if input dataset + if actual_meta.input_sets.len() != expected_meta.input_sets.len() + || actual_meta.output_sets.len() != expected_meta.output_sets.len() + { + return false; + } + for (actual_in_set, expected_in_set) in actual_meta + .input_sets + .iter() + .zip(expected_meta.input_sets.iter()) + { + if actual_in_set.0 != expected_in_set.0 { + return false; + } + } + for (actual_out_set, expected_out_set) in actual_meta + .output_sets + .iter() + .zip(expected_meta.output_sets.iter()) + { + if actual_out_set != expected_out_set { + return false; + } + } + return true; +} + +fn check_composition( + actual_composition: &Composition, + expected_composition: &Composition, + input_set_range: &Range, + output_set_range: &Range, +) -> bool { + // check if output maps are same + assert_eq!( + expected_composition.output_map, + actual_composition.output_map + ); + // check if dependencies are same + for expected_function in expected_composition.dependencies.iter() { + let matches = actual_composition + .dependencies + .iter() + .filter_map(|actual_function| { + if actual_function.function != expected_function.function + || actual_function.input_set_ids.len() != expected_function.input_set_ids.len() + || actual_function.output_set_ids.len() + != expected_function.output_set_ids.len() + { + return None; + } + // compare input set ids + for set_index in 0..actual_function.input_set_ids.len() { + let actual_set_opt = actual_function.input_set_ids[set_index]; + let expected_set_opt = expected_function.input_set_ids[set_index]; + match (actual_set_opt, expected_set_opt) { + (None, None) => (), + (None, Some(_)) | (Some(_), None) => return None, + (Some((a_index, a_sharding)), Some((e_index, e_sharding))) => { + if a_sharding != e_sharding { + return None; + } + if input_set_range.contains(&e_index) && e_index != a_index { + return None; + } + } + }; + } + for set_index in 0..actual_function.output_set_ids.len() { + let actual_set_op = actual_function.output_set_ids[set_index]; + let expected_set_op = expected_function.output_set_ids[set_index]; + match (actual_set_op, expected_set_op) { + (None, None) => (), + (None, Some(_)) | (Some(_), None) => return None, + (Some(a_index), Some(e_index)) => { + if output_set_range.contains(&e_index) && e_index != a_index { + return None; + } + } + }; + } + return Some(0); + }) + .count(); + if matches > 1 { + panic!( + "Found more than one match for expected function {:?} in {:?}", + expected_function, actual_composition + ); + } else if matches < 1 { + panic!( + "Found no match for expected function {:?} in composition {:?}", + expected_function, actual_composition + ); + } + } + return true; +} + +fn check_compositions_and_metadata( + actual: Vec<(u64, Composition, Metadata)>, + expected: Vec<(Composition, Metadata)>, + input_set_range: Range, + output_set_range: Range, +) { + for (expected_comp, expected_meta) in expected { + // find all for which metadata maches + let meta_matches = actual + .iter() + .filter_map(|(_, actual_comp, actual_meta)| { + if !check_metadata(actual_meta, &expected_meta) { + return None; + } else { + return Some(actual_comp); + } + }) + .collect_vec(); + if meta_matches.len() < 1 { + panic!( + "Found no metadata match for {:?} with metadata: {:?} in {:?}", + expected_comp, expected_meta, actual + ); + } + let matches = meta_matches + .iter() + .filter_map(|actual_composition| { + if check_composition( + actual_composition, + &expected_comp, + &input_set_range, + &output_set_range, + ) { + return Some(0); + } else { + return None; + } + }) + .count(); + if matches > 1 { + panic!( + "Found more than one match for {:?} with metadata {:?} in {:?}", + expected_comp, expected_meta, actual + ); + } else if matches < 1 { + panic!( + "Found no match for {:?} with metadata: {:?} in {:?}", + expected_comp, expected_meta, actual + ); + } + } +} + +#[test] +fn test_from_module_non_registered_function() { + let unregistered_function = r#" + (:function not_registered () -> ()) + "#; + let mut function_dict = FunctionDict::new(); + let module = get_module(unregistered_function); + match Composition::from_module(&module, &mut function_dict) { + Err(DandelionError::CompositionContainsInvalidFunction) => (), + Err(err) => panic!( + "Found wrong error on composition with invalid function: {:?}", + err + ), + Ok(_) => panic!("No error on unregistered function"), + } +} + +#[test] +fn test_from_module_single_registered_function() { + let unregistered_function = r#" + (:function registered () -> ()) + "#; + let mut function_dict = FunctionDict::new(); + function_dict.insert_or_lookup(String::from("registered")); + let module = get_module(unregistered_function); + match Composition::from_module(&module, &mut function_dict) { + Ok(_) => (), + Err(err) => panic!("Found unexpected error on from_module {:?}", err), + } +} + +#[test] +fn test_from_module_minmal_composition() { + let composition_string = r#" + (:function Function () -> ()) + (:composition Composition () -> () ( + (Function () => ()) + )) + "#; + let mut function_dict = FunctionDict::new(); + let function_id = function_dict.insert_or_lookup(String::from("Function")); + let module = get_module(composition_string); + let compositions = match Composition::from_module(&module, &mut function_dict) { + Ok(c) => c, + Err(err) => panic!("Found unexpected error on from_module {:?}", err), + }; + let expected = vec![( + Composition { + dependencies: vec![FunctionDependencies { + function: function_id, + input_set_ids: vec![], + output_set_ids: vec![], + }], + output_map: BTreeMap::new(), + }, + Metadata { + input_sets: Arc::new(Vec::new()), + output_sets: Arc::new(Vec::new()), + }, + )]; + check_compositions_and_metadata(compositions, expected, 0..0, 0..0); +} + +#[test] +fn test_from_module_minmal_composition_with_inputs() { + let composition_string = r#" + (:function Function (Fin) -> (Fout)) + (:composition Composition (Cin) -> (Cout) ( + (Function ((:all Fin <- Cin)) => ((Cout := Fout))) + )) + "#; + let mut function_dict = FunctionDict::new(); + let function_id = function_dict.insert_or_lookup(String::from("Function")); + let module = get_module(composition_string); + let compositions = match Composition::from_module(&module, &mut function_dict) { + Ok(c) => c, + Err(err) => panic!("Found unexpected error on from_module: {:?}", err), + }; + let expected = vec![( + Composition { + dependencies: vec![FunctionDependencies { + function: function_id, + input_set_ids: vec![Some((0, ShardingMode::All))], + output_set_ids: vec![Some(1)], + }], + output_map: BTreeMap::from([(1, 0)]), + }, + Metadata { + input_sets: Arc::new(vec![(String::from("Cin"), None)]), + output_sets: Arc::new(vec![String::from("Cout")]), + }, + )]; + check_compositions_and_metadata(compositions, expected, 0..1, 1..2); +} + +#[test] +#[should_panic] +fn test_from_module_minmal_composition_with_missing_input() { + let composition_string = r#" + (:function Function (Fin) -> (Fout)) + (:composition Composition (Cin) -> (Cout) ( + (Function ((:all Fin <- NonExistent)) => ((Cout := Fout))) + )) + "#; + let mut function_dict = FunctionDict::new(); + let function_id = function_dict.insert_or_lookup(String::from("Function")); + let module = get_module(composition_string); + let compositions = match Composition::from_module(&module, &mut function_dict) { + Ok(c) => c, + Err(err) => panic!("Found unexpected error on from_module: {:?}", err), + }; + let expected = vec![( + Composition { + dependencies: vec![FunctionDependencies { + function: function_id, + input_set_ids: vec![Some((0, ShardingMode::All))], + output_set_ids: vec![Some(1)], + }], + output_map: BTreeMap::from([(1, 0)]), + }, + Metadata { + input_sets: Arc::new(vec![(String::from("Cin"), None)]), + output_sets: Arc::new(vec![String::from("Cout")]), + }, + )]; + check_compositions_and_metadata(compositions, expected, 0..1, 1..2); +} + +#[test] +#[should_panic] +fn test_from_module_minmal_composition_missing_output() { + let composition_string = r#" + (:function Function (Fin) -> ()) + (:composition Composition (Cin) -> (Cout) ( + (Function ((:all Fin <- Cin)) => ()) + )) + "#; + let mut function_dict = FunctionDict::new(); + let function_id = function_dict.insert_or_lookup(String::from("Function")); + let module = get_module(composition_string); + let compositions = match Composition::from_module(&module, &mut function_dict) { + Ok(c) => c, + Err(err) => panic!("Found unexpected error on from_module: {:?}", err), + }; + let expected = vec![( + Composition { + dependencies: vec![FunctionDependencies { + function: function_id, + input_set_ids: vec![Some((0, ShardingMode::All))], + output_set_ids: vec![Some(1)], + }], + output_map: BTreeMap::from([(1, 0)]), + }, + Metadata { + input_sets: Arc::new(vec![(String::from("Cin"), None)]), + output_sets: Arc::new(vec![String::from("Cout")]), + }, + )]; + check_compositions_and_metadata(compositions, expected, 0..1, 1..2); +} diff --git a/dispatcher/src/tests/mod.rs b/dispatcher/src/tests/mod.rs new file mode 100644 index 00000000..8633edfc --- /dev/null +++ b/dispatcher/src/tests/mod.rs @@ -0,0 +1 @@ +mod composition_tests; diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index f2dec60b..1652391a 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -3,15 +3,14 @@ mod dispatcher_tests { mod function_tests; mod registry_tests; - use dandelion_commons::{ContextTypeId, EngineTypeId}; + use dandelion_commons::FunctionId; use dispatcher::{ - composition::CompositionSet, - dispatcher::Dispatcher, - function_registry::{FunctionRegistry, Metadata}, + composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, }; use machine_interface::{ - function_driver::{ComputeResource, Driver}, + function_driver::ComputeResource, + machine_config::EngineType, memory_domain::{Context, ContextTrait, MemoryDomain}, }; use std::{collections::BTreeMap, sync::Arc}; @@ -20,26 +19,12 @@ mod dispatcher_tests { const DEFAULT_CONTEXT_SIZE: usize = 0x802_0000; // 128MiB fn setup_dispatcher( - domain_arg: Vec, name: &str, in_set_names: Vec<(String, Option)>, out_set_names: Vec, - driver: Box, + engine_type: EngineType, engine_resource: Vec, - ) -> Dispatcher { - let mut domains = BTreeMap::new(); - let context_id: ContextTypeId = 0; - domains.insert( - context_id, - Dom::init(domain_arg).expect("Should be able to initialize domain"), - ); - let engine_id: EngineTypeId = 0; - - let mut drivers = BTreeMap::>::new(); - drivers.insert(engine_id, driver); - let mut type_map = BTreeMap::new(); - type_map.insert(engine_id, context_id); - let registry = FunctionRegistry::new(drivers); + ) -> (Dispatcher, FunctionId) { let mut path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); path.pop(); path.push("machine_interface/tests/data"); @@ -50,24 +35,24 @@ mod dispatcher_tests { output_sets: Arc::new(out_set_names), }; let mut pool_map = BTreeMap::new(); - pool_map.insert(engine_id, engine_resource); + pool_map.insert(engine_type, engine_resource); let resource_pool = ResourcePool { engine_pool: futures::lock::Mutex::new(pool_map), }; - let dispatcher = Dispatcher::init(domains, type_map, registry, resource_pool) - .expect("Should have initialized dispatcher"); - tokio::runtime::Builder::new_current_thread() + let dispatcher = + Dispatcher::init(resource_pool).expect("Should have initialized dispatcher"); + let function_id = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.update_func( - 0, - engine_id, + .block_on(dispatcher.insert_func( + String::from(""), + engine_type, DEFAULT_CONTEXT_SIZE, path_string, metadata, )) - .expect("Should be able to update registry in new dispatcher"); - return dispatcher; + .expect("Should be able to insert function in new dispatcher"); + return (dispatcher, function_id); } fn check_matrix(context: &Context, set_id: usize, key: u32, rows: u64, expected: Vec) { @@ -100,7 +85,7 @@ mod dispatcher_tests { } macro_rules! dispatcherTests { - ($name: ident; $domain : ty; $init: expr; $driver : expr; $engine_resource: expr) => { + ($name: ident; $domain : ty; $init : expr; $engine_type : expr; $engine_resource: expr) => { use crate::dispatcher_tests::{ function_tests::{ composition_chain_matmul, composition_diamond_matmac, @@ -111,56 +96,53 @@ mod dispatcher_tests { }; #[test] fn test_single_domain_and_engine_basic() { - let driver = Box::new($driver); let name = format!("test_{}_basic", stringify!($name)); - single_domain_and_engine_basic::<$domain>($init, &name, driver, $engine_resource) + single_domain_and_engine_basic::<$domain>(&name, $engine_type, $engine_resource) } #[test] fn test_single_domain_and_engine_matmul() { - let driver = Box::new($driver); let name = format!("test_{}_matmul", stringify!($name)); - single_domain_and_engine_matmul::<$domain>($init, &name, driver, $engine_resource) + single_domain_and_engine_matmul::<$domain>( + $init, + &name, + $engine_type, + $engine_resource, + ) } #[test] fn test_composition_single_matmul() { - let driver = Box::new($driver); let name = format!("test_{}_matmul", stringify!($name)); - composition_single_matmul::<$domain>($init, &name, driver, $engine_resource) + composition_single_matmul::<$domain>($init, &name, $engine_type, $engine_resource) } #[test] fn test_composition_parallel() { - let driver = Box::new($driver); let name = format!("test_{}_matmul", stringify!($name)); - composition_parallel_matmul::<$domain>($init, &name, driver, $engine_resource) + composition_parallel_matmul::<$domain>($init, &name, $engine_type, $engine_resource) } #[test] fn test_composition_chain() { - let driver = Box::new($driver); let name = format!("test_{}_matmul", stringify!($name)); - composition_chain_matmul::<$domain>($init, &name, driver, $engine_resource) + composition_chain_matmul::<$domain>($init, &name, $engine_type, $engine_resource) } #[test] fn test_composition_diamond() { let name = format!("test_{}_matmac", stringify!($name)); - let driver = Box::new($driver); - composition_diamond_matmac::<$domain>($init, &name, driver, $engine_resource) + composition_diamond_matmac::<$domain>($init, &name, $engine_type, $engine_resource) } #[test] fn test_single_input_fixed() { let name = format!("test_{}_matmac", stringify!($name)); - let driver = Box::new($driver); - single_input_fixed::<$domain>($init, &name, driver, $engine_resource) + single_input_fixed::<$domain>(&name, $engine_type, $engine_resource) } #[test] fn test_multiple_input_fixed() { let name = format!("test_{}_matmac", stringify!($name)); - let driver = Box::new($driver); - multiple_input_fixed::<$domain>($init, &name, driver, $engine_resource) + multiple_input_fixed::<$domain>(&name, $engine_type, $engine_resource) } }; } @@ -168,35 +150,37 @@ mod dispatcher_tests { #[cfg(feature = "cheri")] mod cheri { use machine_interface::{ - function_driver::{compute_driver::cheri::CheriDriver, ComputeResource}, - memory_domain::cheri::CheriMemoryDomain, + function_driver::ComputeResource, + memory_domain::{cheri::CheriMemoryDomain, MemoryResource}, }; - dispatcherTests!(elf_cheri; CheriMemoryDomain; Vec::new(); CheriDriver {}; vec![ComputeResource::CPU(1)]); + dispatcherTests!(elf_cheri; CheriMemoryDomain; MemoryResource::None; EngineType::Cheri; vec![ComputeResource::CPU(1)]); } #[cfg(feature = "mmu")] mod mmu { use machine_interface::{ - function_driver::{compute_driver::mmu::MmuDriver, ComputeResource}, - memory_domain::mmu::MmuMemoryDomain, + function_driver::ComputeResource, + machine_config::EngineType, + memory_domain::{mmu::MmuMemoryDomain, MemoryResource}, }; #[cfg(target_arch = "x86_64")] - dispatcherTests!(elf_mmu_x86_64; MmuMemoryDomain; Vec::new(); MmuDriver {}; vec![ComputeResource::CPU(1)]); + dispatcherTests!(elf_mmu_x86_64; MmuMemoryDomain; MemoryResource::None; EngineType::Process; vec![ComputeResource::CPU(1)]); #[cfg(target_arch = "aarch64")] - dispatcherTests!(elf_mmu_aarch64; MmuMemoryDomain; Vec::new(); MmuDriver {}; vec![ComputeResource::CPU(1)]); + dispatcherTests!(elf_mmu_aarch64; MmuMemoryDomain; MemoryResource::None; EngineType::Process; vec![ComputeResource::CPU(1)]); } #[cfg(feature = "wasm")] mod wasm { use machine_interface::{ - function_driver::{compute_driver::wasm::WasmDriver, ComputeResource}, - memory_domain::wasm::WasmMemoryDomain, + function_driver::ComputeResource, + machine_config::EngineType, + memory_domain::{wasm::WasmMemoryDomain, MemoryResource}, }; #[cfg(target_arch = "x86_64")] - dispatcherTests!(sysld_wasm_x86_64; WasmMemoryDomain; Vec::new(); WasmDriver {}; vec![ComputeResource::CPU(1)]); + dispatcherTests!(sysld_wasm_x86_64; WasmMemoryDomain; MemoryResource::None; EngineType::RWasm; vec![ComputeResource::CPU(1)]); #[cfg(target_arch = "aarch64")] - dispatcherTests!(sysld_wasm_aarch64; WasmMemoryDomain; Vec::new(); WasmDriver {}; vec![ComputeResource::CPU(1)]); + dispatcherTests!(sysld_wasm_aarch64; WasmMemoryDomain; MemoryResource::None; EngineType::RWasm; vec![ComputeResource::CPU(1)]); } } diff --git a/dispatcher/tests/dispatcher_tests/function_tests.rs b/dispatcher/tests/dispatcher_tests/function_tests.rs index 5c556b7d..a73839e3 100644 --- a/dispatcher/tests/dispatcher_tests/function_tests.rs +++ b/dispatcher/tests/dispatcher_tests/function_tests.rs @@ -2,8 +2,9 @@ use super::{check_matrix, setup_dispatcher}; use core::mem::size_of; use dispatcher::composition::{Composition, CompositionSet, FunctionDependencies, ShardingMode}; use machine_interface::{ - function_driver::{ComputeResource, Driver}, - memory_domain::{Context, MemoryDomain}, + function_driver::ComputeResource, + machine_config::EngineType, + memory_domain::{Context, MemoryDomain, MemoryResource}, DataItem, DataSet, Position, }; use std::collections::BTreeMap; @@ -87,23 +88,16 @@ fn add_matmac_matrix( } pub fn single_domain_and_engine_basic( - domain_arg: Vec, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { - let dispatcher = setup_dispatcher::( - domain_arg, - relative_path, - vec![], - vec![], - driver, - engine_resource, - ); + let (dispatcher, funcion_id) = + setup_dispatcher::(relative_path, vec![], vec![], engine_type, engine_resource); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(0, Vec::new(), Vec::new(), false)); + .block_on(dispatcher.queue_function(funcion_id, Vec::new(), Vec::new(), false)); match result { Ok(_) => (), Err(err) => panic!("Failed with: {:?}", err), @@ -111,17 +105,16 @@ pub fn single_domain_and_engine_basic( } pub fn single_domain_and_engine_matmul( - domain_arg: Vec, + domain_arg: MemoryResource, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { - let dispatcher = setup_dispatcher::( - Vec::new(), + let (dispatcher, function_id) = setup_dispatcher::( relative_path, vec![(String::from(""), None)], vec![String::from("")], - driver, + engine_type, engine_resource, ); const CONTEXT_SIZE: usize = 5 * 8; @@ -136,7 +129,7 @@ pub fn single_domain_and_engine_matmul( let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(0, inputs, outputs, false)); + .block_on(dispatcher.queue_function(function_id, inputs, outputs, false)); let out_sets = match result { Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), @@ -150,17 +143,16 @@ pub fn single_domain_and_engine_matmul( } pub fn composition_single_matmul( - domain_arg: Vec, + domain_arg: MemoryResource, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { - let dispatcher = setup_dispatcher::( - Vec::new(), + let (dispatcher, function_id) = setup_dispatcher::( relative_path, vec![(String::from(""), None)], vec![String::from("")], - driver, + engine_type, engine_resource, ); const CONTEXT_SIZE: usize = 9 * 8; @@ -172,17 +164,17 @@ pub fn composition_single_matmul( let composition = Composition { dependencies: vec![FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![Some((0, ShardingMode::All))], output_set_ids: vec![Some(1)], }], + output_map: BTreeMap::from([(1, 0)]), }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let outputs = BTreeMap::from([(1, 0)]); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, outputs, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false)); let mut out_contexts = match result { Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), @@ -199,17 +191,16 @@ pub fn composition_single_matmul( } pub fn composition_parallel_matmul( - domain_arg: Vec, + domain_arg: MemoryResource, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { - let dispatcher = setup_dispatcher::( - Vec::new(), + let (dispatcher, function_id) = setup_dispatcher::( relative_path, vec![(String::from(""), None)], vec![String::from("")], - driver, + engine_type, engine_resource, ); // need space for the input matrix of 2x2 uint64_t as well as a output matrix of the same size @@ -224,17 +215,17 @@ pub fn composition_parallel_matmul( let composition = Composition { dependencies: vec![FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![Some((0, ShardingMode::Each))], output_set_ids: vec![Some(1)], }], + output_map: BTreeMap::from([(1, 0)]), }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let outputs = BTreeMap::from([(1, 0)]); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, outputs, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false)); let mut out_vec = match result { Ok(v) => v, Err(err) => panic!("Failed with: {:?}", err), @@ -260,17 +251,16 @@ pub fn composition_parallel_matmul( } pub fn composition_chain_matmul( - domain_arg: Vec, + domain_arg: MemoryResource, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { - let dispatcher = setup_dispatcher::( - Vec::new(), + let (dispatcher, function_id) = setup_dispatcher::( relative_path, vec![(String::from(""), None)], vec![String::from("")], - driver, + engine_type, engine_resource, ); const CONTEXT_SIZE: usize = 9 * 8; @@ -283,23 +273,23 @@ pub fn composition_chain_matmul( let composition = Composition { dependencies: vec![ FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![Some((0, ShardingMode::All))], output_set_ids: vec![Some(1)], }, FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![Some((1, ShardingMode::All))], output_set_ids: vec![Some(2)], }, ], + output_map: BTreeMap::from([(2, 0)]), }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let output_contexts = BTreeMap::from([(2, 0)]); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, output_contexts, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false)); let out_contexts = match result { Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), @@ -313,13 +303,12 @@ pub fn composition_chain_matmul( } pub fn composition_diamond_matmac( - domain_arg: Vec, + domain_arg: MemoryResource, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { - let dispatcher = self::setup_dispatcher::( - Vec::new(), + let (dispatcher, function_id) = self::setup_dispatcher::( relative_path, vec![ (String::from(""), None), @@ -327,7 +316,7 @@ pub fn composition_diamond_matmac( (String::from(""), None), ], vec![String::from("")], - driver, + engine_type, engine_resource, ); const CONTEXT_SIZE: usize = 12 * 8; @@ -346,7 +335,7 @@ pub fn composition_diamond_matmac( dependencies: vec![ // C = A*B FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![ Some((0, ShardingMode::All)), Some((1, ShardingMode::All)), @@ -356,7 +345,7 @@ pub fn composition_diamond_matmac( }, // D = B^T*A FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![ Some((2, ShardingMode::All)), Some((0, ShardingMode::All)), @@ -366,7 +355,7 @@ pub fn composition_diamond_matmac( }, // E = B + C FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![ None, Some((1, ShardingMode::All)), @@ -376,7 +365,7 @@ pub fn composition_diamond_matmac( }, // G = D * C FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![ Some((4, ShardingMode::All)), Some((3, ShardingMode::All)), @@ -386,7 +375,7 @@ pub fn composition_diamond_matmac( }, // Result = D*E + G FunctionDependencies { - function: 0, + function: function_id, input_set_ids: vec![ Some((4, ShardingMode::All)), Some((5, ShardingMode::All)), @@ -395,6 +384,7 @@ pub fn composition_diamond_matmac( output_set_ids: vec![Some(7)], }, ], + output_map: BTreeMap::from([(7, 0)]), }; let context_arc = Arc::new(in_context); let inputs = BTreeMap::from([ @@ -402,11 +392,10 @@ pub fn composition_diamond_matmac( (1, CompositionSet::from((1, vec![context_arc.clone()]))), (2, CompositionSet::from((2, vec![context_arc.clone()]))), ]); - let output_contexts = BTreeMap::from([(7, 0)]); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, output_contexts, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false)); let out_contexts = match result { Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index cbf1ad96..f5e36db7 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -2,9 +2,9 @@ use std::vec; use dispatcher::{composition::CompositionSet, function_registry::Metadata}; use machine_interface::{ - function_driver::{ComputeResource, Driver}, - memory_domain::Context, - memory_domain::{read_only::ReadOnlyContext, MemoryDomain}, + function_driver::ComputeResource, + machine_config::EngineType, + memory_domain::{read_only::ReadOnlyContext, Context, MemoryDomain, MemoryResource}, DataItem, DataSet, Position, }; use std::sync::Arc; @@ -38,9 +38,8 @@ fn create_context(matrix: Box<[u64]>) -> Context { /// check once for the ouput being correct in absence of an input set for the fixed one, /// and once for correct behavior if there is a set provided for the fixed one pub fn single_input_fixed( - domain_arg: Vec, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { let matrix_a = Box::new([1u64, 2u64]); @@ -59,12 +58,11 @@ pub fn single_input_fixed( (String::from(""), None), ]; let out_set_names = vec![String::from("")]; - let dispatcher = setup_dispatcher::( - domain_arg, + let (dispatcher, _) = setup_dispatcher::( relative_path, in_set_names.clone(), out_set_names.clone(), - driver, + engine_type, engine_resource, ); let mut absolute_path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); @@ -75,12 +73,12 @@ pub fn single_input_fixed( let mut local_names = in_set_names.clone(); local_names[i].1 = Some(CompositionSet::from((0, vec![mat_con_a.clone()]))); // alter metadata for the functions - tokio::runtime::Builder::new_current_thread() + let function_id = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.update_func( - 0, - 0, + .block_on(dispatcher.insert_func( + format!("local_name_{}", i), + engine_type, DEFAULT_CONTEXT_SIZE, absolute_path.to_str().expect("Path should be valid string"), Metadata { @@ -109,11 +107,11 @@ pub fn single_input_fixed( let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(0, inputs, outputs.clone(), false)); + .block_on(dispatcher.queue_function(function_id, inputs, outputs.clone(), false)); let overwrite_result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(0, overwrite_inputs, outputs, false)); + .block_on(dispatcher.queue_function(function_id, overwrite_inputs, outputs, false)); let out_sets = match result { Ok(composition_sets) => composition_sets, Err(err) => panic!("Non overwrite failed with: {:?}", err), @@ -137,9 +135,8 @@ pub fn single_input_fixed( /// check functionallity with multiple fixed inputs with and without input provided for the fixed sets pub fn multiple_input_fixed( - domain_arg: Vec, relative_path: &str, - driver: Box, + engine_type: EngineType, engine_resource: Vec, ) { let matrix_a = Box::new([1u64, 2u64]); @@ -158,12 +155,11 @@ pub fn multiple_input_fixed( (String::from(""), None), ]; let out_set_names = vec![String::from("")]; - let dispatcher = setup_dispatcher::( - domain_arg, + let (dispatcher, _) = setup_dispatcher::( relative_path, in_set_names.clone(), out_set_names.clone(), - driver, + engine_type, engine_resource, ); let mut absolute_path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); @@ -179,12 +175,12 @@ pub fn multiple_input_fixed( local_names[fixed_sets[0]].1 = Some(CompositionSet::from((0, vec![mat_con_b.clone()]))); local_names[fixed_sets[1]].1 = Some(CompositionSet::from((0, vec![mat_con_c.clone()]))); // alter metadata for the functions - tokio::runtime::Builder::new_current_thread() + let function_id = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.update_func( - 0, - 0, + .block_on(dispatcher.insert_func( + format!("insert_function_{}", i), + engine_type, DEFAULT_CONTEXT_SIZE, absolute_path.to_str().expect("Path should be valid string"), Metadata { @@ -207,11 +203,11 @@ pub fn multiple_input_fixed( let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(0, inputs, outputs.clone(), false)); + .block_on(dispatcher.queue_function(function_id, inputs, outputs.clone(), false)); let overwrite_result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(0, overwrite_inputs, outputs, false)); + .block_on(dispatcher.queue_function(function_id, overwrite_inputs, outputs, false)); let out_sets = match result { Ok(composition_sets) => composition_sets, Err(err) => panic!("Non overwrite failed with: {:?}", err), diff --git a/machine_interface/src/function_driver/compute_driver/cheri/test.rs b/machine_interface/src/function_driver/compute_driver/cheri/test.rs index ea5945f9..c791e9cb 100644 --- a/machine_interface/src/function_driver/compute_driver/cheri/test.rs +++ b/machine_interface/src/function_driver/compute_driver/cheri/test.rs @@ -10,8 +10,8 @@ fn test_loader_basic() { "{}/tests/data/test_elf_cheri_basic", env!("CARGO_MANIFEST_DIR") ); - let mut malloc_domain = - MallocMemoryDomain::init(Vec::new()).expect("Should be able to get malloc domain"); + let mut malloc_domain = MallocMemoryDomain::init(crate::memory_domain::MemoryResource::None) + .expect("Should be able to get malloc domain"); let driver = CheriDriver {}; let Function { requirements, diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 2cfddbf4..e4cc79d3 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -5,7 +5,7 @@ mod compute_driver_tests { test_queue::TestQueue, ComputeResource, Driver, EngineArguments, FunctionArguments, FunctionConfig, }, - memory_domain::{Context, ContextState, ContextTrait, MemoryDomain}, + memory_domain::{Context, ContextState, ContextTrait, MemoryDomain, MemoryResource}, DataItem, DataSet, Position, }; use core::panic; @@ -15,7 +15,7 @@ mod compute_driver_tests { }; use std::sync::{Arc, Mutex}; - fn loader_empty(dom_init: Vec, driver: Box) { + fn loader_empty(dom_init: MemoryResource, driver: Box) { // load elf file let elf_path = String::new(); let mut domain = Dom::init(dom_init).expect("Should be able to get domain"); @@ -47,7 +47,7 @@ mod compute_driver_tests { fn prepare_engine_and_function( filename: &str, - dom_init: Vec, + dom_init: MemoryResource, driver: &Box, drv_init: Vec, ) -> (Context, FunctionConfig, Box) { @@ -67,7 +67,7 @@ mod compute_driver_tests { fn engine_minimal( filename: &str, - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: Vec, ) { @@ -90,7 +90,7 @@ mod compute_driver_tests { fn engine_matmul_single( filename: &str, - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: Vec, ) { @@ -163,7 +163,7 @@ mod compute_driver_tests { fn engine_matmul_size_sweep( filename: &str, - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: Vec, ) { @@ -239,7 +239,7 @@ mod compute_driver_tests { fn engine_stdio( filename: &str, - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: Vec, ) { @@ -355,7 +355,7 @@ mod compute_driver_tests { fn engine_fileio( filename: &str, - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: Vec, ) { @@ -582,11 +582,13 @@ mod compute_driver_tests { #[cfg(feature = "mmu")] mod mmu { - use crate::function_driver::compute_driver::mmu::MmuDriver; use crate::function_driver::ComputeResource; use crate::memory_domain::mmu::MmuMemoryDomain; + use crate::{ + function_driver::compute_driver::mmu::MmuDriver, memory_domain::MemoryResource, + }; #[cfg(target_arch = "x86_64")] - driverTests!(elf_mmu_x86_64; MmuMemoryDomain; Vec::new(); MmuDriver {}; + driverTests!(elf_mmu_x86_64; MmuMemoryDomain; MemoryResource::None; MmuDriver {}; core_affinity::get_core_ids() .and_then( |core_vec| @@ -599,7 +601,7 @@ mod compute_driver_tests { ComputeResource::GPU(0) ]); #[cfg(target_arch = "aarch64")] - driverTests!(elf_mmu_aarch64; MmuMemoryDomain; Vec::new(); MmuDriver {}; + driverTests!(elf_mmu_aarch64; MmuMemoryDomain; MemoryResource::None; MmuDriver {}; core_affinity::get_core_ids() .and_then( |core_vec| @@ -620,7 +622,7 @@ mod compute_driver_tests { use crate::memory_domain::wasm::WasmMemoryDomain; #[cfg(target_arch = "x86_64")] - driverTests!(sysld_wasm_x86_64; WasmMemoryDomain; Vec::new(); WasmDriver {}; + driverTests!(sysld_wasm_x86_64; WasmMemoryDomain; crate::memory_domain::MemoryResource::None; WasmDriver {}; core_affinity::get_core_ids() .and_then( |core_vec| diff --git a/machine_interface/src/function_driver/compute_driver/mmu/test.rs b/machine_interface/src/function_driver/compute_driver/mmu/test.rs index 78468ba5..d6311c2a 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu/test.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu/test.rs @@ -12,8 +12,8 @@ fn test_loader_basic() { std::env::consts::ARCH ); let driver = MmuDriver {}; - let mut mmu_domain = - MmuMemoryDomain::init(Vec::new()).expect("Should be able to get mmu domain"); + let mut mmu_domain = MmuMemoryDomain::init(crate::memory_domain::MemoryResource::None) + .expect("Should be able to get mmu domain"); let Function { requirements, context, diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 07740a00..e501ad53 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -5,7 +5,7 @@ mod system_driver_tests { system_driver::get_system_function_output_sets, test_queue::TestQueue, ComputeResource, Driver, EngineArguments, FunctionArguments, FunctionConfig, SystemFunction, }, - memory_domain::{Context, ContextTrait, MemoryDomain}, + memory_domain::{Context, ContextTrait, MemoryDomain, MemoryResource}, DataItem, DataSet, Position, }; use dandelion_commons::{ @@ -56,7 +56,7 @@ mod system_driver_tests { } fn get_http( - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: ComputeResource, ) -> () { @@ -119,7 +119,7 @@ mod system_driver_tests { } fn put_http( - dom_init: Vec, + dom_init: MemoryResource, driver: Box, drv_init: ComputeResource, ) -> () { @@ -213,6 +213,6 @@ mod system_driver_tests { use crate::function_driver::system_driver::hyper::HyperDriver; use crate::function_driver::ComputeResource; use crate::memory_domain::malloc::MallocMemoryDomain as domain; - driverTests!(hyper_io; domain; Vec::new(); HyperDriver{}; ComputeResource::CPU(1)); + driverTests!(hyper_io; domain; crate::memory_domain::MemoryResource::None; HyperDriver{}; ComputeResource::CPU(1)); } } diff --git a/machine_interface/src/lib.rs b/machine_interface/src/lib.rs index 2b5e9aec..c78a2f39 100644 --- a/machine_interface/src/lib.rs +++ b/machine_interface/src/lib.rs @@ -2,6 +2,10 @@ pub mod function_driver; pub mod memory_domain; pub mod promise; +/// Module contains all the information needed about available engines, +/// contexts, and their compatibility with fast to look up structs +pub mod machine_config; + #[cfg(any(feature = "cheri", feature = "mmu", feature = "wasm"))] mod interface; pub mod util; diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs new file mode 100644 index 00000000..123c38fa --- /dev/null +++ b/machine_interface/src/machine_config.rs @@ -0,0 +1,89 @@ +use std::collections::BTreeMap; + +#[allow(unused_imports)] +use crate::{ + function_driver::Driver, + memory_domain::{MemoryDomain, MemoryResource}, +}; + +/// Enum for all engine types that allows use in lookup structures +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] +pub enum EngineType { + #[cfg(feature = "hyper_io")] + Hyper, + #[cfg(feature = "cheri")] + Cheri, + #[cfg(feature = "wasm")] + RWasm, + #[cfg(feature = "mmu")] + Process, +} + +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] +pub enum DomainType { + #[cfg(feature = "cheri")] + Cheri, + #[cfg(feature = "wasm")] + RWasm, + #[cfg(feature = "mmu")] + Process, +} + +pub fn get_compatibilty_table() -> BTreeMap { + return BTreeMap::from([ + #[cfg(feature = "cheri")] + (EngineType::Cheri, DomainType::Cheri), + #[cfg(feature = "wasm")] + (EngineType::RWasm, DomainType::RWasm), + #[cfg(feature = "mmu")] + (EngineType::Process, DomainType::Process), + ]); +} + +pub fn get_available_domains() -> BTreeMap> { + return BTreeMap::from([ + #[cfg(feature = "cheri")] + ( + DomainType::Cheri, + crate::memory_domain::cheri::CheriMemoryDomain::init(MemoryResource::None).unwrap(), + ), + #[cfg(feature = "wasm")] + ( + DomainType::RWasm, + crate::memory_domain::wasm::WasmMemoryDomain::init(MemoryResource::None).unwrap(), + ), + #[cfg(feature = "mmu")] + ( + DomainType::Process, + crate::memory_domain::mmu::MmuMemoryDomain::init(MemoryResource::None).unwrap(), + ), + ]); +} + +pub fn get_available_drivers() -> BTreeMap> { + return BTreeMap::>::from([ + #[cfg(feature = "hyper_io")] + ( + EngineType::Hyper, + Box::new(crate::function_driver::system_driver::hyper::HyperDriver {}) + as Box, + ), + #[cfg(feature = "cheri")] + ( + EngineType::Cheri, + Box::new(crate::function_driver::compute_driver::cheri::CheriDriver {}) + as Box, + ), + #[cfg(feature = "wasm")] + ( + EngineType::RWasm, + Box::new(crate::function_driver::compute_driver::wasm::WasmDriver {}) + as Box, + ), + #[cfg(feature = "mmu")] + ( + EngineType::Process, + Box::new(crate::function_driver::compute_driver::mmu::MmuDriver {}) as Box, + ), + ]); +} diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index ec52a2a4..2770efc0 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -193,9 +193,15 @@ impl Context { } } +/// TODO remove clone / copy once we have an implementation that needs an input +#[derive(Clone, Copy)] +pub enum MemoryResource { + None, +} + pub trait MemoryDomain: Sync + Send { // allocation and distruction - fn init(config: Vec) -> DandelionResult> + fn init(resource: MemoryResource) -> DandelionResult> where Self: Sized; fn acquire_context(&self, size: usize) -> DandelionResult; diff --git a/machine_interface/src/memory_domain/cheri.rs b/machine_interface/src/memory_domain/cheri.rs index 121478a4..3908b748 100644 --- a/machine_interface/src/memory_domain/cheri.rs +++ b/machine_interface/src/memory_domain/cheri.rs @@ -32,7 +32,7 @@ extern "C" { ) -> (); } -use crate::memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}; +use crate::memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}; use dandelion_commons::{DandelionError, DandelionResult}; #[derive(Debug)] @@ -95,7 +95,7 @@ impl Drop for CheriContext { pub struct CheriMemoryDomain {} impl MemoryDomain for CheriMemoryDomain { - fn init(_config: Vec) -> DandelionResult> { + fn init(_config: MemoryResource) -> DandelionResult> { Ok(Box::new(CheriMemoryDomain {})) } fn acquire_context(&self, size: usize) -> DandelionResult { diff --git a/machine_interface/src/memory_domain/domain_tests.rs b/machine_interface/src/memory_domain/domain_tests.rs index ecdb8723..849c7ce8 100644 --- a/machine_interface/src/memory_domain/domain_tests.rs +++ b/machine_interface/src/memory_domain/domain_tests.rs @@ -1,11 +1,17 @@ use std::vec; -use crate::memory_domain::{transfer_data_set, transfer_memory, ContextTrait, MemoryDomain}; +use crate::memory_domain::{ + transfer_data_set, transfer_memory, ContextTrait, MemoryDomain, MemoryResource, +}; use dandelion_commons::{DandelionError, DandelionResult}; // produces binary pattern 0b0101_01010 or 0x55 const BYTEPATTERN: u8 = 85; -fn acquire(arg: Vec, acquisition_size: usize, expect_success: bool) -> () { +fn acquire( + arg: MemoryResource, + acquisition_size: usize, + expect_success: bool, +) -> () { let init_result = D::init(arg); let domain = init_result.expect("should have initialized memory domain"); let context_result = domain.acquire_context(acquisition_size); @@ -24,14 +30,14 @@ fn acquire(arg: Vec, acquisition_size: usize, expect_succes } } -fn init_domain(arg: Vec) -> Box { +fn init_domain(arg: MemoryResource) -> Box { let init_result = D::init(arg); let domain = init_result.expect("memory domain should have been initialized"); return domain; } fn write( - arg: Vec, + arg: MemoryResource, context_size: usize, offset: usize, size: usize, @@ -50,7 +56,7 @@ fn write( } fn read( - arg: Vec, + arg: MemoryResource, context_size: usize, offset: usize, size: usize, @@ -73,7 +79,7 @@ fn read( } } -fn transefer(arg: Vec, size: usize) { +fn transefer(arg: MemoryResource, size: usize) { let domain = init_domain::(arg); let mut destination = domain .acquire_context(size) @@ -94,7 +100,7 @@ fn transefer(arg: Vec, size: usize) { } fn transfer_item( - arg: Vec, + arg: MemoryResource, context_size: usize, offset: usize, item_size: usize, @@ -211,18 +217,19 @@ macro_rules! domainTests { } }; } + use super::malloc::MallocMemoryDomain as mallocType; -domainTests!(malloc; mallocType; Vec::new()); +domainTests!(malloc; mallocType; MemoryResource::None); #[cfg(feature = "cheri")] use super::cheri::CheriMemoryDomain as cheriType; #[cfg(feature = "cheri")] -domainTests!(cheri; cheriType; Vec::new()); +domainTests!(cheri; cheriType; MemoryResource::None); #[cfg(feature = "mmu")] use super::mmu::MmuMemoryDomain as mmuType; #[cfg(feature = "mmu")] -domainTests!(mmu; mmuType; Vec::new()); +domainTests!(mmu; mmuType; MemoryResource::None); #[cfg(feature = "wasm")] use super::wasm::WasmMemoryDomain as wasmType; #[cfg(feature = "wasm")] -domainTests!(wasm; wasmType; Vec::new()); +domainTests!(wasm; wasmType; MemoryResource::None); diff --git a/machine_interface/src/memory_domain/malloc.rs b/machine_interface/src/memory_domain/malloc.rs index daf7658e..26ab6caf 100644 --- a/machine_interface/src/memory_domain/malloc.rs +++ b/machine_interface/src/memory_domain/malloc.rs @@ -1,4 +1,4 @@ -use crate::memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}; +use crate::memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}; use dandelion_commons::{DandelionError, DandelionResult}; #[derive(Debug)] @@ -55,7 +55,7 @@ impl ContextTrait for MallocContext { pub struct MallocMemoryDomain {} impl MemoryDomain for MallocMemoryDomain { - fn init(_config: Vec) -> DandelionResult> { + fn init(_config: MemoryResource) -> DandelionResult> { Ok(Box::new(MallocMemoryDomain {})) } fn acquire_context(&self, size: usize) -> DandelionResult { diff --git a/machine_interface/src/memory_domain/mmu.rs b/machine_interface/src/memory_domain/mmu.rs index fdc239fa..b5000d32 100644 --- a/machine_interface/src/memory_domain/mmu.rs +++ b/machine_interface/src/memory_domain/mmu.rs @@ -1,5 +1,5 @@ use crate::{ - memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}, + memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}, util::shared_mem::SharedMem, }; use dandelion_commons::{DandelionError, DandelionResult}; @@ -72,7 +72,7 @@ impl ContextTrait for MmuContext { pub struct MmuMemoryDomain {} impl MemoryDomain for MmuMemoryDomain { - fn init(_config: Vec) -> DandelionResult> { + fn init(_config: MemoryResource) -> DandelionResult> { Ok(Box::new(MmuMemoryDomain {})) } diff --git a/machine_interface/src/memory_domain/wasm.rs b/machine_interface/src/memory_domain/wasm.rs index 58c36647..05702672 100644 --- a/machine_interface/src/memory_domain/wasm.rs +++ b/machine_interface/src/memory_domain/wasm.rs @@ -1,4 +1,4 @@ -use crate::memory_domain::{Context, ContextTrait, ContextType, MemoryDomain}; +use crate::memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}; use dandelion_commons::{DandelionError, DandelionResult}; mod wasm_memory_allocation { @@ -8,7 +8,7 @@ mod wasm_memory_allocation { use std::ops::DerefMut; /// A smart pointer for memory mapped memory. - /// It makes sure that the memory is unmapped when + /// It makes sure that the memory is unmapped when /// it is dropped, and prevents Rust from trying to /// free the memory through the global allocator. #[derive(Debug)] @@ -19,21 +19,26 @@ mod wasm_memory_allocation { impl MmapBox { pub fn new(size: usize) -> Result { - let addr = unsafe { mmap( - 0 as *mut _, - size, - libc::PROT_READ | libc::PROT_WRITE, - libc::MAP_PRIVATE | libc::MAP_ANONYMOUS, - -1, - 0, - ) }; + let addr = unsafe { + mmap( + 0 as *mut _, + size, + libc::PROT_READ | libc::PROT_WRITE, + libc::MAP_PRIVATE | libc::MAP_ANONYMOUS, + -1, + 0, + ) + }; match addr { libc::MAP_FAILED => { return Err(DandelionError::OutOfMemory); - }, + } _ => {} } - Ok(MmapBox { ptr: addr as *mut u8, size }) + Ok(MmapBox { + ptr: addr as *mut u8, + size, + }) } } @@ -53,7 +58,9 @@ mod wasm_memory_allocation { impl Drop for MmapBox { fn drop(&mut self) { - unsafe { munmap(self.ptr as *mut _, self.size); } + unsafe { + munmap(self.ptr as *mut _, self.size); + } } } } @@ -74,17 +81,16 @@ impl ContextTrait for WasmContext { if offset + write_size > self.mem.len() { return Err(DandelionError::InvalidWrite); } - let data_bytes: &[u8] = unsafe { - std::slice::from_raw_parts(data.as_ptr() as *const u8, write_size) - }; - self.mem[offset..offset+write_size].copy_from_slice(data_bytes); - Ok(()) + let data_bytes: &[u8] = + unsafe { std::slice::from_raw_parts(data.as_ptr() as *const u8, write_size) }; + self.mem[offset..offset + write_size].copy_from_slice(data_bytes); + Ok(()) } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { let self_data = &self.mem; let read_size = read_buffer.len() * std::mem::size_of::(); if offset + read_size <= self_data.len() { - let data_bytes: &[u8] = &self_data[offset..offset+read_size]; + let data_bytes: &[u8] = &self_data[offset..offset + read_size]; unsafe { (read_buffer.as_mut_ptr() as *mut u8).copy_from(data_bytes.as_ptr(), read_size) }; @@ -99,17 +105,15 @@ impl ContextTrait for WasmContext { pub struct WasmMemoryDomain {} impl MemoryDomain for WasmMemoryDomain { - fn init(_config: Vec) -> DandelionResult> { + fn init(_config: MemoryResource) -> DandelionResult> { Ok(Box::new(WasmMemoryDomain {})) } fn acquire_context(&self, size: usize) -> DandelionResult { Ok(Context::new( - ContextType::Wasm(Box::new( - WasmContext { - mem: MmapBox::new(size)?, - } - )), - size + ContextType::Wasm(Box::new(WasmContext { + mem: MmapBox::new(size)?, + })), + size, )) } } From 04985f8cf557a30c1ac04de2f8f7e287746f4080 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 6 Mar 2024 17:40:23 +0100 Subject: [PATCH 020/176] Updated server http interface to allow registering functions at runtime --- dispatcher/src/dispatcher.rs | 17 + dispatcher/src/function_registry.rs | 11 +- .../tests/dispatcher_tests/registry_tests.rs | 2 +- server/Cargo.toml | 2 + server/src/main.rs | 580 +++++------------- server/tests/server_tests.rs | 161 ++++- 6 files changed, 323 insertions(+), 450 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 9559a4df..c4657ae3 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -95,6 +95,23 @@ impl Dispatcher { .await; } + pub async fn queue_function_by_name( + &self, + function_name: String, + inputs: Vec<(usize, CompositionSet)>, + output_mapping: Vec>, + non_caching: bool, + ) -> DandelionResult> { + let function_id = self + .function_registry + .get_function_id(&function_name) + .await + .ok_or(DandelionError::DispatcherUnavailableFunction)?; + return self + .queue_function(function_id, inputs, output_mapping, non_caching) + .await; + } + // TODO: change test to use the queue function and remove this from being public pub async fn queue_composition( &self, diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 3d69717c..2de23377 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -140,8 +140,11 @@ impl FunctionRegistry { ) -> DandelionResult<()> { // TODO actually handle the error in some sensible way // the error contains the parsing failure - let module = dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; - let composition_meta_pairs = Composition::from_module(&module, &mut *self.function_dict.lock().await)?; + let mut dictlock = self.function_dict.lock().await; + let composition_meta_pairs = { + let module = dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; + Composition::from_module(&module, &mut dictlock)? + }; for (function_id, composition, metadata) in composition_meta_pairs { self.metadata.lock().await.insert(function_id, metadata); self.add_composition(function_id, composition).await?; @@ -149,6 +152,10 @@ impl FunctionRegistry { return Ok(()); } + pub async fn get_function_id(&self, function_name: &str) -> Option{ + return self.function_dict.lock().await.lookup(&function_name); + } + async fn add_composition( &self, function_id: FunctionId, diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index f5e36db7..d411f049 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -4,7 +4,7 @@ use dispatcher::{composition::CompositionSet, function_registry::Metadata}; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, - memory_domain::{read_only::ReadOnlyContext, Context, MemoryDomain, MemoryResource}, + memory_domain::{read_only::ReadOnlyContext, Context, MemoryDomain}, DataItem, DataSet, Position, }; use std::sync::Arc; diff --git a/server/Cargo.toml b/server/Cargo.toml index dec27721..aa87d110 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -16,6 +16,8 @@ bytes = "1.4" http = "0.2" log = "0.4.20" env_logger = "0.10.1" +serde = "1.0.197" +bson = "2.9.0" [dev-dependencies] assert_cmd = "2.0" diff --git a/server/src/main.rs b/server/src/main.rs index 82bbd071..10add680 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,10 +1,7 @@ use bytes::Buf; use core_affinity::{self, CoreId}; -use dandelion_commons::{ContextTypeId, EngineTypeId}; use dispatcher::{ - composition::{Composition, CompositionSet, FunctionDependencies, ShardingMode}, - dispatcher::Dispatcher, - function_registry::{FunctionRegistry, Metadata}, + composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, }; use futures::lock::Mutex; @@ -15,85 +12,40 @@ use hyper::{ }; use log::{error, info}; use machine_interface::{ - function_driver::{ - system_driver::{get_system_function_input_sets, get_system_function_output_sets}, - ComputeResource, SystemFunction, - }, + function_driver::ComputeResource, + machine_config::EngineType, memory_domain::{malloc::MallocMemoryDomain, read_only::ReadOnlyContext}, -}; - -#[cfg(feature = "hyper_io")] -use machine_interface::function_driver::system_driver::hyper::HyperDriver; - -#[cfg(any(feature = "cheri", feature = "mmu", feature = "wasm"))] -use machine_interface::{ - function_driver::Driver, memory_domain::{Context, ContextTrait, MemoryDomain}, DataItem, DataSet, Position, }; - -#[cfg(feature = "cheri")] -use machine_interface::{ - function_driver::compute_driver::cheri::CheriDriver, memory_domain::cheri::CheriMemoryDomain, -}; - -#[cfg(feature = "mmu")] -use machine_interface::{ - function_driver::compute_driver::mmu::MmuDriver, memory_domain::mmu::MmuMemoryDomain, -}; - -#[cfg(feature = "wasm")] -use machine_interface::{ - function_driver::compute_driver::wasm::WasmDriver, memory_domain::wasm::WasmMemoryDomain, -}; - -#[cfg(not(any(feature = "cheri", feature = "mmu", feature = "wasm")))] -use machine_interface::{ - memory_domain::{Context, ContextTrait, MemoryDomain}, - DataItem, DataSet, Position, -}; - +use serde::Deserialize; use std::{ collections::BTreeMap, convert::Infallible, + io::Write, mem::size_of, net::SocketAddr, path::PathBuf, - process::Command, sync::{ - atomic::{AtomicU64, AtomicU8, Ordering}, + atomic::{AtomicU8, Ordering}, Arc, Once, }, - time::Duration, }; use tokio::runtime::Builder; -const MMM_ID: u64 = 0; -const HTTP_ID: u64 = 2; -const BUSY_ID: u64 = 3; -const COMPOSITION_ID: u64 = 4; - -// can support 10000 RPS for 2 mins -const MMM_COLD_ID_BASE: u64 = 0x1000000; -const BUSY_COLD_ID_BASE: u64 = 0x2000000; -const COMPOSITION_COLD_ID_BASE: u64 = 0x3000000; - -// context size for functions -const DEFAULT_CONTEXT_SIZE: usize = 0x802_0000; // 128MiB -const SYSTEM_CONTEXT_SIZE: usize = 0x200_0000; // 2MiB - static INIT_MATRIX: Once = Once::new(); static mut DUMMY_MATRIX: Vec = Vec::new(); -static COLD_COUNTER: AtomicU64 = AtomicU64::new(0); async fn run_chain( dispatcher: Arc, is_cold: bool, + function_name: String, get_uri: String, post_uri: String, - max_cold: u64, ) -> u64 { - let domain = MallocMemoryDomain::init(vec![]).expect("Should be able to get malloc domain"); + // TODO just have all the strings concatinated and create const context + let domain = MallocMemoryDomain::init(machine_interface::memory_domain::MemoryResource::None) + .expect("Should be able to get malloc domain"); let mut input_context = domain .acquire_context(128) .expect("Should be able to get malloc context"); @@ -134,14 +86,8 @@ async fn run_chain( ]; let output_mapping = vec![Some(0), Some(1)]; - let counter = COLD_COUNTER.fetch_add(1, Ordering::Relaxed); - let function_id = if !is_cold { - COMPOSITION_ID - } else { - COMPOSITION_COLD_ID_BASE + counter % max_cold - }; let result = dispatcher - .queue_function(function_id, inputs, output_mapping, false) + .queue_function_by_name(function_name, inputs, output_mapping, is_cold) .await .expect("Should get response from chain"); assert_eq!(2, result.len()); @@ -189,7 +135,7 @@ async fn run_mat_func( is_cold: bool, rows: usize, cols: usize, - max_cold: u64, + function_name: String, ) -> i64 { let mat_size: usize = rows * cols; @@ -211,15 +157,11 @@ async fn run_mat_func( CompositionSet::from((0, vec![(Arc::new(input_context))])), )]; let outputs = vec![Some(0)]; - let counter = COLD_COUNTER.fetch_add(1, Ordering::Relaxed); - let function_id = if !is_cold { - MMM_ID - } else { - MMM_COLD_ID_BASE + counter % max_cold - }; - let result = dispatcher - .queue_function(function_id, inputs, outputs, is_cold) - .await; + println!("function name: {}", function_name); + let result: Result, dandelion_commons::DandelionError> = + dispatcher + .queue_function_by_name(function_name, inputs, outputs, is_cold) + .await; let result_context = result .expect("should get result from function") @@ -285,53 +227,67 @@ fn get_checksum(composition_set: CompositionSet) -> i64 { return read_buffer[0]; } +#[derive(Deserialize)] +struct MatrixRequest { + name: String, + rows: u64, + cols: u64, +} + async fn serve_request( is_cold: bool, req: Request, dispatcher: Arc, - max_cold: u64, ) -> Result, Infallible> { // Try to parse the request - let mut request_buf = hyper::body::to_bytes(req.into_body()) + let request_buf = hyper::body::to_bytes(req.into_body()) .await .expect("Could not read request body"); - - if request_buf.len() != 16 { - let mut bad_request = Response::new(Body::empty()); - *bad_request.status_mut() = StatusCode::BAD_REQUEST; - return Ok::<_, Infallible>(bad_request); - } - - let rows = request_buf.get_i64() as usize; - let cols = request_buf.get_i64() as usize; - - let response_vec: Vec = run_mat_func(dispatcher, is_cold, rows, cols, max_cold) - .await - .to_be_bytes() - .to_vec(); + let request_map: MatrixRequest = + bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); + + let response_vec: Vec = run_mat_func( + dispatcher, + is_cold, + request_map.rows as usize, + request_map.cols as usize, + request_map.name, + ) + .await + .to_be_bytes() + .to_vec(); let response = Ok::<_, Infallible>(Response::new(response_vec.into())); return response; } +#[derive(Deserialize)] +struct ChainRequest { + name: String, + get_uri: String, + post_uri: String, +} + async fn serve_chain( is_cold: bool, req: Request, dispatcher: Arc, - max_cold: u64, ) -> Result, Infallible> { let request_buf = hyper::body::to_bytes(req.into_body()) .await .expect("Should be able to parse body"); - - let request_str = std::str::from_utf8(&request_buf).unwrap(); - let uris: Vec<&str> = request_str.split("::").collect(); - let get_uri = uris[0].to_string(); - let post_uri = uris[1].to_string(); - - let response_vec = run_chain(dispatcher, is_cold, get_uri, post_uri, max_cold) - .await - .to_be_bytes() - .to_vec(); + let request_map: ChainRequest = + bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); + + let response_vec = run_chain( + dispatcher, + is_cold, + request_map.name, + request_map.get_uri, + request_map.post_uri, + ) + .await + .to_be_bytes() + .to_vec(); let response = Ok::<_, Infallible>(Response::new(response_vec.into())); return response; } @@ -379,6 +335,80 @@ async fn serve_native(_req: Request) -> Result, Infallible> Ok::<_, Infallible>(Response::new(checksum.to_be_bytes().to_vec().into())) } +#[derive(Debug, Deserialize)] +struct RegisterFunction { + name: String, + context_size: u64, + engine_type: String, + binary: Vec, +} + +async fn register_function( + req: Request, + dispatcher: Arc, +) -> Result, Infallible> { + let bytes = hyper::body::to_bytes(req.into_body()) + .await + .expect("Failed to extract body from function registration"); + // find first line end character + let request_map: RegisterFunction = + bson::from_slice(&bytes).expect("Should be able to deserialize request"); + // write function to file + std::fs::create_dir_all("/tmp/dandelion_functions").unwrap(); + let mut path_buff = PathBuf::from("/tmp/dandelion_functions"); + path_buff.push(request_map.name.clone()); + let mut function_file = std::fs::File::create(path_buff.clone()) + .expect("Failed to create file for registering function"); + function_file + .write_all(&request_map.binary) + .expect("Failed to write file with content for registering"); + let engine_type = match request_map.engine_type.as_str() { + #[cfg(feature = "wasm")] + "RWasm" => EngineType::RWasm, + #[cfg(feature = "mmu")] + "Process" => EngineType::Process, + #[cfg(feature = "cheri")] + "Cheri" => EngineType::Cheri, + _ => panic!("Unkown error type string"), + }; + dispatcher + .insert_func( + request_map.name, + engine_type, + request_map.context_size as usize, + path_buff.to_str().unwrap(), + Metadata { + input_sets: Arc::new(vec![(String::from(""), None)]), + output_sets: Arc::new(vec![String::from("")]), + }, + ) + .await + .expect("Should be able to insert function"); + return Ok::<_, Infallible>(Response::new("Function registered".into())); +} + +#[derive(Debug, Deserialize)] +struct RegisterChain { + composition: String, +} + +async fn register_composition( + req: Request, + dispatcher: Arc, +) -> Result, Infallible> { + let bytes = hyper::body::to_bytes(req.into_body()) + .await + .expect("Failed to extract body from function registration"); + // find first line end character + let request_map: RegisterChain = + bson::from_slice(&bytes).expect("Should be able to deserialize request"); + // write function to file + dispatcher + .insert_compositions(request_map.composition) + .await + .expect("Should be able to insert function"); + return Ok::<_, Infallible>(Response::new("Function registered".into())); +} async fn serve_stats( _req: Request, dispatcher: Arc, @@ -395,17 +425,17 @@ async fn serve_stats( async fn service( req: Request, dispatcher: Arc, - max_cold: u64, ) -> Result, Infallible> { let uri = req.uri().path(); - // println!("Got request for {}", uri); match uri { - "/cold/matmul" => serve_request(true, req, dispatcher, max_cold).await, - "/hot/matmul" => serve_request(false, req, dispatcher, max_cold).await, - "/cold/compute" => serve_chain(true, req, dispatcher, max_cold).await, - "/hot/compute" => serve_chain(false, req, dispatcher, max_cold).await, - "/cold/io" => serve_chain(true, req, dispatcher, max_cold).await, - "/hot/io" => serve_chain(false, req, dispatcher, max_cold).await, + "/register/function" => register_function(req, dispatcher).await, + "/register/composition" => register_composition(req, dispatcher).await, + "/cold/matmul" => serve_request(true, req, dispatcher).await, + "/hot/matmul" => serve_request(false, req, dispatcher).await, + "/cold/compute" => serve_chain(true, req, dispatcher).await, + "/hot/compute" => serve_chain(false, req, dispatcher).await, + "/cold/io" => serve_chain(true, req, dispatcher).await, + "/hot/io" => serve_chain(false, req, dispatcher).await, "/native" => serve_native(req).await, "/stats" => serve_stats(req, dispatcher).await, _ => Ok::<_, Infallible>(Response::new( @@ -415,71 +445,9 @@ async fn service( } } -fn drop_page_caches() { - let output = Command::new("sh") - .arg("-c") - .arg("echo 1 | sudo tee /proc/sys/vm/drop_caches") - .output() - .expect("Should be able to drop page caches"); - assert!(output.status.success()); -} - -fn no_page_cache_for(path: PathBuf) -> bool { - let output = Command::new("fincore") - .args(["-n", "-r", "-o", "pages", path.to_str().unwrap()]) - .output() - .expect("Should be able to get page numbers"); - assert!(output.status.success()); - return output.stdout[0] == '0' as u8; -} - -async fn add_cold_functions( - registry: &FunctionRegistry, - engine_id: EngineTypeId, - ctx_size: usize, - path: &PathBuf, - cold_id_base: u64, - max_cold: u64, -) -> PathBuf { - let tmp_dir = std::path::Path::new("/tmp").join(path.file_name().unwrap()); - std::fs::create_dir_all(&tmp_dir).unwrap(); - for i in 0..max_cold { - let metadata = Metadata { - input_sets: Arc::new(vec![(String::from(""), None)]), - output_sets: Arc::new(vec![String::from("")]), - }; - let tmp_path = tmp_dir.join(i.to_string()); - if !tmp_path.exists() { - std::fs::copy(path, &tmp_path).unwrap(); - } - registry - .insert_metadata(todo!("function name: cold_id_base + i"), metadata) - .await; - registry - .add_local( - cold_id_base + i, - engine_id, - ctx_size, - tmp_path.to_str().unwrap(), - ) - .await - .expect("Failed to add_local cold functions"); - } - return tmp_dir; -} - fn main() -> () { env_logger::init(); - // read argumets from environment - // let cold_num: u64 = if let Ok(string_val) = std::env::var("NUM_COLD") { - // string_val - // .parse() - // .expect("NUM_COLD was set but not a parsable number") - // } else { - // 0x100000 - // }; - // find available resources let num_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines @@ -506,24 +474,26 @@ fn main() -> () { let runtime = runtime_builder.build().unwrap(); // set up dispatcher configuration basics - let mut domains = BTreeMap::new(); - const COMPUTE_DOMAIN: ContextTypeId = 0; - const COMPUTE_ENGINE: EngineTypeId = 0; - const SYS_CONTEXT: ContextTypeId = 1; - const SYS_ENGINE: EngineTypeId = 1; - let mut type_map = BTreeMap::new(); - type_map.insert(COMPUTE_ENGINE, COMPUTE_DOMAIN); - type_map.insert(SYS_ENGINE, SYS_CONTEXT); let mut pool_map = BTreeMap::new(); + // insert engines for the currentyl selected compute engine type + // todo add function to machine config to detect resources and auto generate this + #[cfg(feature = "wasm")] + let engine_type = EngineType::RWasm; + #[cfg(feature = "mmu")] + let engine_type = EngineType::Process; + #[cfg(feature = "cheri")] + let engine_type = EngineType::Cheri; + #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] pool_map.insert( - COMPUTE_ENGINE, + engine_type, (num_dispatcher_cores..num_cores) .map(|code_id| ComputeResource::CPU(code_id)) .collect(), ); + #[cfg(hyper_io)] pool_map.insert( - SYS_ENGINE, + EngineType::Hyper, (0..num_dispatcher_cores) .map(|core_id| ComputeResource::CPU(core_id)) .collect(), @@ -531,250 +501,10 @@ fn main() -> () { let resource_pool = ResourcePool { engine_pool: Mutex::new(pool_map), }; - domains.insert( - SYS_CONTEXT, - MallocMemoryDomain::init(Vec::new()).expect("Should be able to initialize malloc domain"), - ); - let mut registry; - // insert specific configuration - #[cfg(all(feature = "cheri", feature = "mmu", feature = "wasm"))] - std::compile_error!("Should only have one feature out of mmu or cheri or wasm"); - #[cfg(all( - any(feature = "cheri", feature = "mmu", feature = "wasm"), - feature = "hyper_io" - ))] - { - let mut drivers = BTreeMap::new(); - let mut mmm_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - let mut busy_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - let driver; - #[cfg(feature = "cheri")] - { - domains.insert( - COMPUTE_DOMAIN, - CheriMemoryDomain::init(Vec::new()).expect("Should be able to initialize domain"), - ); - driver = Box::new(CheriDriver {}) as Box; - mmm_path.push("../machine_interface/tests/data/test_elf_cheri_matmul"); - busy_path.push("../machine_interface/tests/data/test_elf_cheri_busy"); - } - #[cfg(feature = "mmu")] - { - domains.insert( - COMPUTE_DOMAIN, - MmuMemoryDomain::init(Vec::new()).expect("Should be able to initialize domain"), - ); - driver = Box::new(MmuDriver {}) as Box; - mmm_path.push(format!( - "../machine_interface/tests/data/test_elf_mmu_{}_matmul", - std::env::consts::ARCH - )); - busy_path.push(format!( - "../machine_interface/tests/data/test_elf_mmu_{}_busy", - std::env::consts::ARCH - )); - } - #[cfg(feature = "wasm")] - { - domains.insert( - COMPUTE_DOMAIN, - WasmMemoryDomain::init(Vec::new()).expect("Should be able to initialize domain"), - ); - driver = Box::new(WasmDriver {}) as Box; - mmm_path.push(format!( - "../machine_interface/tests/data/test_sysld_wasm_{}_matmul", - std::env::consts::ARCH - )); - busy_path.push(format!( - "../machine_interface/tests/data/test_sysld_wasm_{}_busy", - std::env::consts::ARCH - )); - } - let system_driver = Box::new(HyperDriver {}); - drivers.insert(COMPUTE_ENGINE, driver); - drivers.insert(SYS_ENGINE, system_driver); - registry = FunctionRegistry::new(drivers); - let mmm_metadata = Metadata { - input_sets: Arc::new(vec![(String::from(""), None)]), - output_sets: Arc::new(vec![String::from("")]), - }; - runtime.block_on(registry.insert_metadata(MMM_ID, mmm_metadata)); - // add for mmm hot function - runtime - .block_on(registry.add_local( - MMM_ID, - COMPUTE_ENGINE, - DEFAULT_CONTEXT_SIZE, - mmm_path.to_str().unwrap(), - )) - .expect("Failed to add_local for mmm hot function"); - // add for mmm cold functions - // let mmm_cold_dir = runtime.block_on(add_cold_functions( - // ®istry, - // COMPUTE_ENGINE, - // DEFAULT_CONTEXT_SIZE, - // &mmm_path, - // MMM_COLD_ID_BASE, - // cold_num, - // )); - // add for busy hot functions - let busy_metadata = Metadata { - input_sets: Arc::new(vec![(String::from(""), None)]), - output_sets: Arc::new(vec![String::from("")]), - }; - runtime.block_on(registry.insert_metadata(BUSY_ID, busy_metadata)); - runtime - .block_on(registry.add_local( - BUSY_ID, - COMPUTE_ENGINE, - DEFAULT_CONTEXT_SIZE, - busy_path.to_str().unwrap(), - )) - .expect("Failed to add_local busy function"); - // add for busy cold functions - // let busy_cold_dir = runtime.block_on(add_cold_functions( - // ®istry, - // COMPUTE_ENGINE, - // DEFAULT_CONTEXT_SIZE, - // &busy_path, - // BUSY_COLD_ID_BASE, - // cold_num, - // )); - // add http system function - // first try only download and spin, TODO: add upload - runtime.block_on( - registry.insert_metadata( - HTTP_ID, - Metadata { - input_sets: Arc::new( - get_system_function_input_sets(SystemFunction::HTTP) - .into_iter() - .map(|name| (name, None)) - .collect(), - ), - output_sets: Arc::new(get_system_function_output_sets(SystemFunction::HTTP)), - }, - ), - ); - registry - .add_system(HTTP_ID, SYS_ENGINE, SYSTEM_CONTEXT_SIZE) - .expect("Should be able to add system function"); - // add composition using hot busy function - let composition = Composition { - dependencies: vec![ - FunctionDependencies { - function: HTTP_ID, - input_set_ids: vec![Some((0, ShardingMode::All)), None, None], - output_set_ids: vec![Some(1), Some(2), Some(3)], - }, - FunctionDependencies { - function: BUSY_ID, - input_set_ids: vec![Some((3, ShardingMode::All))], - output_set_ids: vec![Some(4)], - }, - FunctionDependencies { - function: HTTP_ID, - input_set_ids: vec![ - Some((5, ShardingMode::All)), - None, - Some((4, ShardingMode::All)), - ], - output_set_ids: vec![Some(6)], - }, - ], - }; - let output_set_map = BTreeMap::from([(4, 0), (6, 1)]); - let input_sets = Arc::new( - get_system_function_input_sets(SystemFunction::HTTP) - .into_iter() - .map(|name| (name, None)) - .collect(), - ); - let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); - let composition_metadata = Metadata { - input_sets, - output_sets, - }; - runtime.block_on(registry.insert_metadata(COMPOSITION_ID, composition_metadata)); - registry - .add_composition(COMPOSITION_ID, composition, output_set_map) - .expect("Failed to add composition"); - // add compositions using cold busy functions - // for i in 0..cold_num { - // let composition = Composition { - // dependencies: vec![ - // FunctionDependencies { - // function: HTTP_ID, - // input_set_ids: vec![Some((0, ShardingMode::All)), None, None], - // output_set_ids: vec![Some(1), Some(2), Some(3)], - // }, - // FunctionDependencies { - // function: BUSY_COLD_ID_BASE + i, - // input_set_ids: vec![Some((3, ShardingMode::All))], - // output_set_ids: vec![Some(4)], - // }, - // FunctionDependencies { - // function: HTTP_ID, - // input_set_ids: vec![ - // Some((5, ShardingMode::All)), - // None, - // Some((4, ShardingMode::All)), - // ], - // output_set_ids: vec![Some(6)], - // }, - // ], - // }; - // let output_set_map = BTreeMap::from([(4, 0), (6, 1)]); - // let input_sets = get_system_function_input_sets(SystemFunction::HTTP) - // .into_iter() - // .map(|name| (name, None)) - // .collect(); - // let output_sets = get_system_function_output_sets(SystemFunction::HTTP); - // let cold_comp_metadata = Metadata { - // input_sets, - // output_sets, - // }; - // runtime.block_on( - // registry.insert_metadata(COMPOSITION_COLD_ID_BASE + i, cold_comp_metadata), - // ); - // registry - // .add_composition(COMPOSITION_COLD_ID_BASE + i, composition, output_set_map) - // .expect("Failed to add cold composition"); - // } - // drop page caches to ensure cold functions are loaded from disk - // loop { - // info!("Waiting for page cache to be clean"); - // drop_page_caches(); - // std::thread::sleep(Duration::from_secs(10)); - // // check if page caches are actually dropped - // let mut no_page_cache_for_all = true; - // for i in (0..cold_num).step_by(1000) { - // let mmm_cold_path = mmm_cold_dir.join(i.to_string()); - // let busy_cold_path = busy_cold_dir.join(i.to_string()); - // if !no_page_cache_for(mmm_cold_path) || !no_page_cache_for(busy_cold_path) { - // no_page_cache_for_all = false; - // break; - // } - // } - // if no_page_cache_for_all { - // break; - // } - // } - } - #[cfg(not(all( - any(feature = "cheri", feature = "mmu", feature = "wasm"), - feature = "hyper_io" - )))] - { - let loader_map = BTreeMap::new(); - registry = FunctionRegistry::new(loader_map); - } // Create an ARC pointer to the dispatcher for thread-safe access - let dispatcher_ptr = Arc::new( - Dispatcher::init(domains, type_map, registry, resource_pool) - .expect("Should be able to start dispatcher"), - ); + let dispatcher_ptr = + Arc::new(Dispatcher::init(resource_pool).expect("Should be able to start dispatcher")); let _guard = runtime.enter(); @@ -785,7 +515,7 @@ fn main() -> () { async move { Ok::<_, Infallible>(service_fn(move |req| { let service_dispatcher_ptr = new_dispatcher_ptr.clone(); - service(req, service_dispatcher_ptr, 0) + service(req, service_dispatcher_ptr) })) } }); diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 3ea0cb74..9f40b8e0 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -1,19 +1,98 @@ -#[cfg(all(any(feature = "mmu", feature = "cheri"), feature = "hyper_io"))] +#[cfg(all( + any(feature = "wasm", feature = "mmu", feature = "cheri"), + feature = "hyper_io" +))] mod server_tests { use assert_cmd::prelude::*; - use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; + use byteorder::{BigEndian, ReadBytesExt}; + use serde::Serialize; use std::{ - io::{BufRead, BufReader, Cursor}, - process::{Command, Stdio}, + io::{BufRead, BufReader, Cursor, Read}, + process::{Child, Command, Stdio}, }; + struct ServerKiller { + server: Child, + } + + #[derive(Serialize)] + struct RegisterFunction { + name: String, + context_size: u64, + engine_type: String, + binary: Vec, + } + + #[derive(Serialize)] + struct RegisterChain { + composition: String, + } + + #[derive(Serialize)] + struct MatrixRequest { + name: String, + rows: u64, + cols: u64, + } + + impl Drop for ServerKiller { + fn drop(&mut self) { + self.server.kill().unwrap(); + let mut child_stdout = self.server.stdout.take().expect("Should have stdout"); + let mut outbuf = Vec::new(); + let _ = child_stdout + .read_to_end(&mut outbuf) + .expect("should be able to read child output after killing it"); + print!( + "server output:\n{}", + String::from_utf8(outbuf) + .expect("Should be able to convert child stdout to string") + ); + let mut errbuf = Vec::new(); + let _ = self + .server + .stderr + .take() + .expect("Should have stderr pipe for child") + .read_to_end(&mut errbuf) + .expect("Should be able to read child stderr"); + print!( + "server stderr:\n{}", + String::from_utf8(errbuf).expect("Server stderr should be string") + ) + } + } + + fn send_matrix_request(endpoint: &str, function_name: String) { + // call into function + let mat_request = MatrixRequest { + name: function_name, + cols: 1, + rows: 1, + }; + + let client = reqwest::blocking::Client::new(); + let resp = client + .post(endpoint) + .body(bson::to_vec(&mat_request).unwrap()) + .send() + .unwrap(); + assert!(resp.status().is_success()); + + let body = resp.bytes().unwrap(); + assert_eq!(body.len(), 8); + let mut reader = Cursor::new(body); + let checksum = reader.read_u64::().unwrap(); + assert_eq!(checksum, 1); + } + #[test] fn serve_matmul() { let mut cmd = Command::cargo_bin("dandelion_server").unwrap(); let mut server = cmd .stdout(Stdio::piped()) - .env("NUM_COLD", "1") + .stderr(Stdio::piped()) .spawn() .unwrap(); let mut reader = BufReader::new(server.stdout.take().unwrap()); @@ -25,29 +104,67 @@ mod server_tests { break; } } + let _ = server.stdout.insert(reader.into_inner()); + let mut server_killer = ServerKiller { server }; - let mat_size = 1; - let mut body = Vec::new(); - let mut writer = Cursor::new(&mut body); - writer.write_u64::(mat_size).unwrap(); - writer.write_u64::(mat_size).unwrap(); + // register function + let version; + let engine_type; + #[cfg(feature = "wasm")] + { + version = "sysld_wasm"; + engine_type = String::from("RWasm"); + } + #[cfg(feature = "mmu")] + { + version = "elf_mmu"; + engine_type = String::from("Process"); + } + let matmul_path = format!( + "{}/../machine_interface/tests/data/test_{}_{}_matmul", + env!("CARGO_MANIFEST_DIR"), + version, + std::env::consts::ARCH + ); - let client = reqwest::blocking::Client::new(); - let resp = client - .post("http://localhost:8080/hot/matmul") - .body(body) + let register_request = RegisterFunction { + name: String::from("matmul"), + context_size: 0x802_0000, + binary: std::fs::read(matmul_path).unwrap(), + engine_type, + }; + let registration_client = reqwest::blocking::Client::new(); + let registration_resp = registration_client + .post("http://localhost:8080/register/function") + .body(bson::to_vec(®ister_request).unwrap()) .send() .unwrap(); - assert!(resp.status().is_success()); + assert!(registration_resp.status().is_success()); - let body = resp.bytes().unwrap(); - assert_eq!(body.len(), 8); - let mut reader = Cursor::new(body); - let checksum = reader.read_u64::().unwrap(); - assert_eq!(checksum, 1); + let chain_request = RegisterChain { + composition: String::from( + r#" + (:function matmul (InMats) -> (OutMats)) + (:composition chain (CompInMats) -> (CompOutMats) ( + (matmul ((:all InMats <- CompInMats)) => ((InterMat := OutMats))) + (matmul ((:all InMats <- InterMat)) => ((CompOutMats := OutMats))) + )) + "#, + ), + }; + let chain_client = reqwest::blocking::Client::new(); + let chain_resp = chain_client + .post("http://localhost:8080/register/composition") + .body(bson::to_vec(&chain_request).unwrap()) + .send() + .unwrap(); + assert!(chain_resp.status().is_success()); + + send_matrix_request("http://localhost:8080/hot/matmul", String::from("matmul")); + send_matrix_request("http://localhost:8080/hot/matmul", String::from("chain")); - let status = server.try_wait().unwrap(); + let status_result = server_killer.server.try_wait(); + let status = status_result.unwrap(); assert_eq!(status, None, "Server exited unexpectedly"); - server.kill().unwrap(); } } From 83f0d47b2041848373bb5f30a5dc80624e5ac39c Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Thu, 7 Mar 2024 14:48:34 +0100 Subject: [PATCH 021/176] Added automatic adding of system functions --- dispatcher/Cargo.toml | 3 +- dispatcher/src/dispatcher.rs | 14 +- dispatcher/src/function_registry.rs | 185 ++++++++++++++++------- machine_interface/src/function_driver.rs | 8 + machine_interface/src/machine_config.rs | 12 ++ machine_interface/src/util/mmapmem.rs | 8 + 6 files changed, 171 insertions(+), 59 deletions(-) diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index a73410c3..69b2b17a 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -16,4 +16,5 @@ dparser = {path = "../dparser"} [features] cheri = ["machine_interface/cheri"] wasm = ["machine_interface/wasm"] -mmu = ["machine_interface/mmu"] \ No newline at end of file +mmu = ["machine_interface/mmu"] +hyper_io = ["machine_interface/hyper_io"] \ No newline at end of file diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index c84d53e6..46910891 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -46,21 +46,21 @@ impl Dispatcher { let mut domains = get_available_domains(); let drivers = get_available_drivers(); - let function_registry = FunctionRegistry::new(drivers); - // add the work queue for each domain + let function_registry = FunctionRegistry::new(drivers, &type_map, &domains); - // Use up all engine resources to start with + // Insert a work queue for each domain and use up all engine resource available let mut domain_map = BTreeMap::new(); let mut engine_queues = BTreeMap::new(); - for (engine_id, driver) in function_registry.drivers.iter() { + for (engine_type, driver) in function_registry.drivers.iter() { let work_queue = Box::new(EngineQueue::new()); - while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(*engine_id) { + while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(*engine_type) + { driver.start_engine(resource, work_queue.clone())?; } - let domain_type = type_map.get(engine_id).unwrap(); + let domain_type = type_map.get(engine_type).unwrap(); let domain = domains.remove(domain_type).unwrap(); domain_map.insert(*domain_type, (domain, work_queue.clone())); - engine_queues.insert(*engine_id, work_queue.clone()); + engine_queues.insert(*engine_type, work_queue.clone()); } let archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); return Ok(Dispatcher { diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 2de23377..35997764 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -1,11 +1,17 @@ use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; +use futures::lock::Mutex; use machine_interface::{ - function_driver::{Driver, Function, FunctionConfig}, machine_config::EngineType, memory_domain::{malloc::MallocMemoryDomain, Context, MemoryDomain} + function_driver::{ + system_driver::{get_system_function_input_sets, get_system_function_output_sets}, + Driver, Function, FunctionConfig, + }, + machine_config::{get_system_functions, DomainType, EngineType}, + memory_domain::{malloc::MallocMemoryDomain, Context, MemoryDomain}, }; use std::{ - collections::{BTreeMap, BTreeSet}, sync::Arc + collections::{BTreeMap, BTreeSet}, + sync::Arc, }; -use futures::lock::Mutex; use crate::composition::{Composition, CompositionSet}; @@ -43,9 +49,12 @@ pub struct FunctionDict { impl FunctionDict { pub fn new() -> Self { // TODO free up ids as they are not used anymore? - Self { next_id: 1, map: BTreeMap::new() } + Self { + next_id: 1, + map: BTreeMap::new(), + } } - + pub fn insert_or_lookup(&mut self, function_name: String) -> FunctionId { use std::collections::btree_map::Entry; match self.map.entry(function_name) { @@ -54,17 +63,16 @@ impl FunctionDict { v.insert(new_id); self.next_id += 1; new_id - }, + } Entry::Occupied(o) => *o.get(), } } - + pub fn lookup(&self, function_name: &str) -> Option { self.map.get(function_name).cloned() } } - pub struct FunctionRegistry { /// List of engines available for each function engine_map: Mutex>>, @@ -74,26 +82,83 @@ pub struct FunctionRegistry { /// TODO: change structure to avoid copy on get_options options: Mutex>>, /// map with function information for functions that are available in memory + /// TOOD: bake into alternative type in_memory: Mutex>>, /// map with file paths for functions for on disk available functons on_disk: Mutex>, /// map with input and output set names for functions metadata: Mutex>, /// map name to function id - function_dict: Mutex, + function_dict: Mutex, } impl FunctionRegistry { - // TODO registr all system function on creation and make sure that no other method can add to their entries - pub fn new(drivers: BTreeMap>) -> Self { + // TODO: make sure that system functions can't be added later for other engines + pub fn new( + drivers: BTreeMap>, + type_map: &BTreeMap, + domains: &BTreeMap>, + ) -> Self { + // insert all system functons + let mut engine_map = BTreeMap::new(); + let mut options = BTreeMap::new(); + let mut in_memory = BTreeMap::new(); + let mut metadata = BTreeMap::new(); + let mut function_dict = FunctionDict::new(); + for (engine_type, driver) in drivers.iter() { + let system_functions = get_system_functions(*engine_type); + for (system_function, context_size) in system_functions { + let function_id = function_dict.insert_or_lookup(system_function.to_string()); + engine_map + .entry(function_id) + .and_modify(|engine_set: &mut BTreeSet| { + engine_set.insert(*engine_type); + }) + .or_insert(BTreeSet::from([*engine_type])); + options + .entry(function_id) + .and_modify(|option_vec: &mut Vec| { + option_vec.push(Alternative { + function_type: FunctionType::Function(*engine_type, context_size), + in_memory: true, + }) + }) + .or_insert(vec![Alternative { + function_type: FunctionType::Function(*engine_type, context_size), + in_memory: true, + }]); + let function_config = driver + .parse_function( + String::from(""), + domains.get(type_map.get(engine_type).unwrap()).unwrap(), + ) + .unwrap(); + match function_config.config { + FunctionConfig::SysConfig(_) => (), + _ => panic!("parsing system function did not return system config"), + }; + in_memory.insert((function_id, *engine_type), Arc::new(function_config)); + let function_metadata = Metadata { + input_sets: Arc::new( + get_system_function_input_sets(system_function) + .into_iter() + .map(|name| (name, None)) + .collect(), + ), + output_sets: Arc::new(get_system_function_output_sets(system_function)), + }; + metadata.entry(function_id).or_insert(function_metadata); + } + } + // add metadata for the return FunctionRegistry { - engine_map: Mutex::new(BTreeMap::new()), + engine_map: Mutex::new(engine_map), drivers, - options: Mutex::new(BTreeMap::new()), - in_memory: Mutex::new(BTreeMap::new()), + options: Mutex::new(options), + in_memory: Mutex::new(in_memory), on_disk: Mutex::new(BTreeMap::new()), - metadata: Mutex::new(BTreeMap::new()), - function_dict: Mutex::new(FunctionDict::new()), + metadata: Mutex::new(metadata), + function_dict: Mutex::new(function_dict), }; } @@ -117,32 +182,38 @@ impl FunctionRegistry { } /// TODO: find a better way to keep track of functions, so we can support updates to functions and compositions - pub async fn insert_function(&self, function_name: String, engine_id: EngineType, ctx_size: usize, path: &str, metadata: Metadata) -> DandelionResult{ + /// Also can allow adding the same function for multiple engines already without this + pub async fn insert_function( + &self, + function_name: String, + engine_id: EngineType, + ctx_size: usize, + path: &str, + metadata: Metadata, + ) -> DandelionResult { // check if function is already present, get ID if not let function_id; { - let mut dict_lock = - self.function_dict.lock().await; - if dict_lock.lookup(&function_name).is_some(){ + let mut dict_lock = self.function_dict.lock().await; + if dict_lock.lookup(&function_name).is_some() { return Err(DandelionError::DispatcherDuplicateFunction); - } - function_id = dict_lock.insert_or_lookup(function_name); + } + function_id = dict_lock.insert_or_lookup(function_name); } self.metadata.lock().await.insert(function_id, metadata); - self.add_local(function_id, engine_id, ctx_size, path).await?; + self.add_local(function_id, engine_id, ctx_size, path) + .await?; return Ok(function_id); } - - /// TODO: for compositions that are already present the metadata is not overwritten - pub async fn insert_compositions( - &self, - module: &str, - ) -> DandelionResult<()> { + + /// TODO: for compositions that are already present the metadata is not overwritten + pub async fn insert_compositions(&self, module: &str) -> DandelionResult<()> { // TODO actually handle the error in some sensible way // the error contains the parsing failure let mut dictlock = self.function_dict.lock().await; let composition_meta_pairs = { - let module = dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; + let module = + dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; Composition::from_module(&module, &mut dictlock)? }; for (function_id, composition, metadata) in composition_meta_pairs { @@ -152,7 +223,7 @@ impl FunctionRegistry { return Ok(()); } - pub async fn get_function_id(&self, function_name: &str) -> Option{ + pub async fn get_function_id(&self, function_name: &str) -> Option { return self.function_dict.lock().await.lookup(&function_name); } @@ -165,13 +236,12 @@ impl FunctionRegistry { return Err(DandelionError::DispatcherMetaDataUnavailable); }; self.options - .lock().await + .lock() + .await .entry(function_id) .and_modify(|option_vec| { option_vec.push(Alternative { - function_type: FunctionType::Composition( - composition.clone(), - ), + function_type: FunctionType::Composition(composition.clone()), in_memory: true, }) }) @@ -191,10 +261,13 @@ impl FunctionRegistry { if !self.metadata.get_mut().contains_key(&function_id) { return Err(DandelionError::DispatcherMetaDataUnavailable); } - let driver = self - .drivers - .get(&engine_id) - .ok_or(DandelionError::DispatcherMissingLoader(format!("{:?}", engine_id)))?; + let driver = + self.drivers + .get(&engine_id) + .ok_or(DandelionError::DispatcherMissingLoader(format!( + "{:?}", + engine_id + )))?; // domain for the static context, expected to not be used let malloc_domain = Box::new(MallocMemoryDomain {}); let function_config = @@ -206,7 +279,8 @@ impl FunctionRegistry { self.in_memory .get_mut() .insert((function_id, engine_id), Arc::new(function_config)); - self.engine_map.get_mut() + self.engine_map + .get_mut() .entry(function_id) .and_modify(|set| { set.insert(engine_id); @@ -243,10 +317,13 @@ impl FunctionRegistry { return Err(DandelionError::DispatcherMetaDataUnavailable); } self.on_disk - .lock().await + .lock() + .await .insert((function_id, engine_id), path.to_string()); self.engine_map - .lock().await.entry(function_id) + .lock() + .await + .entry(function_id) .and_modify(|set| { set.insert(engine_id); }) @@ -256,7 +333,8 @@ impl FunctionRegistry { set }); self.options - .lock().await + .lock() + .await .entry(function_id) .and_modify(|current_alts| { current_alts.push(Alternative { @@ -280,12 +358,16 @@ impl FunctionRegistry { // get loader let driver = match self.drivers.get(&engine_id) { Some(l) => l, - None => return Err(DandelionError::DispatcherMissingLoader(format!("{:?}", engine_id))), + None => { + return Err(DandelionError::DispatcherMissingLoader(format!( + "{:?}", + engine_id + ))) + } }; - // get function code - let path = // TODO replace by queueing of pre added composition to fetch code by id - { + // get function code + let path = { let disk_lock = self.on_disk.lock().await; match disk_lock.get(&(function_id, engine_id)) { Some(s) => s.clone(), @@ -306,9 +388,11 @@ impl FunctionRegistry { ) -> DandelionResult<(Context, FunctionConfig)> { // check if function for the engine is in registry already let function_opt; - { + { let lock_guard = self.in_memory.lock().await; - function_opt = lock_guard.get(&(function_id, engine_id)).and_then(|val| Some(val.clone())) + function_opt = lock_guard + .get(&(function_id, engine_id)) + .and_then(|val| Some(val.clone())) }; if let Some(function) = function_opt { let function_context = function.load(domain, ctx_size)?; @@ -320,8 +404,7 @@ impl FunctionRegistry { let function_context = function.load(domain, ctx_size)?; let function_config = function.config.clone(); if !non_caching { - self - .in_memory + self.in_memory .lock() .await .insert((function_id, engine_id), Arc::new(function)); diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 4f0db628..312bcc38 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -31,6 +31,14 @@ pub enum SystemFunction { HTTP, } +impl core::fmt::Display for SystemFunction { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> core::fmt::Result { + return match self { + SystemFunction::HTTP => write!(f, "HTTP"), + }; + } +} + #[derive(Clone)] pub struct WasmConfig { #[cfg(feature = "wasm")] diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index 00239adb..7bb0bc07 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -1,5 +1,6 @@ use std::collections::BTreeMap; +use crate::function_driver::SystemFunction; #[allow(unused_imports)] use crate::{ function_driver::Driver, @@ -43,6 +44,17 @@ pub fn get_compatibilty_table() -> BTreeMap { ]); } +#[cfg(any(feature = "hyper_io"))] +const SYS_FUNC_DEFAULT_CONTEXT_SIZE: usize = 0x200_0000; + +pub fn get_system_functions(engine_type: EngineType) -> Vec<(SystemFunction, usize)> { + return match engine_type { + #[cfg(feature = "hyper_io")] + EngineType::Hyper => vec![(SystemFunction::HTTP, SYS_FUNC_DEFAULT_CONTEXT_SIZE)], + _ => Vec::new(), + }; +} + pub fn get_available_domains() -> BTreeMap> { return BTreeMap::from([ ( diff --git a/machine_interface/src/util/mmapmem.rs b/machine_interface/src/util/mmapmem.rs index 9877335b..247b53ae 100644 --- a/machine_interface/src/util/mmapmem.rs +++ b/machine_interface/src/util/mmapmem.rs @@ -34,6 +34,14 @@ impl MmapMem { // If a filename is given, memory will be backed by that file, // otherwise it will be backed by an anonymous file. pub fn create(size: usize, prot: ProtFlags, shared: bool) -> Result { + if size == 0 { + return Ok(MmapMem { + ptr: core::ptr::null_mut(), + size, + fd: -1, + filename: None, + }); + } let mut filename = None; let (fd, map_flags) = if shared { filename = Some(format!("/shm_{:X}", COUNTER.fetch_add(1, Ordering::SeqCst))); From cb5d91035c561800cd0186423e983f1bc7be4816 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 8 Mar 2024 13:50:42 +0100 Subject: [PATCH 022/176] bunch of incomplete things to get going --- machine_interface/Cargo.toml | 1 + machine_interface/build.rs | 16 ++- .../hip_interface/CMakeLists.txt | 45 +++++++ .../hip_interface/hip_interface.hip.cpp | 14 +++ machine_interface/src/function_driver.rs | 11 +- .../src/function_driver/compute_driver.rs | 3 + .../compute_driver/compute_driver_tests.rs | 24 +++- .../src/function_driver/compute_driver/gpu.rs | 119 ++++++++++++++++++ machine_interface/src/memory_domain.rs | 9 ++ machine_interface/src/memory_domain/gpu.rs | 18 +++ 10 files changed, 252 insertions(+), 8 deletions(-) create mode 100644 machine_interface/hip_interface/CMakeLists.txt create mode 100644 machine_interface/hip_interface/hip_interface.hip.cpp create mode 100644 machine_interface/src/function_driver/compute_driver/gpu.rs create mode 100644 machine_interface/src/memory_domain/gpu.rs diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 126c09ed..57e17dc4 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -9,6 +9,7 @@ cheri = ["std"] mmu = ["std"] hyper_io = ["std", "dep:hyper"] wasm = ["std"] +gpu = ["std"] [build-dependencies] cmake = "0.1" diff --git a/machine_interface/build.rs b/machine_interface/build.rs index 433a4996..f5c56f61 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -1,7 +1,7 @@ use cmake::Config; use std::process::Command; -fn cmake_libraries() -> () { +fn cmake_libraries_cheri() { // cmake configure and build all let _all = Config::new("c_machine_libraries") .define("FORCE_BUILD_CHERI", "") @@ -18,8 +18,18 @@ fn cmake_libraries() -> () { println!("cargo:rustc-link-lib=static=cheri_lib"); } +fn cmake_libraries_gpu() { + let install = Config::new("hip_interface").build(); + println!("cargo:rustc-link-search=native={}", install.display()); + println!("cargo:rustc-link-lib=static=hip_interface_lib"); +} + fn main() { // check if cheri is enabled and build library if so + // Jonathan: pretty sure this is a typo (features instead of feature, but don't want to touch it) #[cfg(features = "cheri")] - cmake_libraries(); -} \ No newline at end of file + cmake_libraries_cheri(); + + #[cfg(feature = "gpu")] + cmake_libraries_gpu(); +} diff --git a/machine_interface/hip_interface/CMakeLists.txt b/machine_interface/hip_interface/CMakeLists.txt new file mode 100644 index 00000000..d12db1e9 --- /dev/null +++ b/machine_interface/hip_interface/CMakeLists.txt @@ -0,0 +1,45 @@ +project(HipInterface) + +cmake_minimum_required(VERSION 3.3) + +# Taken from https://github.com/ROCm/hip-tests/blob/rocm-5.5.x/samples/2_Cookbook/15_static_library/host_functions/CMakeLists.txt + +if (NOT DEFINED ROCM_PATH ) + set ( ROCM_PATH "/opt/rocm" CACHE STRING "Default ROCM installation directory." ) +endif () + +# Search for rocm in common locations +list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH}/hip ${ROCM_PATH}) + +# Find hip +find_package(hip REQUIRED) + +# For windows, AR is MS Librarian and that is pickedby Visual Studio's command prompt. +if (WIN32) + find_program(libpath NAMES lib.exe) + set (CMAKE_AR ${libpath}) +endif() + +# Set compiler and linker +set(CMAKE_CXX_COMPILER ${HIP_HIPCC_EXECUTABLE}) +set(CMAKE_CXX_LINKER ${HIP_HIPCC_EXECUTABLE}) +set(CMAKE_BUILD_TYPE Release) + +# Turn static library generation ON +option(BUILD_SHARED_LIBS "Build as a shared library" OFF) + +set(CPP_SOURCES hip_interface.hip.cpp) + +# For windows, We need to tell cmake how to create static library. +if (WIN32) + set (CMAKE_CXX_CREATE_STATIC_LIBRARY " /out: ") +endif() + +# Generate static lib hip_interface_lib.a. +add_library(hip_interface_lib STATIC ${CPP_SOURCES}) + +# Set-up the correct flags to generate the static library. +target_link_libraries(hip_interface_lib PRIVATE --emit-static-lib) +target_include_directories(hip_interface_lib PRIVATE /opt/rocm/hsa/include) + +install(TARGETS ${LIBRARY} DESTINATION ${CMAKE_INSTALL_PREFIX}) \ No newline at end of file diff --git a/machine_interface/hip_interface/hip_interface.hip.cpp b/machine_interface/hip_interface/hip_interface.hip.cpp new file mode 100644 index 00000000..89044e1f --- /dev/null +++ b/machine_interface/hip_interface/hip_interface.hip.cpp @@ -0,0 +1,14 @@ +#include +#include + +__global__ void kernel() { + printf("Kernel launched!\n"); +} + +void gpu_toy_launch(uint8_t gpu_id) { + hipSetDevice(gpu_id); + + kernel<<>>(); + + hipDeviceSynchronize(); +} \ No newline at end of file diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 92c93315..5cf3a873 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -37,11 +37,15 @@ pub struct WasmConfig { system_data_struct_offset: usize, } +#[derive(Clone)] +pub struct GpuConfig {} + #[derive(Clone)] pub enum FunctionConfig { ElfConfig(ElfConfig), SysConfig(SystemFunction), WasmConfig(WasmConfig), + GpuConfig(GpuConfig), } pub struct Function { @@ -56,7 +60,7 @@ impl Function { domain: &Box, ctx_size: usize, ) -> DandelionResult { - return match &self.config { + match &self.config { FunctionConfig::ElfConfig(_) => { load_utils::load_static(domain, &self.context, &self.requirements, ctx_size) } @@ -69,14 +73,15 @@ impl Function { context.occupy_space(0, c.sdk_heap_base)?; Ok(context) } - }; + FunctionConfig::GpuConfig(_) => todo!(), + } } } #[derive(Debug, Clone, Copy)] pub enum ComputeResource { CPU(u8), - GPU(u8), + GPU(u8, u8), // TODO change back to GPU(u8) once Driver.start_engine() takes a vec of ComputeResources } pub trait Engine: Send { diff --git a/machine_interface/src/function_driver/compute_driver.rs b/machine_interface/src/function_driver/compute_driver.rs index 21c455e6..b4b2be2c 100644 --- a/machine_interface/src/function_driver/compute_driver.rs +++ b/machine_interface/src/function_driver/compute_driver.rs @@ -7,5 +7,8 @@ pub mod mmu; #[cfg(feature = "wasm")] pub mod wasm; +#[cfg(feature = "gpu")] +pub mod gpu; + #[cfg(test)] mod compute_driver_tests; diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index ce99da63..8007da5b 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -1,4 +1,5 @@ #[cfg(all(test, any(feature = "cheri", feature = "mmu", feature = "wasm")))] +#[allow(clippy::module_inception)] mod compute_driver_tests { use crate::{ function_driver::{ComputeResource, Driver, Engine, FunctionConfig}, @@ -579,7 +580,7 @@ mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0) + ComputeResource::GPU(0, 0) ]); #[cfg(target_arch = "aarch64")] driverTests!(elf_mmu_aarch64; MmuMemoryDomain; Vec::new(); MmuDriver {}; @@ -613,7 +614,7 @@ mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0), + ComputeResource::GPU(0, 0), ]); #[cfg(target_arch = "aarch64")] @@ -630,4 +631,23 @@ mod compute_driver_tests { ComputeResource::GPU(0), ]); } + + #[cfg(feature = "gpu")] + mod gpu { + use crate::function_driver::{ + compute_driver::gpu::GpuCommand, + thread_utils::{DefaultState, ThreadPayload}, + }; + + #[test] + fn trivial() { + assert!(true); + } + + #[test] + fn run_gpu_payload() { + let cmd = GpuCommand { gpu_id: 0 }; + assert!(cmd.run(&mut DefaultState {}).is_ok()); + } + } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs new file mode 100644 index 00000000..e6ba0652 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -0,0 +1,119 @@ +// TODO remove unneeded imports; just took everything from wasm.rs +use crate::{ + function_driver::{ + thread_utils::{DefaultState, ThreadCommand, ThreadController, ThreadPayload}, + ComputeResource, Driver, Engine, Function, FunctionConfig, GpuConfig, WasmConfig, + }, + interface::{read_output_structs, setup_input_structs}, + memory_domain::{gpu::GpuContext, Context, ContextType, MemoryDomain}, + DataRequirementList, DataSet, +}; +use core::{ + future::{ready, Future}, + pin::Pin, +}; +use dandelion_commons::{ + records::{RecordPoint, Recorder}, + DandelionError, DandelionResult, +}; +use futures::task::Poll; +use libloading::{Library, Symbol}; +use log::error; +use std::sync::{Arc, Mutex}; + +// TODO remove pub once Engine.run implemented; this is just for basic testing +pub struct GpuCommand { + pub gpu_id: u8, +} +unsafe impl Send for GpuCommand {} + +// Temporary to get used to FFI +#[link(name = "hip_interface_lib")] +extern "C" { + fn gpu_toy_launch(gpu_id: u8); +} + +impl ThreadPayload for GpuCommand { + type State = DefaultState; + + fn run(self, state: &mut Self::State) -> DandelionResult<()> { + unsafe { + gpu_toy_launch(self.gpu_id); + } + todo!() + } +} + +pub struct GpuEngine { + gpu_id: u8, + thread_controller: ThreadController, +} + +impl Engine for GpuEngine { + fn run( + &mut self, + config: &FunctionConfig, + mut context: Context, + output_set_names: &Vec, + mut recorder: Recorder, + ) -> Pin, Context)> + '_ + Send>> { + if let Err(err) = recorder.record(RecordPoint::EngineStart) { + return Box::pin(core::future::ready((Err(err), context))); + } + + todo!() + } + + fn abort(&mut self) -> DandelionResult<()> { + todo!() + } +} + +pub struct GpuDriver {} + +impl Driver for GpuDriver { + fn start_engine( + &self, + resource: crate::function_driver::ComputeResource, + ) -> dandelion_commons::DandelionResult> { + // extract resources TODO update once we get Vec of ComputeResources + let (cpu_slot, gpu_id) = match resource { + ComputeResource::GPU(cpu, gpu) => (cpu, gpu), + _ => return Err(DandelionError::EngineResourceError), + }; + // check that core is available + let available_cores = match core_affinity::get_core_ids() { + None => return Err(DandelionError::EngineError), + Some(cores) => cores, + }; + if !available_cores + .iter() + .any(|x| x.id == usize::from(cpu_slot)) + { + return Err(DandelionError::EngineResourceError); + } + // TODO check gpu is available + + Ok(Box::new(GpuEngine { + gpu_id, + thread_controller: ThreadController::new(cpu_slot), + })) + } + + fn parse_function( + &self, + function_path: String, + static_domain: &Box, + ) -> dandelion_commons::DandelionResult { + // For now ignore function path and domain and hardwire everything to get MVP + // Actually might just never call this in the tests for now + Ok(Function { + config: FunctionConfig::GpuConfig(GpuConfig {}), + requirements: DataRequirementList { + static_requirements: vec![], + input_requirements: vec![], + }, + context: static_domain.acquire_context(0)?, + }) + } +} diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 8d2afc5b..6a664718 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -1,6 +1,8 @@ // list of memory domain implementations #[cfg(feature = "cheri")] pub mod cheri; +#[cfg(feature = "gpu")] +pub mod gpu; pub mod malloc; pub mod mmap; #[cfg(feature = "mmu")] @@ -30,6 +32,8 @@ pub enum ContextType { Mmu(Box), #[cfg(feature = "wasm")] Wasm(Box), + #[cfg(feature = "gpu")] + Gpu(Box), } impl ContextTrait for ContextType { @@ -44,6 +48,8 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.write(offset, data), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.write(offset, data), + #[cfg(feature = "gpu")] + ContextType::Gpu(context) => context.write(offset, data), } } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { @@ -57,6 +63,8 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.read(offset, read_buffer), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.read(offset, read_buffer), + #[cfg(feature = "gpu")] + ContextType::Gpu(context) => context.read(offset, read_buffer), } } } @@ -213,6 +221,7 @@ pub fn transefer_memory( source_offset: usize, size: usize, ) -> DandelionResult<()> { + #[allow(clippy::needless_return)] return match (&mut destination.context, &source.context) { (ContextType::Malloc(destination_ctxt), ContextType::Malloc(source_ctxt)) => { malloc::malloc_transfer( diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs new file mode 100644 index 00000000..5abc99a2 --- /dev/null +++ b/machine_interface/src/memory_domain/gpu.rs @@ -0,0 +1,18 @@ +use dandelion_commons::DandelionResult; + +use super::ContextTrait; + +#[derive(Debug)] +pub struct GpuContext {} + +unsafe impl Send for GpuContext {} +unsafe impl Sync for GpuContext {} + +impl ContextTrait for GpuContext { + fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { + todo!() + } + fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { + todo!() + } +} From d1e240957606bccdb28988551fddca5b899c5e07 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:36:10 +0100 Subject: [PATCH 023/176] basic toy kernel launching --- machine_interface/build.rs | 5 ++++- machine_interface/hip_interface/hip_interface.hip.cpp | 2 +- machine_interface/src/function_driver/compute_driver/gpu.rs | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/machine_interface/build.rs b/machine_interface/build.rs index f5c56f61..61e62f3e 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -20,8 +20,11 @@ fn cmake_libraries_cheri() { fn cmake_libraries_gpu() { let install = Config::new("hip_interface").build(); - println!("cargo:rustc-link-search=native={}", install.display()); + println!("cargo:rustc-link-search=native={}/build", install.display()); println!("cargo:rustc-link-lib=static=hip_interface_lib"); + // link with hip runtime TODO make less hard coded + println!("cargo:rustc-link-search=/opt/rocm-5.7.1/lib"); + println!("cargo:rustc-link-lib=amdhip64"); } fn main() { diff --git a/machine_interface/hip_interface/hip_interface.hip.cpp b/machine_interface/hip_interface/hip_interface.hip.cpp index 89044e1f..82a981e9 100644 --- a/machine_interface/hip_interface/hip_interface.hip.cpp +++ b/machine_interface/hip_interface/hip_interface.hip.cpp @@ -5,7 +5,7 @@ __global__ void kernel() { printf("Kernel launched!\n"); } -void gpu_toy_launch(uint8_t gpu_id) { +extern "C" void gpu_toy_launch(uint8_t gpu_id) { hipSetDevice(gpu_id); kernel<<>>(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index e6ba0652..9fa88882 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -40,7 +40,7 @@ impl ThreadPayload for GpuCommand { unsafe { gpu_toy_launch(self.gpu_id); } - todo!() + Ok(()) } } From b986d634d2dd98aaf64399997b731ca66fa32755 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:54:08 +0100 Subject: [PATCH 024/176] launch basic kernel from module --- .../hip_interface/hip_interface.hip.cpp | 4 +- machine_interface/hip_interface/module.hsaco | Bin 0 -> 26856 bytes .../src/function_driver/compute_driver/gpu.rs | 62 +++++++++-- .../function_driver/compute_driver/gpu/hip.rs | 100 ++++++++++++++++++ 4 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 machine_interface/hip_interface/module.hsaco create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/hip.rs diff --git a/machine_interface/hip_interface/hip_interface.hip.cpp b/machine_interface/hip_interface/hip_interface.hip.cpp index 82a981e9..739df4f5 100644 --- a/machine_interface/hip_interface/hip_interface.hip.cpp +++ b/machine_interface/hip_interface/hip_interface.hip.cpp @@ -1,14 +1,14 @@ #include #include -__global__ void kernel() { +__global__ void toy_kernel() { printf("Kernel launched!\n"); } extern "C" void gpu_toy_launch(uint8_t gpu_id) { hipSetDevice(gpu_id); - kernel<<>>(); + toy_kernel<<>>(); hipDeviceSynchronize(); } \ No newline at end of file diff --git a/machine_interface/hip_interface/module.hsaco b/machine_interface/hip_interface/module.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e49cb095c50e75b82c9cdf1eb01152d3a92395bd GIT binary patch literal 26856 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 literal 0 HcmV?d00001 diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 9fa88882..31d2e092 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -17,33 +17,77 @@ use dandelion_commons::{ DandelionError, DandelionResult, }; use futures::task::Poll; +use libc::c_void; use libloading::{Library, Symbol}; use log::error; -use std::sync::{Arc, Mutex}; +use std::{ + ffi::CString, + ptr::null, + sync::{Arc, Mutex}, +}; -// TODO remove pub once Engine.run implemented; this is just for basic testing -pub struct GpuCommand { - pub gpu_id: u8, -} -unsafe impl Send for GpuCommand {} +mod hip; -// Temporary to get used to FFI +// Temporary to get used to FFI and build.rs #[link(name = "hip_interface_lib")] extern "C" { fn gpu_toy_launch(gpu_id: u8); } +// TODO remove pub once Engine.run implemented; this is just for basic testing +pub struct GpuCommand { + pub gpu_id: u8, +} +unsafe impl Send for GpuCommand {} + impl ThreadPayload for GpuCommand { type State = DefaultState; fn run(self, state: &mut Self::State) -> DandelionResult<()> { - unsafe { - gpu_toy_launch(self.gpu_id); + // unsafe { + // gpu_toy_launch(self.gpu_id); + // } + + // TODO handle errors + // set gpu + if hip::set_device(self.gpu_id as u32) != 0 { + eprintln!("set_device"); + } + + // load module + let mut module: hip::ModuleT = null(); + let fname = + CString::new("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco") + .unwrap(); + if hip::module_load(&mut module, fname) != 0 { + eprintln!( + "{}", + hip::get_error_string(hip::get_last_error()) + .into_string() + .unwrap() + ); + } + + // load function, launch it + let mut function: hip::FunctionT = null(); + let kname = CString::new("hello_world").unwrap(); + if hip::module_get_function(&mut function, module, kname) != 0 { + eprintln!("get_function"); + } + + if hip::module_launch_kernel(function, 1, 1, 1, 1, 1, 1, 0, null(), null(), null()) != 0 { + eprintln!("launch_kernel"); + } + + if hip::device_synchronize() != 0 { + eprintln!("device_synch"); } Ok(()) } } +// TODO GpuFuture + pub struct GpuEngine { gpu_id: u8, thread_controller: ThreadController, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs new file mode 100644 index 00000000..b39e31de --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -0,0 +1,100 @@ +//! Rust bindings for a subset of the HIP runtime API as of ROCm 5.7.1 + +use std::ffi::CString; + +use libc::c_void; + +pub type ErrorT = u32; +/// typedef struct ihipModule_t* hipModule_t +pub type ModuleT = *const c_void; +/// typedef struct iHipModuleSymbol_t* hipFunction_t +pub type FunctionT = *const c_void; +/// typedef struct iHipStream_t* hipStream_t +pub type StreamT = *const c_void; + +#[link(name = "amdhip64")] +extern "C" { + fn hipSetDevice(gpu_id: u32) -> self::ErrorT; + fn hipDeviceSynchronize() -> self::ErrorT; + fn hipModuleLoad(module: *mut ModuleT, fname: *const i8) -> self::ErrorT; + fn hipModuleGetFunction( + function: *mut FunctionT, + module: ModuleT, + kname: *const i8, + ) -> self::ErrorT; + fn hipModuleLaunchKernel( + function: FunctionT, + gridDimX: u32, + gridDimY: u32, + gridDimZ: u32, + blockDimX: u32, + blockDimY: u32, + blockDimZ: u32, + sharedMemBytes: u32, + stream: StreamT, + kernel_params: *const *const c_void, + extra: *const *const c_void, + ) -> self::ErrorT; + fn hipGetErrorString(hipError: ErrorT) -> *const i8; + fn hipGetLastError() -> ErrorT; +} + +// TODO: convert to Result +pub fn set_device(gpu_id: u32) -> self::ErrorT { + unsafe { hipSetDevice(gpu_id) } +} + +pub fn device_synchronize() -> self::ErrorT { + unsafe { hipDeviceSynchronize() } +} + +pub fn get_error_string(hip_error: ErrorT) -> CString { + unsafe { CString::from_raw(hipGetErrorString(hip_error) as *mut i8) } +} + +pub fn get_last_error() -> self::ErrorT { + unsafe { hipGetLastError() } +} + +pub fn module_load(module: &mut ModuleT, fname: CString) -> self::ErrorT { + unsafe { hipModuleLoad(module as *mut ModuleT, fname.as_ptr()) } +} + +pub fn module_get_function( + function: &mut FunctionT, + module: ModuleT, + kname: CString, +) -> self::ErrorT { + unsafe { hipModuleGetFunction(function as *mut FunctionT, module, kname.as_ptr()) } +} + +#[allow(clippy::too_many_arguments)] +pub fn module_launch_kernel( + function: FunctionT, + grid_dim_x: u32, + grid_dim_y: u32, + grid_dim_z: u32, + block_dim_x: u32, + block_dim_y: u32, + block_dim_z: u32, + shared_mem_bytes: u32, + stream: StreamT, + kernel_params: *const *const c_void, + extra: *const *const c_void, +) -> self::ErrorT { + unsafe { + hipModuleLaunchKernel( + function, + grid_dim_x, + grid_dim_y, + grid_dim_z, + block_dim_x, + block_dim_y, + block_dim_z, + shared_mem_bytes, + stream, + kernel_params, + extra, + ) + } +} From 37890de32bc1b000f29617a91a16afaedd7835fb Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 11 Mar 2024 15:38:35 +0100 Subject: [PATCH 025/176] Fix composition parsing for system functions --- dandelion_commons/src/lib.rs | 2 +- dispatcher/Cargo.toml | 1 + dispatcher/src/composition.rs | 58 ++++++++++------- dispatcher/src/dispatcher.rs | 1 - dispatcher/src/function_registry.rs | 8 ++- dispatcher/src/tests/composition_tests.rs | 64 +++++++++++++++++++ .../tests/dispatcher_tests/registry_tests.rs | 35 +++++++--- .../function_driver/system_driver/hyper.rs | 3 + server/src/main.rs | 7 +- 9 files changed, 142 insertions(+), 37 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index a74071f3..646652d5 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -20,7 +20,7 @@ pub enum DandelionError { /// Composition contains function that does not exist CompositionContainsInvalidFunction, /// Function in parsing has identifier that is not defined in composition - CompositionFunctionInvalidIdentifier, + CompositionFunctionInvalidIdentifier(String), /// Set indentifier is produced by multiple functions in a composition CompositionDuplicateSetName, // domain and context errors diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index 69b2b17a..b05c3065 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -10,6 +10,7 @@ tokio = "1" dandelion_commons = {path = "../dandelion_commons"} machine_interface = {path = "../machine_interface"} futures = {version = "0.3.28", default-features = false} +log = "0.4.21" itertools = {version = "0.11", default-features = false, features = ["use_alloc"]} dparser = {path = "../dparser"} diff --git a/dispatcher/src/composition.rs b/dispatcher/src/composition.rs index 3ba1c202..a12cc7c2 100644 --- a/dispatcher/src/composition.rs +++ b/dispatcher/src/composition.rs @@ -44,6 +44,7 @@ impl Composition { /// For each composition the composition set indexes start enumerating the input sets from 0. /// The output sets are enumerated starting with the number directly after the highest input set index. /// For internal numbering there are no guarnatees. + /// TODO: add validation for the function input / output set names against the locally registered meta data (or at least the number) pub fn from_module( module: &dparser::Module, function_ids: &mut FunctionDict, @@ -132,53 +133,67 @@ impl Composition { .get(&function_application.v.name) .ok_or(DandelionError::CompositionContainsInvalidFunction)?; if function_decl.v.params.len() < function_application.v.args.len() - || function_decl.v.params.len() + || function_decl.v.returns.len() < function_application.v.rets.len() { return Err(DandelionError::CompositionContainsInvalidFunction); } + // find the indeces of the sets in the function application by looking though the definition let mut input_set_ids = Vec::new(); input_set_ids .try_reserve(function_decl.v.params.len()) .or(Err(DandelionError::OutOfMemory))?; input_set_ids.resize(function_decl.v.params.len(), None); - for (index, param_name) in function_decl.v.params.iter().enumerate() - { - if let Some(arg) = function_application - .v - .args - .iter() - .find(|&arg| arg.v.name == *param_name) + for argument in function_application.v.args.iter() { + if let Some((index, _)) = + function_decl.v.params.iter().enumerate().find( + |(_, &ref param_name)| argument.v.name == *param_name, + ) { - let set_id = set_numbers.get(&arg.v.ident).ok_or( - DandelionError::CompositionFunctionInvalidIdentifier, + let set_id = set_numbers.get(&argument.v.ident).ok_or( + DandelionError::CompositionFunctionInvalidIdentifier( + argument.v.ident.clone(), + ), )?; input_set_ids[index] = Some(( *set_id, - ShardingMode::from_parser_sharding(&arg.v.sharding), + ShardingMode::from_parser_sharding( + &argument.v.sharding, + ), )); + } else { + return Err( + DandelionError::CompositionFunctionInvalidIdentifier( + argument.v.ident.clone(), + ), + ); } } + // find the index set index in the original definition for each return set in the application let mut output_set_ids = Vec::new(); output_set_ids .try_reserve(function_decl.v.returns.len()) .or(Err(DandelionError::OutOfMemory))?; output_set_ids.resize(function_decl.v.returns.len(), None); - for (index, ret_name) in function_decl.v.returns.iter().enumerate() - { - if let Some(ret) = function_application - .v - .rets - .iter() - .find(|&ret| ret.v.name == *ret_name) + for return_set in function_application.v.rets.iter() { + if let Some((index, _)) = + function_decl.v.returns.iter().enumerate().find( + |(_, &ref return_name)| { + return_set.v.name == *return_name + }, + ) { - let set_id = set_numbers.get(&ret.v.ident).ok_or( - DandelionError::CompositionContainsInvalidFunction, + let set_id = set_numbers.get(&return_set.v.ident).ok_or( + DandelionError::CompositionFunctionInvalidIdentifier( + return_set.v.ident.clone(), + ), )?; output_set_ids[index] = Some(*set_id); } else { return Err( - DandelionError::CompositionFunctionInvalidIdentifier, + DandelionError::CompositionFunctionInvalidIdentifier( + return_set.v.ident.clone(), + ), ); } } @@ -209,7 +224,6 @@ impl Composition { .collect_vec() .into(), }; - compositions.push(( composition_id, Composition { diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 46910891..20eaa571 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -414,7 +414,6 @@ impl Dispatcher { for (subset, item, source_context) in context_set { // TODO get allignment information let set_name = &metadata.input_sets[function_set].0; - // (function_context, recorder) = self. let args = EngineArguments::TransferArguments(TransferArguments { destination: function_context, source: source_context, diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 35997764..3f83d4bc 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -1,4 +1,5 @@ use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; +use dparser::print_errors; use futures::lock::Mutex; use machine_interface::{ function_driver::{ @@ -57,6 +58,7 @@ impl FunctionDict { pub fn insert_or_lookup(&mut self, function_name: String) -> FunctionId { use std::collections::btree_map::Entry; + log::debug!("Inserted function with name {}", &function_name); match self.map.entry(function_name) { Entry::Vacant(v) => { let new_id = self.next_id; @@ -212,8 +214,10 @@ impl FunctionRegistry { // the error contains the parsing failure let mut dictlock = self.function_dict.lock().await; let composition_meta_pairs = { - let module = - dparser::parse(module).map_err(|_| DandelionError::CompositionParsingError)?; + let module = dparser::parse(module).map_err(|parse_error| { + print_errors(module, parse_error); + DandelionError::CompositionParsingError + })?; Composition::from_module(&module, &mut dictlock)? }; for (function_id, composition, metadata) in composition_meta_pairs { diff --git a/dispatcher/src/tests/composition_tests.rs b/dispatcher/src/tests/composition_tests.rs index 255b6fe3..c3564d10 100644 --- a/dispatcher/src/tests/composition_tests.rs +++ b/dispatcher/src/tests/composition_tests.rs @@ -263,6 +263,70 @@ fn test_from_module_minmal_composition_with_inputs() { check_compositions_and_metadata(compositions, expected, 0..1, 1..2); } +#[test] +fn test_from_module_minmal_composition_function_with_unused_input() { + let composition_string = r#" + (:function Function (Fin Unused) -> (Fout)) + (:composition Composition (Cin) -> (Cout) ( + (Function ((:all Fin <- Cin)) => ((Cout := Fout))) + )) + "#; + let mut function_dict = FunctionDict::new(); + let function_id = function_dict.insert_or_lookup(String::from("Function")); + let module = get_module(composition_string); + let compositions = match Composition::from_module(&module, &mut function_dict) { + Ok(c) => c, + Err(err) => panic!("Found unexpected error on from_module: {:?}", err), + }; + let expected = vec![( + Composition { + dependencies: vec![FunctionDependencies { + function: function_id, + input_set_ids: vec![Some((0, ShardingMode::All)), None], + output_set_ids: vec![Some(1)], + }], + output_map: BTreeMap::from([(1, 0)]), + }, + Metadata { + input_sets: Arc::new(vec![(String::from("Cin"), None)]), + output_sets: Arc::new(vec![String::from("Cout")]), + }, + )]; + check_compositions_and_metadata(compositions, expected, 0..1, 1..2); +} + +#[test] +fn test_from_module_minmal_composition_function_with_unused_output() { + let composition_string = r#" + (:function Function (Fin) -> (Fout Unused)) + (:composition Composition (Cin) -> (Cout) ( + (Function ((:all Fin <- Cin)) => ((Cout := Fout))) + )) + "#; + let mut function_dict = FunctionDict::new(); + let function_id = function_dict.insert_or_lookup(String::from("Function")); + let module = get_module(composition_string); + let compositions = match Composition::from_module(&module, &mut function_dict) { + Ok(c) => c, + Err(err) => panic!("Found unexpected error on from_module: {:?}", err), + }; + let expected = vec![( + Composition { + dependencies: vec![FunctionDependencies { + function: function_id, + input_set_ids: vec![Some((0, ShardingMode::All))], + output_set_ids: vec![Some(1), None], + }], + output_map: BTreeMap::from([(1, 0)]), + }, + Metadata { + input_sets: Arc::new(vec![(String::from("Cin"), None)]), + output_sets: Arc::new(vec![String::from("Cout")]), + }, + )]; + check_compositions_and_metadata(compositions, expected, 0..1, 1..2); +} + #[test] #[should_panic] fn test_from_module_minmal_composition_with_missing_input() { diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index d411f049..0e05922b 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -1,19 +1,18 @@ -use std::vec; - -use dispatcher::{composition::CompositionSet, function_registry::Metadata}; +use crate::dispatcher_tests::{check_matrix, setup_dispatcher}; +use dispatcher::{ + composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, +}; +use futures::lock::Mutex; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, memory_domain::{read_only::ReadOnlyContext, Context, MemoryDomain}, DataItem, DataSet, Position, }; -use std::sync::Arc; - -use crate::dispatcher_tests::check_matrix; - -use super::setup_dispatcher; +use std::{collections::BTreeMap, sync::Arc}; // using 0x802_0000 as that is what the WASM test binaries expect +// TODO fix once the update has been merged allowing for 800_0000 const DEFAULT_CONTEXT_SIZE: usize = 0x802_0000; // 128MiB fn create_context(matrix: Box<[u64]>) -> Context { @@ -228,3 +227,23 @@ pub fn multiple_input_fixed( check_matrix(&overwrite_context, 0, 0, 1, vec![expected[i]]); } } + +#[test] +#[cfg(any(feature = "hyper_io"))] +fn test_insert_composition_with_http_func() { + let dispatcher = Dispatcher::init(dispatcher::resource_pool::ResourcePool { + engine_pool: Mutex::new(BTreeMap::new()), + }) + .unwrap(); + let composition_string = r#" + (:function HTTP (request headers body) -> (status headers body)) + (:composition Composition (comp_request req_body) -> (comp_status resp_body) ( + (HTTP ((:all request <- comp_request) (:all body <- req_body)) => ((resp_body := body) (comp_status := status))) + )) + "#; + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(dispatcher.insert_compositions(String::from(composition_string))) + .unwrap(); +} diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index 2bba92fd..363ada59 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -327,6 +327,7 @@ struct HyperLoop { impl EngineLoop for HyperLoop { fn init(core_id: u8) -> DandelionResult> { + log::debug!("Hyper engine Init"); let runtime = Builder::new_multi_thread() .on_thread_start(move || { if !set_for_current(core_affinity::CoreId { id: core_id.into() }) { @@ -346,6 +347,7 @@ impl EngineLoop for HyperLoop { context: Context, output_sets: Arc>, ) -> DandelionResult { + log::debug!("Hyper engine running function"); let function = match config { FunctionConfig::SysConfig(sys_func) => sys_func, _ => return Err(DandelionError::ConfigMissmatch), @@ -366,6 +368,7 @@ impl Driver for HyperDriver { resource: ComputeResource, queue: Box, ) -> DandelionResult<()> { + log::debug!("Starting hyper engine"); let core_id = match resource { ComputeResource::CPU(core) => core, _ => return Err(DandelionError::EngineResourceError), diff --git a/server/src/main.rs b/server/src/main.rs index c17701ef..c9881d96 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -102,7 +102,7 @@ async fn run_chain( let input_arc = Arc::new(input_context); let inputs = vec![ (0, CompositionSet::from((0, vec![input_arc.clone()]))), - (5, CompositionSet::from((1, vec![input_arc]))), + (1, CompositionSet::from((1, vec![input_arc]))), ]; let output_mapping = vec![Some(0), Some(1)]; @@ -388,7 +388,7 @@ async fn register_function( "Process" => EngineType::Process, #[cfg(feature = "cheri")] "Cheri" => EngineType::Cheri, - _ => panic!("Unkown error type string"), + _ => panic!("Unkown engine type string"), }; dispatcher .insert_func( @@ -428,6 +428,7 @@ async fn register_composition( .expect("Should be able to insert function"); return Ok::<_, Infallible>(Response::new("Function registered".into())); } + async fn serve_stats( _req: Request, dispatcher: Arc, @@ -510,7 +511,7 @@ fn main() -> () { .map(|code_id| ComputeResource::CPU(code_id)) .collect(), ); - #[cfg(hyper_io)] + #[cfg(feature = "hyper_io")] pool_map.insert( EngineType::Hyper, (0..num_dispatcher_cores) From 1eb4fc80e63a2b919a859c1cf3a5f61c07dc25d1 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:34:38 +0100 Subject: [PATCH 026/176] two kernels; allocation --- machine_interface/hip_interface/module.hsaco | Bin 26856 -> 28136 bytes .../src/function_driver/compute_driver/gpu.rs | 63 ++++++++++++++++-- .../function_driver/compute_driver/gpu/hip.rs | 16 +++-- 3 files changed, 69 insertions(+), 10 deletions(-) diff --git a/machine_interface/hip_interface/module.hsaco b/machine_interface/hip_interface/module.hsaco index e49cb095c50e75b82c9cdf1eb01152d3a92395bd..d27b6195d158e286a508877647d085f66430aa6f 100644 GIT binary patch delta 5215 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 Bi$(wd diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 31d2e092..7a05f392 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -17,7 +17,7 @@ use dandelion_commons::{ DandelionError, DandelionResult, }; use futures::task::Poll; -use libc::c_void; +use libc::{c_void, size_t}; use libloading::{Library, Symbol}; use log::error; use std::{ @@ -68,14 +68,65 @@ impl ThreadPayload for GpuCommand { ); } - // load function, launch it - let mut function: hip::FunctionT = null(); - let kname = CString::new("hello_world").unwrap(); - if hip::module_get_function(&mut function, module, kname) != 0 { + // load kernels + let mut kernel_set: hip::FunctionT = null(); + let kname = CString::new("set_mem").unwrap(); + if hip::module_get_function(&mut kernel_set, module, kname) != 0 { eprintln!("get_function"); } + let mut kernel_check: hip::FunctionT = null(); + let kname = CString::new("check_mem").unwrap(); + if hip::module_get_function(&mut kernel_check, module, kname) != 0 { + eprintln!("get_function 2"); + } + + // allocate device memory, prepare args + let mut array: *const c_void = null(); + let arr_elem: u32 = 256; + let elem_size: u32 = std::mem::size_of::() as u32; + let arr_size: u32 = arr_elem * elem_size; + if hip::malloc(&mut array, arr_size as usize) != 0 { + eprintln!("malloc"); + } + + let args: [*const c_void; 2] = [ + &array as *const _ as *const c_void, + &arr_elem as *const _ as *const c_void, + ]; + + // launch them + let block_width: u32 = 1024; + if hip::module_launch_kernel( + kernel_set, + (arr_elem + block_width - 1) / block_width, + 1, + 1, + block_width, + 1, + 1, + 0, + null(), + args.as_ptr(), + null(), + ) != 0 + { + eprintln!("launch_kernel"); + } - if hip::module_launch_kernel(function, 1, 1, 1, 1, 1, 1, 0, null(), null(), null()) != 0 { + if hip::module_launch_kernel( + kernel_check, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + null(), + args.as_ptr(), + null(), + ) != 0 + { eprintln!("launch_kernel"); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index b39e31de..73bae1d4 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -2,8 +2,9 @@ use std::ffi::CString; -use libc::c_void; +use libc::{c_void, size_t}; +// TODO improve Types, eg. drop() for ModuleT to not leak memory pub type ErrorT = u32; /// typedef struct ihipModule_t* hipModule_t pub type ModuleT = *const c_void; @@ -35,8 +36,11 @@ extern "C" { kernel_params: *const *const c_void, extra: *const *const c_void, ) -> self::ErrorT; - fn hipGetErrorString(hipError: ErrorT) -> *const i8; - fn hipGetLastError() -> ErrorT; + fn hipGetErrorString(hipError: self::ErrorT) -> *const i8; + fn hipGetLastError() -> self::ErrorT; + // TODO add device_ptr type with automatic drop that frees + fn hipMalloc(ptr: *mut *const c_void, size: size_t) -> self::ErrorT; + fn hipFree(ptr: *const c_void); } // TODO: convert to Result @@ -48,7 +52,7 @@ pub fn device_synchronize() -> self::ErrorT { unsafe { hipDeviceSynchronize() } } -pub fn get_error_string(hip_error: ErrorT) -> CString { +pub fn get_error_string(hip_error: self::ErrorT) -> CString { unsafe { CString::from_raw(hipGetErrorString(hip_error) as *mut i8) } } @@ -98,3 +102,7 @@ pub fn module_launch_kernel( ) } } + +pub fn malloc(ptr: &mut *const c_void, size: size_t) -> self::ErrorT { + unsafe { hipMalloc(ptr as *mut *const c_void, size) } +} From 97dbc059936f2916897805acd16f96e0c4c25953 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:00:05 +0100 Subject: [PATCH 027/176] better Module type --- .../src/function_driver/compute_driver/gpu.rs | 6 +- .../function_driver/compute_driver/gpu/hip.rs | 77 +++++++++++-------- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 7a05f392..552ebae2 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -55,7 +55,7 @@ impl ThreadPayload for GpuCommand { } // load module - let mut module: hip::ModuleT = null(); + let mut module = hip::ModuleT::new(); let fname = CString::new("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco") .unwrap(); @@ -71,12 +71,12 @@ impl ThreadPayload for GpuCommand { // load kernels let mut kernel_set: hip::FunctionT = null(); let kname = CString::new("set_mem").unwrap(); - if hip::module_get_function(&mut kernel_set, module, kname) != 0 { + if hip::module_get_function(&mut kernel_set, &module, kname) != 0 { eprintln!("get_function"); } let mut kernel_check: hip::FunctionT = null(); let kname = CString::new("check_mem").unwrap(); - if hip::module_get_function(&mut kernel_check, module, kname) != 0 { + if hip::module_get_function(&mut kernel_check, &module, kname) != 0 { eprintln!("get_function 2"); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 73bae1d4..7684b8cf 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -1,28 +1,43 @@ //! Rust bindings for a subset of the HIP runtime API as of ROCm 5.7.1 -use std::ffi::CString; - use libc::{c_void, size_t}; +use std::{ffi::CString, ptr::null}; // TODO improve Types, eg. drop() for ModuleT to not leak memory pub type ErrorT = u32; /// typedef struct ihipModule_t* hipModule_t -pub type ModuleT = *const c_void; +type _ModuleT = *const c_void; +pub struct ModuleT(_ModuleT); /// typedef struct iHipModuleSymbol_t* hipFunction_t pub type FunctionT = *const c_void; /// typedef struct iHipStream_t* hipStream_t pub type StreamT = *const c_void; +impl ModuleT { + // this is kinda not so nice; you should never hold an invalid Module. + // Instead, loadModule should return it in a Result + pub fn new() -> Self { + Self(null()) + } +} +impl Drop for ModuleT { + fn drop(&mut self) { + unsafe { + if hipModuleUnload(self.0) != 0 { + panic!("Unloading module failed"); + } + } + } +} + #[link(name = "amdhip64")] extern "C" { - fn hipSetDevice(gpu_id: u32) -> self::ErrorT; - fn hipDeviceSynchronize() -> self::ErrorT; - fn hipModuleLoad(module: *mut ModuleT, fname: *const i8) -> self::ErrorT; - fn hipModuleGetFunction( - function: *mut FunctionT, - module: ModuleT, - kname: *const i8, - ) -> self::ErrorT; + fn hipSetDevice(gpu_id: u32) -> ErrorT; + fn hipDeviceSynchronize() -> ErrorT; + fn hipModuleLoad(module: *mut _ModuleT, fname: *const i8) -> ErrorT; + fn hipModuleUnload(module: _ModuleT) -> ErrorT; + fn hipModuleGetFunction(function: *mut FunctionT, module: _ModuleT, kname: *const i8) + -> ErrorT; fn hipModuleLaunchKernel( function: FunctionT, gridDimX: u32, @@ -35,41 +50,43 @@ extern "C" { stream: StreamT, kernel_params: *const *const c_void, extra: *const *const c_void, - ) -> self::ErrorT; - fn hipGetErrorString(hipError: self::ErrorT) -> *const i8; - fn hipGetLastError() -> self::ErrorT; + ) -> ErrorT; + fn hipGetErrorString(hipError: ErrorT) -> *const i8; + fn hipGetLastError() -> ErrorT; // TODO add device_ptr type with automatic drop that frees - fn hipMalloc(ptr: *mut *const c_void, size: size_t) -> self::ErrorT; + fn hipMalloc(ptr: *mut *const c_void, size: size_t) -> ErrorT; fn hipFree(ptr: *const c_void); } -// TODO: convert to Result -pub fn set_device(gpu_id: u32) -> self::ErrorT { +// TODO: convert to Result once talked with Tom +pub fn set_device(gpu_id: u32) -> ErrorT { unsafe { hipSetDevice(gpu_id) } } -pub fn device_synchronize() -> self::ErrorT { +pub fn device_synchronize() -> ErrorT { unsafe { hipDeviceSynchronize() } } -pub fn get_error_string(hip_error: self::ErrorT) -> CString { +pub fn get_error_string(hip_error: ErrorT) -> CString { unsafe { CString::from_raw(hipGetErrorString(hip_error) as *mut i8) } } -pub fn get_last_error() -> self::ErrorT { +pub fn get_last_error() -> ErrorT { unsafe { hipGetLastError() } } -pub fn module_load(module: &mut ModuleT, fname: CString) -> self::ErrorT { - unsafe { hipModuleLoad(module as *mut ModuleT, fname.as_ptr()) } +pub fn module_load(module: &mut ModuleT, fname: CString) -> ErrorT { + let mut ret: _ModuleT = null(); + let error; + unsafe { + error = hipModuleLoad(&mut ret as *mut _ModuleT, fname.as_ptr()); + } + module.0 = ret; + error } -pub fn module_get_function( - function: &mut FunctionT, - module: ModuleT, - kname: CString, -) -> self::ErrorT { - unsafe { hipModuleGetFunction(function as *mut FunctionT, module, kname.as_ptr()) } +pub fn module_get_function(function: &mut FunctionT, module: &ModuleT, kname: CString) -> ErrorT { + unsafe { hipModuleGetFunction(function as *mut FunctionT, module.0, kname.as_ptr()) } } #[allow(clippy::too_many_arguments)] @@ -85,7 +102,7 @@ pub fn module_launch_kernel( stream: StreamT, kernel_params: *const *const c_void, extra: *const *const c_void, -) -> self::ErrorT { +) -> ErrorT { unsafe { hipModuleLaunchKernel( function, @@ -103,6 +120,6 @@ pub fn module_launch_kernel( } } -pub fn malloc(ptr: &mut *const c_void, size: size_t) -> self::ErrorT { +pub fn malloc(ptr: &mut *const c_void, size: size_t) -> ErrorT { unsafe { hipMalloc(ptr as *mut *const c_void, size) } } From 8c2cc17781b58b5c15afdbf8ddebde384958fd75 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 11 Mar 2024 20:08:30 +0100 Subject: [PATCH 028/176] major overhaul to make code more idiomatic --- dandelion_commons/src/lib.rs | 2 + .../src/function_driver/compute_driver/gpu.rs | 66 +++---- .../function_driver/compute_driver/gpu/hip.rs | 161 +++++++++++------- 3 files changed, 121 insertions(+), 108 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 115c4ae8..584517cb 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -98,6 +98,8 @@ pub enum DandelionError { // Gerneral util errors /// error while performing IO on a file FileError, + /// error from HIP Runtime + HipError(String), // protection errors /// the function issued a system call outside the authorized list UnauthorizedSyscall, diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 552ebae2..44cf069f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -26,9 +26,11 @@ use std::{ sync::{Arc, Mutex}, }; +use self::hip::DEFAULT_STREAM; + mod hip; -// Temporary to get used to FFI and build.rs +// Temporary to get used to FFI and build.rs, can be removed #[link(name = "hip_interface_lib")] extern "C" { fn gpu_toy_launch(gpu_id: u8); @@ -44,41 +46,17 @@ impl ThreadPayload for GpuCommand { type State = DefaultState; fn run(self, state: &mut Self::State) -> DandelionResult<()> { - // unsafe { - // gpu_toy_launch(self.gpu_id); - // } - - // TODO handle errors // set gpu - if hip::set_device(self.gpu_id as u32) != 0 { - eprintln!("set_device"); - } + hip::set_device(self.gpu_id)?; // load module - let mut module = hip::ModuleT::new(); - let fname = - CString::new("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco") - .unwrap(); - if hip::module_load(&mut module, fname) != 0 { - eprintln!( - "{}", - hip::get_error_string(hip::get_last_error()) - .into_string() - .unwrap() - ); - } + let module = hip::module_load( + "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + )?; // load kernels - let mut kernel_set: hip::FunctionT = null(); - let kname = CString::new("set_mem").unwrap(); - if hip::module_get_function(&mut kernel_set, &module, kname) != 0 { - eprintln!("get_function"); - } - let mut kernel_check: hip::FunctionT = null(); - let kname = CString::new("check_mem").unwrap(); - if hip::module_get_function(&mut kernel_check, &module, kname) != 0 { - eprintln!("get_function 2"); - } + let kernel_set = hip::module_get_function(&module, "set_mem")?; + let kernel_check = hip::module_get_function(&module, "check_mem")?; // allocate device memory, prepare args let mut array: *const c_void = null(); @@ -88,15 +66,16 @@ impl ThreadPayload for GpuCommand { if hip::malloc(&mut array, arr_size as usize) != 0 { eprintln!("malloc"); } + let array = hip::DevicePointer::try_new(arr_size as usize)?; let args: [*const c_void; 2] = [ - &array as *const _ as *const c_void, + &array.0 as *const _ as *const c_void, &arr_elem as *const _ as *const c_void, ]; // launch them let block_width: u32 = 1024; - if hip::module_launch_kernel( + hip::module_launch_kernel( kernel_set, (arr_elem + block_width - 1) / block_width, 1, @@ -105,15 +84,12 @@ impl ThreadPayload for GpuCommand { 1, 1, 0, - null(), + DEFAULT_STREAM, args.as_ptr(), null(), - ) != 0 - { - eprintln!("launch_kernel"); - } + )?; - if hip::module_launch_kernel( + hip::module_launch_kernel( kernel_check, 1, 1, @@ -122,17 +98,13 @@ impl ThreadPayload for GpuCommand { 1, 1, 0, - null(), + DEFAULT_STREAM, args.as_ptr(), null(), - ) != 0 - { - eprintln!("launch_kernel"); - } + )?; + + hip::device_synchronize()?; - if hip::device_synchronize() != 0 { - eprintln!("device_synch"); - } Ok(()) } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 7684b8cf..aa529971 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -1,45 +1,39 @@ //! Rust bindings for a subset of the HIP runtime API as of ROCm 5.7.1 +use dandelion_commons::{DandelionError, DandelionResult}; use libc::{c_void, size_t}; use std::{ffi::CString, ptr::null}; -// TODO improve Types, eg. drop() for ModuleT to not leak memory -pub type ErrorT = u32; -/// typedef struct ihipModule_t* hipModule_t +type ErrorT = u32; + +// typedef struct ihipModule_t* hipModule_t type _ModuleT = *const c_void; pub struct ModuleT(_ModuleT); -/// typedef struct iHipModuleSymbol_t* hipFunction_t -pub type FunctionT = *const c_void; -/// typedef struct iHipStream_t* hipStream_t + +// typedef struct iHipModuleSymbol_t* hipFunction_t +type _FunctionT = *const c_void; +pub struct FunctionT(_FunctionT); + +// typedef struct iHipStream_t* hipStream_t pub type StreamT = *const c_void; +pub const DEFAULT_STREAM: StreamT = null(); -impl ModuleT { - // this is kinda not so nice; you should never hold an invalid Module. - // Instead, loadModule should return it in a Result - pub fn new() -> Self { - Self(null()) - } -} -impl Drop for ModuleT { - fn drop(&mut self) { - unsafe { - if hipModuleUnload(self.0) != 0 { - panic!("Unloading module failed"); - } - } - } -} +// has to be pub to allow address-getting when preparing args +pub struct DevicePointer(pub *const c_void); #[link(name = "amdhip64")] extern "C" { - fn hipSetDevice(gpu_id: u32) -> ErrorT; + fn hipSetDevice(gpu_id: i32) -> ErrorT; fn hipDeviceSynchronize() -> ErrorT; fn hipModuleLoad(module: *mut _ModuleT, fname: *const i8) -> ErrorT; fn hipModuleUnload(module: _ModuleT) -> ErrorT; - fn hipModuleGetFunction(function: *mut FunctionT, module: _ModuleT, kname: *const i8) - -> ErrorT; + fn hipModuleGetFunction( + function: *mut _FunctionT, + module: _ModuleT, + kname: *const i8, + ) -> ErrorT; fn hipModuleLaunchKernel( - function: FunctionT, + function: _FunctionT, gridDimX: u32, gridDimY: u32, gridDimZ: u32, @@ -52,41 +46,59 @@ extern "C" { extra: *const *const c_void, ) -> ErrorT; fn hipGetErrorString(hipError: ErrorT) -> *const i8; - fn hipGetLastError() -> ErrorT; // TODO add device_ptr type with automatic drop that frees fn hipMalloc(ptr: *mut *const c_void, size: size_t) -> ErrorT; - fn hipFree(ptr: *const c_void); + #[allow(unused)] + fn hipFree(ptr: *const c_void) -> ErrorT; } -// TODO: convert to Result once talked with Tom -pub fn set_device(gpu_id: u32) -> ErrorT { - unsafe { hipSetDevice(gpu_id) } +// TODO: Possibly move away from DandelionResult if HipError not wanted +macro_rules! checked_call { + ($fcall: expr) => { + unsafe { + let error = $fcall; + if error != 0 { + return Err(DandelionError::HipError(get_error_string(error))); + } + } + }; } -pub fn device_synchronize() -> ErrorT { - unsafe { hipDeviceSynchronize() } +pub fn set_device(gpu_id: u8) -> DandelionResult<()> { + checked_call!(hipSetDevice(gpu_id as i32)); + Ok(()) } -pub fn get_error_string(hip_error: ErrorT) -> CString { - unsafe { CString::from_raw(hipGetErrorString(hip_error) as *mut i8) } +pub fn device_synchronize() -> DandelionResult<()> { + checked_call!(hipDeviceSynchronize()); + Ok(()) } -pub fn get_last_error() -> ErrorT { - unsafe { hipGetLastError() } +fn get_error_string(hip_error: ErrorT) -> String { + unsafe { + CString::from_raw(hipGetErrorString(hip_error) as *mut i8) + .into_string() + .expect("Invalid ROCm error string (shouldn't happen)") + } } -pub fn module_load(module: &mut ModuleT, fname: CString) -> ErrorT { +pub fn module_load(path: &str) -> DandelionResult { let mut ret: _ModuleT = null(); - let error; - unsafe { - error = hipModuleLoad(&mut ret as *mut _ModuleT, fname.as_ptr()); - } - module.0 = ret; - error + // TODO: ask Tom about errors here + let fname = CString::new(path).or(Err(DandelionError::HipError("Invalid Path".into())))?; + checked_call!(hipModuleLoad(&mut ret as *mut _ModuleT, fname.as_ptr())); + Ok(ModuleT(ret)) } -pub fn module_get_function(function: &mut FunctionT, module: &ModuleT, kname: CString) -> ErrorT { - unsafe { hipModuleGetFunction(function as *mut FunctionT, module.0, kname.as_ptr()) } +pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult { + let mut ret: _FunctionT = null(); + let kname = CString::new(name).or(Err(DandelionError::HipError("Invalid Name".into())))?; + checked_call!(hipModuleGetFunction( + &mut ret as *mut _FunctionT, + module.0, + kname.as_ptr() + )); + Ok(FunctionT(ret)) } #[allow(clippy::too_many_arguments)] @@ -102,24 +114,51 @@ pub fn module_launch_kernel( stream: StreamT, kernel_params: *const *const c_void, extra: *const *const c_void, -) -> ErrorT { - unsafe { - hipModuleLaunchKernel( - function, - grid_dim_x, - grid_dim_y, - grid_dim_z, - block_dim_x, - block_dim_y, - block_dim_z, - shared_mem_bytes, - stream, - kernel_params, - extra, - ) +) -> DandelionResult<()> { + checked_call!(hipModuleLaunchKernel( + function.0, + grid_dim_x, + grid_dim_y, + grid_dim_z, + block_dim_x, + block_dim_y, + block_dim_z, + shared_mem_bytes, + stream, + kernel_params, + extra, + )); + Ok(()) +} + +impl Drop for ModuleT { + fn drop(&mut self) { + unsafe { + if hipModuleUnload(self.0) != 0 { + panic!("Unloading module failed"); + } + } } } pub fn malloc(ptr: &mut *const c_void, size: size_t) -> ErrorT { unsafe { hipMalloc(ptr as *mut *const c_void, size) } } + +impl DevicePointer { + pub fn try_new(size: usize) -> DandelionResult { + let mut ret: *const c_void = null(); + checked_call!(hipMalloc(&mut ret as *mut *const c_void, size)); + Ok(Self(ret)) + } +} + +impl Drop for DevicePointer { + fn drop(&mut self) { + unsafe { + if hipFree(self.0) != 0 { + panic!("Freeing a device pointer failed (this shouldn't happen)"); + } + } + } +} From bffbd5f88d935658efc800a5191242d7440644ea Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 13 Mar 2024 11:28:53 +0100 Subject: [PATCH 029/176] small thing --- machine_interface/src/function_driver/compute_driver/gpu.rs | 2 +- machine_interface/src/function_driver/compute_driver/gpu/hip.rs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 44cf069f..a97e243b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -45,7 +45,7 @@ unsafe impl Send for GpuCommand {} impl ThreadPayload for GpuCommand { type State = DefaultState; - fn run(self, state: &mut Self::State) -> DandelionResult<()> { + fn run(self, _state: &mut Self::State) -> DandelionResult<()> { // set gpu hip::set_device(self.gpu_id)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index aa529971..075b6fd6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -46,7 +46,6 @@ extern "C" { extra: *const *const c_void, ) -> ErrorT; fn hipGetErrorString(hipError: ErrorT) -> *const i8; - // TODO add device_ptr type with automatic drop that frees fn hipMalloc(ptr: *mut *const c_void, size: size_t) -> ErrorT; #[allow(unused)] fn hipFree(ptr: *const c_void) -> ErrorT; From 273bb9f904d26b82288f83037e5ac6510fb55589 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 15 Mar 2024 12:44:28 +0100 Subject: [PATCH 030/176] MVP parse_function and improved EngineLoop.run() --- machine_interface/build.rs | 11 +- machine_interface/src/function_driver.rs | 12 +- .../compute_driver/compute_driver_tests.rs | 39 +- .../src/function_driver/compute_driver/gpu.rs | 336 ++++++++---------- .../function_driver/compute_driver/gpu/hip.rs | 11 +- .../compute_driver/gpu/utils.rs | 83 +++++ machine_interface/src/memory_domain/gpu.rs | 2 + 7 files changed, 281 insertions(+), 213 deletions(-) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/utils.rs diff --git a/machine_interface/build.rs b/machine_interface/build.rs index 62924502..f6ab575e 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -1,5 +1,4 @@ use cmake::Config; -use std::process::Command; fn cmake_libraries() -> () { // cmake configure and build all @@ -19,10 +18,12 @@ fn cmake_libraries() -> () { } fn cmake_libraries_gpu() { - let install = Config::new("hip_interface").build(); - println!("cargo:rustc-link-search=native={}/build", install.display()); - println!("cargo:rustc-link-lib=static=hip_interface_lib"); - // link with hip runtime TODO make less hard coded + // TODO: cleanup/remove the CMake files/C++ code + // let install = Config::new("hip_interface").build(); + // println!("cargo:rustc-link-search=native={}/build", install.display()); + // println!("cargo:rustc-link-lib=static=hip_interface_lib"); + // link with hip runtime + // TODO: make less hard coded to current version -> there is some environment variable println!("cargo:rustc-link-search=/opt/rocm-5.7.1/lib"); println!("cargo:rustc-link-lib=amdhip64"); } diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index c3c69e37..5545b1f3 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -1,14 +1,19 @@ +use std::{collections::HashMap, sync::Mutex}; + use crate::{ memory_domain::{Context, MemoryDomain}, DataRequirementList, Position, }; extern crate alloc; +use crate::function_driver::compute_driver::gpu::hip::ModuleT; use alloc::sync::Arc; use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; #[cfg(feature = "wasm")] use libloading::Library; +use self::compute_driver::gpu::{hip::FunctionT, utils::ExecutionBlueprint}; + pub mod compute_driver; mod load_utils; pub mod system_driver; @@ -50,7 +55,12 @@ pub struct WasmConfig { } #[derive(Clone)] -pub struct GpuConfig {} +pub struct GpuConfig { + pub system_data_struct_offset: usize, + pub module: Arc, + pub kernels: Arc>, + pub blueprint: Arc, +} #[derive(Clone)] pub enum FunctionConfig { diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 967ad572..f55000ae 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -657,30 +657,33 @@ mod compute_driver_tests { use std::sync::Arc; use crate::{ - function_driver::{thread_utils::EngineLoop, FunctionConfig, GpuConfig}, - memory_domain::{gpu::GpuContext, Context}, + function_driver::{ + compute_driver::gpu::{dummy_run, utils::dummy_config, GpuDriver, GpuLoop}, + thread_utils::EngineLoop, + Driver, FunctionConfig, GpuConfig, + }, + memory_domain::{gpu::GpuContext, mmu::MmuMemoryDomain, Context, MemoryDomain}, }; #[test] - fn trivial() { - assert!(true); + fn run_dummy_gpu_payload() { + let mut runner = GpuLoop::init(0).unwrap(); + assert!(dummy_run(&mut runner).is_ok()); } #[test] - fn run_gpu_payload() { - let mut runner = crate::function_driver::compute_driver::gpu::GpuLoop::init(0).unwrap(); - // dummy things - let config = FunctionConfig::GpuConfig(GpuConfig {}); - // TODO: remove pub from occupation! when un-dummying!! - let context = Context { - context: crate::memory_domain::ContextType::Gpu(Box::new(GpuContext {})), - content: vec![], - size: 0, - state: crate::memory_domain::ContextState::Run(0), - occupation: vec![], - }; - let outputs = Arc::new(vec![]); - assert!(runner.run(config, context, outputs).is_ok()); + fn parse_then_exec() { + let driver = GpuDriver {}; + let mut runner = GpuLoop::init(0).unwrap(); + let static_domain: Box = Box::new(MmuMemoryDomain {}); + let func = driver.parse_function("foo".into(), &static_domain).unwrap(); + let config = FunctionConfig::GpuConfig(dummy_config().unwrap()); + + let res = runner.run(config, func.context, Arc::new(vec![])); + if res.is_err() { + eprintln!("{:?}", res); + } + assert!(res.is_ok()); } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 723ca8a5..34183d2d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -5,112 +5,121 @@ use crate::{ ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, - memory_domain::{gpu::GpuContext, Context, ContextType, MemoryDomain}, + memory_domain::{Context, ContextType}, DataRequirementList, DataSet, }; -use core::{ - future::{ready, Future}, - pin::Pin, -}; -use dandelion_commons::{ - records::{RecordPoint, Recorder}, - DandelionError, DandelionResult, -}; -use futures::task::Poll; -use libc::{c_void, size_t}; -use libloading::{Library, Symbol}; -use log::error; -use std::{ - ffi::CString, - ptr::null, - sync::{Arc, Mutex}, -}; +use dandelion_commons::{DandelionError, DandelionResult}; +use libc::c_void; +use std::{collections::HashMap, ptr::null, thread}; + +use self::{hip::DEFAULT_STREAM, utils::Action}; + +pub(crate) mod hip; +pub(crate) mod utils; + +pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { + // set gpu + hip::set_device(gpu_loop.gpu_id)?; + + // load module + let module = + hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco")?; + + // load kernels + let kernel_set = hip::module_get_function(&module, "set_mem")?; + let kernel_check = hip::module_get_function(&module, "check_mem")?; + + // allocate device memory, prepare args + let arr_elem: usize = 256; + let elem_size: usize = std::mem::size_of::(); + let arr_size: usize = arr_elem * elem_size; + let array = hip::DevicePointer::try_new(arr_size)?; + + let args: [*const c_void; 2] = [ + &array.0 as *const _ as *const c_void, + &arr_elem as *const _ as *const c_void, + ]; + + // launch them + let block_width: usize = 1024; + hip::module_launch_kernel( + kernel_set, + ((arr_elem + block_width - 1) / block_width) as u32, + 1, + 1, + block_width as u32, + 1, + 1, + 0, + DEFAULT_STREAM, + args.as_ptr(), + null(), + )?; + + hip::module_launch_kernel( + kernel_check, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + DEFAULT_STREAM, + args.as_ptr(), + null(), + )?; + + hip::device_synchronize()?; + + Ok(()) +} -use self::hip::DEFAULT_STREAM; +fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult { + let ContextType::Mmu(ref mmu_context) = context.context else { + return Err(DandelionError::ConfigMissmatch); + }; -mod hip; + hip::set_device(gpu_id)?; -// Temporary to get used to FFI and build.rs, can be removed -#[link(name = "hip_interface_lib")] -extern "C" { - fn gpu_toy_launch(gpu_id: u8); -} + let mut buffers = HashMap::new(); + for (name, size) in &config.blueprint.temps { + buffers.insert(name.clone(), hip::DevicePointer::try_new(*size)?); + } + + for action in &config.blueprint.control_flow { + match action { + Action::ExecKernel(name, argnames, launch_config) => { + let elem: usize = 256; + let args = [ + &buffers.get("A").unwrap().0 as *const _ as *const c_void, + &elem as *const _ as *const c_void, + ]; + + hip::module_launch_kernel( + *config.kernels.get(name).unwrap(), + launch_config.grid_dim_x, + 1, + 1, + launch_config.block_dim_x, + 1, + 1, + 0, + DEFAULT_STREAM, + args.as_ptr(), + null(), + )?; + } + _ => return Err(DandelionError::NotImplemented), + } + } -// TODO remove pub once Engine.run implemented; this is just for basic testing -// pub struct GpuCommand { -// pub gpu_id: u8, -// } -// unsafe impl Send for GpuCommand {} - -// impl ThreadPayload for GpuCommand { -// type State = DefaultState; - -// fn run(self, _state: &mut Self::State) -> DandelionResult<()> { -// // set gpu -// hip::set_device(self.gpu_id)?; - -// // load module -// let module = hip::module_load( -// "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", -// )?; - -// // load kernels -// let kernel_set = hip::module_get_function(&module, "set_mem")?; -// let kernel_check = hip::module_get_function(&module, "check_mem")?; - -// // allocate device memory, prepare args -// let mut array: *const c_void = null(); -// let arr_elem: u32 = 256; -// let elem_size: u32 = std::mem::size_of::() as u32; -// let arr_size: u32 = arr_elem * elem_size; -// if hip::malloc(&mut array, arr_size as usize) != 0 { -// eprintln!("malloc"); -// } -// let array = hip::DevicePointer::try_new(arr_size as usize)?; - -// let args: [*const c_void; 2] = [ -// &array.0 as *const _ as *const c_void, -// &arr_elem as *const _ as *const c_void, -// ]; - -// // launch them -// let block_width: u32 = 1024; -// hip::module_launch_kernel( -// kernel_set, -// (arr_elem + block_width - 1) / block_width, -// 1, -// 1, -// block_width, -// 1, -// 1, -// 0, -// DEFAULT_STREAM, -// args.as_ptr(), -// null(), -// )?; - -// hip::module_launch_kernel( -// kernel_check, -// 1, -// 1, -// 1, -// 1, -// 1, -// 1, -// 0, -// DEFAULT_STREAM, -// args.as_ptr(), -// null(), -// )?; - -// hip::device_synchronize()?; - -// Ok(()) -// } -// } + Ok(context) +} +// TODO: remove pub at some point pub struct GpuLoop { - cpu_slot: u8, + cpu_slot: u8, // needed to set processes to run on that core gpu_id: u8, // TODO: runner process pool } @@ -122,102 +131,40 @@ impl EngineLoop for GpuLoop { cpu_slot: core_id, gpu_id: 0, })) + // this is where the process pool would be launched and the buffer pool initialised } fn run( &mut self, config: FunctionConfig, - context: Context, + mut context: Context, output_sets: std::sync::Arc>, ) -> DandelionResult { - // set gpu - hip::set_device(self.gpu_id)?; - - // load module - let module = hip::module_load( - "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", - )?; + let FunctionConfig::GpuConfig(config) = config else { + return Err(DandelionError::ConfigMissmatch); + }; - // load kernels - let kernel_set = hip::module_get_function(&module, "set_mem")?; - let kernel_check = hip::module_get_function(&module, "check_mem")?; - - // allocate device memory, prepare args - let mut array: *const c_void = null(); - let arr_elem: usize = 256; - let elem_size: usize = std::mem::size_of::(); - let arr_size: usize = arr_elem * elem_size; - // if hip::malloc(&mut array, arr_size as usize) != 0 { - // eprintln!("malloc"); - // } - let array = hip::DevicePointer::try_new(arr_size)?; - - let args: [*const c_void; 2] = [ - &array.0 as *const _ as *const c_void, - &arr_elem as *const _ as *const c_void, - ]; - - // launch them - let block_width: usize = 1024; - hip::module_launch_kernel( - kernel_set, - ((arr_elem + block_width - 1) / block_width) as u32, - 1, - 1, - block_width as u32, - 1, - 1, - 0, - DEFAULT_STREAM, - args.as_ptr(), - null(), + setup_input_structs::( + &mut context, + config.system_data_struct_offset, + &output_sets, )?; - hip::module_launch_kernel( - kernel_check, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - DEFAULT_STREAM, - args.as_ptr(), - null(), - )?; + // in thread for now, in process pool eventually; maybe add cpu_slot? + let gpu_id_clone = self.gpu_id; + let config_clone = config.clone(); + let handle = thread::spawn(move || gpu_run(gpu_id_clone, config_clone, context)); + let mut context = match handle.join() { + Ok(res) => res?, + Err(_) => return Err(DandelionError::EngineError), + }; - hip::device_synchronize()?; + read_output_structs::(&mut context, config.system_data_struct_offset)?; Ok(context) } } -// pub struct GpuEngine { -// gpu_id: u8, -// thread_controller: ThreadController, -// } - -// impl Engine for GpuEngine { -// fn run( -// &mut self, -// config: &FunctionConfig, -// mut context: Context, -// output_set_names: &Vec, -// mut recorder: Recorder, -// ) -> Pin, Context)> + '_ + Send>> { -// if let Err(err) = recorder.record(RecordPoint::EngineStart) { -// return Box::pin(core::future::ready((Err(err), context))); -// } - -// todo!() -// } - -// fn abort(&mut self) -> DandelionResult<()> { -// todo!() -// } -// } - pub struct GpuDriver {} impl Driver for GpuDriver { @@ -226,7 +173,7 @@ impl Driver for GpuDriver { resource: ComputeResource, queue: Box, ) -> dandelion_commons::DandelionResult<()> { - // extract resources TODO: update once we get Vec of ComputeResources + // extract resources let (cpu_slot, gpu_id) = match resource { ComputeResource::GPU(cpu, gpu) => (cpu, gpu), _ => return Err(DandelionError::EngineResourceError), @@ -253,15 +200,30 @@ impl Driver for GpuDriver { function_path: String, static_domain: &Box, ) -> dandelion_commons::DandelionResult { - // For now ignore function path and domain and hardwire everything to get MVP - // Actually might just never call this in the tests for now + // Concept for now: function_path gives config file which contains name of module (.hsaco) file + let config = FunctionConfig::GpuConfig(utils::dummy_config()?); + + // TODO: change this! + let total_size = 4096usize; + + let mut context = static_domain.acquire_context(total_size)?; + + // Taken from wasm.rs; TODO: ask Tom why/if this is the case + // there must be one data set, which would normally describe the + // elf sections to be copied + context.content = vec![Some(DataSet { + ident: String::from("static"), + buffers: vec![], + })]; + let requirements = DataRequirementList { + static_requirements: vec![], + input_requirements: vec![], + }; + Ok(Function { - config: FunctionConfig::GpuConfig(GpuConfig {}), - requirements: DataRequirementList { - static_requirements: vec![], - input_requirements: vec![], - }, - context: static_domain.acquire_context(0)?, + requirements, + context, + config, }) } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 075b6fd6..cf035569 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -10,10 +10,17 @@ type ErrorT = u32; type _ModuleT = *const c_void; pub struct ModuleT(_ModuleT); +unsafe impl Send for ModuleT {} +unsafe impl Sync for ModuleT {} + // typedef struct iHipModuleSymbol_t* hipFunction_t type _FunctionT = *const c_void; +#[derive(Clone, Copy)] pub struct FunctionT(_FunctionT); +unsafe impl Send for FunctionT {} +unsafe impl Sync for FunctionT {} + // typedef struct iHipStream_t* hipStream_t pub type StreamT = *const c_void; pub const DEFAULT_STREAM: StreamT = null(); @@ -40,7 +47,7 @@ extern "C" { blockDimX: u32, blockDimY: u32, blockDimZ: u32, - sharedMemBytes: u32, + sharedMemBytes: usize, stream: StreamT, kernel_params: *const *const c_void, extra: *const *const c_void, @@ -109,7 +116,7 @@ pub fn module_launch_kernel( block_dim_x: u32, block_dim_y: u32, block_dim_z: u32, - shared_mem_bytes: u32, + shared_mem_bytes: usize, stream: StreamT, kernel_params: *const *const c_void, extra: *const *const c_void, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/utils.rs new file mode 100644 index 00000000..56e04d56 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/utils.rs @@ -0,0 +1,83 @@ +use std::{collections::HashMap, sync::Arc}; + +use dandelion_commons::DandelionResult; + +use crate::function_driver::GpuConfig; + +use super::hip; + +pub struct LaunchConfig { + pub grid_dim_x: u32, + pub grid_dim_y: u32, + pub grid_dim_z: u32, + pub block_dim_x: u32, + pub block_dim_y: u32, + pub block_dim_z: u32, + pub shared_mem_bytes: usize, +} + +impl LaunchConfig { + pub fn one_dimensional(grid_dim: u32, block_dim: u32, shared_mem_bytes: usize) -> Self { + Self { + grid_dim_x: grid_dim, + grid_dim_y: 1, + grid_dim_z: 1, + block_dim_x: block_dim, + block_dim_y: 1, + block_dim_z: 1, + shared_mem_bytes, + } + } +} +enum Condition {} +pub enum Action { + /// (kernel name, argument names) + ExecKernel(String, Vec, LaunchConfig), + RepeatWhile(Condition, Vec), +} + +pub struct ExecutionBlueprint { + /// buffer names to sizes + pub inputs: HashMap, + pub temps: HashMap, + pub outputs: HashMap, + + pub control_flow: Vec, +} + +pub fn dummy_config() -> DandelionResult { + let module = + hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco")?; + let kernel_set = hip::module_get_function(&module, "set_mem")?; + let kernel_check = hip::module_get_function(&module, "check_mem")?; + + Ok(GpuConfig { + system_data_struct_offset: 0, // TODO: change this once I understand how it works + module: Arc::new(module), + kernels: Arc::new(HashMap::from([ + ("set_mem".into(), kernel_set), + ("check_mem".into(), kernel_check), + ])), + blueprint: Arc::new(ExecutionBlueprint { + inputs: HashMap::new(), + temps: HashMap::from([("A".into(), 1024)]), + outputs: HashMap::new(), + control_flow: vec![ + Action::ExecKernel( + "set_mem".into(), + vec!["A".into()], + LaunchConfig::one_dimensional((256 + 1024 - 1) / 1024, 1024, 0), + ), + Action::ExecKernel( + "check_mem".into(), + vec!["A".into()], + LaunchConfig::one_dimensional(1, 1, 0), + ), + ], + }), + }) +} + +pub fn parse_config() -> DandelionResult { + todo!() +} diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs index 5abc99a2..a26c8523 100644 --- a/machine_interface/src/memory_domain/gpu.rs +++ b/machine_interface/src/memory_domain/gpu.rs @@ -2,6 +2,8 @@ use dandelion_commons::DandelionResult; use super::ContextTrait; +// NOTE: might be removed in the future + #[derive(Debug)] pub struct GpuContext {} From ef312b858426d39cfdd08cf68534574c3640c1ff Mon Sep 17 00:00:00 2001 From: tom-kuchler <87128754+tom-kuchler@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:39:03 +0100 Subject: [PATCH 031/176] Dev/timestamp recorder (#42) * Introduce a finer-grained, timestamp-based tracing system * Add missing import * Cleanup stats after each request to avoid running out of preallocated recorders * Update dispatcher.rs Remove unnecessary TODO --------- Co-authored-by: ellerre --- dandelion_commons/Cargo.toml | 1 + dandelion_commons/src/lib.rs | 2 +- dandelion_commons/src/records.rs | 197 +++++++++--------- dispatcher/src/dispatcher.rs | 119 ++++++----- dispatcher/src/function_registry.rs | 14 +- dispatcher/tests/dispatcher_tests.rs | 18 +- .../tests/dispatcher_tests/function_tests.rs | 57 +++-- .../tests/dispatcher_tests/registry_tests.rs | 53 ++++- .../function_driver/compute_driver/cheri.rs | 2 +- .../compute_driver/compute_driver_tests.rs | 24 ++- .../function_driver/system_driver/hyper.rs | 2 +- .../system_driver/system_driver_tests.rs | 4 +- server/src/main.rs | 114 +++++++--- 13 files changed, 387 insertions(+), 220 deletions(-) diff --git a/dandelion_commons/Cargo.toml b/dandelion_commons/Cargo.toml index 846b6bd8..d3feca6d 100644 --- a/dandelion_commons/Cargo.toml +++ b/dandelion_commons/Cargo.toml @@ -5,3 +5,4 @@ edition = "2021" [dependencies] hdrhist = "0.5.0" +log = "0.4.14" \ No newline at end of file diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 646652d5..5f59daff 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -105,7 +105,7 @@ pub enum DandelionError { /// Mutex for metering was poisoned RecordLockFailure, /// Call to record time spans were not called in order - RecordSequencingFailure(RecordPoint, RecordPoint), + RecorderNotAvailable, // Gerneral util errors /// error while performing IO on a file FileError, diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 840ea8c1..98b930ac 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -1,5 +1,4 @@ use crate::{DandelionError, DandelionResult}; -use hdrhist::HDRHist; use std::{ sync::{Arc, Mutex}, time::Instant, @@ -7,124 +6,122 @@ use std::{ #[derive(Clone, Copy, Debug, PartialEq)] pub enum RecordPoint { - Arrival, - LoadStart, - TransferStart, - TransferEnd, - EngineStart, - EngineEnd, - FutureReturn, + Arrival, // Function request arrives at the server + QueueFunctionDispatcher, // Queue request in the dispatcher + PrepareEnvQueue, // Queue to load the function code + ctx + LoadQueue, // Load function code (async) + LoadStart, // Start loading code + alloc ctx + TransferStart, // Start data transfer to the ctx (async) + TransferEnd, // End data transfer to the ctx (async) + GetEngineQueue, // Queue to get an engine for execution + ExecutionQueue, // Queue to get the function executed on the engine + EngineStart, // Start execution of the function on the engine (sync) + EngineEnd, // End execution of the function on the engine (sync) + FutureReturn, // Return from execution engine + EndService, // Send response back to the client } -// TODO find better way to pass references without -// needing to propagate lifetimes everywhere -// also using sync mutex with futures is not ideal -struct RecorderState { - checkpoint_time: Instant, - last_checkpoint: RecordPoint, - archive: Arc>, -} - -#[derive(Clone)] +// TODO: becomes a trait + feature flag to enable/disable in the server (?) that switches between different recorders. pub struct Recorder { - state: Arc>, + archive: Arc>, + timestamps: Vec, + recorders: Vec, } impl Recorder { - pub fn new(archive: Arc>, last_checkpoint: RecordPoint) -> Recorder { - return Recorder { - state: Arc::new(Mutex::new(RecorderState { - checkpoint_time: Instant::now(), - last_checkpoint: last_checkpoint, - archive, - })), - }; + pub fn new(archive: Arc>) -> Recorder { + let start_time = archive.lock().unwrap().start_time; + Recorder { + archive, + timestamps: vec![start_time; 13], + recorders: Vec::with_capacity(10), + } } + pub fn record(&mut self, current_point: RecordPoint) -> DandelionResult<()> { - let current_time = Instant::now(); - let mut state_guard = match self.state.lock() { - Ok(guard) => guard, - Err(_) => return Err(DandelionError::RecordLockFailure), - }; - { - let mut archive_guard = match state_guard.archive.lock() { - Ok(guard) => guard, - Err(_) => return Err(DandelionError::RecordLockFailure), - }; - let hist = match (&state_guard.last_checkpoint, ¤t_point) { - (RecordPoint::Arrival, RecordPoint::LoadStart) => &mut archive_guard.initial_time, - (RecordPoint::LoadStart, RecordPoint::TransferStart) => { - &mut archive_guard.load_time - } - (RecordPoint::TransferStart, RecordPoint::TransferEnd) => { - &mut archive_guard.transfer_time - } - (RecordPoint::TransferEnd, RecordPoint::EngineStart) => { - &mut archive_guard.dispatch_time - } - (RecordPoint::EngineStart, RecordPoint::EngineEnd) => { - &mut archive_guard.engine_time - } - (RecordPoint::EngineEnd, RecordPoint::FutureReturn) => { - &mut archive_guard.return_time - } - (last, current) => { - return Err(DandelionError::RecordSequencingFailure( - last.clone(), - current.clone(), - )) - } - }; - let duration = u64::try_from( - current_time - .duration_since(state_guard.checkpoint_time) - .as_micros(), - ) - .unwrap_or(u64::MAX); - hist.add_value(duration); + self.timestamps[current_point as usize] = Instant::now(); + Ok(()) + } + + pub fn get_new_recorder(&mut self) -> DandelionResult { + match self.archive.lock().unwrap().get_recorder() { + Some(recorder) => Ok(recorder), + None => Err(DandelionError::RecorderNotAvailable), } - state_guard.last_checkpoint = current_point; - state_guard.checkpoint_time = current_time; + } + + pub fn link_new_recorder(&mut self, new_recorder: Recorder) { + self.recorders.push(new_recorder); + } - return Ok(()); + pub fn reset_recorder(&mut self, zero_time: Instant, free_recorders: &mut Vec) { + // Reset the timestamps + self.timestamps = vec![zero_time; 13]; + // Reset the sub-recorders + for mut recorder in self.recorders.drain(..) { + recorder.reset_recorder(zero_time, free_recorders); + free_recorders.push(recorder); + } } } pub struct Archive { - initial_time: HDRHist, - load_time: HDRHist, - transfer_time: HDRHist, - dispatch_time: HDRHist, - engine_time: HDRHist, - return_time: HDRHist, + start_time: Instant, + free_recorders: Vec, + used_recorders: Vec, } impl Archive { pub fn new() -> Archive { - return Archive { - initial_time: HDRHist::new(), - load_time: HDRHist::new(), - transfer_time: HDRHist::new(), - dispatch_time: HDRHist::new(), - engine_time: HDRHist::new(), - return_time: HDRHist::new(), - }; + Archive { + start_time: Instant::now(), + free_recorders: Vec::new(), + used_recorders: Vec::new(), + } + } + + pub fn init(&mut self, free_recorders: Vec) { + self.free_recorders = free_recorders; + self.used_recorders.reserve(self.free_recorders.capacity()); + } + + pub fn get_recorder(&mut self) -> Option { + self.free_recorders.pop() + } + + pub fn add_recorder(&mut self, recorder: Recorder) { + self.used_recorders.push(recorder); + } + + fn append_timestamps(&self, recorder: &Recorder, summary: &mut String, level: usize) { + let tabs = "\t".repeat(level); + for (i, timestamp) in recorder.timestamps.iter().enumerate() { + let duration = timestamp.duration_since(self.start_time).as_nanos(); + if duration > 0 { + summary.push_str(&format!("{}{}: {}\n", tabs, i, duration)); + }; + } + + for sub_recorder in &recorder.recorders { + self.append_timestamps(sub_recorder, summary, level + 1); + } } + pub fn get_summary(&self) -> String { - format!( - "Current statistics summary:\n\ - Initial time:\n{}\n\ - Load time:\n{}\n\ - Transfer time:\n{}\n\ - Dispatch time:\n{}\n\ - Engine time:\n{}\n\ - Return time:\n{}\n", - self.initial_time.summary_string(), - self.load_time.summary_string(), - self.transfer_time.summary_string(), - self.dispatch_time.summary_string(), - self.engine_time.summary_string(), - self.return_time.summary_string(), - ) + // For each recorder, print the timestamps + let mut summary = String::new(); + for recorder in &self.used_recorders { + self.append_timestamps(recorder, &mut summary, 0); + } + summary + } + + pub fn reset_all(&mut self) { + // For each recorder in the used_recorders, reset it and move it to the free_recorders. + // Recorders are recursive: each has a vector of sub-recorders. + for mut recorder in self.used_recorders.drain(..) { + recorder.reset_recorder(self.start_time, &mut self.free_recorders); + self.free_recorders.push(recorder); + } } } diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 20eaa571..0e70f0f8 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -26,7 +26,6 @@ use machine_interface::{ use std::{ collections::{BTreeMap, BTreeSet}, sync::Arc, - sync::Mutex as SyncMutex, }; // TODO here and in registry can probably replace driver and loader function maps with fixed size arrays @@ -36,7 +35,6 @@ pub struct Dispatcher { engine_queues: BTreeMap>, type_map: BTreeMap, function_registry: FunctionRegistry, - pub archive: Arc>, } impl Dispatcher { @@ -62,13 +60,11 @@ impl Dispatcher { domain_map.insert(*domain_type, (domain, work_queue.clone())); engine_queues.insert(*engine_type, work_queue.clone()); } - let archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); return Ok(Dispatcher { domains: domain_map, engine_queues, type_map, function_registry, - archive, }); } @@ -99,24 +95,25 @@ impl Dispatcher { inputs: Vec<(usize, CompositionSet)>, output_mapping: Vec>, non_caching: bool, - ) -> DandelionResult> { + recorder: Recorder, + ) -> DandelionResult<(BTreeMap, Recorder)> { let function_id = self .function_registry .get_function_id(&function_name) .await .ok_or(DandelionError::DispatcherUnavailableFunction)?; return self - .queue_function(function_id, inputs, output_mapping, non_caching) + .queue_function(function_id, inputs, output_mapping, non_caching, recorder) .await; } - // TODO: change test to use the queue function and remove this from being public pub async fn queue_composition( &self, composition: Composition, mut inputs: BTreeMap, non_caching: bool, - ) -> DandelionResult> { + mut recorder: Recorder, + ) -> DandelionResult<(BTreeMap, Recorder)> { // build up ready sets let (mut ready_functions, mut non_ready_functions): (Vec<_>, Vec<_>) = composition.dependencies.into_iter().partition( @@ -154,15 +151,17 @@ impl Dispatcher { function_inputs, dependencies.output_set_ids, non_caching, + recorder.get_new_recorder().unwrap(), ); }) .collect(); while let Some(new_compositions_result) = running_functions.next().await { let new_compositions = new_compositions_result?; - for (composition_set_index, composition_set) in new_compositions { + for (composition_set_index, composition_set) in new_compositions.0 { inputs.insert(composition_set_index, composition_set); } + recorder.link_new_recorder(new_compositions.1); // add newly ready ones (ready_functions, non_ready_functions) = non_ready_functions.into_iter().partition( |FunctionDependencies { @@ -198,27 +197,33 @@ impl Dispatcher { function_inputs, ready_function.output_set_ids, non_caching, + recorder.get_new_recorder().unwrap(), )); } } - return Ok(inputs - .into_iter() - .filter_map(|(set_index, composition_set)| { - composition - .output_map - .get(&set_index) - .and_then(|output_index| Some((*output_index, composition_set))) - }) - .collect::>()); + return Ok(( + inputs + .into_iter() + .filter_map(|(set_index, composition_set)| { + composition + .output_map + .get(&set_index) + .and_then(|output_index| Some((*output_index, composition_set))) + }) + .collect::>(), + recorder, + )); } + // TODO: Solve the composition. How does it work now?? async fn queue_function_sharded<'context>( &self, function_id: FunctionId, input_sets: Vec<(usize, ShardingMode, CompositionSet)>, output_mapping: Vec>, non_caching: bool, - ) -> DandelionResult> { + mut recorder: Recorder, + ) -> DandelionResult<(BTreeMap, Recorder)> { let results: Vec<_> = input_sets .into_iter() .map(|(index, mode, composition_set)| composition_set.shard(mode, index)) @@ -229,6 +234,7 @@ impl Dispatcher { input_sets_local, output_mapping.clone(), non_caching, + recorder.get_new_recorder().unwrap(), )) }) .collect(); @@ -236,9 +242,12 @@ impl Dispatcher { join_all(results).await.into_iter().collect(); let mut composition_set_maps = composition_results?.into_iter(); if let Some(mut result_set_map) = composition_set_maps.next() { + recorder.link_new_recorder(result_set_map.1); for additional_set_map in composition_set_maps { - for (key, mut additional_set) in additional_set_map.into_iter() { + recorder.link_new_recorder(additional_set_map.1); + for (key, mut additional_set) in additional_set_map.0.into_iter() { result_set_map + .0 .entry(key) .and_modify(|existing_set| { existing_set @@ -248,9 +257,12 @@ impl Dispatcher { .or_insert(additional_set); } } - return Ok(result_set_map); + return Ok((result_set_map.0, recorder)); } else { - return Ok(BTreeMap::new()); + return Ok(( + BTreeMap::new(), + Recorder::new(Arc::new(std::sync::Mutex::new(Archive::new()))), + )); }; } @@ -262,39 +274,40 @@ impl Dispatcher { inputs: Vec<(usize, CompositionSet)>, output_mapping: Vec>, non_caching: bool, + mut recorder: Recorder, ) -> Pin< Box< - dyn Future>> + dyn Future, Recorder)>> + 'dispatcher + Send, >, > { Box::pin(async move { - let recorder = Recorder::new(self.archive.clone(), RecordPoint::Arrival); - // start new record for the function // find an engine capable of running the function // TODO actual scheduling decisions let options = self.function_registry.get_options(function_id).await?; if let Some(alternative) = options.iter().next() { match &alternative.function_type { FunctionType::Function(engine_id, ctx_size) => { - let (context, config, metadata) = self + recorder.record(RecordPoint::PrepareEnvQueue)?; + let (context, config, metadata, mut recorder) = self .prepare_for_engine( function_id, *engine_id, inputs, *ctx_size, non_caching, - recorder.clone(), + recorder, ) .await?; + recorder.record(RecordPoint::GetEngineQueue)?; let (context, mut recorder) = self .run_on_engine( *engine_id, config, metadata.output_sets, context, - recorder.clone(), + recorder, ) .await?; recorder.record(RecordPoint::FutureReturn)?; @@ -319,28 +332,32 @@ impl Dispatcher { }); }) .collect(); - return Ok(composition_sets); + return Ok((composition_sets, recorder)); } FunctionType::Composition(composition) => { // need to set the inner composition indexing to the outer composition indexing - let compositon_output = self + let (compositon_output, recorder) = self .queue_composition( composition.clone(), BTreeMap::from_iter(inputs), non_caching, + recorder, ) .await?; - return Ok(compositon_output - .into_iter() - .filter_map(|(function_id, composition)| { - if output_mapping.len() < function_id { - return None; - } - return output_mapping[function_id].and_then(|composition_id| { - Some((composition_id, composition)) - }); - }) - .collect()); + return Ok(( + compositon_output + .into_iter() + .filter_map(|(function_id, composition)| { + if output_mapping.len() < function_id { + return None; + } + return output_mapping[function_id].and_then( + |composition_id| Some((composition_id, composition)), + ); + }) + .collect(), + recorder, + )); } } } else { @@ -357,7 +374,7 @@ impl Dispatcher { ctx_size: usize, non_caching: bool, mut recorder: Recorder, - ) -> DandelionResult<(Context, FunctionConfig, Metadata)> { + ) -> DandelionResult<(Context, FunctionConfig, Metadata, Recorder)> { let metadata = self.function_registry.get_metadata(function_id).await?; // get context and load static data let context_id = match self.type_map.get(&engine_type) { @@ -369,10 +386,17 @@ impl Dispatcher { None => return Err(DandelionError::DispatcherConfigError), }; // start doing transfers - recorder.record(RecordPoint::LoadStart)?; - let (mut function_context, function_config) = self + recorder.record(RecordPoint::LoadQueue)?; + let (mut function_context, function_config, mut recorder) = self .function_registry - .load(function_id, engine_type, domain, ctx_size, non_caching) + .load( + function_id, + engine_type, + domain, + ctx_size, + non_caching, + recorder, + ) .await?; recorder.record(RecordPoint::TransferStart)?; // make sure all input sets are there at the correct index @@ -430,7 +454,7 @@ impl Dispatcher { } } recorder.record(RecordPoint::TransferEnd)?; - return Ok((function_context, function_config, metadata)); + return Ok((function_context, function_config, metadata, recorder)); } async fn run_on_engine( @@ -439,13 +463,14 @@ impl Dispatcher { function_config: FunctionConfig, output_sets: Arc>, function_context: Context, - recorder: Recorder, + mut recorder: Recorder, ) -> DandelionResult<(Context, Recorder)> { // preparation is done, get engine to receive engine let engine_queue = match self.engine_queues.get(&engine_type) { Some(q) => q, None => return Err(DandelionError::DispatcherConfigError), }; + recorder.record(RecordPoint::ExecutionQueue)?; let args = EngineArguments::FunctionArguments(FunctionArguments { config: function_config, context: function_context, diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 3f83d4bc..838e26e3 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -1,4 +1,7 @@ -use dandelion_commons::{DandelionError, DandelionResult, FunctionId}; +use dandelion_commons::{ + records::{RecordPoint, Recorder}, + DandelionError, DandelionResult, FunctionId, +}; use dparser::print_errors; use futures::lock::Mutex; use machine_interface::{ @@ -389,7 +392,10 @@ impl FunctionRegistry { domain: &Box, ctx_size: usize, non_caching: bool, - ) -> DandelionResult<(Context, FunctionConfig)> { + mut recorder: Recorder, + ) -> DandelionResult<(Context, FunctionConfig, Recorder)> { + recorder.record(RecordPoint::LoadStart).unwrap(); + // check if function for the engine is in registry already let function_opt; { @@ -400,7 +406,7 @@ impl FunctionRegistry { }; if let Some(function) = function_opt { let function_context = function.load(domain, ctx_size)?; - return Ok((function_context, function.config.clone())); + return Ok((function_context, function.config.clone(), recorder)); } // if it is not in memory or disk we return the error from loading as it is not available @@ -416,6 +422,6 @@ impl FunctionRegistry { // this happens when the same binary is loaded independently multiple times, // need to figure out how to avoid this } - return Ok((function_context, function_config)); + return Ok((function_context, function_config, recorder)); } } diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index 1652391a..d7d28a0b 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -3,7 +3,10 @@ mod dispatcher_tests { mod function_tests; mod registry_tests; - use dandelion_commons::FunctionId; + use dandelion_commons::{ + records::{Archive, Recorder}, + FunctionId, + }; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, @@ -13,7 +16,7 @@ mod dispatcher_tests { machine_config::EngineType, memory_domain::{Context, ContextTrait, MemoryDomain}, }; - use std::{collections::BTreeMap, sync::Arc}; + use std::{collections::BTreeMap, sync::Arc, sync::Mutex as SyncMutex}; // using 0x802_0000 because that is what WASM specifies const DEFAULT_CONTEXT_SIZE: usize = 0x802_0000; // 128MiB @@ -84,6 +87,17 @@ mod dispatcher_tests { } } + fn init_recorder_archive(size: usize) -> Arc> { + // Create the archive + let tracing_archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); + // Initialize recorders for the archive + let recorders: Vec<_> = (0..size) + .map(|_| Recorder::new(tracing_archive.clone())) + .collect(); + tracing_archive.lock().unwrap().init(recorders); + tracing_archive.clone() + } + macro_rules! dispatcherTests { ($name: ident; $domain : ty; $init : expr; $engine_type : expr; $engine_resource: expr) => { use crate::dispatcher_tests::{ diff --git a/dispatcher/tests/dispatcher_tests/function_tests.rs b/dispatcher/tests/dispatcher_tests/function_tests.rs index a73839e3..99d5bfba 100644 --- a/dispatcher/tests/dispatcher_tests/function_tests.rs +++ b/dispatcher/tests/dispatcher_tests/function_tests.rs @@ -1,5 +1,6 @@ -use super::{check_matrix, setup_dispatcher}; +use super::{check_matrix, init_recorder_archive, setup_dispatcher}; use core::mem::size_of; +use dandelion_commons::records::{RecordPoint, Recorder}; use dispatcher::composition::{Composition, CompositionSet, FunctionDependencies, ShardingMode}; use machine_interface::{ function_driver::ComputeResource, @@ -92,12 +93,17 @@ pub fn single_domain_and_engine_basic( engine_type: EngineType, engine_resource: Vec, ) { - let (dispatcher, funcion_id) = + let (dispatcher, function_id) = setup_dispatcher::(relative_path, vec![], vec![], engine_type, engine_resource); + + let archive = init_recorder_archive(100); + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(funcion_id, Vec::new(), Vec::new(), false)); + .block_on(dispatcher.queue_function(function_id, Vec::new(), Vec::new(), false, recorder)); match result { Ok(_) => (), Err(err) => panic!("Failed with: {:?}", err), @@ -126,12 +132,17 @@ pub fn single_domain_and_engine_matmul( let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(in_context))])))]; let outputs = vec![Some(0)]; + + let archive = init_recorder_archive(100); + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(function_id, inputs, outputs, false)); + .block_on(dispatcher.queue_function(function_id, inputs, outputs, false, recorder)); let out_sets = match result { - Ok(context) => context, + Ok((context, _)) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_sets.len()); @@ -171,12 +182,17 @@ pub fn composition_single_matmul( output_map: BTreeMap::from([(1, 0)]), }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); + + let archive = init_recorder_archive(100); + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let mut out_contexts = match result { - Ok(context) => context, + Ok((context, _)) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_contexts.len()); @@ -222,12 +238,17 @@ pub fn composition_parallel_matmul( output_map: BTreeMap::from([(1, 0)]), }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); + + let archive = init_recorder_archive(100); + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let mut out_vec = match result { - Ok(v) => v, + Ok((v, _)) => v, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_vec.len()); @@ -285,13 +306,18 @@ pub fn composition_chain_matmul( ], output_map: BTreeMap::from([(2, 0)]), }; + + let archive = init_recorder_archive(100); + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let out_contexts = match result { - Ok(context) => context, + Ok((context, _)) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_contexts.len()); @@ -386,6 +412,11 @@ pub fn composition_diamond_matmac( ], output_map: BTreeMap::from([(7, 0)]), }; + + let archive = init_recorder_archive(100); + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let context_arc = Arc::new(in_context); let inputs = BTreeMap::from([ (0, CompositionSet::from((0, vec![context_arc.clone()]))), @@ -395,9 +426,9 @@ pub fn composition_diamond_matmac( let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_composition(composition, inputs, false)); + .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let out_contexts = match result { - Ok(context) => context, + Ok((context, _)) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_contexts.len()); diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index 0e05922b..d9b7dfa4 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -1,4 +1,5 @@ -use crate::dispatcher_tests::{check_matrix, setup_dispatcher}; +use crate::dispatcher_tests::{check_matrix, init_recorder_archive, setup_dispatcher}; +use dandelion_commons::records::{Archive, RecordPoint, Recorder}; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, }; @@ -9,7 +10,7 @@ use machine_interface::{ memory_domain::{read_only::ReadOnlyContext, Context, MemoryDomain}, DataItem, DataSet, Position, }; -use std::{collections::BTreeMap, sync::Arc}; +use std::{collections::BTreeMap, sync::Arc, sync::Mutex as SyncMutex}; // using 0x802_0000 as that is what the WASM test binaries expect // TODO fix once the update has been merged allowing for 800_0000 @@ -41,6 +42,8 @@ pub fn single_input_fixed( engine_type: EngineType, engine_resource: Vec, ) { + let archive = init_recorder_archive(10); + let matrix_a = Box::new([1u64, 2u64]); let matrix_b = Box::new([1u64, 3u64]); let matrix_c = Box::new([1u64, 5u64]); @@ -103,20 +106,34 @@ pub fn single_input_fixed( let mut overwrite_inputs = inputs.clone(); overwrite_inputs.push((i, CompositionSet::from((0, vec![mat_fault.clone()])))); let outputs = vec![Some(0)]; + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(function_id, inputs, outputs.clone(), false)); + .block_on(dispatcher.queue_function( + function_id, + inputs, + outputs.clone(), + false, + recorder, + )); + recorder = archive.lock().unwrap().get_recorder().unwrap(); let overwrite_result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(function_id, overwrite_inputs, outputs, false)); + .block_on(dispatcher.queue_function( + function_id, + overwrite_inputs, + outputs, + false, + recorder, + )); let out_sets = match result { - Ok(composition_sets) => composition_sets, + Ok((composition_sets, _)) => composition_sets, Err(err) => panic!("Non overwrite failed with: {:?}", err), }; let overwrite_sets = match overwrite_result { - Ok(compostion_set) => compostion_set, + Ok((compostion_set, _)) => compostion_set, Err(err) => panic!("Overwrite input failed with: {:?}", err), }; assert!(out_sets.contains_key(&0)); @@ -138,6 +155,8 @@ pub fn multiple_input_fixed( engine_type: EngineType, engine_resource: Vec, ) { + let archive = init_recorder_archive(10); + let matrix_a = Box::new([1u64, 2u64]); let matrix_b = Box::new([1u64, 3u64]); let matrix_c = Box::new([1u64, 5u64]); @@ -199,20 +218,34 @@ pub fn multiple_input_fixed( CompositionSet::from((0, vec![mat_fault.clone()])), )); let outputs = vec![Some(0)]; + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(function_id, inputs, outputs.clone(), false)); + .block_on(dispatcher.queue_function( + function_id, + inputs, + outputs.clone(), + false, + recorder, + )); + recorder = archive.lock().unwrap().get_recorder().unwrap(); let overwrite_result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.queue_function(function_id, overwrite_inputs, outputs, false)); + .block_on(dispatcher.queue_function( + function_id, + overwrite_inputs, + outputs, + false, + recorder, + )); let out_sets = match result { - Ok(composition_sets) => composition_sets, + Ok((composition_sets, _)) => composition_sets, Err(err) => panic!("Non overwrite failed with: {:?}", err), }; let overwrite_sets = match overwrite_result { - Ok(compostion_set) => compostion_set, + Ok((compostion_set, _)) => compostion_set, Err(err) => panic!("Overwrite input failed with: {:?}", err), }; assert!(out_sets.contains_key(&0)); diff --git a/machine_interface/src/function_driver/compute_driver/cheri.rs b/machine_interface/src/function_driver/compute_driver/cheri.rs index 92a93e6a..115bf111 100644 --- a/machine_interface/src/function_driver/compute_driver/cheri.rs +++ b/machine_interface/src/function_driver/compute_driver/cheri.rs @@ -105,7 +105,7 @@ impl Engine for CheriEngine { config: &FunctionConfig, mut context: Context, output_set_names: &Vec, - mut recorder: Recorder, + mut recorder: &mut Recorder, ) -> Pin, Context)> + '_ + Send>> { if let Err(err) = recorder.record(RecordPoint::EngineStart) { return Box::pin(core::future::ready((Err(err), context))); diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index e4cc79d3..38fac6ac 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -74,12 +74,12 @@ mod compute_driver_tests { let (function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let archive = Arc::new(Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, output_sets: Arc::new(Vec::new()), - recorder: recorder.clone(), + recorder, })); let _ = tokio::runtime::Builder::new_current_thread() .build() @@ -112,7 +112,10 @@ mod compute_driver_tests { }], })); let archive = Arc::new(Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, @@ -197,7 +200,10 @@ mod compute_driver_tests { }], })); let archive = Arc::new(Mutex::new(Archive::new())); - let recorder = Recorder::new(archive.clone(), RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, @@ -288,7 +294,10 @@ mod compute_driver_tests { ], })); let archive = Arc::new(Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, @@ -430,7 +439,10 @@ mod compute_driver_tests { ], })); let archive = Arc::new(Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index 363ada59..0a0f4135 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -7,7 +7,7 @@ use crate::{ DataItem, DataSet, Position, }; use core_affinity::set_for_current; -use dandelion_commons::{DandelionError, DandelionResult}; +use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; use hyper::{body::HttpBody, Body, Client, HeaderMap, Method, Request, Version}; use log::error; use std::sync::Arc; diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index e501ad53..fe542823 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -77,7 +77,7 @@ mod system_driver_tests { write_request_line(&mut context, request).expect("Should be able to prepare request line"); let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, @@ -150,7 +150,7 @@ mod system_driver_tests { .expect("Should be able to write body"); let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let mut recorder = Recorder::new(archive); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, diff --git a/server/src/main.rs b/server/src/main.rs index c9881d96..fbcded27 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,5 +1,6 @@ use bytes::Buf; use core_affinity::{self, CoreId}; +use dandelion_commons::records::{Archive, RecordPoint, Recorder}; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, @@ -34,7 +35,7 @@ use std::{ path::PathBuf, sync::{ atomic::{AtomicU8, Ordering}, - Arc, Once, + Arc, Mutex as SyncMutex, Once, }, }; use tokio::runtime::Builder; @@ -62,7 +63,8 @@ async fn run_chain( function_name: String, get_uri: String, post_uri: String, -) -> u64 { + mut recorder: Recorder, +) -> (u64, Recorder) { // TODO just have all the strings concatinated and create const context let domain = MmapMemoryDomain::init(machine_interface::memory_domain::MemoryResource::None) .expect("Should be able to get Mmap domain"); @@ -106,8 +108,11 @@ async fn run_chain( ]; let output_mapping = vec![Some(0), Some(1)]; - let result = dispatcher - .queue_function_by_name(function_name, inputs, output_mapping, is_cold) + recorder + .record(RecordPoint::QueueFunctionDispatcher) + .unwrap(); + let (result, recorder) = dispatcher + .queue_function_by_name(function_name, inputs, output_mapping, is_cold, recorder) .await .expect("Should get response from chain"); assert_eq!(2, result.len()); @@ -147,7 +152,7 @@ async fn run_chain( .expect("Should be able to read result"); let checksum = u64::from_ne_bytes(result_vec[0..8].try_into().unwrap()); - return checksum; + return (checksum, recorder); } async fn run_mat_func( @@ -156,7 +161,8 @@ async fn run_mat_func( rows: usize, cols: usize, function_name: String, -) -> i64 { + mut recorder: Recorder, +) -> (i64, Recorder) { let mat_size: usize = rows * cols; // Initialize matrix if necessary @@ -177,17 +183,23 @@ async fn run_mat_func( CompositionSet::from((0, vec![(Arc::new(input_context))])), )]; let outputs = vec![Some(0)]; - let result: Result, dandelion_commons::DandelionError> = - dispatcher - .queue_function_by_name(function_name, inputs, outputs, is_cold) - .await; - - let result_context = result - .expect("should get result from function") + recorder + .record(RecordPoint::QueueFunctionDispatcher) + .unwrap(); + let result: Result< + (BTreeMap, Recorder), + dandelion_commons::DandelionError, + > = dispatcher + .queue_function_by_name(function_name, inputs, outputs, is_cold, recorder) + .await; + + let (mut result_map, recorder) = result.expect("should get result from function"); + + let result_context: CompositionSet = result_map .remove(&0) .expect("should have composition set 0"); - return get_checksum(result_context); + return (get_checksum(result_context), recorder); } // Add the matrix multiplication inputs to the given context @@ -257,7 +269,11 @@ async fn serve_request( is_cold: bool, req: Request, dispatcher: Arc, + archive: Arc>, ) -> Result, Infallible> { + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + // Try to parse the request let request_buf = hyper::body::to_bytes(req.into_body()) .await @@ -265,17 +281,24 @@ async fn serve_request( let request_map: MatrixRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - let response_vec: Vec = run_mat_func( + let (response_vec, mut recorder) = match run_mat_func( dispatcher, is_cold, request_map.rows as usize, request_map.cols as usize, request_map.name, + recorder, ) .await - .to_be_bytes() - .to_vec(); + { + (checksum, recorder) => (checksum.to_be_bytes().to_vec(), recorder), + }; + let response = Ok::<_, Infallible>(Response::new(response_vec.into())); + + recorder.record(RecordPoint::EndService).unwrap(); + archive.lock().unwrap().add_recorder(recorder); + return response; } @@ -290,28 +313,41 @@ async fn serve_chain( is_cold: bool, req: Request, dispatcher: Arc, + archive: Arc>, ) -> Result, Infallible> { + let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let _ = recorder.record(RecordPoint::Arrival); + let request_buf = hyper::body::to_bytes(req.into_body()) .await .expect("Should be able to parse body"); let request_map: ChainRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - let response_vec = run_chain( + let (response_vec, mut recorder) = match run_chain( dispatcher, is_cold, request_map.name, request_map.get_uri, request_map.post_uri, + recorder, ) .await - .to_be_bytes() - .to_vec(); + { + (checksum, recorder) => (checksum.to_be_bytes().to_vec(), recorder), + }; let response = Ok::<_, Infallible>(Response::new(response_vec.into())); + + recorder.record(RecordPoint::EndService).unwrap(); + archive.lock().unwrap().add_recorder(recorder); + return response; } -async fn serve_native(_req: Request) -> Result, Infallible> { +async fn serve_native( + _req: Request, + _archive: Arc>, +) -> Result, Infallible> { // Try to parse the request let mut request_buf = hyper::body::to_bytes(_req.into_body()) .await @@ -431,33 +467,36 @@ async fn register_composition( async fn serve_stats( _req: Request, - dispatcher: Arc, + archive: Arc>, ) -> Result, Infallible> { - let archive_guard = match dispatcher.archive.lock() { + let mut archive_guard = match archive.lock() { Ok(guard) => guard, Err(_) => { return Ok::<_, Infallible>(Response::new("Could not lock archive for stats".into())) } }; - return Ok::<_, Infallible>(Response::new(archive_guard.get_summary().into())); + let response: Response = Response::new(archive_guard.get_summary().into()); + archive_guard.reset_all(); + return Ok::<_, Infallible>(response); } async fn service( req: Request, dispatcher: Arc, + archive: Arc>, ) -> Result, Infallible> { let uri = req.uri().path(); match uri { "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, - "/cold/matmul" => serve_request(true, req, dispatcher).await, - "/hot/matmul" => serve_request(false, req, dispatcher).await, - "/cold/compute" => serve_chain(true, req, dispatcher).await, - "/hot/compute" => serve_chain(false, req, dispatcher).await, - "/cold/io" => serve_chain(true, req, dispatcher).await, - "/hot/io" => serve_chain(false, req, dispatcher).await, - "/native" => serve_native(req).await, - "/stats" => serve_stats(req, dispatcher).await, + "/cold/matmul" => serve_request(true, req, dispatcher, archive).await, + "/hot/matmul" => serve_request(false, req, dispatcher, archive).await, + "/cold/compute" => serve_chain(true, req, dispatcher, archive).await, + "/hot/compute" => serve_chain(false, req, dispatcher, archive).await, + "/cold/io" => serve_chain(true, req, dispatcher, archive).await, + "/hot/io" => serve_chain(false, req, dispatcher, archive).await, + "/native" => serve_native(req, archive).await, + "/stats" => serve_stats(req, archive).await, _ => Ok::<_, Infallible>(Response::new( // format!("Hello, World! You asked for: {}\n", uri).into(), format!("Hello, Wor\n").into(), @@ -526,16 +565,25 @@ fn main() -> () { let dispatcher_ptr = Arc::new(Dispatcher::init(resource_pool).expect("Should be able to start dispatcher")); + // Recording setup + let tracing_archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); + let recorders: Vec<_> = (0..10000000) + .map(|_| Recorder::new(tracing_archive.clone())) + .collect(); + tracing_archive.lock().unwrap().init(recorders); + let _guard = runtime.enter(); // ready http endpoint let addr = SocketAddr::from(([0, 0, 0, 0], 8080)); let make_svc = make_service_fn(move |_| { let new_dispatcher_ptr = dispatcher_ptr.clone(); + let new_archive_ptr: Arc> = tracing_archive.clone(); async move { Ok::<_, Infallible>(service_fn(move |req| { let service_dispatcher_ptr = new_dispatcher_ptr.clone(); - service(req, service_dispatcher_ptr) + let service_archive_ptr = new_archive_ptr.clone(); + service(req, service_dispatcher_ptr, service_archive_ptr) })) } }); From f85b8e801023aa1ddda234658086317a65b6fc0c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 15 Mar 2024 16:37:26 +0100 Subject: [PATCH 032/176] Function.load() implemented --- machine_interface/src/function_driver.rs | 3 ++- .../compute_driver/compute_driver_tests.rs | 19 +++++++++++++++++-- .../src/function_driver/compute_driver/gpu.rs | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 5545b1f3..ac002ed9 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -95,7 +95,8 @@ impl Function { context.occupy_space(0, c.sdk_heap_base)?; Ok(context) } - FunctionConfig::GpuConfig(_) => todo!(), + // no need to occupy space or anything like that as long as context is only inputs/outputs + FunctionConfig::GpuConfig(_) => domain.acquire_context(ctx_size), } } } diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index f55000ae..1943d4a4 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -660,11 +660,15 @@ mod compute_driver_tests { function_driver::{ compute_driver::gpu::{dummy_run, utils::dummy_config, GpuDriver, GpuLoop}, thread_utils::EngineLoop, - Driver, FunctionConfig, GpuConfig, + ComputeResource, Driver, FunctionConfig, GpuConfig, + }, + memory_domain::{ + gpu::GpuContext, mmu::MmuMemoryDomain, Context, MemoryDomain, MemoryResource, }, - memory_domain::{gpu::GpuContext, mmu::MmuMemoryDomain, Context, MemoryDomain}, }; + use super::engine_minimal; + #[test] fn run_dummy_gpu_payload() { let mut runner = GpuLoop::init(0).unwrap(); @@ -685,5 +689,16 @@ mod compute_driver_tests { } assert!(res.is_ok()); } + + #[test] + fn minimal() { + let driver: Box = Box::new(GpuDriver {}); + engine_minimal::( + "foo", + MemoryResource::None, + driver, + vec![ComputeResource::GPU(1, 1)], + ); + } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 34183d2d..dafdbde6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -204,7 +204,7 @@ impl Driver for GpuDriver { let config = FunctionConfig::GpuConfig(utils::dummy_config()?); // TODO: change this! - let total_size = 4096usize; + let total_size = 0usize; let mut context = static_domain.acquire_context(total_size)?; From 7fa820bd4f5a2af2c55719d73b570a4f1c6de9f6 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:13:43 +0100 Subject: [PATCH 033/176] argument consumption in gpu_run() --- machine_interface/hip_interface/module.hsaco | Bin 28136 -> 43016 bytes .../compute_driver/compute_driver_tests.rs | 15 ---------- .../src/function_driver/compute_driver/gpu.rs | 27 ++++++++++++------ .../compute_driver/gpu/utils.rs | 20 +++++++++---- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/machine_interface/hip_interface/module.hsaco b/machine_interface/hip_interface/module.hsaco index d27b6195d158e286a508877647d085f66430aa6f..5b1ddb870a05e1ab8c10b4f15b16a6ea9e122c11 100644 GIT binary patch literal 43016 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 Hb@~4ftzIM` delta 3156 zcmai0eQaA-6+id-`T6u z(LO(WtK)=_HaXRZsv;IfQv?V#HGeQ6>=@99I!($lBoK`d1!)WUr*u^OF{YSv?dMS1 zLa$_>ch0%@oO6Hoo^wxPjc?v$7oO&uCzemVUCe*@6t-#;kyQ`mMuCEs=NS>J_$m|jxqNa?W09`@hIML zm$1WV_4KpvCHHx@INqvw4L>aHVNQIfx)O)W4lx;vD~FORWm^`kD+?sw@^4CbtwwRL zxbsHBc>>kATvLvJuCe<@@{+%sD7`>z$Ra}&S+M*_%#;eO#1PbDu|WZ=F(IVkrC&~7 zpJU-?ZFxFC#7)-1I36r#M)DiMNv3M1wXl0`&Tkb=7<+1KP^%qOa~?>tvX^xDliJa_ z`N5}t#rR5qgdEfrB4BW?M^8|$emNLRsgOu>IKTc1tzaB< zkfdI)$%9$0>PBES%q)ry#)}(V!s`7?ksY%vo)Tuc;Yqi^xioOubO(BtT#BVaufT84 z)ImHA2{4$!Vmu=omW(ZCutbVOEUi1Yriw`~D<$a+n@(leOzNZTt7*fuS6HV+6~k`W zBQasr313@NDPDsX+|I_*YQ{+DuoW*7jz*I2aS41X{B2Fi&55TRFqH;5Mh@bsZL6Tu zDG`8`MQM>{2$w3!10ax!<=(8 z>b>&~emj>7^16mkm~uSR&|k+DFh<1!NzKF)-0IaW)-qkE4WBM1psWGij_+P9$F)Hf zf4X-cb~jE`a#u4s5qnj+Pj_&?ev0O*0F4fOvvEI#@~_5_Ri$%tV5q5-_<^Q2;qzYofS=CtC%w`=~M=VQ2 zHA>P4`KxK+G6s(~8vKC%Ymge5Mb;PaL`$Vjb*YA<*nyFjBh@Oqm;xib5dyCyR%DfM zqquMqT`o@;-*0IRsm!25r^BX$7vCbJ5U8qawJfUA1#w_c>tod+@JZgN*C;hgV-GPj z-P*}Q_-5(#gVoEUTklER0Mx)7ZKPyhW!GR z@=SU3A^Ul@qti-8%K~`%xe}igPQGUV^Fi=J>L{hAIK2>XKiw{$gFd7@W*q<8@dVkv zgH?E_(<3x=y9AmXztFj#H2b3g%yc%Hn$eu*ADt6yFFxBfz`}T`t6%7x;(m!$H@lv+ zgj9}g-Fqw{x5>iNJWX^)y$)1-iA%$bMrzc1I zdUsa_ERxQxR8-)`8b}6)3D zEu#7&VsUCpubrubRaxgXptO$DzUkFi=M@PqF|F5tnUocG?>WK}_{^n>Ju3H7%__^S z1*?zZ@#{`?CSJ5qH1Aw+z2;nS&bx|=qQbt@sr1^&ws>m@n@gd}nUqIh$YxUvX45%2 zk5C;HwJtLmtaZ&!auYD!wLNt^J4LUFxIA3f2xdl?_ftc|ICR3_Awh)7_=U8tY)^Vi z=q({59w#S<(%?l7y@tdG74aI8p5yWpRaQxdU;=-fXrrzCJ`pN)h&PQ&)(ZqfRFQiP z)kS5xXe#LtYjk-l{tGFN+5LUV-su|>|9B0zXKV59H(QfO&wp5SefndGf9sdY?OBC) z&8KvAYl=}Fw3174BdP#g?p05;@Ys1Km2@>ds^Wd~pj{6YX$C8H$3%Ip0u77LHmadu zv&UsiTkC2udm+Fz58gRjiLdL&Y?=@^HRABu0Q2Crxd85p9J9HFw5?T4_Iur{+Kw}g zoE>F(XBys_Z?b3^4R1$Un3k+CKCoZ^?(Zz~iwYY<`(h2ht6}S6wP!@jJ&#n}^W(BM zH&=$I7FQy#n_ZC4)QIknfeb%4<>o>Vjhc|ZV#*1F-1w9Dr(y;#=lR0_PS<31o@1s$ z^g5zzGMlzq2%Cx~q7Q4cdPFxD*;mkx-{Vuoplc!A0UO zo5)?pTUQ3$cTKK9-^L#;Rpa3$_fGd(=wcOoeyQ7C=+_JV`$3xDWiMcS9RIR3%#LI2 o)nV`F@*#|vJ9H9j#h0$O*~bJ1G{$qTetWgTo-rjK2nmCK0|R~#WB>pF diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 1943d4a4..7b95ab62 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -675,21 +675,6 @@ mod compute_driver_tests { assert!(dummy_run(&mut runner).is_ok()); } - #[test] - fn parse_then_exec() { - let driver = GpuDriver {}; - let mut runner = GpuLoop::init(0).unwrap(); - let static_domain: Box = Box::new(MmuMemoryDomain {}); - let func = driver.parse_function("foo".into(), &static_domain).unwrap(); - let config = FunctionConfig::GpuConfig(dummy_config().unwrap()); - - let res = runner.run(config, func.context, Arc::new(vec![])); - if res.is_err() { - eprintln!("{:?}", res); - } - assert!(res.is_ok()); - } - #[test] fn minimal() { let driver: Box = Box::new(GpuDriver {}); diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index dafdbde6..0aa10333 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -12,7 +12,10 @@ use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; use std::{collections::HashMap, ptr::null, thread}; -use self::{hip::DEFAULT_STREAM, utils::Action}; +use self::{ + hip::DEFAULT_STREAM, + utils::{Action, Argument}, +}; pub(crate) mod hip; pub(crate) mod utils; @@ -76,6 +79,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { } fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult { + // TODO: handle errors let ContextType::Mmu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); }; @@ -89,12 +93,18 @@ fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult { - let elem: usize = 256; - let args = [ - &buffers.get("A").unwrap().0 as *const _ as *const c_void, - &elem as *const _ as *const c_void, - ]; + Action::ExecKernel(name, args, launch_config) => { + let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); + for arg in args { + match arg { + Argument::BufferPtr(id) => { + params.push(&buffers.get(id).unwrap().0 as *const _ as *const c_void) + } + Argument::BufferLen(id) => params + .push(config.blueprint.temps.get(id).unwrap() as *const _ + as *const c_void), + }; + } hip::module_launch_kernel( *config.kernels.get(name).unwrap(), @@ -106,7 +116,7 @@ fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult, LaunchConfig), + ExecKernel(String, Vec, LaunchConfig), RepeatWhile(Condition, Vec), } @@ -52,7 +56,7 @@ pub fn dummy_config() -> DandelionResult { let kernel_check = hip::module_get_function(&module, "check_mem")?; Ok(GpuConfig { - system_data_struct_offset: 0, // TODO: change this once I understand how it works + system_data_struct_offset: 0, module: Arc::new(module), kernels: Arc::new(HashMap::from([ ("set_mem".into(), kernel_set), @@ -65,12 +69,18 @@ pub fn dummy_config() -> DandelionResult { control_flow: vec![ Action::ExecKernel( "set_mem".into(), - vec!["A".into()], + vec![ + Argument::BufferPtr("A".into()), + Argument::BufferLen("A".into()), + ], LaunchConfig::one_dimensional((256 + 1024 - 1) / 1024, 1024, 0), ), Action::ExecKernel( "check_mem".into(), - vec!["A".into()], + vec![ + Argument::BufferPtr("A".into()), + Argument::BufferLen("A".into()), + ], LaunchConfig::one_dimensional(1, 1, 0), ), ], From 4522be76fe95bdf1bf1a5d1e354e699e03ea5fe7 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 18 Mar 2024 10:52:38 +0100 Subject: [PATCH 034/176] Clean up timestamping to be feature flag --- dandelion_commons/Cargo.toml | 4 + dandelion_commons/src/lib.rs | 2 - dandelion_commons/src/records.rs | 227 ++++++++++++------ dispatcher/Cargo.toml | 3 +- dispatcher/src/dispatcher.rs | 18 +- dispatcher/tests/dispatcher_tests.rs | 18 +- .../tests/dispatcher_tests/function_tests.rs | 28 +-- .../tests/dispatcher_tests/registry_tests.rs | 18 +- .../compute_driver/compute_driver_tests.rs | 24 +- .../function_driver/system_driver/hyper.rs | 2 +- .../system_driver/system_driver_tests.rs | 10 +- server/Cargo.toml | 3 +- server/src/main.rs | 74 +++--- 13 files changed, 238 insertions(+), 193 deletions(-) diff --git a/dandelion_commons/Cargo.toml b/dandelion_commons/Cargo.toml index d3feca6d..c469bb67 100644 --- a/dandelion_commons/Cargo.toml +++ b/dandelion_commons/Cargo.toml @@ -3,6 +3,10 @@ name = "dandelion_commons" version = "0.1.0" edition = "2021" +[features] +recorder = [] +timestamp = ["recorder"] + [dependencies] hdrhist = "0.5.0" log = "0.4.14" \ No newline at end of file diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 5f59daff..2caf0a12 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -1,7 +1,5 @@ pub mod records; -use records::RecordPoint; - pub type FunctionId = u64; // TODO define error types, possibly better printing than debug diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 98b930ac..3b246df2 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -1,8 +1,4 @@ -use crate::{DandelionError, DandelionResult}; -use std::{ - sync::{Arc, Mutex}, - time::Instant, -}; +use crate::DandelionResult; #[derive(Clone, Copy, Debug, PartialEq)] pub enum RecordPoint { @@ -21,107 +17,186 @@ pub enum RecordPoint { EndService, // Send response back to the client } -// TODO: becomes a trait + feature flag to enable/disable in the server (?) that switches between different recorders. -pub struct Recorder { - archive: Arc>, - timestamps: Vec, - recorders: Vec, -} +#[cfg(feature = "timestamp")] +mod timestamp { + use crate::{DandelionError, DandelionResult}; + use std::{ + env, + sync::{Arc, Mutex}, + time::Instant, + }; + + pub struct TimestampContainer { + timestamps: Vec, + pub recorders: Arc>>, + } -impl Recorder { - pub fn new(archive: Arc>) -> Recorder { - let start_time = archive.lock().unwrap().start_time; - Recorder { - archive, - timestamps: vec![start_time; 13], - recorders: Vec::with_capacity(10), + impl TimestampContainer { + pub fn record(&mut self, current_point: &super::RecordPoint) { + self.timestamps[*current_point as usize] = Instant::now(); + } + fn reset(&mut self, zero_time: Instant, freed: &mut Vec) { + self.timestamps = vec![zero_time; 13]; + for mut container in Arc::get_mut(&mut self.recorders) + .unwrap() + .get_mut() + .unwrap() + .drain(..) + { + container.reset(zero_time, freed); + freed.push(container); + } } } - pub fn record(&mut self, current_point: RecordPoint) -> DandelionResult<()> { - self.timestamps[current_point as usize] = Instant::now(); - Ok(()) + pub struct TimestampArchive { + start_time: Instant, + free_recorders: Mutex>, + used_recorders: Mutex>, } - pub fn get_new_recorder(&mut self) -> DandelionResult { - match self.archive.lock().unwrap().get_recorder() { - Some(recorder) => Ok(recorder), - None => Err(DandelionError::RecorderNotAvailable), + impl TimestampArchive { + pub fn init() -> Self { + let pool_size = match env::var("DANDELION_TIMESTAMP_COUNT") { + Ok(container_count_string) => container_count_string.parse().unwrap_or(100), + Err(_) => 100, + }; + let zero_time = Instant::now(); + let mut free_pool = Vec::new(); + free_pool.resize_with(pool_size, || TimestampContainer { + timestamps: vec![zero_time; 13], + recorders: Arc::new(Mutex::new(vec![])), + }); + let mut used_pool = Vec::new(); + used_pool.reserve(pool_size); + return Self { + start_time: zero_time, + free_recorders: Mutex::new(free_pool), + used_recorders: Mutex::new(used_pool), + }; } - } - pub fn link_new_recorder(&mut self, new_recorder: Recorder) { - self.recorders.push(new_recorder); - } + pub fn get_timestamp_container(&self) -> DandelionResult { + return self + .free_recorders + .lock() + .unwrap() + .pop() + .ok_or(DandelionError::RecorderNotAvailable); + } + + pub fn return_timestamp_container(&self, used: TimestampContainer) { + self.used_recorders.lock().unwrap().push(used); + } + + pub fn reset(&self) { + // For each recorder in the used_recorders, reset it and move it to the free_recorders. + // Recorders are recursive: each has a vector of sub-recorders. + let mut free_guard = self.free_recorders.lock().unwrap(); + for mut container in self.used_recorders.lock().unwrap().drain(..) { + container.reset(self.start_time, &mut free_guard); + free_guard.push(container); + } + } + + fn append_timestamps( + &self, + timestamps: &TimestampContainer, + summary: &mut String, + level: usize, + ) { + let tabs = "\t".repeat(level); + for (i, timestamp) in timestamps.timestamps.iter().enumerate() { + let duration = timestamp.duration_since(self.start_time).as_nanos(); + if duration > 0 { + summary.push_str(&format!("{}{}: {}\n", tabs, i, duration)); + }; + } + + for sub_recorder in timestamps.recorders.lock().unwrap().iter() { + self.append_timestamps(sub_recorder, summary, level + 1); + } + } - pub fn reset_recorder(&mut self, zero_time: Instant, free_recorders: &mut Vec) { - // Reset the timestamps - self.timestamps = vec![zero_time; 13]; - // Reset the sub-recorders - for mut recorder in self.recorders.drain(..) { - recorder.reset_recorder(zero_time, free_recorders); - free_recorders.push(recorder); + pub fn get_summary(&self, summary: &mut String) { + for recorder in self.used_recorders.lock().unwrap().iter() { + self.append_timestamps(recorder, summary, 0); + } } } } -pub struct Archive { - start_time: Instant, - free_recorders: Vec, - used_recorders: Vec, +/// General implementation of recorder struct, additional functionality enabled by flags +pub struct Recorder { + #[cfg(feature = "recorder")] + archive: &'static Archive, + #[cfg(feature = "timestamp")] + timestamps: timestamp::TimestampContainer, } -impl Archive { - pub fn new() -> Archive { - Archive { - start_time: Instant::now(), - free_recorders: Vec::new(), - used_recorders: Vec::new(), - } +impl Recorder { + pub fn record(&mut self, _current_point: RecordPoint) -> DandelionResult<()> { + #[cfg(feature = "timestamp")] + self.timestamps.record(&_current_point); + Ok(()) } - pub fn init(&mut self, free_recorders: Vec) { - self.free_recorders = free_recorders; - self.used_recorders.reserve(self.free_recorders.capacity()); + pub fn get_new_recorder(&self) -> DandelionResult { + #[cfg(feature = "recorder")] + return self.archive.get_recorder(); + #[cfg(not(feature = "recorder"))] + return Ok(Recorder {}); } - pub fn get_recorder(&mut self) -> Option { - self.free_recorders.pop() + pub fn link_recorder(&mut self, _new_recorder: Recorder) { + #[cfg(feature = "timestamp")] + self.timestamps + .recorders + .lock() + .unwrap() + .push(_new_recorder.timestamps); } +} - pub fn add_recorder(&mut self, recorder: Recorder) { - self.used_recorders.push(recorder); +pub struct Archive { + #[cfg(feature = "timestamp")] + timestamp_archive: timestamp::TimestampArchive, +} + +impl Archive { + pub fn init() -> Self { + return Archive { + #[cfg(feature = "timestamp")] + timestamp_archive: timestamp::TimestampArchive::init(), + }; } - fn append_timestamps(&self, recorder: &Recorder, summary: &mut String, level: usize) { - let tabs = "\t".repeat(level); - for (i, timestamp) in recorder.timestamps.iter().enumerate() { - let duration = timestamp.duration_since(self.start_time).as_nanos(); - if duration > 0 { - summary.push_str(&format!("{}{}: {}\n", tabs, i, duration)); - }; - } + pub fn get_recorder(&'static self) -> DandelionResult { + return Ok(Recorder { + #[cfg(feature = "recorder")] + archive: self, + #[cfg(feature = "timestamp")] + timestamps: self.timestamp_archive.get_timestamp_container()?, + }); + } - for sub_recorder in &recorder.recorders { - self.append_timestamps(sub_recorder, summary, level + 1); - } + pub fn return_recorder(&self, _recorder: Recorder) { + #[cfg(feature = "timestamp")] + self.timestamp_archive + .return_timestamp_container(_recorder.timestamps); } pub fn get_summary(&self) -> String { // For each recorder, print the timestamps + #[allow(unused_mut)] let mut summary = String::new(); - for recorder in &self.used_recorders { - self.append_timestamps(recorder, &mut summary, 0); - } - summary + #[cfg(feature = "timestamp")] + self.timestamp_archive.get_summary(&mut summary); + return summary; } - pub fn reset_all(&mut self) { - // For each recorder in the used_recorders, reset it and move it to the free_recorders. - // Recorders are recursive: each has a vector of sub-recorders. - for mut recorder in self.used_recorders.drain(..) { - recorder.reset_recorder(self.start_time, &mut self.free_recorders); - self.free_recorders.push(recorder); - } + pub fn reset(&self) { + #[cfg(feature = "timestamp")] + self.timestamp_archive.reset(); } } diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index b05c3065..f1daf44a 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -18,4 +18,5 @@ dparser = {path = "../dparser"} cheri = ["machine_interface/cheri"] wasm = ["machine_interface/wasm"] mmu = ["machine_interface/mmu"] -hyper_io = ["machine_interface/hyper_io"] \ No newline at end of file +hyper_io = ["machine_interface/hyper_io"] +timestamp = ["dandelion_commons/timestamp"] \ No newline at end of file diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 0e70f0f8..ac5bd55e 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -6,7 +6,7 @@ use crate::{ }; use core::pin::Pin; use dandelion_commons::{ - records::{Archive, RecordPoint, Recorder}, + records::{RecordPoint, Recorder}, DandelionError, DandelionResult, FunctionId, }; use futures::{ @@ -161,7 +161,7 @@ impl Dispatcher { for (composition_set_index, composition_set) in new_compositions.0 { inputs.insert(composition_set_index, composition_set); } - recorder.link_new_recorder(new_compositions.1); + recorder.link_recorder(new_compositions.1); // add newly ready ones (ready_functions, non_ready_functions) = non_ready_functions.into_iter().partition( |FunctionDependencies { @@ -241,13 +241,12 @@ impl Dispatcher { let composition_results: DandelionResult> = join_all(results).await.into_iter().collect(); let mut composition_set_maps = composition_results?.into_iter(); - if let Some(mut result_set_map) = composition_set_maps.next() { - recorder.link_new_recorder(result_set_map.1); + if let Some((mut result_set_map, result_recorder)) = composition_set_maps.next() { + recorder.link_recorder(result_recorder); for additional_set_map in composition_set_maps { - recorder.link_new_recorder(additional_set_map.1); + recorder.link_recorder(additional_set_map.1); for (key, mut additional_set) in additional_set_map.0.into_iter() { result_set_map - .0 .entry(key) .and_modify(|existing_set| { existing_set @@ -257,12 +256,9 @@ impl Dispatcher { .or_insert(additional_set); } } - return Ok((result_set_map.0, recorder)); + return Ok((result_set_map, recorder)); } else { - return Ok(( - BTreeMap::new(), - Recorder::new(Arc::new(std::sync::Mutex::new(Archive::new()))), - )); + return Ok((BTreeMap::new(), recorder)); }; } diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index d7d28a0b..1652391a 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -3,10 +3,7 @@ mod dispatcher_tests { mod function_tests; mod registry_tests; - use dandelion_commons::{ - records::{Archive, Recorder}, - FunctionId, - }; + use dandelion_commons::FunctionId; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, @@ -16,7 +13,7 @@ mod dispatcher_tests { machine_config::EngineType, memory_domain::{Context, ContextTrait, MemoryDomain}, }; - use std::{collections::BTreeMap, sync::Arc, sync::Mutex as SyncMutex}; + use std::{collections::BTreeMap, sync::Arc}; // using 0x802_0000 because that is what WASM specifies const DEFAULT_CONTEXT_SIZE: usize = 0x802_0000; // 128MiB @@ -87,17 +84,6 @@ mod dispatcher_tests { } } - fn init_recorder_archive(size: usize) -> Arc> { - // Create the archive - let tracing_archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); - // Initialize recorders for the archive - let recorders: Vec<_> = (0..size) - .map(|_| Recorder::new(tracing_archive.clone())) - .collect(); - tracing_archive.lock().unwrap().init(recorders); - tracing_archive.clone() - } - macro_rules! dispatcherTests { ($name: ident; $domain : ty; $init : expr; $engine_type : expr; $engine_resource: expr) => { use crate::dispatcher_tests::{ diff --git a/dispatcher/tests/dispatcher_tests/function_tests.rs b/dispatcher/tests/dispatcher_tests/function_tests.rs index 99d5bfba..15dc0119 100644 --- a/dispatcher/tests/dispatcher_tests/function_tests.rs +++ b/dispatcher/tests/dispatcher_tests/function_tests.rs @@ -1,6 +1,6 @@ -use super::{check_matrix, init_recorder_archive, setup_dispatcher}; +use super::{check_matrix, setup_dispatcher}; use core::mem::size_of; -use dandelion_commons::records::{RecordPoint, Recorder}; +use dandelion_commons::records::{Archive, RecordPoint}; use dispatcher::composition::{Composition, CompositionSet, FunctionDependencies, ShardingMode}; use machine_interface::{ function_driver::ComputeResource, @@ -96,8 +96,8 @@ pub fn single_domain_and_engine_basic( let (dispatcher, function_id) = setup_dispatcher::(relative_path, vec![], vec![], engine_type, engine_resource); - let archive = init_recorder_archive(100); - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let result = tokio::runtime::Builder::new_current_thread() @@ -133,8 +133,8 @@ pub fn single_domain_and_engine_matmul( let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(in_context))])))]; let outputs = vec![Some(0)]; - let archive = init_recorder_archive(100); - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let result = tokio::runtime::Builder::new_current_thread() @@ -183,8 +183,8 @@ pub fn composition_single_matmul( }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let archive = init_recorder_archive(100); - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let result = tokio::runtime::Builder::new_current_thread() @@ -239,8 +239,8 @@ pub fn composition_parallel_matmul( }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let archive = init_recorder_archive(100); - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let result = tokio::runtime::Builder::new_current_thread() @@ -307,8 +307,8 @@ pub fn composition_chain_matmul( output_map: BTreeMap::from([(2, 0)]), }; - let archive = init_recorder_archive(100); - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); @@ -413,8 +413,8 @@ pub fn composition_diamond_matmac( output_map: BTreeMap::from([(7, 0)]), }; - let archive = init_recorder_archive(100); - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let context_arc = Arc::new(in_context); diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index d9b7dfa4..6c696f85 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -1,5 +1,5 @@ -use crate::dispatcher_tests::{check_matrix, init_recorder_archive, setup_dispatcher}; -use dandelion_commons::records::{Archive, RecordPoint, Recorder}; +use crate::dispatcher_tests::{check_matrix, setup_dispatcher}; +use dandelion_commons::records::Archive; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, }; @@ -10,7 +10,7 @@ use machine_interface::{ memory_domain::{read_only::ReadOnlyContext, Context, MemoryDomain}, DataItem, DataSet, Position, }; -use std::{collections::BTreeMap, sync::Arc, sync::Mutex as SyncMutex}; +use std::{collections::BTreeMap, sync::Arc}; // using 0x802_0000 as that is what the WASM test binaries expect // TODO fix once the update has been merged allowing for 800_0000 @@ -42,7 +42,7 @@ pub fn single_input_fixed( engine_type: EngineType, engine_resource: Vec, ) { - let archive = init_recorder_archive(10); + let archive = Box::leak(Box::new(Archive::init())); let matrix_a = Box::new([1u64, 2u64]); let matrix_b = Box::new([1u64, 3u64]); @@ -106,7 +106,7 @@ pub fn single_input_fixed( let mut overwrite_inputs = inputs.clone(); overwrite_inputs.push((i, CompositionSet::from((0, vec![mat_fault.clone()])))); let outputs = vec![Some(0)]; - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let mut recorder = archive.get_recorder().unwrap(); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -117,7 +117,7 @@ pub fn single_input_fixed( false, recorder, )); - recorder = archive.lock().unwrap().get_recorder().unwrap(); + recorder = archive.get_recorder().unwrap(); let overwrite_result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -155,7 +155,7 @@ pub fn multiple_input_fixed( engine_type: EngineType, engine_resource: Vec, ) { - let archive = init_recorder_archive(10); + let archive = Box::leak(Box::new(Archive::init())); let matrix_a = Box::new([1u64, 2u64]); let matrix_b = Box::new([1u64, 3u64]); @@ -218,7 +218,7 @@ pub fn multiple_input_fixed( CompositionSet::from((0, vec![mat_fault.clone()])), )); let outputs = vec![Some(0)]; - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let mut recorder = archive.get_recorder().unwrap(); let result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() @@ -229,7 +229,7 @@ pub fn multiple_input_fixed( false, recorder, )); - recorder = archive.lock().unwrap().get_recorder().unwrap(); + recorder = archive.get_recorder().unwrap(); let overwrite_result = tokio::runtime::Builder::new_current_thread() .build() .unwrap() diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 38fac6ac..fd967c1e 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -10,10 +10,10 @@ mod compute_driver_tests { }; use core::panic; use dandelion_commons::{ - records::{Archive, RecordPoint, Recorder}, + records::{Archive, RecordPoint}, DandelionError, }; - use std::sync::{Arc, Mutex}; + use std::sync::Arc; fn loader_empty(dom_init: MemoryResource, driver: Box) { // load elf file @@ -73,8 +73,8 @@ mod compute_driver_tests { ) { let (function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); - let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let recorder = archive.get_recorder().unwrap(); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, context: function_context, @@ -111,8 +111,8 @@ mod compute_driver_tests { key: 0, }], })); - let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); @@ -199,8 +199,8 @@ mod compute_driver_tests { key: 0, }], })); - let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); @@ -293,8 +293,8 @@ mod compute_driver_tests { }, ], })); - let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); @@ -438,8 +438,8 @@ mod compute_driver_tests { }, ], })); - let archive = Arc::new(Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index 0a0f4135..363ada59 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -7,7 +7,7 @@ use crate::{ DataItem, DataSet, Position, }; use core_affinity::set_for_current; -use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; +use dandelion_commons::{DandelionError, DandelionResult}; use hyper::{body::HttpBody, Body, Client, HeaderMap, Method, Request, Version}; use log::error; use std::sync::Arc; diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index fe542823..66a3892f 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -9,7 +9,7 @@ mod system_driver_tests { DataItem, DataSet, Position, }; use dandelion_commons::{ - records::{Archive, RecordPoint, Recorder}, + records::{Archive, RecordPoint}, DandelionResult, }; use std::sync::Arc; @@ -76,8 +76,8 @@ mod system_driver_tests { write_request_line(&mut context, request).expect("Should be able to prepare request line"); - let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let recorder = archive.get_recorder().unwrap(); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, @@ -149,8 +149,8 @@ mod system_driver_tests { .write(body_offset, request_body) .expect("Should be able to write body"); - let archive = std::sync::Arc::new(std::sync::Mutex::new(Archive::new())); - let mut recorder = Recorder::new(archive); + let archive = Box::leak(Box::new(Archive::init())); + let recorder = archive.get_recorder().unwrap(); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, diff --git a/server/Cargo.toml b/server/Cargo.toml index 989e6cb4..3df2c633 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -30,4 +30,5 @@ reqwest = { version = "0.11", default-features = false, features = ["blocking"] cheri = ["machine_interface/cheri"] mmu = ["machine_interface/mmu"] wasm = ["machine_interface/wasm"] -hyper_io = ["machine_interface/hyper_io"] \ No newline at end of file +hyper_io = ["machine_interface/hyper_io"] +timestamp = ["dispatcher/timestamp"] \ No newline at end of file diff --git a/server/src/main.rs b/server/src/main.rs index fbcded27..06f7c8cf 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -12,7 +12,6 @@ use hyper::{ service::{make_service_fn, service_fn}, Body, Request, Response, Server, }; - use log::{error, info}; use machine_interface::{ function_driver::ComputeResource, @@ -22,10 +21,9 @@ use machine_interface::{ }, DataItem, DataSet, Position, }; +use serde::Deserialize; use signal_hook::consts::signal::*; use signal_hook_tokio::Signals; - -use serde::Deserialize; use std::{ collections::BTreeMap, convert::Infallible, @@ -35,7 +33,7 @@ use std::{ path::PathBuf, sync::{ atomic::{AtomicU8, Ordering}, - Arc, Mutex as SyncMutex, Once, + Arc, Once, OnceLock, }, }; use tokio::runtime::Builder; @@ -269,9 +267,8 @@ async fn serve_request( is_cold: bool, req: Request, dispatcher: Arc, - archive: Arc>, ) -> Result, Infallible> { - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); // Try to parse the request @@ -297,7 +294,7 @@ async fn serve_request( let response = Ok::<_, Infallible>(Response::new(response_vec.into())); recorder.record(RecordPoint::EndService).unwrap(); - archive.lock().unwrap().add_recorder(recorder); + TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); return response; } @@ -313,9 +310,8 @@ async fn serve_chain( is_cold: bool, req: Request, dispatcher: Arc, - archive: Arc>, ) -> Result, Infallible> { - let mut recorder = archive.lock().unwrap().get_recorder().unwrap(); + let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); let request_buf = hyper::body::to_bytes(req.into_body()) @@ -339,15 +335,12 @@ async fn serve_chain( let response = Ok::<_, Infallible>(Response::new(response_vec.into())); recorder.record(RecordPoint::EndService).unwrap(); - archive.lock().unwrap().add_recorder(recorder); + TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); return response; } -async fn serve_native( - _req: Request, - _archive: Arc>, -) -> Result, Infallible> { +async fn serve_native(_req: Request) -> Result, Infallible> { // Try to parse the request let mut request_buf = hyper::body::to_bytes(_req.into_body()) .await @@ -465,38 +458,29 @@ async fn register_composition( return Ok::<_, Infallible>(Response::new("Function registered".into())); } -async fn serve_stats( - _req: Request, - archive: Arc>, -) -> Result, Infallible> { - let mut archive_guard = match archive.lock() { - Ok(guard) => guard, - Err(_) => { - return Ok::<_, Infallible>(Response::new("Could not lock archive for stats".into())) - } - }; - let response: Response = Response::new(archive_guard.get_summary().into()); - archive_guard.reset_all(); +async fn serve_stats(_req: Request) -> Result, Infallible> { + let archive_ref = TRACING_ARCHIVE.get().unwrap(); + let response: Response = Response::new(archive_ref.get_summary().into()); + archive_ref.reset(); return Ok::<_, Infallible>(response); } async fn service( req: Request, dispatcher: Arc, - archive: Arc>, ) -> Result, Infallible> { let uri = req.uri().path(); match uri { "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, - "/cold/matmul" => serve_request(true, req, dispatcher, archive).await, - "/hot/matmul" => serve_request(false, req, dispatcher, archive).await, - "/cold/compute" => serve_chain(true, req, dispatcher, archive).await, - "/hot/compute" => serve_chain(false, req, dispatcher, archive).await, - "/cold/io" => serve_chain(true, req, dispatcher, archive).await, - "/hot/io" => serve_chain(false, req, dispatcher, archive).await, - "/native" => serve_native(req, archive).await, - "/stats" => serve_stats(req, archive).await, + "/cold/matmul" => serve_request(true, req, dispatcher).await, + "/hot/matmul" => serve_request(false, req, dispatcher).await, + "/cold/compute" => serve_chain(true, req, dispatcher).await, + "/hot/compute" => serve_chain(false, req, dispatcher).await, + "/cold/io" => serve_chain(true, req, dispatcher).await, + "/hot/io" => serve_chain(false, req, dispatcher).await, + "/native" => serve_native(req).await, + "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new( // format!("Hello, World! You asked for: {}\n", uri).into(), format!("Hello, Wor\n").into(), @@ -504,9 +488,18 @@ async fn service( } } +/// Recording setup +static TRACING_ARCHIVE: OnceLock = OnceLock::new(); + fn main() -> () { env_logger::init(); + // Initilize metric collection + match TRACING_ARCHIVE.set(Archive::init()) { + Ok(_) => (), + Err(_) => panic!("Failed to initialize tracing archive"), + } + // find available resources let num_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines @@ -565,25 +558,16 @@ fn main() -> () { let dispatcher_ptr = Arc::new(Dispatcher::init(resource_pool).expect("Should be able to start dispatcher")); - // Recording setup - let tracing_archive: Arc> = Arc::new(SyncMutex::new(Archive::new())); - let recorders: Vec<_> = (0..10000000) - .map(|_| Recorder::new(tracing_archive.clone())) - .collect(); - tracing_archive.lock().unwrap().init(recorders); - let _guard = runtime.enter(); // ready http endpoint let addr = SocketAddr::from(([0, 0, 0, 0], 8080)); let make_svc = make_service_fn(move |_| { let new_dispatcher_ptr = dispatcher_ptr.clone(); - let new_archive_ptr: Arc> = tracing_archive.clone(); async move { Ok::<_, Infallible>(service_fn(move |req| { let service_dispatcher_ptr = new_dispatcher_ptr.clone(); - let service_archive_ptr = new_archive_ptr.clone(); - service(req, service_dispatcher_ptr, service_archive_ptr) + service(req, service_dispatcher_ptr) })) } }); From 2346f13d5de126ebd0a0930ce95d10136b33df05 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 18 Mar 2024 17:53:46 +0100 Subject: [PATCH 035/176] moving inputs onto GPU --- machine_interface/hip_interface/module.hsaco | Bin 43016 -> 54240 bytes machine_interface/src/function_driver.rs | 2 +- .../compute_driver/compute_driver_tests.rs | 74 ++++++++++++++- .../src/function_driver/compute_driver/gpu.rs | 89 +++++++++++++++--- .../gpu/{utils.rs => gpu_utils.rs} | 29 +++++- .../function_driver/compute_driver/gpu/hip.rs | 34 ++++++- 6 files changed, 201 insertions(+), 27 deletions(-) rename machine_interface/src/function_driver/compute_driver/gpu/{utils.rs => gpu_utils.rs} (73%) diff --git a/machine_interface/hip_interface/module.hsaco b/machine_interface/hip_interface/module.hsaco index 5b1ddb870a05e1ab8c10b4f15b16a6ea9e122c11..7689bbdc49a915b1a2eb37cc172438ba14de9cdb 100644 GIT binary patch delta 5651 zcmeHLYitzP6}~e&Gaiq}>zUp4zU*D^TE-8+Z&DnJV8g=?$OD>IPzW(DnDS7Jp{~Ls z8P6`pUXZh9eNy8F5Ks!Jq-`Mn(Ws@nrl}NK6a`45wi0R~?T>~a)vZ)jDyp~V&d#K< zp~(GHsS;P3J#)`J_ndRjckewrCw`s1ecpCtJ$w7zOB=2gu&2ghw$jymz)Or~QKDq~ z3=*Ec`m%jeHI+urWcwEV{5%1NBA3naTT^Lwwo6P39#wTbC<_bJ^3n&{*}0aAaT~Ys-J@BHd5mxvl z2>E7%=98FKIOMBl*5YUpJX5%i5uw_@LcO?YYv-mN?LAvNyV_sgy{)GcqWS?Pv33u>8jU4RLL{q)G#8(| zWYRgy3X9Dgq^E`Me5+9pM5qe4g{PxSrZb=`{6_Lr5s0NfDKMssrt-+)WYQ0FOFhb( ztsOm~wovDu?#@j;otq{2S?RjMXLt65UY}OCRJ|2oI>!Fl z>dVGfZFV$vQ%UWboz{41DkS zV45MqI1U-_gma{?FnY>H`qCP?+y4$XkR~LWX31+euPkH_-nr@BP0}0JxSteofQlvC@OmOuh1!yW$pgH{W*frT`-sy z;7+9zj_h~i^rHE}d~tGs6!)dL45u&O1(S)=+7Tw6(%A)CjFq)0Yu9o}EUnom2Sh2Z z=jI)XaT2HVd3;RN9q9)4AUxON%Pk=X(>lgQf?Y$-mC}L1gw7;VQe^By9S<4D97z#9 zaw|X-8}%V0G?iyEbi)nZv^TND9=GcSdO=KyD!QtxF|N>6Dcf_>yvGf{-yDXCA+B1w z>WFf2qVqZva}0>-pkZ+^<Tf-A3kZ=*A%6ifH zLx0X3N^1%(!i?>6Ba3YzRF@nH$#@C43(;rP?}Fq37l#ZR{AEXg7c>$|z_kO7wTTon z8Bd!obMziU*X<@ANqP9*M;r0?y}oLu5yGR@tRQ5sPy=Fm z_YKWoZnJTC?==*`$E#d*S@7uAcoG);c)5URiihC8u+Z0W-!;6i@Xd%A3uo}f0vmDeOTWoWos$IuIGUf%P zK#Yp0+YUD>TpTi3xU@XLbBJ{u-i*%)TX{z|@{WK}qpnXwbCkNbaytb?wwg$4gROJ8pJeKG9|4p#I(9-N?Hv* zPOFd8>f^Nfh_qTl(<)7!8O+x2M;StsI{kDddJiUc7D}GF^Y)2lw&By5VqGAe4mR8? zq@T3^{=A>acFEr+Gdt;P$Q-w70)2(aq#L?VkN1AnEK$(X2W|AbAOAd%dXsMwl5g_c zOa?7d&_?G`d6&sID=DPNLuiPYr?c@Q@c4~deNuLlAl)eK~;uB2vXl&kvzqNcs9fm2h2WO z<1oNNEX}YHbdSZierjtyTNXEo0HG@CkCQjb_maxNt5AE$1AHxoQiJ1F-E} zooba@&C+Y+42suC7Q~Uu@bS4t?8VDadVW#is-IHV2)SxjjA#u@gm0dolk26S!q#CJ Td+)qY+G}#c47_t3dBJPU~ delta 1341 zcmZuxQAm?f6u!Hg+Z@{de^V!=%Tml#)`+MG8B1_QX0&=KB(R4vUrc(6Xw33O#K6BJ zGtEE6`XGhs~H3fG*olgp6)iS^hgO^M*s zb( zO!jMe^g}u{%orGS4=|!jQ$+6lZGswdmMPjsbPRq>6(w-YnBL6>pMhRK~AYQ43>T=-5m~ z!;&}a`nBYzJ>Z%hf`_whYexGN@|hYwS_(WH@Fd(Aic8@VgVt<7SHnu?i07g1Ttv>hCIsp?(<4X|De>FyKut#QO~RlM9t=x5e!) dk)&~z;I>1@Tob_> diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index ac002ed9..6aeca8f5 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -12,7 +12,7 @@ use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; #[cfg(feature = "wasm")] use libloading::Library; -use self::compute_driver::gpu::{hip::FunctionT, utils::ExecutionBlueprint}; +use self::compute_driver::gpu::{gpu_utils::ExecutionBlueprint, hip::FunctionT}; pub mod compute_driver; mod load_utils; diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 7b95ab62..53f081cf 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -654,17 +654,25 @@ mod compute_driver_tests { #[cfg(feature = "gpu")] mod gpu { - use std::sync::Arc; + use std::sync::{Arc, Mutex}; + + use dandelion_commons::records::{Archive, RecordPoint, Recorder}; use crate::{ function_driver::{ - compute_driver::gpu::{dummy_run, utils::dummy_config, GpuDriver, GpuLoop}, + compute_driver::{ + compute_driver_tests::compute_driver_tests::prepare_engine_and_function, + gpu::{dummy_run, gpu_utils::dummy_config, GpuDriver, GpuLoop}, + }, thread_utils::EngineLoop, - ComputeResource, Driver, FunctionConfig, GpuConfig, + ComputeResource, Driver, EngineArguments, FunctionArguments, FunctionConfig, + GpuConfig, }, memory_domain::{ - gpu::GpuContext, mmu::MmuMemoryDomain, Context, MemoryDomain, MemoryResource, + gpu::GpuContext, mmu::MmuMemoryDomain, Context, ContextTrait, MemoryDomain, + MemoryResource, }, + DataItem, DataSet, Position, }; use super::engine_minimal; @@ -685,5 +693,63 @@ mod compute_driver_tests { vec![ComputeResource::GPU(1, 1)], ); } + + #[test] + fn basic_input_output() { + let driver: Box = Box::new(GpuDriver {}); + let (mut function_context, config, queue) = + prepare_engine_and_function::( + "bar", + MemoryResource::None, + &driver, + vec![ComputeResource::GPU(1, 1)], + ); + // add inputs + let in_size_offset = function_context + .get_free_space_and_write_slice(&[12345i64]) + .expect("Should have space for single i64"); + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "A".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, + }], + })); + let archive = Arc::new(Mutex::new(Archive::new())); + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("A")]), + recorder, + })); + let (result_context, mut result_recorder) = + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + // check that result is 4 + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!(8, position.size, "Checking for size of output"); + let mut read_buffer = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + assert_eq!(12345, read_buffer[0]); + } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 0aa10333..55ac7c8d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -5,7 +5,7 @@ use crate::{ ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, - memory_domain::{Context, ContextType}, + memory_domain::{Context, ContextTrait, ContextType}, DataRequirementList, DataSet, }; use dandelion_commons::{DandelionError, DandelionResult}; @@ -13,12 +13,12 @@ use libc::c_void; use std::{collections::HashMap, ptr::null, thread}; use self::{ - hip::DEFAULT_STREAM, - utils::{Action, Argument}, + gpu_utils::{Action, Argument}, + hip::{DevicePointer, DEFAULT_STREAM}, }; +pub(crate) mod gpu_utils; pub(crate) mod hip; -pub(crate) mod utils; pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { // set gpu @@ -46,7 +46,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { // launch them let block_width: usize = 1024; hip::module_launch_kernel( - kernel_set, + &kernel_set, ((arr_elem + block_width - 1) / block_width) as u32, 1, 1, @@ -60,7 +60,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { )?; hip::module_launch_kernel( - kernel_check, + &kernel_check, 1, 1, 1, @@ -78,6 +78,54 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { Ok(()) } +fn get_data_length(ident: &str, context: &Context) -> DandelionResult { + let dataset = context + .content + .iter() + .find(|&elem| match elem { + Some(set) => set.ident == ident, + _ => false, + }) + .ok_or(DandelionError::ConfigMissmatch)? + .as_ref() + .unwrap(); // okay, as we matched successfully + + let length = dataset + .buffers + .iter() + .fold(0usize, |acc, item| acc + item.data.size); + + Ok(length) +} + +fn copy_data_to_device( + ident: &str, + context: &Context, + base: *mut u8, + dev_ptr: &DevicePointer, +) -> DandelionResult<()> { + let dataset = context + .content + .iter() + .find(|&elem| match elem { + Some(set) => set.ident == ident, + _ => false, + }) + .ok_or(DandelionError::ConfigMissmatch)? + .as_ref() + .unwrap(); // okay, as we matched successfully + + let mut total = 0isize; + for item in &dataset.buffers { + let length = item.data.size; + let offset = item.data.offset; + let src = unsafe { base.byte_offset((offset) as isize) } as *const c_void; + hip::memcpy_h_to_d(dev_ptr, total, src, length)?; + total += length as isize; + } + Ok(()) +} + fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult { // TODO: handle errors let ContextType::Mmu(ref mmu_context) = context.context else { @@ -86,9 +134,16 @@ fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult DandelionResult { - params.push(&buffers.get(id).unwrap().0 as *const _ as *const c_void) + params.push(&buffers.get(id).unwrap().0 .0 as *const _ as *const c_void) + } + Argument::BufferLen(id) => { + params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void) } - Argument::BufferLen(id) => params - .push(config.blueprint.temps.get(id).unwrap() as *const _ - as *const c_void), }; } hip::module_launch_kernel( - *config.kernels.get(name).unwrap(), + config.kernels.get(name).unwrap(), launch_config.grid_dim_x, 1, 1, @@ -160,7 +215,7 @@ impl EngineLoop for GpuLoop { &output_sets, )?; - // in thread for now, in process pool eventually; maybe add cpu_slot? + // in thread for now, in process pool eventually; maybe add cpu_slot affinity? let gpu_id_clone = self.gpu_id; let config_clone = config.clone(); let handle = thread::spawn(move || gpu_run(gpu_id_clone, config_clone, context)); @@ -211,9 +266,13 @@ impl Driver for GpuDriver { static_domain: &Box, ) -> dandelion_commons::DandelionResult { // Concept for now: function_path gives config file which contains name of module (.hsaco) file - let config = FunctionConfig::GpuConfig(utils::dummy_config()?); + let config = if function_path == "foo" { + FunctionConfig::GpuConfig(gpu_utils::dummy_config()?) + } else { + FunctionConfig::GpuConfig(gpu_utils::dummy_config2()?) + }; - let total_size = 0usize; + let total_size = 0x10000usize; let mut context = static_domain.acquire_context(total_size)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs similarity index 73% rename from machine_interface/src/function_driver/compute_driver/gpu/utils.rs rename to machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index e4507dcb..7bfa179c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -41,11 +41,10 @@ pub enum Action { } pub struct ExecutionBlueprint { + pub inputs: Vec, /// buffer names to sizes - pub inputs: HashMap, pub temps: HashMap, pub outputs: HashMap, - pub control_flow: Vec, } @@ -56,14 +55,14 @@ pub fn dummy_config() -> DandelionResult { let kernel_check = hip::module_get_function(&module, "check_mem")?; Ok(GpuConfig { - system_data_struct_offset: 0, + system_data_struct_offset: 0x10000usize, module: Arc::new(module), kernels: Arc::new(HashMap::from([ ("set_mem".into(), kernel_set), ("check_mem".into(), kernel_check), ])), blueprint: Arc::new(ExecutionBlueprint { - inputs: HashMap::new(), + inputs: vec![], temps: HashMap::from([("A".into(), 1024)]), outputs: HashMap::new(), control_flow: vec![ @@ -88,6 +87,28 @@ pub fn dummy_config() -> DandelionResult { }) } +pub fn dummy_config2() -> DandelionResult { + let module = + hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco")?; + let kernel = hip::module_get_function(&module, "check_then_write")?; + + Ok(GpuConfig { + system_data_struct_offset: 0x10000usize, + module: Arc::new(module), + kernels: Arc::new(HashMap::from([("check_then_write".into(), kernel)])), + blueprint: Arc::new(ExecutionBlueprint { + inputs: vec!["A".into()], + temps: HashMap::new(), + outputs: HashMap::new(), + control_flow: vec![Action::ExecKernel( + "check_then_write".into(), + vec![Argument::BufferPtr("A".into())], + LaunchConfig::one_dimensional(1, 1, 0), + )], + }), + }) +} + pub fn parse_config() -> DandelionResult { todo!() } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index cf035569..44b0bfc8 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -15,7 +15,6 @@ unsafe impl Sync for ModuleT {} // typedef struct iHipModuleSymbol_t* hipFunction_t type _FunctionT = *const c_void; -#[derive(Clone, Copy)] pub struct FunctionT(_FunctionT); unsafe impl Send for FunctionT {} @@ -54,8 +53,9 @@ extern "C" { ) -> ErrorT; fn hipGetErrorString(hipError: ErrorT) -> *const i8; fn hipMalloc(ptr: *mut *const c_void, size: size_t) -> ErrorT; - #[allow(unused)] fn hipFree(ptr: *const c_void) -> ErrorT; + fn hipMemcpyHtoD(dst: *const c_void, src: *const c_void, sizeBytes: size_t) -> ErrorT; + fn hipMemcpyDtoH(dst: *const c_void, src: *const c_void, sizeBytes: size_t) -> ErrorT; } // TODO: Possibly move away from DandelionResult if HipError not wanted @@ -109,7 +109,7 @@ pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult DandelionResult<()> { + checked_call!(hipMemcpyHtoD( + dst.0.byte_offset(dev_offset), + src, + size_bytes + )); + Ok(()) +} + +pub fn memcpy_d_to_h( + dst: *const c_void, + src: &DevicePointer, + dev_offset: isize, + size_bytes: usize, +) -> DandelionResult<()> { + checked_call!(hipMemcpyDtoH( + dst, + src.0.byte_offset(dev_offset), + size_bytes + )); + Ok(()) +} From f14d5d12a24e76e964a8fa3ce18bc96d156e1f8a Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Tue, 19 Mar 2024 17:22:54 +0100 Subject: [PATCH 036/176] hard coded outputs --- .../compute_driver/compute_driver_tests.rs | 4 +- .../src/function_driver/compute_driver/gpu.rs | 11 +++- machine_interface/src/interface.rs | 52 +++++++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 53f081cf..60dc5454 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -719,12 +719,13 @@ mod compute_driver_tests { key: 0, }], })); + eprintln!("foo: {:?}", function_context.content); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config, context: function_context, - output_sets: Arc::new(vec![String::from("A")]), + output_sets: Arc::new(vec!["A".into()]), recorder, })); let (result_context, mut result_recorder) = @@ -741,6 +742,7 @@ mod compute_driver_tests { let output_item = result_context.content[0] .as_ref() .expect("Set should be present"); + eprintln!("{:?}", output_item); assert_eq!(1, output_item.buffers.len()); let position = output_item.buffers[0].data; assert_eq!(8, position.size, "Checking for size of output"); diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 55ac7c8d..d9ec005c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -4,7 +4,9 @@ use crate::{ thread_utils::{start_thread, EngineLoop}, ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, - interface::{read_output_structs, setup_input_structs}, + interface::{ + read_output_structs, setup_input_structs, write_sentinel_output, DandelionSystemData, + }, memory_domain::{Context, ContextTrait, ContextType}, DataRequirementList, DataSet, }; @@ -126,7 +128,7 @@ fn copy_data_to_device( Ok(()) } -fn gpu_run(gpu_id: u8, config: GpuConfig, context: Context) -> DandelionResult { +fn gpu_run(gpu_id: u8, config: GpuConfig, mut context: Context) -> DandelionResult { // TODO: handle errors let ContextType::Mmu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); @@ -224,6 +226,11 @@ impl EngineLoop for GpuLoop { Err(_) => return Err(DandelionError::EngineError), }; + let write_buf = vec![12345i64]; + context.write(0, &write_buf)?; + + write_sentinel_output::(&mut context, config.system_data_struct_offset)?; + read_output_structs::(&mut context, config.system_data_struct_offset)?; Ok(context) diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index 1589625d..d7d028c9 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -119,6 +119,58 @@ struct IoBufferDescriptor { key: SizeT, // size_t, } +/// Used in cases where the Engine is responsible for writing outputs, not the runtime +pub fn write_sentinel_output( + context: &mut Context, + system_data_offset: usize, +) -> DandelionResult<()> { + // read the system buffer + let mut system_struct = DandelionSystemData::::default(); + context.read( + system_data_offset, + core::slice::from_mut(&mut system_struct), + )?; + + let output_set_number = usize!(system_struct.output_sets_len); + let mut output_set_info = vec![]; + if output_set_info.try_reserve(output_set_number + 1).is_err() { + return Err(DandelionError::OutOfMemory); + } + let empty_output_set = IoSetInfo:: { + ident: ptr_t!(0), + ident_len: size_t!(0), + offset: size_t!(0), + }; + output_set_info.resize_with(output_set_number + 1, || empty_output_set.clone()); + context.read(usize_ptr!(system_struct.output_sets), &mut output_set_info)?; + + // TODO: don't hard code this obviously + output_set_info[output_set_number].offset = size_t!(1); + + context.write(usize_ptr!(system_struct.output_sets), &output_set_info)?; + + // buffer offset + let mut output_buffers: Vec> = Vec::new(); + if output_buffers.try_reserve_exact(1).is_err() { + return Err(DandelionError::OutOfMemory); + } + output_buffers.push(IoBufferDescriptor { + ident: ptr_t!(0), + ident_len: size_t!(0), + data: ptr_t!(0), + data_len: size_t!(8), + key: size_t!(0), + }); + + let output_buffers_offset: PtrT = + ptr_t!(context.get_free_space_and_write_slice(&output_buffers[..])? as usize); + + system_struct.output_bufs = output_buffers_offset; + + context.write(system_data_offset, core::slice::from_ref(&system_struct))?; + Ok(()) +} + pub fn setup_input_structs( context: &mut Context, system_data_offset: usize, From 2b168a669043f25937ed271977aae6197603697e Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 20 Mar 2024 09:45:52 +0100 Subject: [PATCH 037/176] Change timestamping to accomodate dynamic spans better --- README.md | 21 ++- dandelion_commons/src/records.rs | 174 +++++++++++------- dispatcher/src/dispatcher.rs | 98 +++++----- .../tests/dispatcher_tests/function_tests.rs | 10 +- .../tests/dispatcher_tests/registry_tests.rs | 8 +- server/src/main.rs | 44 ++--- 6 files changed, 198 insertions(+), 157 deletions(-) diff --git a/README.md b/README.md index f42ea568..58678dde 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,16 @@ This project is aiming to build a workernode for serverless computing with minimal, secure isolation. -## Dependencies: +## Environment Variables + +- `RUST_LOG`: this is used to set the log level, it can be set to the standard log levels: [`error`, `warn`, `info`, `debug`, `trace`] +- `DANDELION_TIMESTAMP_COUNT`: sets the number of timestamp containers to preallocate + +## Dependencies For testing we are using unity which is included directly in the project. -## Cheri setup: +## Cheri setup First clone the Cheribuild repository onto a local disk. It is important that it is on a local disk, as it needs to lock some files which @@ -55,6 +60,7 @@ To manually set the ssh-port to another port that the one set by the config `--run-fvp/ssh-port=` before the run command. ## Build + Before cross compilation can be used you need to fill in the respective paths in the toolchain file. @@ -72,16 +78,20 @@ make For native builds the toolchain specification can be omitted. ## Kernel module build + The kernel modules needed are in the kernelModule folder. They can be built with a normal make command, but have the following requirements: + - the /usr/src folder contains the OS source -### Known issues: +### Known issues + - make: "/usr/src/sys/conf/kmod.mk" line 549: is ZFSTOP set? - - solution `export ZFSTOP=/usr/src/sys/contrib/openzfs` + - solution `export ZFSTOP=/usr/src/sys/contrib/openzfs` - currently syscall seems not to work, but loading does, with cpuset -l a specific core can be setup. repeat for each core on machine to set up entire machine. ## MMU worker build + The `mmu_worker` binary required by the `MmuEngine` is assumed to be present in corresponding `target` directory: ``` cargo build --bin mmu_worker --features mmu --target $(arch)-unknown-linux-gnu [--release] @@ -99,4 +109,5 @@ sudo mount -o remount,exec /dev/shm ``` ### MMU worker path -To use a `mmu_worker` that is not at the original location it was built in, set the `PROCESS_WORKER_PATH` environment variable to point to the desired binary \ No newline at end of file + +To use a `mmu_worker` that is not at the original location it was built in, set the `PROCESS_WORKER_PATH` environment variable to point to the desired binary diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 3b246df2..d5f9677d 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -22,37 +22,68 @@ mod timestamp { use crate::{DandelionError, DandelionResult}; use std::{ env, - sync::{Arc, Mutex}, + sync::{atomic::AtomicU16, Arc, Mutex}, time::Instant, }; + use super::RecordPoint; + + struct Timestamp { + current_span: u16, + parent_span: u16, + time: Instant, + point: RecordPoint, + previous: Option>, + } + pub struct TimestampContainer { - timestamps: Vec, - pub recorders: Arc>>, + parent_span: u16, + current_span: u16, + spans_latest: Arc<(AtomicU16, Mutex>>)>, } impl TimestampContainer { - pub fn record(&mut self, current_point: &super::RecordPoint) { - self.timestamps[*current_point as usize] = Instant::now(); + pub fn new() -> Self { + return Self { + parent_span: 0, + current_span: 0, + spans_latest: Arc::new((AtomicU16::new(0), Mutex::new(None))), + }; } - fn reset(&mut self, zero_time: Instant, freed: &mut Vec) { - self.timestamps = vec![zero_time; 13]; - for mut container in Arc::get_mut(&mut self.recorders) - .unwrap() - .get_mut() - .unwrap() - .drain(..) - { - container.reset(zero_time, freed); - freed.push(container); + + pub fn record( + &mut self, + current_point: &super::RecordPoint, + archive: &'static TimestampArchive, + ) -> DandelionResult<()> { + let mut new_timestamp = archive.get_timestamp()?; + let mut span_guard = self.spans_latest.1.lock().unwrap(); + new_timestamp.point = *current_point; + new_timestamp.time = Instant::now(); + new_timestamp.parent_span = self.parent_span; + new_timestamp.current_span = self.current_span; + new_timestamp.previous = span_guard.take(); + let _ = span_guard.insert(new_timestamp); + return Ok(()); + } + + pub fn get_sub_recorder(&self) -> Self { + let current_span = self + .spans_latest + .0 + .fetch_add(1, std::sync::atomic::Ordering::SeqCst); + Self { + parent_span: self.current_span, + current_span, + spans_latest: self.spans_latest.clone(), } } } pub struct TimestampArchive { start_time: Instant, - free_recorders: Mutex>, - used_recorders: Mutex>, + free_timestamps: Mutex>>, + used_timestamps: Mutex>>, } impl TimestampArchive { @@ -63,64 +94,82 @@ mod timestamp { }; let zero_time = Instant::now(); let mut free_pool = Vec::new(); - free_pool.resize_with(pool_size, || TimestampContainer { - timestamps: vec![zero_time; 13], - recorders: Arc::new(Mutex::new(vec![])), + free_pool.resize_with(pool_size, || { + Box::new(Timestamp { + parent_span: 0, + current_span: 0, + time: zero_time, + point: RecordPoint::Arrival, + previous: None, + }) }); let mut used_pool = Vec::new(); used_pool.reserve(pool_size); return Self { start_time: zero_time, - free_recorders: Mutex::new(free_pool), - used_recorders: Mutex::new(used_pool), + free_timestamps: Mutex::new(free_pool), + used_timestamps: Mutex::new(used_pool), }; } - pub fn get_timestamp_container(&self) -> DandelionResult { + fn get_timestamp(&self) -> DandelionResult> { return self - .free_recorders + .free_timestamps .lock() .unwrap() .pop() .ok_or(DandelionError::RecorderNotAvailable); } - pub fn return_timestamp_container(&self, used: TimestampContainer) { - self.used_recorders.lock().unwrap().push(used); + pub fn return_timestamp(&self, used: TimestampContainer) { + if let Some(timestamp) = Arc::into_inner(used.spans_latest) + .unwrap() + .1 + .into_inner() + .unwrap() + .take() + { + self.used_timestamps.lock().unwrap().push(timestamp); + } } pub fn reset(&self) { // For each recorder in the used_recorders, reset it and move it to the free_recorders. // Recorders are recursive: each has a vector of sub-recorders. - let mut free_guard = self.free_recorders.lock().unwrap(); - for mut container in self.used_recorders.lock().unwrap().drain(..) { - container.reset(self.start_time, &mut free_guard); - free_guard.push(container); + // TODO if we always set all values on record there is no need to do the resetting, apart from putting them into the free queue + let mut free_guard = self.free_timestamps.lock().unwrap(); + for mut timestamp in self.used_timestamps.lock().unwrap().drain(..) { + timestamp.parent_span = 0; + timestamp.current_span = 0; + timestamp.point = RecordPoint::Arrival; + let mut timestamp_opt = timestamp.previous.take(); + free_guard.push(timestamp); + while let Some(mut prev_timestamp) = timestamp_opt { + prev_timestamp.parent_span = 0; + prev_timestamp.current_span = 0; + prev_timestamp.point = RecordPoint::Arrival; + timestamp_opt = prev_timestamp.previous.take(); + free_guard.push(prev_timestamp) + } } } - fn append_timestamps( - &self, - timestamps: &TimestampContainer, - summary: &mut String, - level: usize, - ) { - let tabs = "\t".repeat(level); - for (i, timestamp) in timestamps.timestamps.iter().enumerate() { - let duration = timestamp.duration_since(self.start_time).as_nanos(); - if duration > 0 { - summary.push_str(&format!("{}{}: {}\n", tabs, i, duration)); - }; - } - - for sub_recorder in timestamps.recorders.lock().unwrap().iter() { - self.append_timestamps(sub_recorder, summary, level + 1); + fn append_timestamps(&self, timestamp: &Box, summary: &mut String) { + if let Some(previous) = ×tamp.previous { + self.append_timestamps(previous, summary); } + summary.push_str(&format!( + "parent:{}, span:{}, time:{}, point:{:?}", + timestamp.parent_span, + timestamp.current_span, + timestamp.time.duration_since(self.start_time).as_nanos(), + timestamp.point + )) } pub fn get_summary(&self, summary: &mut String) { - for recorder in self.used_recorders.lock().unwrap().iter() { - self.append_timestamps(recorder, summary, 0); + for recorder in self.used_timestamps.lock().unwrap().iter() { + self.append_timestamps(recorder, summary); } } } @@ -137,24 +186,19 @@ pub struct Recorder { impl Recorder { pub fn record(&mut self, _current_point: RecordPoint) -> DandelionResult<()> { #[cfg(feature = "timestamp")] - self.timestamps.record(&_current_point); + self.timestamps + .record(&_current_point, &self.archive.timestamp_archive)?; Ok(()) } - pub fn get_new_recorder(&self) -> DandelionResult { - #[cfg(feature = "recorder")] - return self.archive.get_recorder(); - #[cfg(not(feature = "recorder"))] - return Ok(Recorder {}); - } - - pub fn link_recorder(&mut self, _new_recorder: Recorder) { - #[cfg(feature = "timestamp")] - self.timestamps - .recorders - .lock() - .unwrap() - .push(_new_recorder.timestamps); + pub fn get_sub_recorder(&self) -> DandelionResult { + let recorder = Recorder { + #[cfg(feature = "recorder")] + archive: self.archive, + #[cfg(feature = "timestamp")] + timestamps: self.timestamps.get_sub_recorder(), + }; + return Ok(recorder); } } @@ -176,14 +220,14 @@ impl Archive { #[cfg(feature = "recorder")] archive: self, #[cfg(feature = "timestamp")] - timestamps: self.timestamp_archive.get_timestamp_container()?, + timestamps: timestamp::TimestampContainer::new(), }); } pub fn return_recorder(&self, _recorder: Recorder) { #[cfg(feature = "timestamp")] self.timestamp_archive - .return_timestamp_container(_recorder.timestamps); + .return_timestamp(_recorder.timestamps); } pub fn get_summary(&self) -> String { diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index ac5bd55e..0be6f623 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -96,7 +96,7 @@ impl Dispatcher { output_mapping: Vec>, non_caching: bool, recorder: Recorder, - ) -> DandelionResult<(BTreeMap, Recorder)> { + ) -> DandelionResult> { let function_id = self .function_registry .get_function_id(&function_name) @@ -112,8 +112,8 @@ impl Dispatcher { composition: Composition, mut inputs: BTreeMap, non_caching: bool, - mut recorder: Recorder, - ) -> DandelionResult<(BTreeMap, Recorder)> { + recorder: Recorder, + ) -> DandelionResult> { // build up ready sets let (mut ready_functions, mut non_ready_functions): (Vec<_>, Vec<_>) = composition.dependencies.into_iter().partition( @@ -151,17 +151,16 @@ impl Dispatcher { function_inputs, dependencies.output_set_ids, non_caching, - recorder.get_new_recorder().unwrap(), + recorder.get_sub_recorder().unwrap(), ); }) .collect(); while let Some(new_compositions_result) = running_functions.next().await { let new_compositions = new_compositions_result?; - for (composition_set_index, composition_set) in new_compositions.0 { + for (composition_set_index, composition_set) in new_compositions { inputs.insert(composition_set_index, composition_set); } - recorder.link_recorder(new_compositions.1); // add newly ready ones (ready_functions, non_ready_functions) = non_ready_functions.into_iter().partition( |FunctionDependencies { @@ -197,22 +196,19 @@ impl Dispatcher { function_inputs, ready_function.output_set_ids, non_caching, - recorder.get_new_recorder().unwrap(), + recorder.get_sub_recorder().unwrap(), )); } } - return Ok(( - inputs - .into_iter() - .filter_map(|(set_index, composition_set)| { - composition - .output_map - .get(&set_index) - .and_then(|output_index| Some((*output_index, composition_set))) - }) - .collect::>(), - recorder, - )); + return Ok(inputs + .into_iter() + .filter_map(|(set_index, composition_set)| { + composition + .output_map + .get(&set_index) + .and_then(|output_index| Some((*output_index, composition_set))) + }) + .collect::>()); } // TODO: Solve the composition. How does it work now?? @@ -222,8 +218,8 @@ impl Dispatcher { input_sets: Vec<(usize, ShardingMode, CompositionSet)>, output_mapping: Vec>, non_caching: bool, - mut recorder: Recorder, - ) -> DandelionResult<(BTreeMap, Recorder)> { + recorder: Recorder, + ) -> DandelionResult> { let results: Vec<_> = input_sets .into_iter() .map(|(index, mode, composition_set)| composition_set.shard(mode, index)) @@ -234,18 +230,16 @@ impl Dispatcher { input_sets_local, output_mapping.clone(), non_caching, - recorder.get_new_recorder().unwrap(), + recorder.get_sub_recorder().unwrap(), )) }) .collect(); let composition_results: DandelionResult> = join_all(results).await.into_iter().collect(); let mut composition_set_maps = composition_results?.into_iter(); - if let Some((mut result_set_map, result_recorder)) = composition_set_maps.next() { - recorder.link_recorder(result_recorder); + if let Some(mut result_set_map) = composition_set_maps.next() { for additional_set_map in composition_set_maps { - recorder.link_recorder(additional_set_map.1); - for (key, mut additional_set) in additional_set_map.0.into_iter() { + for (key, mut additional_set) in additional_set_map.into_iter() { result_set_map .entry(key) .and_modify(|existing_set| { @@ -256,9 +250,9 @@ impl Dispatcher { .or_insert(additional_set); } } - return Ok((result_set_map, recorder)); + return Ok(result_set_map); } else { - return Ok((BTreeMap::new(), recorder)); + return Ok(BTreeMap::new()); }; } @@ -273,7 +267,7 @@ impl Dispatcher { mut recorder: Recorder, ) -> Pin< Box< - dyn Future, Recorder)>> + dyn Future>> + 'dispatcher + Send, >, @@ -286,24 +280,24 @@ impl Dispatcher { match &alternative.function_type { FunctionType::Function(engine_id, ctx_size) => { recorder.record(RecordPoint::PrepareEnvQueue)?; - let (context, config, metadata, mut recorder) = self + let (context, config, metadata) = self .prepare_for_engine( function_id, *engine_id, inputs, *ctx_size, non_caching, - recorder, + recorder.get_sub_recorder()?, ) .await?; recorder.record(RecordPoint::GetEngineQueue)?; - let (context, mut recorder) = self + let context = self .run_on_engine( *engine_id, config, metadata.output_sets, context, - recorder, + recorder.get_sub_recorder()?, ) .await?; recorder.record(RecordPoint::FutureReturn)?; @@ -328,11 +322,11 @@ impl Dispatcher { }); }) .collect(); - return Ok((composition_sets, recorder)); + return Ok(composition_sets); } FunctionType::Composition(composition) => { // need to set the inner composition indexing to the outer composition indexing - let (compositon_output, recorder) = self + let compositon_output = self .queue_composition( composition.clone(), BTreeMap::from_iter(inputs), @@ -340,20 +334,17 @@ impl Dispatcher { recorder, ) .await?; - return Ok(( - compositon_output - .into_iter() - .filter_map(|(function_id, composition)| { - if output_mapping.len() < function_id { - return None; - } - return output_mapping[function_id].and_then( - |composition_id| Some((composition_id, composition)), - ); - }) - .collect(), - recorder, - )); + return Ok(compositon_output + .into_iter() + .filter_map(|(function_id, composition)| { + if output_mapping.len() < function_id { + return None; + } + return output_mapping[function_id].and_then(|composition_id| { + Some((composition_id, composition)) + }); + }) + .collect()); } } } else { @@ -370,7 +361,7 @@ impl Dispatcher { ctx_size: usize, non_caching: bool, mut recorder: Recorder, - ) -> DandelionResult<(Context, FunctionConfig, Metadata, Recorder)> { + ) -> DandelionResult<(Context, FunctionConfig, Metadata)> { let metadata = self.function_registry.get_metadata(function_id).await?; // get context and load static data let context_id = match self.type_map.get(&engine_type) { @@ -450,7 +441,7 @@ impl Dispatcher { } } recorder.record(RecordPoint::TransferEnd)?; - return Ok((function_context, function_config, metadata, recorder)); + return Ok((function_context, function_config, metadata)); } async fn run_on_engine( @@ -460,7 +451,7 @@ impl Dispatcher { output_sets: Arc>, function_context: Context, mut recorder: Recorder, - ) -> DandelionResult<(Context, Recorder)> { + ) -> DandelionResult { // preparation is done, get engine to receive engine let engine_queue = match self.engine_queues.get(&engine_type) { Some(q) => q, @@ -473,6 +464,7 @@ impl Dispatcher { output_sets, recorder, }); - return engine_queue.enqueu_work(args).await; + let (result, _) = engine_queue.enqueu_work(args).await?; + return Ok(result); } } diff --git a/dispatcher/tests/dispatcher_tests/function_tests.rs b/dispatcher/tests/dispatcher_tests/function_tests.rs index 15dc0119..a697698b 100644 --- a/dispatcher/tests/dispatcher_tests/function_tests.rs +++ b/dispatcher/tests/dispatcher_tests/function_tests.rs @@ -142,7 +142,7 @@ pub fn single_domain_and_engine_matmul( .unwrap() .block_on(dispatcher.queue_function(function_id, inputs, outputs, false, recorder)); let out_sets = match result { - Ok((context, _)) => context, + Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_sets.len()); @@ -192,7 +192,7 @@ pub fn composition_single_matmul( .unwrap() .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let mut out_contexts = match result { - Ok((context, _)) => context, + Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_contexts.len()); @@ -248,7 +248,7 @@ pub fn composition_parallel_matmul( .unwrap() .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let mut out_vec = match result { - Ok((v, _)) => v, + Ok(v) => v, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_vec.len()); @@ -317,7 +317,7 @@ pub fn composition_chain_matmul( .unwrap() .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let out_contexts = match result { - Ok((context, _)) => context, + Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_contexts.len()); @@ -428,7 +428,7 @@ pub fn composition_diamond_matmac( .unwrap() .block_on(dispatcher.queue_composition(composition, inputs, false, recorder)); let out_contexts = match result { - Ok((context, _)) => context, + Ok(context) => context, Err(err) => panic!("Failed with: {:?}", err), }; assert_eq!(1, out_contexts.len()); diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index 6c696f85..308f4a79 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -129,11 +129,11 @@ pub fn single_input_fixed( recorder, )); let out_sets = match result { - Ok((composition_sets, _)) => composition_sets, + Ok(composition_sets) => composition_sets, Err(err) => panic!("Non overwrite failed with: {:?}", err), }; let overwrite_sets = match overwrite_result { - Ok((compostion_set, _)) => compostion_set, + Ok(compostion_set) => compostion_set, Err(err) => panic!("Overwrite input failed with: {:?}", err), }; assert!(out_sets.contains_key(&0)); @@ -241,11 +241,11 @@ pub fn multiple_input_fixed( recorder, )); let out_sets = match result { - Ok((composition_sets, _)) => composition_sets, + Ok(composition_sets) => composition_sets, Err(err) => panic!("Non overwrite failed with: {:?}", err), }; let overwrite_sets = match overwrite_result { - Ok((compostion_set, _)) => compostion_set, + Ok(compostion_set) => compostion_set, Err(err) => panic!("Overwrite input failed with: {:?}", err), }; assert!(out_sets.contains_key(&0)); diff --git a/server/src/main.rs b/server/src/main.rs index 06f7c8cf..0feb1f53 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -62,7 +62,7 @@ async fn run_chain( get_uri: String, post_uri: String, mut recorder: Recorder, -) -> (u64, Recorder) { +) -> u64 { // TODO just have all the strings concatinated and create const context let domain = MmapMemoryDomain::init(machine_interface::memory_domain::MemoryResource::None) .expect("Should be able to get Mmap domain"); @@ -109,7 +109,7 @@ async fn run_chain( recorder .record(RecordPoint::QueueFunctionDispatcher) .unwrap(); - let (result, recorder) = dispatcher + let result = dispatcher .queue_function_by_name(function_name, inputs, output_mapping, is_cold, recorder) .await .expect("Should get response from chain"); @@ -150,7 +150,7 @@ async fn run_chain( .expect("Should be able to read result"); let checksum = u64::from_ne_bytes(result_vec[0..8].try_into().unwrap()); - return (checksum, recorder); + return checksum; } async fn run_mat_func( @@ -160,7 +160,7 @@ async fn run_mat_func( cols: usize, function_name: String, mut recorder: Recorder, -) -> (i64, Recorder) { +) -> i64 { let mat_size: usize = rows * cols; // Initialize matrix if necessary @@ -184,20 +184,14 @@ async fn run_mat_func( recorder .record(RecordPoint::QueueFunctionDispatcher) .unwrap(); - let result: Result< - (BTreeMap, Recorder), - dandelion_commons::DandelionError, - > = dispatcher + let result = dispatcher .queue_function_by_name(function_name, inputs, outputs, is_cold, recorder) - .await; - - let (mut result_map, recorder) = result.expect("should get result from function"); - - let result_context: CompositionSet = result_map + .await + .expect("Should get result from function") .remove(&0) - .expect("should have composition set 0"); + .expect("Should have composition set 0"); - return (get_checksum(result_context), recorder); + return get_checksum(result); } // Add the matrix multiplication inputs to the given context @@ -278,18 +272,17 @@ async fn serve_request( let request_map: MatrixRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - let (response_vec, mut recorder) = match run_mat_func( + let response_vec = run_mat_func( dispatcher, is_cold, request_map.rows as usize, request_map.cols as usize, request_map.name, - recorder, + recorder.get_sub_recorder().unwrap(), ) .await - { - (checksum, recorder) => (checksum.to_be_bytes().to_vec(), recorder), - }; + .to_be_bytes() + .to_vec(); let response = Ok::<_, Infallible>(Response::new(response_vec.into())); @@ -320,18 +313,18 @@ async fn serve_chain( let request_map: ChainRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - let (response_vec, mut recorder) = match run_chain( + let response_vec = run_chain( dispatcher, is_cold, request_map.name, request_map.get_uri, request_map.post_uri, - recorder, + recorder.get_sub_recorder().unwrap(), ) .await - { - (checksum, recorder) => (checksum.to_be_bytes().to_vec(), recorder), - }; + .to_be_bytes() + .to_vec(); + let response = Ok::<_, Infallible>(Response::new(response_vec.into())); recorder.record(RecordPoint::EndService).unwrap(); @@ -577,6 +570,7 @@ fn main() -> () { let graceful = server.with_graceful_shutdown(async move { handle_signals(signals).await.unwrap() }); + // TODO would be nice to just print server ready with all enabled features if that would be possible #[cfg(feature = "cheri")] println!("Hello, World (cheri)"); #[cfg(feature = "mmu")] From 17eb2f34f6d66e28572ff844abd7a5b70f1218d5 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 20 Mar 2024 10:42:33 +0100 Subject: [PATCH 038/176] Fix summary formatting --- dandelion_commons/src/records.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index d5f9677d..f5be8a4c 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -159,7 +159,7 @@ mod timestamp { self.append_timestamps(previous, summary); } summary.push_str(&format!( - "parent:{}, span:{}, time:{}, point:{:?}", + "parent:{}, span:{}, time:{}, point:{:?} ", timestamp.parent_span, timestamp.current_span, timestamp.time.duration_since(self.start_time).as_nanos(), @@ -170,6 +170,7 @@ mod timestamp { pub fn get_summary(&self, summary: &mut String) { for recorder in self.used_timestamps.lock().unwrap().iter() { self.append_timestamps(recorder, summary); + summary.push_str("\n"); } } } From 57b9b98d0913a0d62653168514cd202ee99b908f Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 20 Mar 2024 10:53:53 +0100 Subject: [PATCH 039/176] non hard-coded outputs --- .../hip_interface/gpu_function.json | 15 +++++ .../compute_driver/compute_driver_tests.rs | 3 +- .../src/function_driver/compute_driver/gpu.rs | 35 ++++++++---- .../compute_driver/gpu/gpu_utils.rs | 12 ++-- .../function_driver/compute_driver/gpu/hip.rs | 7 +-- machine_interface/src/interface.rs | 57 ++++++++++++------- 6 files changed, 84 insertions(+), 45 deletions(-) create mode 100644 machine_interface/hip_interface/gpu_function.json diff --git a/machine_interface/hip_interface/gpu_function.json b/machine_interface/hip_interface/gpu_function.json new file mode 100644 index 00000000..dd7cd1d6 --- /dev/null +++ b/machine_interface/hip_interface/gpu_function.json @@ -0,0 +1,15 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/example.hsaco", + "kernels": ["set_mem", "check_mem"], + "blueprint": { + "inputs": ["A"], + "temps": [["B", "__sizeof(A)"], ["C", 4096], ["D", 1024], ["E", "__sizeof(A)"]], + "outputs": ["D", "E"], + "control_flow": [ + ["ExecKernel", "set_mem", ["A", "B", "__sizeof(A)"], "[[LAUNCH_CFG]]"], + ["RepeatWhile", "__l2norm(A) > __l1norm(B)", [ + ["ExecKernel", "check_mem", ["C", "B", "__sizeof(D)"], "[[LAUNCH_CFG]]"] + ]] + ] + } +} \ No newline at end of file diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 60dc5454..870e0ea8 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -737,7 +737,6 @@ mod compute_driver_tests { result_recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); - // check that result is 4 assert_eq!(1, result_context.content.len()); let output_item = result_context.content[0] .as_ref() @@ -751,7 +750,7 @@ mod compute_driver_tests { .context .read(position.offset, &mut read_buffer) .expect("Should succeed in reading"); - assert_eq!(12345, read_buffer[0]); + assert_eq!(98765, read_buffer[0]); } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index d9ec005c..a14cb022 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -4,15 +4,13 @@ use crate::{ thread_utils::{start_thread, EngineLoop}, ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, - interface::{ - read_output_structs, setup_input_structs, write_sentinel_output, DandelionSystemData, - }, + interface::{read_output_structs, setup_input_structs, write_gpu_outputs, DandelionSystemData}, memory_domain::{Context, ContextTrait, ContextType}, DataRequirementList, DataSet, }; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; -use std::{collections::HashMap, ptr::null, thread}; +use std::{collections::HashMap, ptr::null, sync::Arc, thread}; use self::{ gpu_utils::{Action, Argument}, @@ -128,23 +126,29 @@ fn copy_data_to_device( Ok(()) } -fn gpu_run(gpu_id: u8, config: GpuConfig, mut context: Context) -> DandelionResult { +fn gpu_run( + gpu_id: u8, + config: GpuConfig, + mut context: Context, + output_names: Arc>, +) -> DandelionResult { // TODO: handle errors let ContextType::Mmu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); }; + let base = mmu_context.storage.as_ptr(); hip::set_device(gpu_id)?; // TODO: move to pool of buffers approach - let mut buffers = HashMap::new(); - for (name, size) in &config.blueprint.temps { + let mut buffers: HashMap = HashMap::new(); + for (name, size) in &config.blueprint.buffers { buffers.insert(name.clone(), (hip::DevicePointer::try_new(*size)?, *size)); } for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; let dev_ptr = hip::DevicePointer::try_new(size)?; - copy_data_to_device(name, &context, mmu_context.storage.as_ptr(), &dev_ptr)?; + copy_data_to_device(name, &context, base, &dev_ptr)?; buffers.insert(name.clone(), (dev_ptr, size)); } @@ -181,6 +185,14 @@ fn gpu_run(gpu_id: u8, config: GpuConfig, mut context: Context) -> DandelionResu } } + write_gpu_outputs::( + &mut context, + config.system_data_struct_offset, + base, + &output_names, + &buffers, + )?; + Ok(context) } @@ -205,7 +217,7 @@ impl EngineLoop for GpuLoop { &mut self, config: FunctionConfig, mut context: Context, - output_sets: std::sync::Arc>, + output_sets: Arc>, ) -> DandelionResult { let FunctionConfig::GpuConfig(config) = config else { return Err(DandelionError::ConfigMissmatch); @@ -220,7 +232,8 @@ impl EngineLoop for GpuLoop { // in thread for now, in process pool eventually; maybe add cpu_slot affinity? let gpu_id_clone = self.gpu_id; let config_clone = config.clone(); - let handle = thread::spawn(move || gpu_run(gpu_id_clone, config_clone, context)); + let outputs = output_sets.clone(); + let handle = thread::spawn(move || gpu_run(gpu_id_clone, config_clone, context, outputs)); let mut context = match handle.join() { Ok(res) => res?, Err(_) => return Err(DandelionError::EngineError), @@ -229,8 +242,6 @@ impl EngineLoop for GpuLoop { let write_buf = vec![12345i64]; context.write(0, &write_buf)?; - write_sentinel_output::(&mut context, config.system_data_struct_offset)?; - read_output_structs::(&mut context, config.system_data_struct_offset)?; Ok(context) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 7bfa179c..0a0a0507 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -43,8 +43,8 @@ pub enum Action { pub struct ExecutionBlueprint { pub inputs: Vec, /// buffer names to sizes - pub temps: HashMap, - pub outputs: HashMap, + pub buffers: HashMap, + pub outputs: Vec, // might not be required pub control_flow: Vec, } @@ -63,8 +63,8 @@ pub fn dummy_config() -> DandelionResult { ])), blueprint: Arc::new(ExecutionBlueprint { inputs: vec![], - temps: HashMap::from([("A".into(), 1024)]), - outputs: HashMap::new(), + buffers: HashMap::from([("A".into(), 1024)]), + outputs: vec![], control_flow: vec![ Action::ExecKernel( "set_mem".into(), @@ -98,8 +98,8 @@ pub fn dummy_config2() -> DandelionResult { kernels: Arc::new(HashMap::from([("check_then_write".into(), kernel)])), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], - temps: HashMap::new(), - outputs: HashMap::new(), + buffers: HashMap::new(), + outputs: vec!["A".into()], control_flow: vec![Action::ExecKernel( "check_then_write".into(), vec![Argument::BufferPtr("A".into())], diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 44b0bfc8..db519a44 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -186,13 +186,8 @@ pub fn memcpy_h_to_d( pub fn memcpy_d_to_h( dst: *const c_void, src: &DevicePointer, - dev_offset: isize, size_bytes: usize, ) -> DandelionResult<()> { - checked_call!(hipMemcpyDtoH( - dst, - src.0.byte_offset(dev_offset), - size_bytes - )); + checked_call!(hipMemcpyDtoH(dst, src.0, size_bytes)); Ok(()) } diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index d7d028c9..25cf5e0e 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -1,14 +1,18 @@ +use std::collections::HashMap; + use crate::{ + function_driver::compute_driver::gpu::hip::{self, DevicePointer}, memory_domain::{Context, ContextState, ContextTrait}, DataItem, DataSet, Position, }; use dandelion_commons::{DandelionError, DandelionResult}; -use libc::{c_int, size_t, uintptr_t}; +use libc::{c_int, c_void, size_t, uintptr_t}; extern crate alloc; +use std::fmt::Debug; pub trait SizedIntTrait where - Self: Sized + Copy + Default, + Self: Sized + Copy + Default + Debug, { fn from_native(ptr: usize) -> DandelionResult; fn to_native(self) -> DandelionResult; @@ -101,7 +105,7 @@ pub struct DandelionSystemData { output_bufs: PtrT, // *const IoBufferDescriptor, } -#[derive(Clone)] +#[derive(Clone, Debug)] #[repr(C)] struct IoSetInfo { ident: PtrT, // uintptr_t, @@ -119,10 +123,13 @@ struct IoBufferDescriptor { key: SizeT, // size_t, } -/// Used in cases where the Engine is responsible for writing outputs, not the runtime -pub fn write_sentinel_output( +/// Only really used for GPU, but defined here so we can access private fields of DandelionSystemData +pub fn write_gpu_outputs( context: &mut Context, system_data_offset: usize, + base: *mut u8, + output_set_names: &[String], + device_buffers: &HashMap, ) -> DandelionResult<()> { // read the system buffer let mut system_struct = DandelionSystemData::::default(); @@ -144,23 +151,35 @@ pub fn write_sentinel_output( output_set_info.resize_with(output_set_number + 1, || empty_output_set.clone()); context.read(usize_ptr!(system_struct.output_sets), &mut output_set_info)?; - // TODO: don't hard code this obviously - output_set_info[output_set_number].offset = size_t!(1); - - context.write(usize_ptr!(system_struct.output_sets), &output_set_info)?; - - // buffer offset let mut output_buffers: Vec> = Vec::new(); - if output_buffers.try_reserve_exact(1).is_err() { + if output_buffers + .try_reserve_exact(output_set_names.len()) + .is_err() + { return Err(DandelionError::OutOfMemory); } - output_buffers.push(IoBufferDescriptor { - ident: ptr_t!(0), - ident_len: size_t!(0), - data: ptr_t!(0), - data_len: size_t!(8), - key: size_t!(0), - }); + for (i, output_name) in output_set_names.iter().enumerate() { + // alignment shouldn't really make a huge difference + let (dev_ptr, size) = device_buffers + .get(output_name) + .ok_or(DandelionError::ConfigMissmatch)?; + let buf_offset = context.get_free_space(*size, 8)?; + + let src = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + hip::memcpy_d_to_h(src, dev_ptr, *size)?; + + output_buffers.push(IoBufferDescriptor { + ident: ptr_t!(0), + ident_len: size_t!(0), + data: ptr_t!(buf_offset), + data_len: size_t!(*size), + key: size_t!(0), + }); + output_set_info[i].offset = size_t!(i); + } + output_set_info[output_set_number].offset = size_t!(output_set_number); + + context.write(usize_ptr!(system_struct.output_sets), &output_set_info)?; let output_buffers_offset: PtrT = ptr_t!(context.get_free_space_and_write_slice(&output_buffers[..])? as usize); From 9b15740c0d6a5f7f13ed7d8a463eb343f33103b1 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:11:42 +0100 Subject: [PATCH 040/176] gpu inputs/outputs tests --- machine_interface/hip_interface/matmul.hsaco | Bin 0 -> 24504 bytes .../compute_driver/compute_driver_tests.rs | 160 +++++++++++++++++- .../src/function_driver/compute_driver/gpu.rs | 20 ++- .../compute_driver/gpu/gpu_utils.rs | 52 ++++++ .../function_driver/compute_driver/gpu/hip.rs | 8 + 5 files changed, 232 insertions(+), 8 deletions(-) create mode 100644 machine_interface/hip_interface/matmul.hsaco diff --git a/machine_interface/hip_interface/matmul.hsaco b/machine_interface/hip_interface/matmul.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..757b594407cb1033f978d19acab0c729e867b930 GIT binary patch literal 24504 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 IO^@t<0QP?cJ^%m! literal 0 HcmV?d00001 diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 870e0ea8..f2c229f3 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -661,7 +661,9 @@ mod compute_driver_tests { use crate::{ function_driver::{ compute_driver::{ - compute_driver_tests::compute_driver_tests::prepare_engine_and_function, + compute_driver_tests::compute_driver_tests::{ + get_expected_mat, prepare_engine_and_function, + }, gpu::{dummy_run, gpu_utils::dummy_config, GpuDriver, GpuLoop}, }, thread_utils::EngineLoop, @@ -711,7 +713,7 @@ mod compute_driver_tests { function_context.content.push(Some(DataSet { ident: "A".to_string(), buffers: vec![DataItem { - ident: "A".to_string(), + ident: "".to_string(), data: Position { offset: in_size_offset as usize, size: 8, @@ -752,5 +754,159 @@ mod compute_driver_tests { .expect("Should succeed in reading"); assert_eq!(98765, read_buffer[0]); } + + #[test] + fn engine_matmul_3x3_loop() { + let filename = "matmul_loop"; + let dom_init = MemoryResource::None; + let driver: Box = Box::new(GpuDriver {}); + let drv_init = vec![ComputeResource::GPU(1, 1)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::( + filename, dom_init, &driver, drv_init, + ); + // add inputs, split over two buffers to test concatenating them in GPU memory + let in_size_offset = function_context + .get_free_space_and_write_slice(&[3i64]) + .expect("Should have space"); + let offset2 = function_context + .get_free_space_and_write_slice(&[ + 0i64, 1i64, 2i64, 3i64, 4i64, 5i64, 6i64, 7i64, 8i64, + ]) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, + }, + DataItem { + ident: "".to_string(), + data: Position { + offset: offset2 as usize, + size: 72, + }, + key: 0, + }, + ], + })); + let archive = Arc::new(Mutex::new(Archive::new())); + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("B")]), + recorder, + })); + let (result_context, mut result_recorder) = + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!(80, position.size, "Checking for size of output"); + let mut read_buffer = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + assert_eq!(3, read_buffer[0]); + let expected = self::get_expected_mat(3); + assert_eq!(3i64, read_buffer[0]); + for (should, is) in expected.iter().zip(read_buffer[1..].iter()) { + assert_eq!(should, is); + } + } + + #[test] + fn engine_matmul_3x3_parallel() { + let filename = "matmul_para"; + let dom_init = MemoryResource::None; + let driver: Box = Box::new(GpuDriver {}); + let drv_init = vec![ComputeResource::GPU(1, 1)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::( + filename, dom_init, &driver, drv_init, + ); + // add inputs, split over two buffers to test concatenating them in GPU memory + let in_size_offset = function_context + .get_free_space_and_write_slice(&[3i64]) + .expect("Should have space"); + let offset2 = function_context + .get_free_space_and_write_slice(&[ + 0i64, 1i64, 2i64, 3i64, 4i64, 5i64, 6i64, 7i64, 8i64, + ]) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, + }, + DataItem { + ident: "".to_string(), + data: Position { + offset: offset2 as usize, + size: 72, + }, + key: 0, + }, + ], + })); + let archive = Arc::new(Mutex::new(Archive::new())); + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("B")]), + recorder, + })); + let (result_context, mut result_recorder) = + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!(80, position.size, "Checking for size of output"); + let mut read_buffer = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + assert_eq!(3, read_buffer[0]); + let expected = self::get_expected_mat(3); + assert_eq!(3i64, read_buffer[0]); + for (should, is) in expected.iter().zip(read_buffer[1..].iter()) { + assert_eq!(should, is); + } + } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index a14cb022..3a18a5a7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -170,16 +170,18 @@ fn gpu_run( hip::module_launch_kernel( config.kernels.get(name).unwrap(), launch_config.grid_dim_x, - 1, - 1, + launch_config.grid_dim_y, + launch_config.grid_dim_z, launch_config.block_dim_x, - 1, - 1, - 0, + launch_config.block_dim_y, + launch_config.block_dim_z, + launch_config.shared_mem_bytes, DEFAULT_STREAM, params.as_ptr(), null(), )?; + + hip::device_synchronize()?; } _ => return Err(DandelionError::NotImplemented), } @@ -286,8 +288,14 @@ impl Driver for GpuDriver { // Concept for now: function_path gives config file which contains name of module (.hsaco) file let config = if function_path == "foo" { FunctionConfig::GpuConfig(gpu_utils::dummy_config()?) - } else { + } else if function_path == "bar" { FunctionConfig::GpuConfig(gpu_utils::dummy_config2()?) + } else if function_path == "matmul_loop" { + FunctionConfig::GpuConfig(gpu_utils::matmul_dummy(false)?) + } else if function_path == "matmul_para" { + FunctionConfig::GpuConfig(gpu_utils::matmul_dummy(true)?) + } else { + return Err(DandelionError::ConfigMissmatch); }; let total_size = 0x10000usize; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 0a0a0507..7e6cad0c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -28,6 +28,23 @@ impl LaunchConfig { shared_mem_bytes, } } + pub fn two_dimensional( + grid_dim_x: u32, + grid_dim_y: u32, + block_dim_x: u32, + block_dim_y: u32, + shared_mem_bytes: usize, + ) -> Self { + Self { + grid_dim_x, + grid_dim_y, + grid_dim_z: 1, + block_dim_x, + block_dim_y, + block_dim_z: 1, + shared_mem_bytes, + } + } } pub enum Argument { @@ -109,6 +126,41 @@ pub fn dummy_config2() -> DandelionResult { }) } +pub fn matmul_dummy(parallel: bool) -> DandelionResult { + let fn_name = if parallel { + "matmul_para" + } else { + "matmul_loop" + }; + let module = + hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco")?; + let kernel = hip::module_get_function(&module, fn_name)?; + + Ok(GpuConfig { + system_data_struct_offset: 0x10000usize, + module: Arc::new(module), + kernels: Arc::new(HashMap::from([(fn_name.into(), kernel)])), + blueprint: Arc::new(ExecutionBlueprint { + inputs: vec!["A".into()], + buffers: HashMap::from([("B".into(), 80)]), + outputs: vec!["B".into()], + control_flow: vec![Action::ExecKernel( + fn_name.into(), + vec![ + Argument::BufferPtr("A".into()), + Argument::BufferLen("A".into()), + Argument::BufferPtr("B".into()), + ], + if parallel { + LaunchConfig::two_dimensional(1, 1, 3, 3, 0) + } else { + LaunchConfig::one_dimensional(1, 1, 0) + }, + )], + }), + }) +} + pub fn parse_config() -> DandelionResult { todo!() } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index db519a44..b3831f03 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -56,6 +56,7 @@ extern "C" { fn hipFree(ptr: *const c_void) -> ErrorT; fn hipMemcpyHtoD(dst: *const c_void, src: *const c_void, sizeBytes: size_t) -> ErrorT; fn hipMemcpyDtoH(dst: *const c_void, src: *const c_void, sizeBytes: size_t) -> ErrorT; + fn hipMemset(dst: *const c_void, value: i32, sizeBytes: size_t) -> ErrorT; } // TODO: Possibly move away from DandelionResult if HipError not wanted @@ -155,8 +156,15 @@ impl DevicePointer { pub fn try_new(size: usize) -> DandelionResult { let mut ret: *const c_void = null(); checked_call!(hipMalloc(&mut ret as *mut *const c_void, size)); + // zero out memory + checked_call!(hipMemset(ret, 0, size)); Ok(Self(ret)) } + + pub fn zero_out(&mut self, size: usize) -> DandelionResult<()> { + checked_call!(hipMemset(self.0, 0, size)); + Ok(()) + } } impl Drop for DevicePointer { From d948a9b4f91d206edea104e68c27773b023cbc83 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Thu, 21 Mar 2024 18:20:41 +0100 Subject: [PATCH 041/176] Blueprint parsing (still need to improve launch config) --- machine_interface/hip_interface/foo.json | 38 +++++ .../hip_interface/matmul_loop.json | 16 ++ .../compute_driver/compute_driver_tests.rs | 3 +- .../src/function_driver/compute_driver/gpu.rs | 31 ++-- .../compute_driver/gpu/gpu_utils.rs | 156 +++++++++++++++--- 5 files changed, 207 insertions(+), 37 deletions(-) create mode 100644 machine_interface/hip_interface/foo.json create mode 100644 machine_interface/hip_interface/matmul_loop.json diff --git a/machine_interface/hip_interface/foo.json b/machine_interface/hip_interface/foo.json new file mode 100644 index 00000000..dc200874 --- /dev/null +++ b/machine_interface/hip_interface/foo.json @@ -0,0 +1,38 @@ +{ + "module_path": "/[PATH]/nearest_neigbours.hsaco", + "kernels": ["SUB", "ADD", "MUL"], + "blueprint": { + "inputs": ["X", "A"], + "buffers": {"V": {"Sizeof": "X"}, "X_tmp": {"Sizeof": "X"}}, + "outputs": ["V"], + "control_flow": [ + {"Repeat": [{"NTimes": 25},[ + {"ExecKernel": ["SUB", + [{"Ptr": "X"}, {"Ptr": "V"}, {"Ptr": "X_tmp"}, {"Sizeof": "X"}], + { + "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, + "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, + "shared_mem_bytes": 0 + }] + }, + {"ExecKernel": ["ADD", + [{"Ptr": "X"}, {"Ptr": "V"}, {"Ptr": "V"}, {"Sizeof": "X"}], + { + "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, + "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, + "shared_mem_bytes": 0 + }] + }, + {"ExecKernel": ["MUL", + [{"Ptr": "A"}, {"Ptr": "X_tmp"}, {"Ptr": "X"}, {"Sizeof": "A"}, {"Sizeof": "X"}], + { + "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, + "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, + "shared_mem_bytes": 0 + } + ] + }]] + } + ] + } +} \ No newline at end of file diff --git a/machine_interface/hip_interface/matmul_loop.json b/machine_interface/hip_interface/matmul_loop.json new file mode 100644 index 00000000..162a9a26 --- /dev/null +++ b/machine_interface/hip_interface/matmul_loop.json @@ -0,0 +1,16 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco", + "kernels": ["matmul_loop"], + "blueprint": { + "inputs": ["A"], + "buffers": {"B": {"Sizeof": "A"}}, + "outputs": ["B"], + "control_flow": [ + {"ExecKernel": ["matmul_loop", [{"Ptr": "A"}, {"Sizeof": "A"}, {"Ptr": "B"}], { + "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, + "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, + "shared_mem_bytes": 0 + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index f2c229f3..ec83ef45 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -757,7 +757,8 @@ mod compute_driver_tests { #[test] fn engine_matmul_3x3_loop() { - let filename = "matmul_loop"; + let filename = + "/home/smithj/dandelion/machine_interface/hip_interface/matmul_loop.json"; let dom_init = MemoryResource::None; let driver: Box = Box::new(GpuDriver {}); let drv_init = vec![ComputeResource::GPU(1, 1)]; diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 3a18a5a7..768de18a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -13,7 +13,7 @@ use libc::c_void; use std::{collections::HashMap, ptr::null, sync::Arc, thread}; use self::{ - gpu_utils::{Action, Argument}, + gpu_utils::{Action, Argument, Sizing}, hip::{DevicePointer, DEFAULT_STREAM}, }; @@ -142,15 +142,26 @@ fn gpu_run( // TODO: move to pool of buffers approach let mut buffers: HashMap = HashMap::new(); - for (name, size) in &config.blueprint.buffers { - buffers.insert(name.clone(), (hip::DevicePointer::try_new(*size)?, *size)); - } for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; let dev_ptr = hip::DevicePointer::try_new(size)?; copy_data_to_device(name, &context, base, &dev_ptr)?; buffers.insert(name.clone(), (dev_ptr, size)); } + for (name, size) in &config.blueprint.buffers { + match size { + Sizing::Absolute(bytes) => { + buffers.insert(name.clone(), (hip::DevicePointer::try_new(*bytes)?, *bytes)); + } + Sizing::Sizeof(id) => { + let size_id = buffers.get(id).ok_or(DandelionError::ConfigMissmatch)?.1; + buffers.insert( + name.clone(), + (hip::DevicePointer::try_new(size_id)?, size_id), + ); + } + } + } for action in &config.blueprint.control_flow { match action { @@ -158,10 +169,10 @@ fn gpu_run( let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); for arg in args { match arg { - Argument::BufferPtr(id) => { + Argument::Ptr(id) => { params.push(&buffers.get(id).unwrap().0 .0 as *const _ as *const c_void) } - Argument::BufferLen(id) => { + Argument::Sizeof(id) => { params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void) } }; @@ -180,13 +191,13 @@ fn gpu_run( params.as_ptr(), null(), )?; - - hip::device_synchronize()?; } _ => return Err(DandelionError::NotImplemented), } } + hip::device_synchronize()?; + write_gpu_outputs::( &mut context, config.system_data_struct_offset, @@ -231,7 +242,7 @@ impl EngineLoop for GpuLoop { &output_sets, )?; - // in thread for now, in process pool eventually; maybe add cpu_slot affinity? + // in thread for now, in process pool eventually; TODO: add cpu_slot affinity? let gpu_id_clone = self.gpu_id; let config_clone = config.clone(); let outputs = output_sets.clone(); @@ -295,7 +306,7 @@ impl Driver for GpuDriver { } else if function_path == "matmul_para" { FunctionConfig::GpuConfig(gpu_utils::matmul_dummy(true)?) } else { - return Err(DandelionError::ConfigMissmatch); + FunctionConfig::GpuConfig(gpu_utils::parse_config(&function_path)?) }; let total_size = 0x10000usize; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 7e6cad0c..bc07838d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -1,11 +1,20 @@ -use std::{collections::HashMap, sync::Arc}; +use std::{ + collections::HashMap, + fs::{self, File}, + io::BufReader, + sync::Arc, +}; -use dandelion_commons::DandelionResult; +use dandelion_commons::{DandelionError, DandelionResult}; +use serde::{Deserialize, Serialize}; use crate::function_driver::GpuConfig; use super::hip; +const SYSDATA_OFFSET: usize = 0x10000usize; + +#[derive(Deserialize, Serialize, Debug)] pub struct LaunchConfig { pub grid_dim_x: u32, pub grid_dim_y: u32, @@ -47,20 +56,34 @@ impl LaunchConfig { } } +#[derive(Deserialize, Serialize, Debug)] pub enum Argument { - BufferPtr(String), - BufferLen(String), + Ptr(String), + Sizeof(String), +} + +#[derive(Deserialize, Serialize, Debug)] +pub enum Condition { + NTimes(usize), } -enum Condition {} + +#[derive(Deserialize, Serialize, Debug)] pub enum Action { ExecKernel(String, Vec, LaunchConfig), - RepeatWhile(Condition, Vec), + Repeat(Condition, Vec), +} + +#[derive(Deserialize, Serialize, Debug)] +pub enum Sizing { + Sizeof(String), + Absolute(usize), } +#[derive(Deserialize, Serialize, Debug)] pub struct ExecutionBlueprint { pub inputs: Vec, /// buffer names to sizes - pub buffers: HashMap, + pub buffers: HashMap, pub outputs: Vec, // might not be required pub control_flow: Vec, } @@ -72,7 +95,7 @@ pub fn dummy_config() -> DandelionResult { let kernel_check = hip::module_get_function(&module, "check_mem")?; Ok(GpuConfig { - system_data_struct_offset: 0x10000usize, + system_data_struct_offset: SYSDATA_OFFSET, module: Arc::new(module), kernels: Arc::new(HashMap::from([ ("set_mem".into(), kernel_set), @@ -80,23 +103,17 @@ pub fn dummy_config() -> DandelionResult { ])), blueprint: Arc::new(ExecutionBlueprint { inputs: vec![], - buffers: HashMap::from([("A".into(), 1024)]), + buffers: HashMap::from([("A".into(), Sizing::Absolute(1024))]), outputs: vec![], control_flow: vec![ Action::ExecKernel( "set_mem".into(), - vec![ - Argument::BufferPtr("A".into()), - Argument::BufferLen("A".into()), - ], + vec![Argument::Ptr("A".into()), Argument::Sizeof("A".into())], LaunchConfig::one_dimensional((256 + 1024 - 1) / 1024, 1024, 0), ), Action::ExecKernel( "check_mem".into(), - vec![ - Argument::BufferPtr("A".into()), - Argument::BufferLen("A".into()), - ], + vec![Argument::Ptr("A".into()), Argument::Sizeof("A".into())], LaunchConfig::one_dimensional(1, 1, 0), ), ], @@ -110,7 +127,7 @@ pub fn dummy_config2() -> DandelionResult { let kernel = hip::module_get_function(&module, "check_then_write")?; Ok(GpuConfig { - system_data_struct_offset: 0x10000usize, + system_data_struct_offset: SYSDATA_OFFSET, module: Arc::new(module), kernels: Arc::new(HashMap::from([("check_then_write".into(), kernel)])), blueprint: Arc::new(ExecutionBlueprint { @@ -119,7 +136,7 @@ pub fn dummy_config2() -> DandelionResult { outputs: vec!["A".into()], control_flow: vec![Action::ExecKernel( "check_then_write".into(), - vec![Argument::BufferPtr("A".into())], + vec![Argument::Ptr("A".into())], LaunchConfig::one_dimensional(1, 1, 0), )], }), @@ -137,19 +154,19 @@ pub fn matmul_dummy(parallel: bool) -> DandelionResult { let kernel = hip::module_get_function(&module, fn_name)?; Ok(GpuConfig { - system_data_struct_offset: 0x10000usize, + system_data_struct_offset: SYSDATA_OFFSET, module: Arc::new(module), kernels: Arc::new(HashMap::from([(fn_name.into(), kernel)])), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], - buffers: HashMap::from([("B".into(), 80)]), + buffers: HashMap::from([("B".into(), Sizing::Absolute(80))]), outputs: vec!["B".into()], control_flow: vec![Action::ExecKernel( fn_name.into(), vec![ - Argument::BufferPtr("A".into()), - Argument::BufferLen("A".into()), - Argument::BufferPtr("B".into()), + Argument::Ptr("A".into()), + Argument::Sizeof("A".into()), + Argument::Ptr("B".into()), ], if parallel { LaunchConfig::two_dimensional(1, 1, 3, 3, 0) @@ -161,6 +178,93 @@ pub fn matmul_dummy(parallel: bool) -> DandelionResult { }) } -pub fn parse_config() -> DandelionResult { - todo!() +#[derive(Deserialize, Serialize, Debug)] +struct GpuConfigIR { + module_path: String, + kernels: Vec, + blueprint: ExecutionBlueprint, +} + +impl TryFrom for GpuConfig { + type Error = DandelionError; + fn try_from(value: GpuConfigIR) -> Result { + let module = hip::module_load(&value.module_path)?; + let kernels = value + .kernels + .iter() + .map(|kname| { + hip::module_get_function(&module, kname).map(|module| (kname.clone(), module)) + }) + .collect::, _>>()?; // this is kinda ugly but also pretty cool + Ok(Self { + module: Arc::new(module), + system_data_struct_offset: SYSDATA_OFFSET, + kernels: Arc::new(kernels), + blueprint: Arc::new(value.blueprint), + }) + } +} + +pub fn parse_config(path: &str) -> DandelionResult { + let file = File::open(path).map_err(|_| DandelionError::ConfigMissmatch)?; + let reader = BufReader::new(file); + let ir: GpuConfigIR = + serde_json::from_reader(reader).map_err(|_| DandelionError::ConfigMissmatch)?; + ir.try_into() +} + +#[test] +fn test_parse() { + let cfg = GpuConfigIR { + module_path: "/[PATH]/nearest_neigbours.hsaco".into(), + kernels: vec!["SUB".into(), "ADD".into(), "MUL".into()], + blueprint: ExecutionBlueprint { + inputs: vec!["X".into(), "A".into()], + buffers: HashMap::from([ + ("V".into(), Sizing::Sizeof("X".into())), + ("X_tmp".into(), Sizing::Sizeof("X".into())), + ]), + outputs: vec!["V".into()], + control_flow: vec![Action::Repeat( + Condition::NTimes(25), + vec![ + Action::ExecKernel( + "SUB".into(), + vec![ + Argument::Ptr("X".into()), + Argument::Ptr("V".into()), + Argument::Ptr("X_tmp".into()), + Argument::Sizeof("X".into()), + ], + LaunchConfig::one_dimensional(1, 1, 0), + ), + Action::ExecKernel( + "ADD".into(), + vec![ + Argument::Ptr("X".into()), + Argument::Ptr("V".into()), + Argument::Ptr("V".into()), + Argument::Sizeof("X".into()), + ], + LaunchConfig::one_dimensional(1, 1, 0), + ), + Action::ExecKernel( + "MUL".into(), + vec![ + Argument::Ptr("A".into()), + Argument::Ptr("X_tmp".into()), + Argument::Ptr("X".into()), + Argument::Sizeof("A".into()), + Argument::Sizeof("X".into()), + ], + LaunchConfig::one_dimensional(1, 1, 0), + ), + ], + )], + }, + }; + + let j = serde_json::to_string(&cfg).unwrap(); + + println!("{}", j); } From d747a0b4d2d9133207de88f32d628d95ac567e79 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 22 Mar 2024 15:34:52 +0100 Subject: [PATCH 042/176] Switched to crossbeam channel for work queue --- dandelion_commons/src/records.rs | 2 +- dispatcher/Cargo.toml | 1 + dispatcher/src/execution_qs.rs | 19 +++++++++++-------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index f5be8a4c..8cc53301 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -159,7 +159,7 @@ mod timestamp { self.append_timestamps(previous, summary); } summary.push_str(&format!( - "parent:{}, span:{}, time:{}, point:{:?} ", + "parent:{}, span:{}, time:{}, point:{:?}, ", timestamp.parent_span, timestamp.current_span, timestamp.time.duration_since(self.start_time).as_nanos(), diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index f1daf44a..aa966b3c 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -13,6 +13,7 @@ futures = {version = "0.3.28", default-features = false} log = "0.4.21" itertools = {version = "0.11", default-features = false, features = ["use_alloc"]} dparser = {path = "../dparser"} +crossbeam = "0.8.4" [features] cheri = ["machine_interface/cheri"] diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 7d096583..0f81a0af 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,24 +1,24 @@ use dandelion_commons::{records::Recorder, DandelionResult}; +use log::error; use machine_interface::{ function_driver::{EngineArguments, WorkQueue}, memory_domain::Context, promise::{Debt, Promise}, }; -use std::sync::Arc; /// Datastructure that implements priority queueing /// Highest priority queue holds promises if there are any #[derive(Clone)] pub struct EngineQueue { - queue_in: Arc>, - queue_out: Arc>>, + queue_in: crossbeam::channel::Sender<(EngineArguments, Debt)>, + queue_out: crossbeam::channel::Receiver<(EngineArguments, Debt)>, } /// This is run on the engine so it performs asyncornous access to the local state impl WorkQueue for EngineQueue { fn get_engine_args(&self) -> (EngineArguments, Debt) { loop { - let (recieved_args, recieved_debt) = self.queue_out.lock().unwrap().recv().unwrap(); + let (recieved_args, recieved_debt) = self.queue_out.recv().unwrap(); if recieved_debt.is_alive() { return (recieved_args, recieved_debt); } @@ -28,16 +28,19 @@ impl WorkQueue for EngineQueue { impl EngineQueue { pub fn new() -> Self { - let (sender, receiver) = std::sync::mpsc::channel(); + let (sender, receiver) = crossbeam::channel::unbounded(); return EngineQueue { - queue_in: Arc::new(sender), - queue_out: Arc::new(std::sync::Mutex::new(receiver)), + queue_in: sender, + queue_out: receiver, }; } pub async fn enqueu_work(&self, args: EngineArguments) -> DandelionResult<(Context, Recorder)> { let (promise, debt) = Promise::new(); - self.queue_in.send((args, debt)).unwrap(); + match self.queue_in.try_send((args, debt)) { + Ok(()) => (), + Err(err) => error!("Failed to enqueu work with error: {:?}", err), + } return *promise.await; } } From f1b77ca853b8bf2c61202fe4a932ba0e9db3506f Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 22 Mar 2024 17:04:18 +0100 Subject: [PATCH 043/176] Moved timestamps to be cleser to enqueing --- dispatcher/src/dispatcher.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 0be6f623..ab593456 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -300,7 +300,6 @@ impl Dispatcher { recorder.get_sub_recorder()?, ) .await?; - recorder.record(RecordPoint::FutureReturn)?; let context_arc = Arc::new(context); let composition_sets = output_mapping .into_iter() @@ -457,14 +456,15 @@ impl Dispatcher { Some(q) => q, None => return Err(DandelionError::DispatcherConfigError), }; - recorder.record(RecordPoint::ExecutionQueue)?; let args = EngineArguments::FunctionArguments(FunctionArguments { config: function_config, context: function_context, output_sets, recorder, }); + recorder.record(RecordPoint::ExecutionQueue)?; let (result, _) = engine_queue.enqueu_work(args).await?; + recorder.record(RecordPoint::FutureReturn)?; return Ok(result); } } From 0b0fd760b1659ebc98a95648e5e0dee1167e0185 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 22 Mar 2024 17:18:21 +0100 Subject: [PATCH 044/176] Fixed clone issue with recorder --- dispatcher/src/dispatcher.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index ab593456..93403034 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -456,11 +456,12 @@ impl Dispatcher { Some(q) => q, None => return Err(DandelionError::DispatcherConfigError), }; + let subrecoder = recorder.get_sub_recorder()?; let args = EngineArguments::FunctionArguments(FunctionArguments { config: function_config, context: function_context, output_sets, - recorder, + recorder: subrecoder, }); recorder.record(RecordPoint::ExecutionQueue)?; let (result, _) = engine_queue.enqueu_work(args).await?; From 4145430592e3a42585907b4466904fda5ca11066 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 22 Mar 2024 17:21:12 +0100 Subject: [PATCH 045/176] launch config sizing and size_sweep test --- .../hip_interface/matmul_para.json | 18 +++ .../compute_driver/compute_driver_tests.rs | 150 ++++++++++-------- .../src/function_driver/compute_driver/gpu.rs | 37 ++++- .../compute_driver/gpu/gpu_utils.rs | 41 +++-- 4 files changed, 157 insertions(+), 89 deletions(-) create mode 100644 machine_interface/hip_interface/matmul_para.json diff --git a/machine_interface/hip_interface/matmul_para.json b/machine_interface/hip_interface/matmul_para.json new file mode 100644 index 00000000..3b234d63 --- /dev/null +++ b/machine_interface/hip_interface/matmul_para.json @@ -0,0 +1,18 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco", + "kernels": ["matmul_para"], + "blueprint": { + "inputs": ["A"], + "buffers": {"B": {"Sizeof": "A"}}, + "outputs": ["B"], + "control_flow": [ + {"ExecKernel": ["matmul_para", [{"Ptr": "A"}, {"Sizeof": "A"}, {"Ptr": "B"}], { + "grid_dim_x": {"CoverBuffer": {"bufname": "A", "dimensionality": 2, "block_dim": 32}}, + "grid_dim_y": {"CoverBuffer": {"bufname": "A", "dimensionality": 2, "block_dim": 32}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": 32, "block_dim_y": 32, "block_dim_z": 1, + "shared_mem_bytes": 0 + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index ec83ef45..707e4f80 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -834,79 +834,93 @@ mod compute_driver_tests { } #[test] - fn engine_matmul_3x3_parallel() { - let filename = "matmul_para"; + fn engine_matmul_size_sweep_parallel() { + let filename = + "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; let dom_init = MemoryResource::None; let driver: Box = Box::new(GpuDriver {}); let drv_init = vec![ComputeResource::GPU(1, 1)]; - let (mut function_context, config, queue) = - prepare_engine_and_function::( - filename, dom_init, &driver, drv_init, - ); - // add inputs, split over two buffers to test concatenating them in GPU memory - let in_size_offset = function_context - .get_free_space_and_write_slice(&[3i64]) - .expect("Should have space"); - let offset2 = function_context - .get_free_space_and_write_slice(&[ - 0i64, 1i64, 2i64, 3i64, 4i64, 5i64, 6i64, 7i64, 8i64, - ]) - .expect("Should have space"); - function_context.content.push(Some(DataSet { - ident: "A".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: in_size_offset as usize, - size: 8, + const LOWER_SIZE_BOUND: usize = 2; + const UPPER_SIZE_BOUND: usize = 16; + for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { + let (mut function_context, config, queue) = + prepare_engine_and_function::( + filename, + dom_init, + &driver, + drv_init.clone(), + ); + // add inputs, split over two buffers to test concatenating them in GPU memory + let in_size_offset = function_context + .get_free_space_and_write_slice(&[mat_size as i64]) + .expect("Should have space"); + + let mut mat_vec = Vec::::new(); + for i in 0..(mat_size * mat_size) { + mat_vec.push(i as i64); + } + let in_mat_offset = function_context + .get_free_space_and_write_slice(&mat_vec) + .expect("Should have space") as usize; + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, }, - key: 0, - }, - DataItem { - ident: "".to_string(), - data: Position { - offset: offset2 as usize, - size: 72, + DataItem { + ident: "".to_string(), + data: Position { + offset: in_mat_offset as usize, + size: mat_vec.len() * 8, + }, + key: 0, }, - key: 0, - }, - ], - })); - let archive = Arc::new(Mutex::new(Archive::new())); - let recorder = Recorder::new(archive, RecordPoint::TransferEnd); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from("B")]), - recorder, - })); - let (result_context, mut result_recorder) = - tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function"); - result_recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - assert_eq!(1, result_context.content.len()); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - assert_eq!(1, output_item.buffers.len()); - let position = output_item.buffers[0].data; - assert_eq!(80, position.size, "Checking for size of output"); - let mut read_buffer = vec![0i64; position.size / 8]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - assert_eq!(3, read_buffer[0]); - let expected = self::get_expected_mat(3); - assert_eq!(3i64, read_buffer[0]); - for (should, is) in expected.iter().zip(read_buffer[1..].iter()) { - assert_eq!(should, is); + ], + })); + let archive = Arc::new(Mutex::new(Archive::new())); + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("B")]), + recorder, + })); + let (result_context, mut result_recorder) = + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = &result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!( + (mat_size * mat_size + 1) * 8, + position.size, + "Checking for size of output" + ); + let mut output = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut output) + .expect("Should succeed in reading"); + let expected = self::get_expected_mat(mat_size); + assert_eq!(mat_size as i64, output[0]); + for (should, is) in expected.iter().zip(output[1..].iter()) { + assert_eq!(should, is); + } } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 768de18a..b0edd1ff 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -13,7 +13,7 @@ use libc::c_void; use std::{collections::HashMap, ptr::null, sync::Arc, thread}; use self::{ - gpu_utils::{Action, Argument, Sizing}, + gpu_utils::{Action, Argument, BufferSizing, GridSizing}, hip::{DevicePointer, DEFAULT_STREAM}, }; @@ -126,6 +126,31 @@ fn copy_data_to_device( Ok(()) } +// subject to change; not super happy with this +fn get_grid_size( + gs: &GridSizing, + buffers: &HashMap, +) -> DandelionResult { + match gs { + GridSizing::Absolute(size) => Ok(*size), + GridSizing::CoverBuffer { + bufname, + dimensionality, + block_dim, + } => { + if *dimensionality > 3 || *dimensionality == 0 { + return Err(DandelionError::ConfigMissmatch); + } + let bufsize = buffers + .get(bufname) + .ok_or(DandelionError::ConfigMissmatch)? + .1; + let side_length = (bufsize as f64).powf(1.0 / (*dimensionality as f64)).ceil() as u32; + Ok((side_length + block_dim - 1) / block_dim) + } + } +} + fn gpu_run( gpu_id: u8, config: GpuConfig, @@ -150,10 +175,10 @@ fn gpu_run( } for (name, size) in &config.blueprint.buffers { match size { - Sizing::Absolute(bytes) => { + BufferSizing::Absolute(bytes) => { buffers.insert(name.clone(), (hip::DevicePointer::try_new(*bytes)?, *bytes)); } - Sizing::Sizeof(id) => { + BufferSizing::Sizeof(id) => { let size_id = buffers.get(id).ok_or(DandelionError::ConfigMissmatch)?.1; buffers.insert( name.clone(), @@ -180,9 +205,9 @@ fn gpu_run( hip::module_launch_kernel( config.kernels.get(name).unwrap(), - launch_config.grid_dim_x, - launch_config.grid_dim_y, - launch_config.grid_dim_z, + get_grid_size(&launch_config.grid_dim_x, &buffers)?, + get_grid_size(&launch_config.grid_dim_y, &buffers)?, + get_grid_size(&launch_config.grid_dim_z, &buffers)?, launch_config.block_dim_x, launch_config.block_dim_y, launch_config.block_dim_z, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index bc07838d..936a0086 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -14,11 +14,22 @@ use super::hip; const SYSDATA_OFFSET: usize = 0x10000usize; +// This is subject to change; not very happy with it +#[derive(Deserialize, Serialize, Debug)] +pub enum GridSizing { + CoverBuffer { + bufname: String, + dimensionality: u8, + block_dim: u32, + }, + Absolute(u32), +} + #[derive(Deserialize, Serialize, Debug)] pub struct LaunchConfig { - pub grid_dim_x: u32, - pub grid_dim_y: u32, - pub grid_dim_z: u32, + pub grid_dim_x: GridSizing, + pub grid_dim_y: GridSizing, + pub grid_dim_z: GridSizing, pub block_dim_x: u32, pub block_dim_y: u32, pub block_dim_z: u32, @@ -28,9 +39,9 @@ pub struct LaunchConfig { impl LaunchConfig { pub fn one_dimensional(grid_dim: u32, block_dim: u32, shared_mem_bytes: usize) -> Self { Self { - grid_dim_x: grid_dim, - grid_dim_y: 1, - grid_dim_z: 1, + grid_dim_x: GridSizing::Absolute(grid_dim), + grid_dim_y: GridSizing::Absolute(1), + grid_dim_z: GridSizing::Absolute(1), block_dim_x: block_dim, block_dim_y: 1, block_dim_z: 1, @@ -45,9 +56,9 @@ impl LaunchConfig { shared_mem_bytes: usize, ) -> Self { Self { - grid_dim_x, - grid_dim_y, - grid_dim_z: 1, + grid_dim_x: GridSizing::Absolute(grid_dim_x), + grid_dim_y: GridSizing::Absolute(grid_dim_y), + grid_dim_z: GridSizing::Absolute(1), block_dim_x, block_dim_y, block_dim_z: 1, @@ -74,7 +85,7 @@ pub enum Action { } #[derive(Deserialize, Serialize, Debug)] -pub enum Sizing { +pub enum BufferSizing { Sizeof(String), Absolute(usize), } @@ -83,7 +94,7 @@ pub enum Sizing { pub struct ExecutionBlueprint { pub inputs: Vec, /// buffer names to sizes - pub buffers: HashMap, + pub buffers: HashMap, pub outputs: Vec, // might not be required pub control_flow: Vec, } @@ -103,7 +114,7 @@ pub fn dummy_config() -> DandelionResult { ])), blueprint: Arc::new(ExecutionBlueprint { inputs: vec![], - buffers: HashMap::from([("A".into(), Sizing::Absolute(1024))]), + buffers: HashMap::from([("A".into(), BufferSizing::Absolute(1024))]), outputs: vec![], control_flow: vec![ Action::ExecKernel( @@ -159,7 +170,7 @@ pub fn matmul_dummy(parallel: bool) -> DandelionResult { kernels: Arc::new(HashMap::from([(fn_name.into(), kernel)])), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], - buffers: HashMap::from([("B".into(), Sizing::Absolute(80))]), + buffers: HashMap::from([("B".into(), BufferSizing::Absolute(80))]), outputs: vec!["B".into()], control_flow: vec![Action::ExecKernel( fn_name.into(), @@ -221,8 +232,8 @@ fn test_parse() { blueprint: ExecutionBlueprint { inputs: vec!["X".into(), "A".into()], buffers: HashMap::from([ - ("V".into(), Sizing::Sizeof("X".into())), - ("X_tmp".into(), Sizing::Sizeof("X".into())), + ("V".into(), BufferSizing::Sizeof("X".into())), + ("X_tmp".into(), BufferSizing::Sizeof("X".into())), ]), outputs: vec!["V".into()], control_flow: vec![Action::Repeat( From 6a9d35acb2a7751b7f23b55bc92dd9a535bff5ac Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 22 Mar 2024 18:41:05 +0100 Subject: [PATCH 046/176] Detect physical cores and jump over hyper threads in resource allocation --- server/Cargo.toml | 1 + server/src/main.rs | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index 3df2c633..46cec700 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -12,6 +12,7 @@ tokio = { version = "1", features = ["full"] } hyper = { version = "0.14", features = ["full"] } tower = { version = "0.4.13", features = ["make"] } core_affinity = "0.8" +num_cpus = "1.16.0" bytes = "1.4" http = "0.2" log = "0.4.20" diff --git a/server/src/main.rs b/server/src/main.rs index 0feb1f53..7c90acc0 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -494,7 +494,9 @@ fn main() -> () { } // find available resources - let num_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); + let num_cores = u8::try_from(num_cpus::get_physical()).unwrap(); + let num_virt_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); + let threads_per_core = num_virt_cores / num_cores; // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines let num_dispatcher_cores = std::env::var("NUM_DISP_CORES") .map_or_else(|_e| (num_cores + 13) / 14, |n| n.parse::().unwrap()); @@ -532,14 +534,16 @@ fn main() -> () { #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] pool_map.insert( engine_type, - (num_dispatcher_cores..num_cores) + (num_dispatcher_cores * threads_per_core..num_virt_cores) + .step_by(threads_per_core.into()) .map(|code_id| ComputeResource::CPU(code_id)) .collect(), ); #[cfg(feature = "hyper_io")] pool_map.insert( EngineType::Hyper, - (0..num_dispatcher_cores) + (0..num_dispatcher_cores * threads_per_core) + .step_by(threads_per_core.into()) .map(|core_id| ComputeResource::CPU(core_id)) .collect(), ); From 50b9b1d9ca2a2b4873406bb234baeaa9e1c2f6b9 Mon Sep 17 00:00:00 2001 From: richardlee <18626685+richardlee159@users.noreply.github.com> Date: Sun, 24 Mar 2024 23:39:08 +0100 Subject: [PATCH 047/176] Update cheri engine for the new queueing --- dispatcher/tests/dispatcher_tests.rs | 1 + .../function_driver/compute_driver/cheri.rs | 157 ++++-------------- .../compute_driver/compute_driver_tests.rs | 23 +-- server/tests/server_tests.rs | 12 +- 4 files changed, 54 insertions(+), 139 deletions(-) diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index 1652391a..25e91c59 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -151,6 +151,7 @@ mod dispatcher_tests { mod cheri { use machine_interface::{ function_driver::ComputeResource, + machine_config::EngineType, memory_domain::{cheri::CheriMemoryDomain, MemoryResource}, }; dispatcherTests!(elf_cheri; CheriMemoryDomain; MemoryResource::None; EngineType::Cheri; vec![ComputeResource::CPU(1)]); diff --git a/machine_interface/src/function_driver/compute_driver/cheri.rs b/machine_interface/src/function_driver/compute_driver/cheri.rs index 115bf111..db23550b 100644 --- a/machine_interface/src/function_driver/compute_driver/cheri.rs +++ b/machine_interface/src/function_driver/compute_driver/cheri.rs @@ -1,24 +1,16 @@ use crate::{ function_driver::{ load_utils::load_u8_from_file, - thread_utils::{DefaultState, ThreadCommand, ThreadController, ThreadPayload}, - ComputeResource, Driver, ElfConfig, Engine, Function, FunctionConfig, + thread_utils::{start_thread, EngineLoop}, + ComputeResource, Driver, ElfConfig, Function, FunctionConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs}, memory_domain::{cheri::cheri_c_context, Context, ContextTrait, ContextType, MemoryDomain}, util::elf_parser, DataItem, DataRequirement, DataRequirementList, DataSet, Position, }; -use core::{ - future::{ready, Future}, - pin::Pin, -}; use core_affinity; -use dandelion_commons::{ - records::{RecordPoint, Recorder}, - DandelionError, DandelionResult, -}; -use futures::task::Poll; +use dandelion_commons::{DandelionError, DandelionResult}; use libc::size_t; use std::sync::Arc; @@ -32,122 +24,42 @@ extern "C" { ) -> i8; } -struct CheriCommand { - context: *const cheri_c_context, - entry_point: size_t, - return_pair_offset: size_t, - stack_pointer: size_t, -} -unsafe impl Send for CheriCommand {} - -impl ThreadPayload for CheriCommand { - type State = DefaultState; - fn run(self, _state: &mut Self::State) -> DandelionResult<()> { - let cheri_error; - unsafe { - cheri_error = cheri_run_static( - self.context, - self.entry_point, - self.return_pair_offset, - self.stack_pointer, - ); - } - return match cheri_error { - 0 => Ok(()), - 1 => Err(DandelionError::OutOfMemory), - _ => Err(DandelionError::NotImplemented), - }; - } -} - -pub struct CheriEngine { - thread_controller: ThreadController, -} - -struct CheriFuture<'a> { - engine: &'a mut CheriEngine, - context: Option, - system_data_offset: usize, -} +struct CheriLoop {} -// TODO find better way than take unwrap to return context -// or at least a way to ensure that the future is always initialized with a context, -// so this can only happen when poll is called after it has already returned the context once -impl Future for CheriFuture<'_> { - type Output = (DandelionResult<()>, Context); - fn poll( - mut self: Pin<&mut Self>, - cx: &mut futures::task::Context, - ) -> futures::task::Poll { - match Pin::new(&mut self.engine.thread_controller).poll_next(cx) { - Poll::Pending => return Poll::Pending, - Poll::Ready(None) => { - return Poll::Ready(( - Err(DandelionError::EngineError), - self.context.take().unwrap(), - )) - } - Poll::Ready(Some(Err(err))) => { - return Poll::Ready((Err(err), self.context.take().unwrap())) - } - Poll::Ready(Some(Ok(()))) => (), - } - let mut context = self.context.take().unwrap(); - // read outputs - let result = read_output_structs::(&mut context, self.system_data_offset); - Poll::Ready((result, context)) +impl EngineLoop for CheriLoop { + fn init(_core_id: u8) -> DandelionResult> { + return Ok(Box::new(CheriLoop {})); } -} - -impl Engine for CheriEngine { fn run( &mut self, - config: &FunctionConfig, + config: FunctionConfig, mut context: Context, - output_set_names: &Vec, - mut recorder: &mut Recorder, - ) -> Pin, Context)> + '_ + Send>> { - if let Err(err) = recorder.record(RecordPoint::EngineStart) { - return Box::pin(core::future::ready((Err(err), context))); - } + output_sets: std::sync::Arc>, + ) -> DandelionResult { let elf_config = match config { FunctionConfig::ElfConfig(conf) => conf, - _ => return Box::pin(ready((Err(DandelionError::ConfigMissmatch), context))), + _ => return Err(DandelionError::ConfigMissmatch), }; + setup_input_structs::(&mut context, elf_config.system_data_offset, &output_sets)?; let cheri_context = match &context.context { - ContextType::Cheri(ref cheri_context) => cheri_context, - _ => return Box::pin(ready((Err(DandelionError::ContextMissmatch), context))), + ContextType::Cheri(cheri_context) => cheri_context, + _ => return Err(DandelionError::ContextMissmatch), }; - let command = ThreadCommand::Run( - recorder, - CheriCommand { - context: cheri_context.context, - entry_point: elf_config.entry_point, - return_pair_offset: elf_config.return_offset.0, - stack_pointer: cheri_context.size - 32, - }, - ); - if let Err(err) = setup_input_structs::( - &mut context, - elf_config.system_data_offset, - output_set_names, - ) { - return Box::pin(ready((Err(err), context))); - } - match self.thread_controller.send_command(command) { - Err(_) => return Box::pin(ready((Err(DandelionError::EngineError), context))), - Ok(_) => (), - } - let function_future = Box::::pin(CheriFuture { - engine: self, - context: Some(context), - system_data_offset: elf_config.system_data_offset, - }); - return function_future; - } - fn abort(&mut self) -> DandelionResult<()> { - // TODO actually abort - todo!(); + let cheri_error = unsafe { + cheri_run_static( + cheri_context.context, + elf_config.entry_point, + elf_config.return_offset.0, + cheri_context.size - 32, + ) + }; + match cheri_error { + 0 => Ok(()), + 1 => Err(DandelionError::OutOfMemory), + _ => Err(DandelionError::NotImplemented), + }?; + read_output_structs::(&mut context, elf_config.system_data_offset)?; + return Ok(context); } } @@ -155,7 +67,11 @@ pub struct CheriDriver {} impl Driver for CheriDriver { // // take or release one of the available engines - fn start_engine(&self, resource: ComputeResource) -> DandelionResult> { + fn start_engine( + &self, + resource: ComputeResource, + queue: Box, + ) -> DandelionResult<()> { let cpu_slot = match resource { ComputeResource::CPU(core) => core, _ => return Err(DandelionError::EngineResourceError), @@ -172,9 +88,8 @@ impl Driver for CheriDriver { { return Err(DandelionError::EngineResourceError); } - return Ok(Box::new(CheriEngine { - thread_controller: ThreadController::new(cpu_slot), - })); + start_thread::(cpu_slot, queue); + return Ok(()); } // parses an executable, diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index fd967c1e..42d9a08a 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -575,10 +575,9 @@ mod compute_driver_tests { #[cfg(feature = "cheri")] mod cheri { - use crate::function_driver::compute_driver::cheri::CheriDriver; - use crate::function_driver::ComputeResource; - use crate::memory_domain::cheri::CheriMemoryDomain; - driverTests!(elf_cheri; CheriMemoryDomain; Vec::new(); CheriDriver {}; + use crate::function_driver::{compute_driver::cheri::CheriDriver, ComputeResource}; + use crate::memory_domain::{cheri::CheriMemoryDomain, MemoryResource}; + driverTests!(elf_cheri; CheriMemoryDomain; MemoryResource::None; CheriDriver {}; core_affinity::get_core_ids() .and_then( |core_vec| @@ -594,11 +593,8 @@ mod compute_driver_tests { #[cfg(feature = "mmu")] mod mmu { - use crate::function_driver::ComputeResource; - use crate::memory_domain::mmu::MmuMemoryDomain; - use crate::{ - function_driver::compute_driver::mmu::MmuDriver, memory_domain::MemoryResource, - }; + use crate::function_driver::{compute_driver::mmu::MmuDriver, ComputeResource}; + use crate::memory_domain::{mmu::MmuMemoryDomain, MemoryResource}; #[cfg(target_arch = "x86_64")] driverTests!(elf_mmu_x86_64; MmuMemoryDomain; MemoryResource::None; MmuDriver {}; core_affinity::get_core_ids() @@ -629,12 +625,11 @@ mod compute_driver_tests { #[cfg(feature = "wasm")] mod wasm { - use crate::function_driver::compute_driver::wasm::WasmDriver; - use crate::function_driver::ComputeResource; - use crate::memory_domain::wasm::WasmMemoryDomain; + use crate::function_driver::{compute_driver::wasm::WasmDriver, ComputeResource}; + use crate::memory_domain::{wasm::WasmMemoryDomain, MemoryResource}; #[cfg(target_arch = "x86_64")] - driverTests!(sysld_wasm_x86_64; WasmMemoryDomain; crate::memory_domain::MemoryResource::None; WasmDriver {}; + driverTests!(sysld_wasm_x86_64; WasmMemoryDomain; MemoryResource::None; WasmDriver {}; core_affinity::get_core_ids() .and_then( |core_vec| @@ -648,7 +643,7 @@ mod compute_driver_tests { ]); #[cfg(target_arch = "aarch64")] - driverTests!(sysld_wasm_aarch64; WasmMemoryDomain; Vec::new(); WasmDriver {}; + driverTests!(sysld_wasm_aarch64; WasmMemoryDomain; MemoryResource::None; WasmDriver {}; core_affinity::get_core_ids() .and_then( |core_vec| diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index e2ac2d15..ca916724 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -118,19 +118,23 @@ mod server_tests { let engine_type; #[cfg(feature = "wasm")] { - version = "sysld_wasm"; + version = format!("sysld_wasm_{}", std::env::consts::ARCH); engine_type = String::from("RWasm"); } #[cfg(feature = "mmu")] { - version = "elf_mmu"; + version = format!("elf_mmu_{}", std::env::consts::ARCH); engine_type = String::from("Process"); } + #[cfg(feature = "cheri")] + { + version = "elf_cheri"; + engine_type = String::from("Cheri"); + } let matmul_path = format!( - "{}/../machine_interface/tests/data/test_{}_{}_matmul", + "{}/../machine_interface/tests/data/test_{}_matmul", env!("CARGO_MANIFEST_DIR"), version, - std::env::consts::ARCH ); let register_request = RegisterFunction { From a0fbcc534f1f3191c40d21cd2f0f9fe6c32aa0db Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 25 Mar 2024 09:13:46 +0100 Subject: [PATCH 048/176] Decrease poll time --- server/src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/src/main.rs b/server/src/main.rs index 7c90acc0..07ac5af3 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,6 +518,8 @@ fn main() -> () { } info!("Dispatcher running on core {}", core_id); }); + runtime_builder.global_queue_interval(10); + runtime_builder.event_interval(10); let runtime = runtime_builder.build().unwrap(); // set up dispatcher configuration basics From db3096e2d3aa294f45e9b5bc1adce0e8eaeab326 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 25 Mar 2024 14:06:49 +0100 Subject: [PATCH 049/176] feature cleanup --- machine_interface/hip_interface/matmul_loop.json | 4 +++- .../compute_driver/compute_driver_tests.rs | 5 ++++- .../src/function_driver/compute_driver/gpu.rs | 15 +++++++++++---- machine_interface/src/lib.rs | 2 +- machine_interface/src/memory_domain.rs | 8 ++++---- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/machine_interface/hip_interface/matmul_loop.json b/machine_interface/hip_interface/matmul_loop.json index 162a9a26..480544cf 100644 --- a/machine_interface/hip_interface/matmul_loop.json +++ b/machine_interface/hip_interface/matmul_loop.json @@ -7,7 +7,9 @@ "outputs": ["B"], "control_flow": [ {"ExecKernel": ["matmul_loop", [{"Ptr": "A"}, {"Sizeof": "A"}, {"Ptr": "B"}], { - "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, "shared_mem_bytes": 0 }]} diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 707e4f80..b2ebce63 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -1,4 +1,7 @@ -#[cfg(all(test, any(feature = "cheri", feature = "mmu", feature = "wasm")))] +#[cfg(all( + test, + any(feature = "cheri", feature = "mmu", feature = "wasm", feature = "gpu") +))] #[allow(clippy::module_inception)] mod compute_driver_tests { use crate::{ diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index b0edd1ff..261fccd3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -8,6 +8,7 @@ use crate::{ memory_domain::{Context, ContextTrait, ContextType}, DataRequirementList, DataSet, }; +use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; use std::{collections::HashMap, ptr::null, sync::Arc, thread}; @@ -152,12 +153,16 @@ fn get_grid_size( } fn gpu_run( + cpu_slot: usize, gpu_id: u8, config: GpuConfig, mut context: Context, output_names: Arc>, ) -> DandelionResult { - // TODO: handle errors + if !core_affinity::set_for_current(CoreId { id: cpu_slot }) { + return Err(DandelionError::EngineResourceError); + } + let ContextType::Mmu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); }; @@ -238,7 +243,6 @@ fn gpu_run( pub struct GpuLoop { cpu_slot: u8, // needed to set processes to run on that core gpu_id: u8, - // TODO: runner process pool } impl EngineLoop for GpuLoop { @@ -267,11 +271,14 @@ impl EngineLoop for GpuLoop { &output_sets, )?; - // in thread for now, in process pool eventually; TODO: add cpu_slot affinity? + // in thread for now, in process pool eventually + let cpu_slot_clone = self.cpu_slot as usize; let gpu_id_clone = self.gpu_id; let config_clone = config.clone(); let outputs = output_sets.clone(); - let handle = thread::spawn(move || gpu_run(gpu_id_clone, config_clone, context, outputs)); + let handle = thread::spawn(move || { + gpu_run(cpu_slot_clone, gpu_id_clone, config_clone, context, outputs) + }); let mut context = match handle.join() { Ok(res) => res?, Err(_) => return Err(DandelionError::EngineError), diff --git a/machine_interface/src/lib.rs b/machine_interface/src/lib.rs index c78a2f39..ca3c7641 100644 --- a/machine_interface/src/lib.rs +++ b/machine_interface/src/lib.rs @@ -6,7 +6,7 @@ pub mod promise; /// contexts, and their compatibility with fast to look up structs pub mod machine_config; -#[cfg(any(feature = "cheri", feature = "mmu", feature = "wasm"))] +#[cfg(any(feature = "cheri", feature = "mmu", feature = "wasm", feature = "gpu"))] mod interface; pub mod util; diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 1d347272..c024b654 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -5,7 +5,7 @@ pub mod cheri; pub mod gpu; pub mod malloc; pub mod mmap; -#[cfg(feature = "mmu")] +#[cfg(any(feature = "mmu", feature = "gpu"))] pub mod mmu; pub mod read_only; #[cfg(feature = "wasm")] @@ -28,7 +28,7 @@ pub enum ContextType { ReadOnly(Box), #[cfg(feature = "cheri")] Cheri(Box), - #[cfg(feature = "mmu")] + #[cfg(any(feature = "mmu", feature = "gpu"))] Mmu(Box), #[cfg(feature = "wasm")] Wasm(Box), @@ -44,7 +44,7 @@ impl ContextTrait for ContextType { ContextType::ReadOnly(context) => context.write(offset, data), #[cfg(feature = "cheri")] ContextType::Cheri(context) => context.write(offset, data), - #[cfg(feature = "mmu")] + #[cfg(any(feature = "mmu", feature = "gpu"))] ContextType::Mmu(context) => context.write(offset, data), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.write(offset, data), @@ -59,7 +59,7 @@ impl ContextTrait for ContextType { ContextType::ReadOnly(context) => context.read(offset, read_buffer), #[cfg(feature = "cheri")] ContextType::Cheri(context) => context.read(offset, read_buffer), - #[cfg(feature = "mmu")] + #[cfg(any(feature = "mmu", feature = "gpu"))] ContextType::Mmu(context) => context.read(offset, read_buffer), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.read(offset, read_buffer), From 12a36fa2b3e6cfb6c9f02bc3882713f278d6e8af Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:24:50 +0100 Subject: [PATCH 050/176] buffer pool --- .../src/function_driver/compute_driver/gpu.rs | 58 ++++++++++++++----- .../compute_driver/gpu/buffer_pool.rs | 43 ++++++++++++++ .../function_driver/compute_driver/gpu/hip.rs | 20 ++++--- machine_interface/src/interface.rs | 11 +++- 4 files changed, 106 insertions(+), 26 deletions(-) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 261fccd3..73659a9b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -11,13 +11,20 @@ use crate::{ use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; -use std::{collections::HashMap, ptr::null, sync::Arc, thread}; +use std::{ + collections::HashMap, + ptr::null, + sync::{Arc, Mutex}, + thread, +}; use self::{ + buffer_pool::BufferPool, gpu_utils::{Action, Argument, BufferSizing, GridSizing}, hip::{DevicePointer, DEFAULT_STREAM}, }; +pub(crate) mod buffer_pool; pub(crate) mod gpu_utils; pub(crate) mod hip; @@ -40,7 +47,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { let array = hip::DevicePointer::try_new(arr_size)?; let args: [*const c_void; 2] = [ - &array.0 as *const _ as *const c_void, + &array.ptr as *const _ as *const c_void, &arr_elem as *const _ as *const c_void, ]; @@ -130,7 +137,7 @@ fn copy_data_to_device( // subject to change; not super happy with this fn get_grid_size( gs: &GridSizing, - buffers: &HashMap, + buffers: &HashMap, ) -> DandelionResult { match gs { GridSizing::Absolute(size) => Ok(*size), @@ -156,6 +163,7 @@ fn gpu_run( cpu_slot: usize, gpu_id: u8, config: GpuConfig, + buffer_pool: Arc>, mut context: Context, output_names: Arc>, ) -> DandelionResult { @@ -169,26 +177,27 @@ fn gpu_run( let base = mmu_context.storage.as_ptr(); hip::set_device(gpu_id)?; + // TODO: disable device-side malloc - // TODO: move to pool of buffers approach - let mut buffers: HashMap = HashMap::new(); + let mut buffer_pool = buffer_pool.lock().unwrap(); + // bufname -> (index in buffer pool, local size) + let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; - let dev_ptr = hip::DevicePointer::try_new(size)?; - copy_data_to_device(name, &context, base, &dev_ptr)?; - buffers.insert(name.clone(), (dev_ptr, size)); + let idx = buffer_pool.find_buffer(size)?; + copy_data_to_device(name, &context, base, buffer_pool.get(idx))?; + buffers.insert(name.clone(), (idx, size)); } for (name, size) in &config.blueprint.buffers { match size { BufferSizing::Absolute(bytes) => { - buffers.insert(name.clone(), (hip::DevicePointer::try_new(*bytes)?, *bytes)); + let idx = buffer_pool.find_buffer(*bytes)?; + buffers.insert(name.clone(), (idx, *bytes)); } BufferSizing::Sizeof(id) => { - let size_id = buffers.get(id).ok_or(DandelionError::ConfigMissmatch)?.1; - buffers.insert( - name.clone(), - (hip::DevicePointer::try_new(size_id)?, size_id), - ); + let size = buffers.get(id).ok_or(DandelionError::ConfigMissmatch)?.1; + let idx = buffer_pool.find_buffer(size)?; + buffers.insert(name.clone(), (idx, size)); } } } @@ -200,7 +209,9 @@ fn gpu_run( for arg in args { match arg { Argument::Ptr(id) => { - params.push(&buffers.get(id).unwrap().0 .0 as *const _ as *const c_void) + let idx = buffers.get(id).unwrap().0; + let addr = &buffer_pool.get(idx).ptr; + params.push(addr as *const _ as *const c_void) } Argument::Sizeof(id) => { params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void) @@ -234,8 +245,13 @@ fn gpu_run( base, &output_names, &buffers, + &buffer_pool, )?; + // Mark buffers as useable again + buffers + .values() + .for_each(|(idx, _)| buffer_pool.give_back(*idx)); Ok(context) } @@ -243,6 +259,7 @@ fn gpu_run( pub struct GpuLoop { cpu_slot: u8, // needed to set processes to run on that core gpu_id: u8, + buffers: Arc>, } impl EngineLoop for GpuLoop { @@ -251,6 +268,7 @@ impl EngineLoop for GpuLoop { Ok(Box::new(Self { cpu_slot: core_id, gpu_id: 0, + buffers: Arc::new(Mutex::new(BufferPool::new())), })) // this is where the process pool would be launched and the buffer pool initialised } @@ -276,8 +294,16 @@ impl EngineLoop for GpuLoop { let gpu_id_clone = self.gpu_id; let config_clone = config.clone(); let outputs = output_sets.clone(); + let buffer_pool = self.buffers.clone(); let handle = thread::spawn(move || { - gpu_run(cpu_slot_clone, gpu_id_clone, config_clone, context, outputs) + gpu_run( + cpu_slot_clone, + gpu_id_clone, + config_clone, + buffer_pool, + context, + outputs, + ) }); let mut context = match handle.join() { Ok(res) => res?, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs new file mode 100644 index 00000000..94edd478 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -0,0 +1,43 @@ +use dandelion_commons::{DandelionError, DandelionResult}; + +use super::hip::{self, DevicePointer}; + +pub struct BufferPool { + // (ptr, ptr in use) + buffers: Vec<(DevicePointer, bool)>, +} + +impl BufferPool { + pub fn new() -> Self { + Self { buffers: vec![] } + } + + pub fn find_buffer(&mut self, size: usize) -> DandelionResult { + let idx = match self + .buffers + .iter() + .position(|(dev_ptr, used)| !*used && dev_ptr.size >= size) + { + Some(idx) => { + self.buffers[idx].1 = true; + idx + } + None => { + // TODO: maybe round here? + let dev_ptr = hip::DevicePointer::try_new(size)?; + self.buffers.push((dev_ptr, true)); + self.buffers.len() - 1 + } + }; + self.buffers[idx].0.zero_out()?; + Ok(idx) + } + + pub fn get(&self, idx: usize) -> &DevicePointer { + &self.buffers[idx].0 + } + + pub fn give_back(&mut self, idx: usize) { + self.buffers[idx].1 = false; + } +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index b3831f03..b1da22bb 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -25,7 +25,13 @@ pub type StreamT = *const c_void; pub const DEFAULT_STREAM: StreamT = null(); // has to be pub to allow address-getting when preparing args -pub struct DevicePointer(pub *const c_void); +pub struct DevicePointer { + pub ptr: *const c_void, + pub size: usize, +} + +unsafe impl Send for DevicePointer {} +unsafe impl Sync for DevicePointer {} #[link(name = "amdhip64")] extern "C" { @@ -158,11 +164,11 @@ impl DevicePointer { checked_call!(hipMalloc(&mut ret as *mut *const c_void, size)); // zero out memory checked_call!(hipMemset(ret, 0, size)); - Ok(Self(ret)) + Ok(Self { ptr: ret, size }) } - pub fn zero_out(&mut self, size: usize) -> DandelionResult<()> { - checked_call!(hipMemset(self.0, 0, size)); + pub fn zero_out(&mut self) -> DandelionResult<()> { + checked_call!(hipMemset(self.ptr, 0, self.size)); Ok(()) } } @@ -170,7 +176,7 @@ impl DevicePointer { impl Drop for DevicePointer { fn drop(&mut self) { unsafe { - if hipFree(self.0) != 0 { + if hipFree(self.ptr) != 0 { panic!("Freeing a device pointer failed (this shouldn't happen)"); } } @@ -184,7 +190,7 @@ pub fn memcpy_h_to_d( size_bytes: usize, ) -> DandelionResult<()> { checked_call!(hipMemcpyHtoD( - dst.0.byte_offset(dev_offset), + dst.ptr.byte_offset(dev_offset), src, size_bytes )); @@ -196,6 +202,6 @@ pub fn memcpy_d_to_h( src: &DevicePointer, size_bytes: usize, ) -> DandelionResult<()> { - checked_call!(hipMemcpyDtoH(dst, src.0, size_bytes)); + checked_call!(hipMemcpyDtoH(dst, src.ptr, size_bytes)); Ok(()) } diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index 25cf5e0e..b05a8698 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -1,7 +1,10 @@ use std::collections::HashMap; use crate::{ - function_driver::compute_driver::gpu::hip::{self, DevicePointer}, + function_driver::compute_driver::gpu::{ + buffer_pool::BufferPool, + hip::{self, DevicePointer}, + }, memory_domain::{Context, ContextState, ContextTrait}, DataItem, DataSet, Position, }; @@ -129,7 +132,8 @@ pub fn write_gpu_outputs( system_data_offset: usize, base: *mut u8, output_set_names: &[String], - device_buffers: &HashMap, + device_buffers: &HashMap, + buffer_pool: &BufferPool, ) -> DandelionResult<()> { // read the system buffer let mut system_struct = DandelionSystemData::::default(); @@ -160,12 +164,13 @@ pub fn write_gpu_outputs( } for (i, output_name) in output_set_names.iter().enumerate() { // alignment shouldn't really make a huge difference - let (dev_ptr, size) = device_buffers + let (dev_ptr_idx, size) = device_buffers .get(output_name) .ok_or(DandelionError::ConfigMissmatch)?; let buf_offset = context.get_free_space(*size, 8)?; let src = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + let dev_ptr = buffer_pool.get(*dev_ptr_idx); hip::memcpy_d_to_h(src, dev_ptr, *size)?; output_buffers.push(IoBufferDescriptor { From 841270db6e3915d896657bba11a2899bdaa1d14e Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:32:26 +0100 Subject: [PATCH 051/176] refactoring I --- machine_interface/src/function_driver.rs | 2 +- .../compute_driver/compute_driver_tests.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 14 +++++++------- .../gpu/{gpu_utils.rs => config_parsing.rs} | 4 +++- 4 files changed, 12 insertions(+), 10 deletions(-) rename machine_interface/src/function_driver/compute_driver/gpu/{gpu_utils.rs => config_parsing.rs} (98%) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 6aeca8f5..d3dcd9b5 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -12,7 +12,7 @@ use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; #[cfg(feature = "wasm")] use libloading::Library; -use self::compute_driver::gpu::{gpu_utils::ExecutionBlueprint, hip::FunctionT}; +use self::compute_driver::gpu::{config_parsing::ExecutionBlueprint, hip::FunctionT}; pub mod compute_driver; mod load_utils; diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index b2ebce63..dd21a40b 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -667,7 +667,7 @@ mod compute_driver_tests { compute_driver_tests::compute_driver_tests::{ get_expected_mat, prepare_engine_and_function, }, - gpu::{dummy_run, gpu_utils::dummy_config, GpuDriver, GpuLoop}, + gpu::{config_parsing::dummy_config, dummy_run, GpuDriver, GpuLoop}, }, thread_utils::EngineLoop, ComputeResource, Driver, EngineArguments, FunctionArguments, FunctionConfig, diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 73659a9b..9673d2c3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -20,12 +20,12 @@ use std::{ use self::{ buffer_pool::BufferPool, - gpu_utils::{Action, Argument, BufferSizing, GridSizing}, + config_parsing::{Action, Argument, BufferSizing, GridSizing}, hip::{DevicePointer, DEFAULT_STREAM}, }; pub(crate) mod buffer_pool; -pub(crate) mod gpu_utils; +pub(crate) mod config_parsing; pub(crate) mod hip; pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { @@ -356,15 +356,15 @@ impl Driver for GpuDriver { ) -> dandelion_commons::DandelionResult { // Concept for now: function_path gives config file which contains name of module (.hsaco) file let config = if function_path == "foo" { - FunctionConfig::GpuConfig(gpu_utils::dummy_config()?) + FunctionConfig::GpuConfig(config_parsing::dummy_config()?) } else if function_path == "bar" { - FunctionConfig::GpuConfig(gpu_utils::dummy_config2()?) + FunctionConfig::GpuConfig(config_parsing::dummy_config2()?) } else if function_path == "matmul_loop" { - FunctionConfig::GpuConfig(gpu_utils::matmul_dummy(false)?) + FunctionConfig::GpuConfig(config_parsing::matmul_dummy(false)?) } else if function_path == "matmul_para" { - FunctionConfig::GpuConfig(gpu_utils::matmul_dummy(true)?) + FunctionConfig::GpuConfig(config_parsing::matmul_dummy(true)?) } else { - FunctionConfig::GpuConfig(gpu_utils::parse_config(&function_path)?) + FunctionConfig::GpuConfig(config_parsing::parse_config(&function_path)?) }; let total_size = 0x10000usize; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs similarity index 98% rename from machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs rename to machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 936a0086..5a7eb530 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -224,7 +224,9 @@ pub fn parse_config(path: &str) -> DandelionResult { ir.try_into() } -#[test] +// For me so I could see how the file would look. Keeping it for now until format is finalised +// #[test] +#[allow(unused)] fn test_parse() { let cfg = GpuConfigIR { module_path: "/[PATH]/nearest_neigbours.hsaco".into(), From 2e92892a04b64c2ebb49aaec24ef116392f4a30a Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 25 Mar 2024 16:12:38 +0100 Subject: [PATCH 052/176] refactoring II --- .../src/function_driver/compute_driver/gpu.rs | 88 ++----------------- .../compute_driver/gpu/buffer_pool.rs | 6 +- .../compute_driver/gpu/gpu_utils.rs | 80 +++++++++++++++++ 3 files changed, 93 insertions(+), 81 deletions(-) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 9673d2c3..612d33e1 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -1,10 +1,9 @@ -// TODO remove unneeded imports; just took everything from wasm.rs use crate::{ function_driver::{ thread_utils::{start_thread, EngineLoop}, ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, - interface::{read_output_structs, setup_input_structs, write_gpu_outputs, DandelionSystemData}, + interface::{read_output_structs, setup_input_structs, write_gpu_outputs}, memory_domain::{Context, ContextTrait, ContextType}, DataRequirementList, DataSet, }; @@ -20,12 +19,14 @@ use std::{ use self::{ buffer_pool::BufferPool, - config_parsing::{Action, Argument, BufferSizing, GridSizing}, - hip::{DevicePointer, DEFAULT_STREAM}, + config_parsing::{Action, Argument, BufferSizing}, + gpu_utils::{copy_data_to_device, get_data_length, get_grid_size}, + hip::DEFAULT_STREAM, }; pub(crate) mod buffer_pool; pub(crate) mod config_parsing; +mod gpu_utils; pub(crate) mod hip; pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { @@ -86,79 +87,6 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { Ok(()) } -fn get_data_length(ident: &str, context: &Context) -> DandelionResult { - let dataset = context - .content - .iter() - .find(|&elem| match elem { - Some(set) => set.ident == ident, - _ => false, - }) - .ok_or(DandelionError::ConfigMissmatch)? - .as_ref() - .unwrap(); // okay, as we matched successfully - - let length = dataset - .buffers - .iter() - .fold(0usize, |acc, item| acc + item.data.size); - - Ok(length) -} - -fn copy_data_to_device( - ident: &str, - context: &Context, - base: *mut u8, - dev_ptr: &DevicePointer, -) -> DandelionResult<()> { - let dataset = context - .content - .iter() - .find(|&elem| match elem { - Some(set) => set.ident == ident, - _ => false, - }) - .ok_or(DandelionError::ConfigMissmatch)? - .as_ref() - .unwrap(); // okay, as we matched successfully - - let mut total = 0isize; - for item in &dataset.buffers { - let length = item.data.size; - let offset = item.data.offset; - let src = unsafe { base.byte_offset((offset) as isize) } as *const c_void; - hip::memcpy_h_to_d(dev_ptr, total, src, length)?; - total += length as isize; - } - Ok(()) -} - -// subject to change; not super happy with this -fn get_grid_size( - gs: &GridSizing, - buffers: &HashMap, -) -> DandelionResult { - match gs { - GridSizing::Absolute(size) => Ok(*size), - GridSizing::CoverBuffer { - bufname, - dimensionality, - block_dim, - } => { - if *dimensionality > 3 || *dimensionality == 0 { - return Err(DandelionError::ConfigMissmatch); - } - let bufsize = buffers - .get(bufname) - .ok_or(DandelionError::ConfigMissmatch)? - .1; - let side_length = (bufsize as f64).powf(1.0 / (*dimensionality as f64)).ceil() as u32; - Ok((side_length + block_dim - 1) / block_dim) - } - } -} - fn gpu_run( cpu_slot: usize, gpu_id: u8, @@ -180,6 +108,7 @@ fn gpu_run( // TODO: disable device-side malloc let mut buffer_pool = buffer_pool.lock().unwrap(); + // bufname -> (index in buffer pool, local size) let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { @@ -252,6 +181,7 @@ fn gpu_run( buffers .values() .for_each(|(idx, _)| buffer_pool.give_back(*idx)); + Ok(context) } @@ -268,9 +198,9 @@ impl EngineLoop for GpuLoop { Ok(Box::new(Self { cpu_slot: core_id, gpu_id: 0, - buffers: Arc::new(Mutex::new(BufferPool::new())), + buffers: Arc::new(Mutex::new(BufferPool::new(0))), })) - // this is where the process pool would be launched and the buffer pool initialised + // this is where the process pool would be launched } fn run( diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 94edd478..6053dc7a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -8,10 +8,12 @@ pub struct BufferPool { } impl BufferPool { - pub fn new() -> Self { - Self { buffers: vec![] } + pub fn new(gpu_id: u8) -> Self { + let buffers = vec![]; + Self { buffers } } + // TODO: potentially coalesce / more sophisticated matching method (best fit)? pub fn find_buffer(&mut self, size: usize) -> DandelionResult { let idx = match self .buffers diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs new file mode 100644 index 00000000..cb69e10f --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -0,0 +1,80 @@ +// TODO remove unneeded imports; just took everything from wasm.rs +use crate::memory_domain::Context; +use dandelion_commons::{DandelionError, DandelionResult}; +use libc::c_void; +use std::collections::HashMap; + +use self::super::{config_parsing::GridSizing, hip, hip::DevicePointer}; + +pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { + let dataset = context + .content + .iter() + .find(|&elem| match elem { + Some(set) => set.ident == ident, + _ => false, + }) + .ok_or(DandelionError::ConfigMissmatch)? + .as_ref() + .unwrap(); // okay, as we matched successfully + + let length = dataset + .buffers + .iter() + .fold(0usize, |acc, item| acc + item.data.size); + + Ok(length) +} + +pub fn copy_data_to_device( + ident: &str, + context: &Context, + base: *mut u8, + dev_ptr: &DevicePointer, +) -> DandelionResult<()> { + let dataset = context + .content + .iter() + .find(|&elem| match elem { + Some(set) => set.ident == ident, + _ => false, + }) + .ok_or(DandelionError::ConfigMissmatch)? + .as_ref() + .unwrap(); // okay, as we matched successfully + + let mut total = 0isize; + for item in &dataset.buffers { + let length = item.data.size; + let offset = item.data.offset; + let src = unsafe { base.byte_offset((offset) as isize) } as *const c_void; + hip::memcpy_h_to_d(dev_ptr, total, src, length)?; + total += length as isize; + } + Ok(()) +} + +// subject to change; not super happy with this +pub fn get_grid_size( + gs: &GridSizing, + buffers: &HashMap, +) -> DandelionResult { + match gs { + GridSizing::Absolute(size) => Ok(*size), + GridSizing::CoverBuffer { + bufname, + dimensionality, + block_dim, + } => { + if *dimensionality > 3 || *dimensionality == 0 { + return Err(DandelionError::ConfigMissmatch); + } + let bufsize = buffers + .get(bufname) + .ok_or(DandelionError::ConfigMissmatch)? + .1; + let side_length = (bufsize as f64).powf(1.0 / (*dimensionality as f64)).ceil() as u32; + Ok((side_length + block_dim - 1) / block_dim) + } + } +} From 7a07262532ea050d33a6a61c06aad5c6cb89e2e6 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 25 Mar 2024 17:04:31 +0100 Subject: [PATCH 053/176] Add busy polling on taking work from queue --- dispatcher/src/execution_qs.rs | 15 +++++++++++---- machine_interface/src/promise.rs | 10 +++++----- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 0f81a0af..2800a7a8 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,3 +1,4 @@ +use crossbeam::channel::TryRecvError; use dandelion_commons::{records::Recorder, DandelionResult}; use log::error; use machine_interface::{ @@ -18,9 +19,15 @@ pub struct EngineQueue { impl WorkQueue for EngineQueue { fn get_engine_args(&self) -> (EngineArguments, Debt) { loop { - let (recieved_args, recieved_debt) = self.queue_out.recv().unwrap(); - if recieved_debt.is_alive() { - return (recieved_args, recieved_debt); + match self.queue_out.try_recv() { + Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), + Err(TryRecvError::Empty) => continue, + Ok(recieved) => { + let (recieved_args, recevied_dept) = recieved; + if recevied_dept.is_alive() { + return (recieved_args, recevied_dept); + } + } } } } @@ -28,7 +35,7 @@ impl WorkQueue for EngineQueue { impl EngineQueue { pub fn new() -> Self { - let (sender, receiver) = crossbeam::channel::unbounded(); + let (sender, receiver) = crossbeam::channel::bounded(4096); return EngineQueue { queue_in: sender, queue_out: receiver, diff --git a/machine_interface/src/promise.rs b/machine_interface/src/promise.rs index b74ca17a..ec85af45 100644 --- a/machine_interface/src/promise.rs +++ b/machine_interface/src/promise.rs @@ -26,14 +26,14 @@ impl Promise { let debt = Debt { data: data_ptr }; return (promise, debt); } - pub fn abort(mut self) -> () { - self.abort_internal(); + pub fn abort(self) -> () { + core::mem::drop(self); } fn abort_internal(&mut self) { let data = unsafe { &*self.data }; - let abort_hanlde = data.abort_handle.swap(ptr::null_mut(), Ordering::SeqCst); - if !abort_hanlde.is_null() { - unsafe { (*abort_hanlde)() } + let abort_handle = data.abort_handle.swap(ptr::null_mut(), Ordering::SeqCst); + if !abort_handle.is_null() { + unsafe { (*abort_handle)() } } } } From cd1d19541ec2f7f76f190ada5e5c21430caa7233 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 26 Mar 2024 11:23:59 +0100 Subject: [PATCH 054/176] Fix panic on full queue to become an error --- dandelion_commons/src/lib.rs | 2 ++ dispatcher/src/execution_qs.rs | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 2caf0a12..36d7e3b5 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -117,6 +117,8 @@ pub enum DandelionError { // errors from the functions /// Function indicated it failed FunctionError(i32), + /// Work queue from the dispatcher to the engines is full + WorkQueueFull, } pub type DandelionResult = std::result::Result; diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 2800a7a8..7fde04a3 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,5 +1,5 @@ -use crossbeam::channel::TryRecvError; -use dandelion_commons::{records::Recorder, DandelionResult}; +use crossbeam::channel::{TryRecvError, TrySendError}; +use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; use log::error; use machine_interface::{ function_driver::{EngineArguments, WorkQueue}, @@ -46,7 +46,10 @@ impl EngineQueue { let (promise, debt) = Promise::new(); match self.queue_in.try_send((args, debt)) { Ok(()) => (), - Err(err) => error!("Failed to enqueu work with error: {:?}", err), + Err(TrySendError::Disconnected(_)) => { + error!("Failed to enqueu work, workqueue has been disconnected") + } + Err(TrySendError::Full(_)) => return Err(DandelionError::WorkQueueFull), } return *promise.await; } From 5d276ff1607391d57014b5a3a29ba9f2e2e3d9f4 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 27 Mar 2024 11:29:11 +0100 Subject: [PATCH 055/176] Add option to limit total CPUs and update recording --- dandelion_commons/src/records.rs | 49 +++++++++++++------ dispatcher/src/dispatcher.rs | 15 +++--- dispatcher/src/function_registry.rs | 1 + .../src/function_driver/thread_utils.rs | 22 +++++++-- server/src/main.rs | 5 +- 5 files changed, 67 insertions(+), 25 deletions(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 8cc53301..4fa35fb1 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -2,19 +2,40 @@ use crate::DandelionResult; #[derive(Clone, Copy, Debug, PartialEq)] pub enum RecordPoint { - Arrival, // Function request arrives at the server - QueueFunctionDispatcher, // Queue request in the dispatcher - PrepareEnvQueue, // Queue to load the function code + ctx - LoadQueue, // Load function code (async) - LoadStart, // Start loading code + alloc ctx - TransferStart, // Start data transfer to the ctx (async) - TransferEnd, // End data transfer to the ctx (async) - GetEngineQueue, // Queue to get an engine for execution - ExecutionQueue, // Queue to get the function executed on the engine - EngineStart, // Start execution of the function on the engine (sync) - EngineEnd, // End execution of the function on the engine (sync) - FutureReturn, // Return from execution engine - EndService, // Send response back to the client + /// Function request arrives at the server + Arrival, + /// Queue request in the dispatcher + QueueFunctionDispatcher, + /// Queue to load the function code + ctx + PrepareEnvQueue, + /// Load function code (async) + LoadQueue, + /// Start loading code + alloc ctx + LoadStart, + /// End loading coad and ctx allocation + LoadEnd, + /// Promise await on loading returned + LoadDequeu, + /// Enqueue transfer on work queue + TransferQueue, + /// Start data transfer to the ctx (async) + TransferStart, + /// End data transfer to the ctx (async) + TransferEnd, + /// Promise await on transfer returned + TransferDequeueu, + /// Queue to get an engine for execution + GetEngineQueue, + /// Queue to get the function executed on the engine + ExecutionQueue, + /// Start execution of the function on the engine (sync) + EngineStart, + /// End execution of the function on the engine (sync) + EngineEnd, + /// Return from execution engine + FutureReturn, + /// Send response back to the client + EndService, } #[cfg(feature = "timestamp")] @@ -90,7 +111,7 @@ mod timestamp { pub fn init() -> Self { let pool_size = match env::var("DANDELION_TIMESTAMP_COUNT") { Ok(container_count_string) => container_count_string.parse().unwrap_or(100), - Err(_) => 100, + Err(_) => 1000, }; let zero_time = Instant::now(); let mut free_pool = Vec::new(); diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 93403034..978416fb 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -384,7 +384,7 @@ impl Dispatcher { recorder, ) .await?; - recorder.record(RecordPoint::TransferStart)?; + recorder.record(RecordPoint::LoadDequeu)?; // make sure all input sets are there at the correct index let mut static_sets = BTreeSet::new(); for (function_set_index, (in_set_name, in_composition_set)) in @@ -409,9 +409,11 @@ impl Dispatcher { destination_set_name: in_set_name.clone(), source_set_index: subset, source_item_index: item, - recorder, + recorder: recorder.get_sub_recorder().unwrap(), }); - (function_context, recorder) = transfer_queue.enqueu_work(args).await?; + recorder.record(RecordPoint::TransferQueue)?; + (function_context, _) = transfer_queue.enqueu_work(args).await?; + recorder.record(RecordPoint::TransferDequeueu)?; function_buffer += 1; } } @@ -433,13 +435,14 @@ impl Dispatcher { destination_set_name: set_name.clone(), source_set_index: subset, source_item_index: item, - recorder, + recorder: recorder.get_sub_recorder().unwrap(), }); - (function_context, recorder) = transfer_queue.enqueu_work(args).await?; + recorder.record(RecordPoint::TransferQueue).unwrap(); + (function_context, _) = transfer_queue.enqueu_work(args).await?; + recorder.record(RecordPoint::TransferDequeueu).unwrap(); function_item += 1; } } - recorder.record(RecordPoint::TransferEnd)?; return Ok((function_context, function_config, metadata)); } diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 838e26e3..06761915 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -422,6 +422,7 @@ impl FunctionRegistry { // this happens when the same binary is loaded independently multiple times, // need to figure out how to avoid this } + recorder.record(RecordPoint::LoadEnd)?; return Ok((function_context, function_config, recorder)); } } diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index ec909b0b..cc1e0b40 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -63,8 +63,15 @@ fn run_thread(core_id: u8, queue: Box) { destination_set_name, source_set_index, source_item_index, - recorder, + mut recorder, } = transfer_args; + match recorder.record(RecordPoint::TransferStart) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } let transfer_result = memory_domain::transfer_data_item( &mut destination, &source, @@ -74,9 +81,16 @@ fn run_thread(core_id: u8, queue: Box) { destination_set_name.as_str(), source_set_index, source_item_index, - ) - .and(Ok((destination, recorder))); - debt.fulfill(Box::new(transfer_result)); + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let transfer_return = transfer_result.and(Ok((destination, recorder))); + debt.fulfill(Box::new(transfer_return)); continue; } EngineArguments::Shutdown(resource_returner) => { diff --git a/server/src/main.rs b/server/src/main.rs index 07ac5af3..2a9be511 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -494,7 +494,10 @@ fn main() -> () { } // find available resources - let num_cores = u8::try_from(num_cpus::get_physical()).unwrap(); + let num_cores = std::env::var("NUM_TOTAL_CORES").map_or_else( + |_e| u8::try_from(num_cpus::get_physical()).unwrap(), + |n| n.parse::().unwrap(), + ); let num_virt_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); let threads_per_core = num_virt_cores / num_cores; // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines From 5895224d1b3cee0975bbee5a843b2b31c27af09b Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:43:55 +0100 Subject: [PATCH 056/176] buffer pool using contiguous region --- machine_interface/Cargo.toml | 1 + machine_interface/hip_interface/matmul.hsaco | Bin 24504 -> 34264 bytes machine_interface/hip_interface/module.hsaco | Bin 54240 -> 61568 bytes .../compute_driver/compute_driver_tests.rs | 33 +++++-- .../src/function_driver/compute_driver/gpu.rs | 23 ++--- .../compute_driver/gpu/buffer_pool.rs | 92 ++++++++++++------ .../compute_driver/gpu/gpu_utils.rs | 4 +- .../function_driver/compute_driver/gpu/hip.rs | 16 ++- machine_interface/src/interface.rs | 6 +- 9 files changed, 119 insertions(+), 56 deletions(-) diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 57e17dc4..45b5fa86 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -33,6 +33,7 @@ tokio = { version = "1", features = ["full"] } hyper = { version = "0.14", optional = true, features = ["http1", "http2", "client", "runtime"]} libloading = { version = "0.8.1" } log = "0.4.20" +lazy_static = "1.4.0" # disable benchmarks in library, to not run all unit tests on every benchmark # also needs to be disabled for criterion flags to work that are not available for tests diff --git a/machine_interface/hip_interface/matmul.hsaco b/machine_interface/hip_interface/matmul.hsaco index 757b594407cb1033f978d19acab0c729e867b930..f822c27f56d8d3e7da47370e9c42c5be06656bc8 100644 GIT binary patch literal 34264 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 diff --git a/machine_interface/hip_interface/module.hsaco b/machine_interface/hip_interface/module.hsaco index 7689bbdc49a915b1a2eb37cc172438ba14de9cdb..d03df018e0f4656b37362582b2ac61d9718d654d 100644 GIT binary patch delta 4997 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 = Mutex::new(()); + } + #[test] fn run_dummy_gpu_payload() { + let _lock = GPU_LOCK.lock().unwrap(); let mut runner = GpuLoop::init(0).unwrap(); assert!(dummy_run(&mut runner).is_ok()); } #[test] fn minimal() { + let _lock = GPU_LOCK.lock().unwrap(); let driver: Box = Box::new(GpuDriver {}); engine_minimal::( "foo", @@ -701,6 +707,7 @@ mod compute_driver_tests { #[test] fn basic_input_output() { + let _lock = GPU_LOCK.lock().unwrap(); let driver: Box = Box::new(GpuDriver {}); let (mut function_context, config, queue) = prepare_engine_and_function::( @@ -724,7 +731,6 @@ mod compute_driver_tests { key: 0, }], })); - eprintln!("foo: {:?}", function_context.content); let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { @@ -733,6 +739,9 @@ mod compute_driver_tests { output_sets: Arc::new(vec!["A".into()]), recorder, })); + queue.enqueu(EngineArguments::Shutdown(|_| { + // GPU allocation automatically dropped when Engine dropped + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() @@ -760,6 +769,7 @@ mod compute_driver_tests { #[test] fn engine_matmul_3x3_loop() { + let _lock = GPU_LOCK.lock().unwrap(); let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_loop.json"; let dom_init = MemoryResource::None; @@ -807,6 +817,9 @@ mod compute_driver_tests { output_sets: Arc::new(vec![String::from("B")]), recorder, })); + queue.enqueu(EngineArguments::Shutdown(|_| { + // GPU allocation automatically dropped when Engine dropped + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() @@ -838,6 +851,7 @@ mod compute_driver_tests { #[test] fn engine_matmul_size_sweep_parallel() { + let _lock = GPU_LOCK.lock().unwrap(); let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; let dom_init = MemoryResource::None; @@ -894,6 +908,9 @@ mod compute_driver_tests { output_sets: Arc::new(vec![String::from("B")]), recorder, })); + queue.enqueu(EngineArguments::Shutdown(|_| { + // GPU allocation automatically dropped when Engine dropped + })); let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() .build() diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 612d33e1..6a394d26 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -45,7 +45,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { let arr_elem: usize = 256; let elem_size: usize = std::mem::size_of::(); let arr_size: usize = arr_elem * elem_size; - let array = hip::DevicePointer::try_new(arr_size)?; + let array = hip::DeviceAllocation::try_new(arr_size)?; let args: [*const c_void; 2] = [ &array.ptr as *const _ as *const c_void, @@ -113,19 +113,19 @@ fn gpu_run( let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; - let idx = buffer_pool.find_buffer(size)?; - copy_data_to_device(name, &context, base, buffer_pool.get(idx))?; + let idx = buffer_pool.alloc_buffer(size)?; + copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; buffers.insert(name.clone(), (idx, size)); } for (name, size) in &config.blueprint.buffers { match size { BufferSizing::Absolute(bytes) => { - let idx = buffer_pool.find_buffer(*bytes)?; + let idx = buffer_pool.alloc_buffer(*bytes)?; buffers.insert(name.clone(), (idx, *bytes)); } BufferSizing::Sizeof(id) => { let size = buffers.get(id).ok_or(DandelionError::ConfigMissmatch)?.1; - let idx = buffer_pool.find_buffer(size)?; + let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } } @@ -135,11 +135,14 @@ fn gpu_run( match action { Action::ExecKernel(name, args, launch_config) => { let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); + let mut ptrs = vec![]; for arg in args { match arg { Argument::Ptr(id) => { let idx = buffers.get(id).unwrap().0; - let addr = &buffer_pool.get(idx).ptr; + let dev_ptr = buffer_pool.get(idx)?; + ptrs.push(dev_ptr); + let addr = &ptrs.last().unwrap().ptr; params.push(addr as *const _ as *const c_void) } Argument::Sizeof(id) => { @@ -178,9 +181,7 @@ fn gpu_run( )?; // Mark buffers as useable again - buffers - .values() - .for_each(|(idx, _)| buffer_pool.give_back(*idx)); + buffer_pool.dealloc_all(); Ok(context) } @@ -198,7 +199,7 @@ impl EngineLoop for GpuLoop { Ok(Box::new(Self { cpu_slot: core_id, gpu_id: 0, - buffers: Arc::new(Mutex::new(BufferPool::new(0))), + buffers: Arc::new(Mutex::new(BufferPool::try_new(0)?)), })) // this is where the process pool would be launched } @@ -297,7 +298,7 @@ impl Driver for GpuDriver { FunctionConfig::GpuConfig(config_parsing::parse_config(&function_path)?) }; - let total_size = 0x10000usize; + let total_size = 0usize; let mut context = static_domain.acquire_context(total_size)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 6053dc7a..7db8bac0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -1,45 +1,81 @@ use dandelion_commons::{DandelionError, DandelionResult}; -use super::hip::{self, DevicePointer}; +use super::hip::{self, DeviceAllocation, DevicePointer}; +#[allow(non_upper_case_globals)] +const Gi: usize = 1 << 30; + +// REGION_SIZE * #engines_on_device should never exceed total VRAM capacity (64GiB for MI210) +const REGION_SIZE: usize = 16 * Gi; + +#[derive(Debug)] +struct Buffer { + offset: usize, + length: usize, +} + +impl Buffer { + fn sentinel() -> Self { + Self { + offset: 0, + length: 0, + } + } +} pub struct BufferPool { // (ptr, ptr in use) - buffers: Vec<(DevicePointer, bool)>, + allocation: DeviceAllocation, + buffers: Vec, } impl BufferPool { - pub fn new(gpu_id: u8) -> Self { - let buffers = vec![]; - Self { buffers } + pub fn try_new(gpu_id: u8) -> DandelionResult { + hip::set_device(gpu_id)?; + + let mut allocation = hip::DeviceAllocation::try_new(REGION_SIZE)?; + allocation.zero_out()?; + // sentinel buffer to simplify logic + let buffers = vec![Buffer::sentinel()]; + Ok(Self { + allocation, + buffers, + }) } - // TODO: potentially coalesce / more sophisticated matching method (best fit)? - pub fn find_buffer(&mut self, size: usize) -> DandelionResult { - let idx = match self + pub fn alloc_buffer(&mut self, size: usize) -> DandelionResult { + macro_rules! round_to_eight { + ($e: expr) => { + ($e + 7) / 8 * 8 + }; + } + // round size to 8 byte alignment; TODO: verfiy if different should be used + let length = round_to_eight!(size); + + let last = self .buffers - .iter() - .position(|(dev_ptr, used)| !*used && dev_ptr.size >= size) - { - Some(idx) => { - self.buffers[idx].1 = true; - idx - } - None => { - // TODO: maybe round here? - let dev_ptr = hip::DevicePointer::try_new(size)?; - self.buffers.push((dev_ptr, true)); - self.buffers.len() - 1 - } - }; - self.buffers[idx].0.zero_out()?; - Ok(idx) + .last() + .expect("buffers should always hold sentinel"); + + let offset = round_to_eight!(last.offset + last.length); + + if offset + length > self.allocation.size { + return Err(DandelionError::OutOfMemory); + } + + self.buffers.push(Buffer { offset, length }); + + Ok(self.buffers.len() - 1) } - pub fn get(&self, idx: usize) -> &DevicePointer { - &self.buffers[idx].0 + pub fn get(&self, idx: usize) -> DandelionResult { + let buffer = self.buffers.get(idx).ok_or(DandelionError::EngineError)?; + Ok(DevicePointer { + ptr: unsafe { self.allocation.ptr.byte_add(buffer.offset) }, + }) } - pub fn give_back(&mut self, idx: usize) { - self.buffers[idx].1 = false; + pub fn dealloc_all(&mut self) { + self.buffers.clear(); + self.buffers.push(Buffer::sentinel()); } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index cb69e10f..34a1b167 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -4,7 +4,9 @@ use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; use std::collections::HashMap; -use self::super::{config_parsing::GridSizing, hip, hip::DevicePointer}; +use self::super::{config_parsing::GridSizing, hip}; + +use super::hip::DevicePointer; pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index b1da22bb..8535280d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -25,13 +25,18 @@ pub type StreamT = *const c_void; pub const DEFAULT_STREAM: StreamT = null(); // has to be pub to allow address-getting when preparing args -pub struct DevicePointer { +pub struct DeviceAllocation { pub ptr: *const c_void, pub size: usize, } -unsafe impl Send for DevicePointer {} -unsafe impl Sync for DevicePointer {} +unsafe impl Send for DeviceAllocation {} +unsafe impl Sync for DeviceAllocation {} + +// Should be associated with a DeviceAllocation; maybe use lifetimes but they are annoying +pub struct DevicePointer { + pub ptr: *const c_void, +} #[link(name = "amdhip64")] extern "C" { @@ -158,7 +163,7 @@ pub fn malloc(ptr: &mut *const c_void, size: size_t) -> ErrorT { unsafe { hipMalloc(ptr as *mut *const c_void, size) } } -impl DevicePointer { +impl DeviceAllocation { pub fn try_new(size: usize) -> DandelionResult { let mut ret: *const c_void = null(); checked_call!(hipMalloc(&mut ret as *mut *const c_void, size)); @@ -173,8 +178,9 @@ impl DevicePointer { } } -impl Drop for DevicePointer { +impl Drop for DeviceAllocation { fn drop(&mut self) { + eprintln!("Dropping {:?} @ {:?}", self.size, self.ptr); unsafe { if hipFree(self.ptr) != 0 { panic!("Freeing a device pointer failed (this shouldn't happen)"); diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index b05a8698..c2dca1a3 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use crate::{ function_driver::compute_driver::gpu::{ buffer_pool::BufferPool, - hip::{self, DevicePointer}, + hip::{self, DeviceAllocation}, }, memory_domain::{Context, ContextState, ContextTrait}, DataItem, DataSet, Position, @@ -170,8 +170,8 @@ pub fn write_gpu_outputs( let buf_offset = context.get_free_space(*size, 8)?; let src = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; - let dev_ptr = buffer_pool.get(*dev_ptr_idx); - hip::memcpy_d_to_h(src, dev_ptr, *size)?; + let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; + hip::memcpy_d_to_h(src, &dev_ptr, *size)?; output_buffers.push(IoBufferDescriptor { ident: ptr_t!(0), From 2a81e33c0471628d80419dee80bb816d8971a9df Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:38:33 +0100 Subject: [PATCH 057/176] simple benchmarks --- machine_interface/Cargo.toml | 6 +- machine_interface/benches/gpu_benchmark.rs | 133 ++++++++++++++++++ machine_interface/src/function_driver.rs | 15 +- .../src/function_driver/compute_driver/gpu.rs | 3 +- .../compute_driver/gpu/config_parsing.rs | 2 +- .../function_driver/compute_driver/gpu/hip.rs | 1 - 6 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 machine_interface/benches/gpu_benchmark.rs diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 45b5fa86..6cbb6abb 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -15,7 +15,7 @@ gpu = ["std"] cmake = "0.1" [dev-dependencies] -criterion = "0.4" +criterion = { version = "0.4", features = ["html_reports"] } # need to lock this to older version, because morello does not yet have rustc 1.6 regex = "1.7.1" @@ -51,3 +51,7 @@ harness = false [[bench]] name = "mmu_benchmark" harness = false + +[[bench]] +name = "gpu_benchmark" +harness = false \ No newline at end of file diff --git a/machine_interface/benches/gpu_benchmark.rs b/machine_interface/benches/gpu_benchmark.rs new file mode 100644 index 00000000..a2e0bbf0 --- /dev/null +++ b/machine_interface/benches/gpu_benchmark.rs @@ -0,0 +1,133 @@ +use std::sync::{Arc, Mutex}; + +use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; +use dandelion_commons::records::{Archive, RecordPoint, Recorder}; +use machine_interface::function_driver::thread_utils::EngineLoop; +use machine_interface::{ + function_driver::{ + compute_driver::gpu::{GpuDriver, GpuLoop}, + test_queue::TestQueue, + ComputeResource, Driver, EngineArguments, FunctionArguments, + }, + memory_domain::{mmu::MmuMemoryDomain, MemoryDomain, MemoryResource}, + DataItem, DataSet, Position, +}; + +const ROWS_ARR: [usize; 3] = [1usize, 128, 1024]; + +fn context_allocation(c: &mut Criterion) { + let mut group = c.benchmark_group("context_allocation"); + + if !core_affinity::set_for_current(core_affinity::CoreId { id: 3 }) { + log::error!("core received core id that could not be set"); + panic!("Couldn't set core affinity"); + } + + let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; + let dom_init = MemoryResource::None; + let driver: Box = Box::new(GpuDriver {}); + let domain = MmuMemoryDomain::init(dom_init).expect("Should have initialized domain"); + let function = driver + .parse_function(filename.to_string(), &domain) + .expect("Should be able to parse function"); + for rows in ROWS_ARR { + group.bench_with_input(format!("{} x {} output", rows, rows), &rows, |b, &rows| { + b.iter_custom(|iters| { + let mut total = std::time::Duration::new(0, 0); + for _ in 0..iters { + let mut function_context = function + // 64MiB context should be enough to hold everything + .load(&domain, 1 << 30) + .expect("Should be able to load function"); + + let begin = std::time::Instant::now(); + function_context + .get_free_space(8 + rows * rows * 8, 8) + .expect("Getting space should succeed"); + let duration = begin.elapsed(); + total += duration; + } + total + }) + }); + } +} + +fn matmul_benchmark(c: &mut Criterion) { + let core_id = 3u8; + let mut group = c.benchmark_group("matmul_benchmark"); + group.measurement_time(std::time::Duration::new(30, 0)); + + // mostly taken from compute_driver_tests + let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; + let dom_init = MemoryResource::None; + let driver: Box = Box::new(GpuDriver {}); + let domain = MmuMemoryDomain::init(dom_init).expect("Should have initialized domain"); + let function = driver + .parse_function(filename.to_string(), &domain) + .expect("Should be able to parse function"); + let mut engine_loop = GpuLoop::init(core_id).expect("Should be able to init engineloop"); + // set core affinity + if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { + log::error!("core received core id that could not be set"); + panic!("Couldn't set core affinity"); + } + + for rows in ROWS_ARR { + // each elem in the matrix is 8 bytes + group.throughput(Throughput::Bytes((rows * rows * 8) as u64)); + + group.bench_with_input( + BenchmarkId::from_parameter(format!("{} x {}", rows, rows)), + &rows, + |b, &rows| { + b.iter_custom(|iters| { + let mut total = std::time::Duration::new(0, 0); + for _ in 0..iters { + let config = function.config.clone(); + let mut function_context = function + // 64MiB context should be enough to hold everything + .load(&domain, 1 << 30) + .expect("Should be able to load function"); + let mut mat_vec = Vec::::new(); + mat_vec.push(rows as i64); + for i in 0..(rows * rows) { + mat_vec.push(i as i64); + } + let in_mat_offset = function_context + .get_free_space_and_write_slice(&mat_vec) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: in_mat_offset as usize, + size: mat_vec.len() * 8, + }, + key: 0, + }], + })); + let output_sets = Arc::new(vec![String::from("B")]); + + let begin = std::time::Instant::now(); + engine_loop + .run(config, function_context, output_sets) + .unwrap(); + let duration = begin.elapsed(); + total += duration; + } + total + }); + }, + ); + } +} + +criterion_group!(benches, matmul_benchmark); + +#[cfg(feature = "gpu")] +criterion_main!(benches); + +#[cfg(not(feature = "gpu"))] +fn main() {} diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index d3dcd9b5..8881c1ce 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, sync::Mutex}; use crate::{ + interface::DandelionSystemData, memory_domain::{Context, MemoryDomain}, DataRequirementList, Position, }; @@ -17,9 +18,9 @@ use self::compute_driver::gpu::{config_parsing::ExecutionBlueprint, hip::Functio pub mod compute_driver; mod load_utils; pub mod system_driver; -#[cfg(test)] -mod test_queue; -mod thread_utils; +// #[cfg(test)] +pub mod test_queue; +pub mod thread_utils; #[derive(Clone)] pub struct ElfConfig { @@ -96,7 +97,13 @@ impl Function { Ok(context) } // no need to occupy space or anything like that as long as context is only inputs/outputs - FunctionConfig::GpuConfig(_) => domain.acquire_context(ctx_size), + FunctionConfig::GpuConfig(_) => { + let mut ctxt = domain.acquire_context(ctx_size)?; + // Make sure sysdata struct isn't overwritten, 0 = system_data_offset + ctxt.occupy_space(0, std::mem::size_of::>())?; + + Ok(ctxt) + } } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 6a394d26..70c08ce5 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -169,7 +169,8 @@ fn gpu_run( } } - hip::device_synchronize()?; + // Not required, as hipMemcpy-s synchronise as well + // hip::device_synchronize()?; write_gpu_outputs::( &mut context, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 5a7eb530..f3714ed2 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -12,7 +12,7 @@ use crate::function_driver::GpuConfig; use super::hip; -const SYSDATA_OFFSET: usize = 0x10000usize; +const SYSDATA_OFFSET: usize = 0usize; // This is subject to change; not very happy with it #[derive(Deserialize, Serialize, Debug)] diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 8535280d..3d60aab4 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -180,7 +180,6 @@ impl DeviceAllocation { impl Drop for DeviceAllocation { fn drop(&mut self) { - eprintln!("Dropping {:?} @ {:?}", self.size, self.ptr); unsafe { if hipFree(self.ptr) != 0 { panic!("Freeing a device pointer failed (this shouldn't happen)"); From 4332e27cb51cd02997ac8157c58895d838d60395 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Sat, 30 Mar 2024 22:57:26 +0100 Subject: [PATCH 058/176] Moved matrix multiplication to recieveing data --- dandelion_commons/src/records.rs | 7 +-- dispatcher/src/dispatcher.rs | 6 +-- machine_interface/src/promise.rs | 2 +- server/src/lib.rs | 50 ++++++++++++++++++++++ server/src/main.rs | 73 +++----------------------------- server/tests/server_tests.rs | 19 +++++++-- 6 files changed, 81 insertions(+), 76 deletions(-) create mode 100644 server/src/lib.rs diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 4fa35fb1..7178fc31 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -15,7 +15,7 @@ pub enum RecordPoint { /// End loading coad and ctx allocation LoadEnd, /// Promise await on loading returned - LoadDequeu, + LoadDequeue, /// Enqueue transfer on work queue TransferQueue, /// Start data transfer to the ctx (async) @@ -23,7 +23,7 @@ pub enum RecordPoint { /// End data transfer to the ctx (async) TransferEnd, /// Promise await on transfer returned - TransferDequeueu, + TransferDequeue, /// Queue to get an engine for execution GetEngineQueue, /// Queue to get the function executed on the engine @@ -92,7 +92,8 @@ mod timestamp { let current_span = self .spans_latest .0 - .fetch_add(1, std::sync::atomic::Ordering::SeqCst); + .fetch_add(1, std::sync::atomic::Ordering::SeqCst) + + 1; Self { parent_span: self.current_span, current_span, diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 978416fb..6cb95cb2 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -384,7 +384,7 @@ impl Dispatcher { recorder, ) .await?; - recorder.record(RecordPoint::LoadDequeu)?; + recorder.record(RecordPoint::LoadDequeue)?; // make sure all input sets are there at the correct index let mut static_sets = BTreeSet::new(); for (function_set_index, (in_set_name, in_composition_set)) in @@ -413,7 +413,7 @@ impl Dispatcher { }); recorder.record(RecordPoint::TransferQueue)?; (function_context, _) = transfer_queue.enqueu_work(args).await?; - recorder.record(RecordPoint::TransferDequeueu)?; + recorder.record(RecordPoint::TransferDequeue)?; function_buffer += 1; } } @@ -439,7 +439,7 @@ impl Dispatcher { }); recorder.record(RecordPoint::TransferQueue).unwrap(); (function_context, _) = transfer_queue.enqueu_work(args).await?; - recorder.record(RecordPoint::TransferDequeueu).unwrap(); + recorder.record(RecordPoint::TransferDequeue).unwrap(); function_item += 1; } } diff --git a/machine_interface/src/promise.rs b/machine_interface/src/promise.rs index ec85af45..b41ba775 100644 --- a/machine_interface/src/promise.rs +++ b/machine_interface/src/promise.rs @@ -94,7 +94,7 @@ impl Debt { fn drop_promise_data(data_ptr: *const PromiseData) { let data = unsafe { &*data_ptr }; - if data.references.fetch_sub(1, Ordering::SeqCst) == 0 { + if data.references.fetch_sub(1, Ordering::SeqCst) == 1 { let _ = unsafe { Box::from_raw(data_ptr as *mut PromiseData) }; } } diff --git a/server/src/lib.rs b/server/src/lib.rs new file mode 100644 index 00000000..87f48f5e --- /dev/null +++ b/server/src/lib.rs @@ -0,0 +1,50 @@ +use machine_interface::{ + memory_domain::{read_only::ReadOnlyContext, Context}, + DataItem, DataSet, Position, +}; +use serde::{Deserialize, Serialize}; + +#[derive(Deserialize, Serialize)] +#[allow(dead_code)] +pub struct DandelionRequest { + pub name: String, + pub sets: Vec, + pub data: Vec, +} + +#[derive(Deserialize, Serialize)] +#[allow(dead_code)] +pub struct InputSet { + pub identifier: String, + pub items: Vec, +} + +#[derive(Deserialize, Serialize)] +#[allow(dead_code)] +pub struct InputItem { + pub identifier: String, + pub key: u32, + pub data_start: u64, + pub data_size: u64, +} + +pub fn parse_request(request: DandelionRequest) -> (String, Context) { + let DandelionRequest { name, sets, data } = request; + let mut context = ReadOnlyContext::new(data.into()).unwrap(); + let map_item = |request_item: InputItem| DataItem { + ident: request_item.identifier, + key: request_item.key, + data: Position { + offset: usize::try_from(request_item.data_start).unwrap(), + size: usize::try_from(request_item.data_size).unwrap(), + }, + }; + let map_set = |request_set: InputSet| { + Some(DataSet { + ident: request_set.identifier, + buffers: request_set.items.into_iter().map(map_item).collect(), + }) + }; + context.content = sets.into_iter().map(map_set).collect(); + return (name, context); +} diff --git a/server/src/main.rs b/server/src/main.rs index 2a9be511..69e2b177 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,6 +1,7 @@ use bytes::Buf; use core_affinity::{self, CoreId}; use dandelion_commons::records::{Archive, RecordPoint, Recorder}; +use dandelion_server::DandelionRequest; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, @@ -16,9 +17,7 @@ use log::{error, info}; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, - memory_domain::{ - mmap::MmapMemoryDomain, read_only::ReadOnlyContext, Context, ContextTrait, MemoryDomain, - }, + memory_domain::{mmap::MmapMemoryDomain, ContextTrait, MemoryDomain}, DataItem, DataSet, Position, }; use serde::Deserialize; @@ -28,7 +27,6 @@ use std::{ collections::BTreeMap, convert::Infallible, io::{self, Write}, - mem::size_of, net::SocketAddr, path::PathBuf, sync::{ @@ -156,25 +154,10 @@ async fn run_chain( async fn run_mat_func( dispatcher: Arc, is_cold: bool, - rows: usize, - cols: usize, - function_name: String, + request: DandelionRequest, mut recorder: Recorder, ) -> i64 { - let mat_size: usize = rows * cols; - - // Initialize matrix if necessary - unsafe { - INIT_MATRIX.call_once(|| { - // TODO: add cols - DUMMY_MATRIX.push(rows as i64); - for i in 0..mat_size { - DUMMY_MATRIX.push(i as i64 + 1) - } - }); - } - - let input_context = unsafe { add_matmul_inputs(&mut DUMMY_MATRIX) }; + let (name, input_context) = dandelion_server::parse_request(request); let inputs = vec![( 0, @@ -185,7 +168,7 @@ async fn run_mat_func( .record(RecordPoint::QueueFunctionDispatcher) .unwrap(); let result = dispatcher - .queue_function_by_name(function_name, inputs, outputs, is_cold, recorder) + .queue_function_by_name(name, inputs, outputs, is_cold, recorder) .await .expect("Should get result from function") .remove(&0) @@ -194,39 +177,6 @@ async fn run_mat_func( return get_checksum(result); } -// Add the matrix multiplication inputs to the given context -fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { - // Allocate a new set entry - let matrix_size = matrix.len() * size_of::(); - let mut context = ReadOnlyContext::new_static(matrix); - context.content.resize_with(1, || None); - let _ = context.occupy_space(0, matrix_size); - - if let Some(set) = &mut context.content[0] { - set.buffers.push(DataItem { - ident: String::from(""), - data: Position { - offset: 0, - size: matrix_size, - }, - key: 0, - }); - } else { - context.content[0] = Some(DataSet { - ident: "".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { - offset: 0, - size: matrix_size, - }, - key: 0, - }], - }); - } - return context; -} - // Given a result context, return the last element of the resulting matrix fn get_checksum(composition_set: CompositionSet) -> i64 { // Determine offset of last matrix element @@ -250,13 +200,6 @@ fn get_checksum(composition_set: CompositionSet) -> i64 { return read_buffer[0]; } -#[derive(Deserialize)] -struct MatrixRequest { - name: String, - rows: u64, - cols: u64, -} - async fn serve_request( is_cold: bool, req: Request, @@ -269,15 +212,13 @@ async fn serve_request( let request_buf = hyper::body::to_bytes(req.into_body()) .await .expect("Could not read request body"); - let request_map: MatrixRequest = + let request: DandelionRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); let response_vec = run_mat_func( dispatcher, is_cold, - request_map.rows as usize, - request_map.cols as usize, - request_map.name, + request, recorder.get_sub_recorder().unwrap(), ) .await diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index ca916724..a5b66e81 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -6,6 +6,7 @@ mod server_tests { use assert_cmd::prelude::*; use byteorder::{BigEndian, ReadBytesExt}; + use dandelion_server::{DandelionRequest, InputItem, InputSet}; use serde::Serialize; use std::{ io::{BufRead, BufReader, Cursor, Read}, @@ -72,10 +73,22 @@ mod server_tests { fn send_matrix_request(endpoint: &str, function_name: String) { // call into function - let mat_request = MatrixRequest { + let mut data = Vec::new(); + data.extend_from_slice(&i64::to_le_bytes(1)); + data.extend_from_slice(&i64::to_le_bytes(1)); + let data_size = data.len() as u64; + let mat_request = DandelionRequest { name: function_name, - cols: 1, - rows: 1, + sets: vec![InputSet { + identifier: String::from(""), + items: vec![InputItem { + identifier: String::from(""), + key: 0, + data_start: 0, + data_size, + }], + }], + data, }; let client = reqwest::blocking::Client::new(); From fafb745c38d7ce0f225e392ed684090fe72c32d5 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 2 Apr 2024 14:45:38 +0200 Subject: [PATCH 059/176] Update hyper for dandelion server --- server/Cargo.toml | 4 +- server/src/main.rs | 161 +++++++++++++++++++---------------- server/tests/server_tests.rs | 2 +- 3 files changed, 90 insertions(+), 77 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index 46cec700..854bfcb9 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -9,7 +9,9 @@ dandelion_commons = { path = "../dandelion_commons" } dispatcher = { path = "../dispatcher" } futures = { version = "0.3.28", default-features=false} tokio = { version = "1", features = ["full"] } -hyper = { version = "0.14", features = ["full"] } +hyper = { version = "1.2", features = ["server", "http1"] } +hyper-util = { version = "0.1", features = ["tokio"] } +http-body-util = "0.1" tower = { version = "0.4.13", features = ["make"] } core_affinity = "0.8" num_cpus = "1.16.0" diff --git a/server/src/main.rs b/server/src/main.rs index 69e2b177..ec8f2dcd 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,4 +1,3 @@ -use bytes::Buf; use core_affinity::{self, CoreId}; use dandelion_commons::records::{Archive, RecordPoint, Recorder}; use dandelion_server::DandelionRequest; @@ -6,12 +5,11 @@ use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, }; -use futures::lock::Mutex; -use futures::stream::StreamExt; -use http::StatusCode; +use http_body_util::{BodyExt, Full}; use hyper::{ - service::{make_service_fn, service_fn}, - Body, Request, Response, Server, + body::{Bytes, Incoming}, + service::service_fn, + Request, Response, StatusCode, }; use log::{error, info}; use machine_interface::{ @@ -21,12 +19,10 @@ use machine_interface::{ DataItem, DataSet, Position, }; use serde::Deserialize; -use signal_hook::consts::signal::*; -use signal_hook_tokio::Signals; use std::{ collections::BTreeMap, convert::Infallible, - io::{self, Write}, + io::Write, net::SocketAddr, path::PathBuf, sync::{ @@ -34,25 +30,12 @@ use std::{ Arc, Once, OnceLock, }, }; -use tokio::runtime::Builder; +use tokio::{net::TcpListener, runtime::Builder, signal::unix::SignalKind}; static INIT_MATRIX: Once = Once::new(); static mut DUMMY_MATRIX: Vec = Vec::new(); const FUNCTION_FOLDER_PATH: &str = "/tmp/dandelion_server"; -// Handles graceful shutdown -async fn handle_signals(mut signals: Signals) -> io::Result<()> { - while let Some(signal) = signals.next().await { - match signal { - SIGTERM | SIGINT | SIGQUIT => { - return Ok(()); - } - _ => unreachable!(), - } - } - Ok(()) -} - async fn run_chain( dispatcher: Arc, is_cold: bool, @@ -202,16 +185,18 @@ fn get_checksum(composition_set: CompositionSet) -> i64 { async fn serve_request( is_cold: bool, - req: Request, + req: Request, dispatcher: Arc, -) -> Result, Infallible> { +) -> Result>, Infallible> { let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); // Try to parse the request - let request_buf = hyper::body::to_bytes(req.into_body()) + let request_buf = req + .collect() .await - .expect("Could not read request body"); + .expect("Could not read request body") + .to_bytes(); let request: DandelionRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); @@ -242,15 +227,17 @@ struct ChainRequest { async fn serve_chain( is_cold: bool, - req: Request, + req: Request, dispatcher: Arc, -) -> Result, Infallible> { +) -> Result>, Infallible> { let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); - let request_buf = hyper::body::to_bytes(req.into_body()) + let request_buf = req + .collect() .await - .expect("Should be able to parse body"); + .expect("Should be able to parse body") + .to_bytes(); let request_map: ChainRequest = bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); @@ -274,20 +261,22 @@ async fn serve_chain( return response; } -async fn serve_native(_req: Request) -> Result, Infallible> { +async fn serve_native(req: Request) -> Result>, Infallible> { // Try to parse the request - let mut request_buf = hyper::body::to_bytes(_req.into_body()) + let request_buf = req + .collect() .await - .expect("Could not read request body"); + .expect("Could not read request body") + .to_bytes(); if request_buf.len() != 16 { - let mut bad_request = Response::new(Body::empty()); + let mut bad_request = Response::new(Full::new(String::from("").into())); *bad_request.status_mut() = StatusCode::BAD_REQUEST; return Ok::<_, Infallible>(bad_request); } - let rows = request_buf.get_i64() as usize; - let cols = request_buf.get_i64() as usize; + let rows = i64::from_le_bytes(request_buf[0..8].try_into().unwrap()) as usize; + let cols = i64::from_le_bytes(request_buf[8..16].try_into().unwrap()) as usize; let mat_size: usize = rows * cols; @@ -326,12 +315,14 @@ struct RegisterFunction { } async fn register_function( - req: Request, + req: Request, dispatcher: Arc, -) -> Result, Infallible> { - let bytes = hyper::body::to_bytes(req.into_body()) +) -> Result>, Infallible> { + let bytes = req + .collect() .await - .expect("Failed to extract body from function registration"); + .expect("Failed to extract body from function registration") + .to_bytes(); // find first line end character let request_map: RegisterFunction = bson::from_slice(&bytes).expect("Should be able to deserialize request"); @@ -375,12 +366,14 @@ struct RegisterChain { } async fn register_composition( - req: Request, + req: Request, dispatcher: Arc, -) -> Result, Infallible> { - let bytes = hyper::body::to_bytes(req.into_body()) +) -> Result>, Infallible> { + let bytes = req + .collect() .await - .expect("Failed to extract body from function registration"); + .expect("Failed to extract body from function registration") + .to_bytes(); // find first line end character let request_map: RegisterChain = bson::from_slice(&bytes).expect("Should be able to deserialize request"); @@ -392,17 +385,17 @@ async fn register_composition( return Ok::<_, Infallible>(Response::new("Function registered".into())); } -async fn serve_stats(_req: Request) -> Result, Infallible> { +async fn serve_stats(_req: Request) -> Result>, Infallible> { let archive_ref = TRACING_ARCHIVE.get().unwrap(); - let response: Response = Response::new(archive_ref.get_summary().into()); + let response = Response::new(archive_ref.get_summary().into()); archive_ref.reset(); return Ok::<_, Infallible>(response); } async fn service( - req: Request, + req: Request, dispatcher: Arc, -) -> Result, Infallible> { +) -> Result>, Infallible> { let uri = req.uri().path(); match uri { "/register/function" => register_function(req, dispatcher).await, @@ -425,6 +418,40 @@ async fn service( /// Recording setup static TRACING_ARCHIVE: OnceLock = OnceLock::new(); +async fn service_loop(dispacher: Arc) { + // socket to listen to + let addr = SocketAddr::from(([0, 0, 0, 0], 8080)); + let listener = TcpListener::bind(addr).await.unwrap(); + // signal handlers for gracefull shutdown + let mut sigterm_stream = tokio::signal::unix::signal(SignalKind::terminate()).unwrap(); + let mut sigint_stream = tokio::signal::unix::signal(SignalKind::interrupt()).unwrap(); + let mut sigquit_stream = tokio::signal::unix::signal(SignalKind::quit()).unwrap(); + loop { + tokio::select! { + connection_pair = listener.accept() => { + let (stream,_) = connection_pair.unwrap(); + let loop_dispatcher = dispacher.clone(); + let io = hyper_util::rt::TokioIo::new(stream); + tokio::task::spawn(async move { + let service_dispatcher_ptr = loop_dispatcher.clone(); + if let Err(err) = hyper::server::conn::http1::Builder::new() + .serve_connection( + io, + service_fn(|req| service(req, service_dispatcher_ptr.clone())), + ) + .await + { + error!("Request serving failed with error: {:?}", err); + } + }); + } + _ = sigterm_stream.recv() => break, + _ = sigint_stream.recv() => break, + _ = sigquit_stream.recv() => break, + } + } +} + fn main() -> () { env_logger::init(); @@ -494,7 +521,7 @@ fn main() -> () { .collect(), ); let resource_pool = ResourcePool { - engine_pool: Mutex::new(pool_map), + engine_pool: futures::lock::Mutex::new(pool_map), }; // Create an ARC pointer to the dispatcher for thread-safe access @@ -503,36 +530,20 @@ fn main() -> () { let _guard = runtime.enter(); - // ready http endpoint - let addr = SocketAddr::from(([0, 0, 0, 0], 8080)); - let make_svc = make_service_fn(move |_| { - let new_dispatcher_ptr = dispatcher_ptr.clone(); - async move { - Ok::<_, Infallible>(service_fn(move |req| { - let service_dispatcher_ptr = new_dispatcher_ptr.clone(); - service(req, service_dispatcher_ptr) - })) - } - }); - let server = Server::bind(&addr).serve(make_svc); - - let signals = Signals::new(&[SIGTERM, SIGINT, SIGQUIT]).unwrap(); - let graceful = - server.with_graceful_shutdown(async move { handle_signals(signals).await.unwrap() }); - // TODO would be nice to just print server ready with all enabled features if that would be possible + print!("Server start with features: "); #[cfg(feature = "cheri")] - println!("Hello, World (cheri)"); + print!("cheri, "); #[cfg(feature = "mmu")] - println!("Hello, World (mmu)"); + print!("mmu, "); #[cfg(feature = "wasm")] - println!("Hello, World (wasm)"); - #[cfg(not(any(feature = "cheri", feature = "mmu", feature = "wasm")))] - println!("Hello, World (native)"); + print!("wasm, "); + #[cfg(feature = "timestamp")] + print!("timestamp, "); + print!("\n"); + // Run this server for... forever... unless I receive a signal! - if let Err(e) = runtime.block_on(graceful) { - error!("server error: {}", e); - } + runtime.block_on(service_loop(dispatcher_ptr)); // clean up folder in tmp that is used for function storage std::fs::remove_dir_all(FUNCTION_FOLDER_PATH).unwrap(); diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index a5b66e81..805b669c 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -119,7 +119,7 @@ mod server_tests { let mut buf = String::new(); let len = reader.read_line(&mut buf).unwrap(); assert_ne!(len, 0, "Server exited unexpectedly"); - if buf.contains("Hello, World") { + if buf.contains("Server start") { break; } } From 9a890107f4e25a639779be1e184be4ccd98e4c46 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 2 Apr 2024 17:09:11 +0200 Subject: [PATCH 060/176] Change core initialization to warn in case of hyperthreading, handling of hyperthreads was incorrect --- server/src/main.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index ec8f2dcd..5c1a222f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -11,7 +11,7 @@ use hyper::{ service::service_fn, Request, Response, StatusCode, }; -use log::{error, info}; +use log::{error, info, warn}; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, @@ -453,7 +453,7 @@ async fn service_loop(dispacher: Arc) { } fn main() -> () { - env_logger::init(); + env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("warn")).init(); // Initilize metric collection match TRACING_ARCHIVE.set(Archive::init()) { @@ -466,8 +466,14 @@ fn main() -> () { |_e| u8::try_from(num_cpus::get_physical()).unwrap(), |n| n.parse::().unwrap(), ); - let num_virt_cores = u8::try_from(core_affinity::get_core_ids().unwrap().len()).unwrap(); - let threads_per_core = num_virt_cores / num_cores; + let num_phyiscal_cores = u8::try_from(num_cpus::get_physical()).unwrap(); + let num_virt_cores = u8::try_from(num_cpus::get()).unwrap(); + if num_phyiscal_cores != num_virt_cores { + warn!( + "Hyperthreading might be enabled detected {} logical and {} physical cores", + num_virt_cores, num_phyiscal_cores + ); + } // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines let num_dispatcher_cores = std::env::var("NUM_DISP_CORES") .map_or_else(|_e| (num_cores + 13) / 14, |n| n.parse::().unwrap()); @@ -507,16 +513,14 @@ fn main() -> () { #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] pool_map.insert( engine_type, - (num_dispatcher_cores * threads_per_core..num_virt_cores) - .step_by(threads_per_core.into()) + (num_dispatcher_cores..num_cores) .map(|code_id| ComputeResource::CPU(code_id)) .collect(), ); #[cfg(feature = "hyper_io")] pool_map.insert( EngineType::Hyper, - (0..num_dispatcher_cores * threads_per_core) - .step_by(threads_per_core.into()) + (0..num_dispatcher_cores) .map(|core_id| ComputeResource::CPU(core_id)) .collect(), ); From 1d85061a9c56ee3c3ffa6ccd62ccd32e936cfbc2 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 3 Apr 2024 11:26:53 +0200 Subject: [PATCH 061/176] temporarily disable resource allocation for hyper engine --- server/src/main.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 5c1a222f..11b82bad 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,12 +518,12 @@ fn main() -> () { .collect(), ); #[cfg(feature = "hyper_io")] - pool_map.insert( - EngineType::Hyper, - (0..num_dispatcher_cores) - .map(|core_id| ComputeResource::CPU(core_id)) - .collect(), - ); + // pool_map.insert( + // EngineType::Hyper, + // (0..num_dispatcher_cores) + // .map(|core_id| ComputeResource::CPU(core_id)) + // .collect(), + // ); let resource_pool = ResourcePool { engine_pool: futures::lock::Mutex::new(pool_map), }; From c24dc8731f084f5981a3ddf18367973a32adf38d Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Thu, 4 Apr 2024 11:04:34 +0200 Subject: [PATCH 062/176] Adding check to remove shared memory files on shutdown --- server/src/main.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 11b82bad..f4a0073f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -445,9 +445,9 @@ async fn service_loop(dispacher: Arc) { } }); } - _ = sigterm_stream.recv() => break, - _ = sigint_stream.recv() => break, - _ = sigquit_stream.recv() => break, + _ = sigterm_stream.recv() => return, + _ = sigint_stream.recv() => return, + _ = sigquit_stream.recv() => return, } } } @@ -551,4 +551,23 @@ fn main() -> () { // clean up folder in tmp that is used for function storage std::fs::remove_dir_all(FUNCTION_FOLDER_PATH).unwrap(); + // clean up folder with shared files in case the context backed by shared files left some behind + for shm_dir_entry in std::fs::read_dir("/dev/shm/").unwrap() { + if let Ok(shm_file) = shm_dir_entry { + if shm_file + .file_name() + .into_string() + .unwrap() + .starts_with("shm_") + { + warn!( + "Found left over shared memory file: {:?}", + shm_file.file_name() + ); + if std::fs::remove_file(shm_file.path()).is_err() { + warn!("Failed to remove shared memory file {:?}", shm_file.path()); + } + } + } + } } From 30d609b184903846a561c4c6b7868db68a1abf9f Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Thu, 4 Apr 2024 18:35:13 +0200 Subject: [PATCH 063/176] Move env parsing into separate module file --- dandelion_commons/src/records.rs | 20 +++--- .../tests/dispatcher_tests/function_tests.rs | 32 +++++++-- .../tests/dispatcher_tests/registry_tests.rs | 12 +++- machine_interface/Cargo.toml | 1 + .../compute_driver/compute_driver_tests.rs | 28 ++++++-- .../system_driver/system_driver_tests.rs | 12 +++- server/Cargo.toml | 3 +- server/README.md | 54 ++++++++++++++ server/src/config.rs | 72 +++++++++++++++++++ server/src/lib.rs | 2 + server/src/main.rs | 32 +++++---- 11 files changed, 223 insertions(+), 45 deletions(-) create mode 100644 server/src/config.rs diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 7178fc31..ef5bd035 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -42,7 +42,6 @@ pub enum RecordPoint { mod timestamp { use crate::{DandelionError, DandelionResult}; use std::{ - env, sync::{atomic::AtomicU16, Arc, Mutex}, time::Instant, }; @@ -109,14 +108,10 @@ mod timestamp { } impl TimestampArchive { - pub fn init() -> Self { - let pool_size = match env::var("DANDELION_TIMESTAMP_COUNT") { - Ok(container_count_string) => container_count_string.parse().unwrap_or(100), - Err(_) => 1000, - }; + pub fn init(timestamp_number: usize) -> Self { let zero_time = Instant::now(); let mut free_pool = Vec::new(); - free_pool.resize_with(pool_size, || { + free_pool.resize_with(timestamp_number, || { Box::new(Timestamp { parent_span: 0, current_span: 0, @@ -126,7 +121,7 @@ mod timestamp { }) }); let mut used_pool = Vec::new(); - used_pool.reserve(pool_size); + used_pool.reserve(timestamp_number); return Self { start_time: zero_time, free_timestamps: Mutex::new(free_pool), @@ -230,11 +225,16 @@ pub struct Archive { timestamp_archive: timestamp::TimestampArchive, } +pub struct ArchiveInit { + #[cfg(feature = "timestamp")] + pub timestamp_count: usize, +} + impl Archive { - pub fn init() -> Self { + pub fn init(#[allow(unused_variables)] init_args: ArchiveInit) -> Self { return Archive { #[cfg(feature = "timestamp")] - timestamp_archive: timestamp::TimestampArchive::init(), + timestamp_archive: timestamp::TimestampArchive::init(init_args.timestamp_count), }; } diff --git a/dispatcher/tests/dispatcher_tests/function_tests.rs b/dispatcher/tests/dispatcher_tests/function_tests.rs index a697698b..67e57241 100644 --- a/dispatcher/tests/dispatcher_tests/function_tests.rs +++ b/dispatcher/tests/dispatcher_tests/function_tests.rs @@ -1,6 +1,6 @@ use super::{check_matrix, setup_dispatcher}; use core::mem::size_of; -use dandelion_commons::records::{Archive, RecordPoint}; +use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; use dispatcher::composition::{Composition, CompositionSet, FunctionDependencies, ShardingMode}; use machine_interface::{ function_driver::ComputeResource, @@ -96,7 +96,10 @@ pub fn single_domain_and_engine_basic( let (dispatcher, function_id) = setup_dispatcher::(relative_path, vec![], vec![], engine_type, engine_resource); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -133,7 +136,10 @@ pub fn single_domain_and_engine_matmul( let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(in_context))])))]; let outputs = vec![Some(0)]; - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -183,7 +189,10 @@ pub fn composition_single_matmul( }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -239,7 +248,10 @@ pub fn composition_parallel_matmul( }; let inputs = BTreeMap::from([(0, CompositionSet::from((0, vec![Arc::new(in_context)])))]); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -307,7 +319,10 @@ pub fn composition_chain_matmul( output_map: BTreeMap::from([(2, 0)]), }; - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -413,7 +428,10 @@ pub fn composition_diamond_matmac( output_map: BTreeMap::from([(7, 0)]), }; - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index 308f4a79..993efdff 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -1,5 +1,5 @@ use crate::dispatcher_tests::{check_matrix, setup_dispatcher}; -use dandelion_commons::records::Archive; +use dandelion_commons::records::{Archive, ArchiveInit}; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, }; @@ -42,7 +42,10 @@ pub fn single_input_fixed( engine_type: EngineType, engine_resource: Vec, ) { - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let matrix_a = Box::new([1u64, 2u64]); let matrix_b = Box::new([1u64, 3u64]); @@ -155,7 +158,10 @@ pub fn multiple_input_fixed( engine_type: EngineType, engine_resource: Vec, ) { - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let matrix_a = Box::new([1u64, 2u64]); let matrix_b = Box::new([1u64, 3u64]); diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 126c09ed..de5c670e 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -9,6 +9,7 @@ cheri = ["std"] mmu = ["std"] hyper_io = ["std", "dep:hyper"] wasm = ["std"] +timestamp = ["dandelion_commons/timestamp"] [build-dependencies] cmake = "0.1" diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 42d9a08a..d6c00a59 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -10,7 +10,7 @@ mod compute_driver_tests { }; use core::panic; use dandelion_commons::{ - records::{Archive, RecordPoint}, + records::{Archive, ArchiveInit, RecordPoint}, DandelionError, }; use std::sync::Arc; @@ -73,7 +73,10 @@ mod compute_driver_tests { ) { let (function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let recorder = archive.get_recorder().unwrap(); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { config: config, @@ -111,7 +114,11 @@ mod compute_driver_tests { key: 0, }], })); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) @@ -199,7 +206,10 @@ mod compute_driver_tests { key: 0, }], })); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) @@ -293,7 +303,10 @@ mod compute_driver_tests { }, ], })); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) @@ -438,7 +451,10 @@ mod compute_driver_tests { }, ], })); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let mut recorder = archive.get_recorder().unwrap(); recorder .record(RecordPoint::TransferEnd) diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 66a3892f..127757bc 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -9,7 +9,7 @@ mod system_driver_tests { DataItem, DataSet, Position, }; use dandelion_commons::{ - records::{Archive, RecordPoint}, + records::{Archive, ArchiveInit, RecordPoint}, DandelionResult, }; use std::sync::Arc; @@ -76,7 +76,10 @@ mod system_driver_tests { write_request_line(&mut context, request).expect("Should be able to prepare request line"); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let recorder = archive.get_recorder().unwrap(); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { @@ -149,7 +152,10 @@ mod system_driver_tests { .write(body_offset, request_body) .expect("Should be able to write body"); - let archive = Box::leak(Box::new(Archive::init())); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); let recorder = archive.get_recorder().unwrap(); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { diff --git a/server/Cargo.toml b/server/Cargo.toml index 854bfcb9..c76f04f7 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -17,9 +17,10 @@ core_affinity = "0.8" num_cpus = "1.16.0" bytes = "1.4" http = "0.2" -log = "0.4.20" +log = { version = "0.4.20", features = ["serde"] } env_logger = "0.10.1" serde = "1.0.197" +serde_json = "1.0.115" bson = "2.9.0" signal-hook = "0.3.17" signal-hook-tokio = {version = "0.3.1", features = [ "futures-v0_3"]} diff --git a/server/README.md b/server/README.md index 6243e828..b3b05cda 100644 --- a/server/README.md +++ b/server/README.md @@ -2,3 +2,57 @@ This folder contains the server main process and infrastructure. It is used during development to figure out how to do things. + +## Configuration + +### Environment Config + +To configure the dandelion server there are the following additional parameters + +- `RUST_LOG` the rust environment logger we are using can be used to set the log level. + For more information refer to the rust log crate. + Per default it is set to `warn`, possible values are: + + - `error` + - `warn` + - `info` + - `debug` + - `trace` + - `off` + +- `NUM_TOTAL_CORES` the total number of cores available to the server. + Expects an integer number. + Defaults to using all cores. +- `NUM_DISP_CORES` the total number of cores to be used for the http frontend and the dispatcher. Defaults to 1. +- `DANDELION_TIMESTAMP_COUNT` the number of timestamps to preallocate. + Expects a integer number. + Defaults to 1000. +- `DANDELION_CONFIG` the path in which to look for the config file + Defaults to `./dandelion.yml` + +### Config File + +To configure the dandelon using a config file. +The file is first searched in the full path given by `DANDELION_CONFIG`, then a file called `dandelion_config.json` is searched in the current working directory and last in the directory there the binary resides. + +The config file has the expected layout as follows: + +```json +{ + "total_cores": , + "dispatcher_cores": , + "timestamp_count": , + "log_level": +} +``` + +### Precedence + +The precedence is config file > environment variables > defaults + +## Additional Settings + +Some settings are also done through the enviroment variables, that have not yet been easily portet to the config struct. +Specifically: + +- `PROCESS_WORKER_PATH` set the path for the process engine to find the worker binary diff --git a/server/src/config.rs b/server/src/config.rs new file mode 100644 index 00000000..4b39f7cb --- /dev/null +++ b/server/src/config.rs @@ -0,0 +1,72 @@ +use std::str::FromStr; + +use log::{warn, LevelFilter}; + +#[derive(serde::Deserialize)] +pub struct DandelionConfig { + #[serde(default = "total_cores_default")] + pub total_cores: usize, + #[serde(default = "dispatcher_cores_default")] + pub dispatcher_cores: usize, + #[serde(default = "timestamp_count_default")] + pub timestamp_count: usize, + #[serde(default = "loglevel_default")] + pub log_level: LevelFilter, +} + +fn total_cores_default() -> usize { + return std::env::var("NUM_TOTAL_CORES").map_or_else( + |_e| num_cpus::get_physical(), + |n| n.parse::().unwrap(), + ); +} + +fn dispatcher_cores_default() -> usize { + return std::env::var("NUM_DISP_CORES").map_or(1, |n| n.parse::().unwrap()); +} + +fn timestamp_count_default() -> usize { + return std::env::var("DANDELION_TIMESTAMP_COUNT") + .map_or(1000, |n| n.parse::().unwrap()); +} + +fn loglevel_default() -> LevelFilter { + return std::env::var("RUST_LOG").map_or(LevelFilter::Warn, |env_string| { + LevelFilter::from_str(&env_string).unwrap() + }); +} + +pub fn get_config() -> DandelionConfig { + // get dandelion config path if it exists and if not use current working directory + let config_path = std::env::var("DANDELION_CONFIG").unwrap_or(String::from("./dandelion.json")); + let config_buff = std::fs::read(&config_path) + .map_or_else( + |err| { + match err.kind() { + std::io::ErrorKind::NotFound => (), + err => { + warn!( + "Encountered error while searching for config file at {}: {:?}", + config_path, err + ); + return None; + } + }; + if let Ok(mut exec_path) = std::env::current_exe() { + exec_path.pop(); + exec_path.push("dandelion.json"); + match std::fs::read(&exec_path) { + Ok(buffer) => return Some(buffer), + Err(err) => warn!( + "Encountered error while searching config file in exec path at {:?}: {:?}", + exec_path, err + ), + }; + } + return None; + }, + |ok| Some(ok), + ) + .unwrap_or(String::from("{}").into_bytes()); + return serde_json::from_slice(&config_buff).unwrap(); +} diff --git a/server/src/lib.rs b/server/src/lib.rs index 87f48f5e..f0e256c4 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -1,3 +1,5 @@ +pub mod config; + use machine_interface::{ memory_domain::{read_only::ReadOnlyContext, Context}, DataItem, DataSet, Position, diff --git a/server/src/main.rs b/server/src/main.rs index f4a0073f..803035ed 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,5 +1,5 @@ use core_affinity::{self, CoreId}; -use dandelion_commons::records::{Archive, RecordPoint, Recorder}; +use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint, Recorder}; use dandelion_server::DandelionRequest; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, @@ -453,19 +453,22 @@ async fn service_loop(dispacher: Arc) { } fn main() -> () { + // check if there is a configuration file + let config = dandelion_server::config::get_config(); + env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("warn")).init(); // Initilize metric collection - match TRACING_ARCHIVE.set(Archive::init()) { + match TRACING_ARCHIVE.set(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: config.timestamp_count, + })) { Ok(_) => (), Err(_) => panic!("Failed to initialize tracing archive"), } // find available resources - let num_cores = std::env::var("NUM_TOTAL_CORES").map_or_else( - |_e| u8::try_from(num_cpus::get_physical()).unwrap(), - |n| n.parse::().unwrap(), - ); + let num_cores = config.total_cores; let num_phyiscal_cores = u8::try_from(num_cpus::get_physical()).unwrap(); let num_virt_cores = u8::try_from(num_cpus::get()).unwrap(); if num_phyiscal_cores != num_virt_cores { @@ -475,8 +478,7 @@ fn main() -> () { ); } // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines - let num_dispatcher_cores = std::env::var("NUM_DISP_CORES") - .map_or_else(|_e| (num_cores + 13) / 14, |n| n.parse::().unwrap()); + let num_dispatcher_cores = config.dispatcher_cores; assert!( num_dispatcher_cores > 0 && num_dispatcher_cores < num_cores, "invalid dispatcher core number: {}", @@ -514,14 +516,14 @@ fn main() -> () { pool_map.insert( engine_type, (num_dispatcher_cores..num_cores) - .map(|code_id| ComputeResource::CPU(code_id)) + .map(|code_id| ComputeResource::CPU(code_id as u8)) .collect(), ); #[cfg(feature = "hyper_io")] // pool_map.insert( // EngineType::Hyper, // (0..num_dispatcher_cores) - // .map(|core_id| ComputeResource::CPU(core_id)) + // .map(|core_id| ComputeResource::CPU(core_id as u8)) // .collect(), // ); let resource_pool = ResourcePool { @@ -535,15 +537,15 @@ fn main() -> () { let _guard = runtime.enter(); // TODO would be nice to just print server ready with all enabled features if that would be possible - print!("Server start with features: "); + print!("Server start with features:"); #[cfg(feature = "cheri")] - print!("cheri, "); + print!(" cheri"); #[cfg(feature = "mmu")] - print!("mmu, "); + print!(" mmu"); #[cfg(feature = "wasm")] - print!("wasm, "); + print!(" wasm"); #[cfg(feature = "timestamp")] - print!("timestamp, "); + print!(" timestamp"); print!("\n"); // Run this server for... forever... unless I receive a signal! From 60935fd6d817a853b38f59f09649fd425745b8a7 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 8 Apr 2024 12:00:39 +0200 Subject: [PATCH 064/176] Separated parsing to make it queueable on work queueu --- dandelion_commons/src/records.rs | 8 ++ dispatcher/src/dispatcher.rs | 47 ++++---- dispatcher/src/execution_qs.rs | 13 +-- dispatcher/src/function_registry.rs | 108 ++++++------------ dispatcher/tests/dispatcher_tests.rs | 1 - machine_interface/src/function_driver.rs | 39 ++++++- .../function_driver/compute_driver/cheri.rs | 2 +- .../compute_driver/cheri/test.rs | 8 +- .../compute_driver/compute_driver_tests.rs | 67 +++++------ .../src/function_driver/compute_driver/mmu.rs | 2 +- .../compute_driver/mmu/test.rs | 8 +- .../function_driver/compute_driver/wasm.rs | 2 +- .../src/function_driver/load_utils.rs | 2 +- .../function_driver/system_driver/hyper.rs | 2 +- .../system_driver/system_driver_tests.rs | 55 +++++---- .../src/function_driver/test_queue.rs | 8 +- .../src/function_driver/thread_utils.rs | 33 ++++-- machine_interface/src/machine_config.rs | 41 ++++--- machine_interface/src/promise.rs | 10 +- server/src/main.rs | 2 +- 20 files changed, 259 insertions(+), 199 deletions(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index ef5bd035..37069d11 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -8,6 +8,14 @@ pub enum RecordPoint { QueueFunctionDispatcher, /// Queue to load the function code + ctx PrepareEnvQueue, + /// Enque parsing operation + ParsingQueueu, + /// Start parsing + ParsingStart, + /// Finished Parsing + ParsingEnd, + /// Dequeue from parsing + ParsingDequeu, /// Load function code (async) LoadQueue, /// Start loading code + alloc ctx diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 6cb95cb2..282db0fe 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -16,7 +16,7 @@ use futures::{ }; use itertools::Itertools; use machine_interface::{ - function_driver::{EngineArguments, FunctionArguments, FunctionConfig, TransferArguments}, + function_driver::{Driver, FunctionArguments, FunctionConfig, TransferArguments, WorkToDo}, machine_config::{ get_available_domains, get_available_drivers, get_compatibilty_table, DomainType, EngineType, @@ -30,8 +30,10 @@ use std::{ // TODO here and in registry can probably replace driver and loader function maps with fixed size arrays // That have compile time size and static indexing +// TODO also here and in registry replace Arc Box with static references from leaked boxes for things we expect to be there for +// the entire execution time anyway pub struct Dispatcher { - domains: BTreeMap, Box)>, + domains: BTreeMap)>, engine_queues: BTreeMap>, type_map: BTreeMap, function_registry: FunctionRegistry, @@ -41,25 +43,30 @@ impl Dispatcher { pub fn init(mut resource_pool: ResourcePool) -> DandelionResult { // get machine specific configurations let type_map = get_compatibilty_table(); - let mut domains = get_available_domains(); + let domains = get_available_domains(); let drivers = get_available_drivers(); - let function_registry = FunctionRegistry::new(drivers, &type_map, &domains); - // Insert a work queue for each domain and use up all engine resource available let mut domain_map = BTreeMap::new(); let mut engine_queues = BTreeMap::new(); - for (engine_type, driver) in function_registry.drivers.iter() { + let mut registry_drivers: BTreeMap)> = + BTreeMap::new(); + for (engine_type, driver) in drivers.into_iter() { let work_queue = Box::new(EngineQueue::new()); - while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(*engine_type) - { + while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(engine_type) { driver.start_engine(resource, work_queue.clone())?; } - let domain_type = type_map.get(engine_type).unwrap(); - let domain = domains.remove(domain_type).unwrap(); + let domain_type = type_map.get(&engine_type).unwrap(); + let domain = *domains.get(domain_type).unwrap(); domain_map.insert(*domain_type, (domain, work_queue.clone())); - engine_queues.insert(*engine_type, work_queue.clone()); + engine_queues.insert(engine_type, work_queue.clone()); + registry_drivers.insert( + engine_type, + (driver as &'static dyn Driver, work_queue.clone()), + ); } + let function_registry = FunctionRegistry::new(registry_drivers, &type_map, &domains); + return Ok(Dispatcher { domains: domain_map, engine_queues, @@ -373,15 +380,15 @@ impl Dispatcher { }; // start doing transfers recorder.record(RecordPoint::LoadQueue)?; - let (mut function_context, function_config, mut recorder) = self + let (mut function_context, function_config) = self .function_registry .load( function_id, engine_type, - domain, + *domain, ctx_size, non_caching, - recorder, + recorder.get_sub_recorder().unwrap(), ) .await?; recorder.record(RecordPoint::LoadDequeue)?; @@ -400,7 +407,7 @@ impl Dispatcher { static_sets.insert(function_set_index); let mut function_buffer = 0usize; for (subset, item, source_context) in composition_set { - let args = EngineArguments::TransferArguments(TransferArguments { + let args = WorkToDo::TransferArguments(TransferArguments { destination: function_context, source: source_context, destination_set_index: function_set_index, @@ -412,7 +419,7 @@ impl Dispatcher { recorder: recorder.get_sub_recorder().unwrap(), }); recorder.record(RecordPoint::TransferQueue)?; - (function_context, _) = transfer_queue.enqueu_work(args).await?; + function_context = transfer_queue.enqueu_work(args).await?.get_context(); recorder.record(RecordPoint::TransferDequeue)?; function_buffer += 1; } @@ -426,7 +433,7 @@ impl Dispatcher { for (subset, item, source_context) in context_set { // TODO get allignment information let set_name = &metadata.input_sets[function_set].0; - let args = EngineArguments::TransferArguments(TransferArguments { + let args = WorkToDo::TransferArguments(TransferArguments { destination: function_context, source: source_context, destination_set_index: function_set, @@ -438,7 +445,7 @@ impl Dispatcher { recorder: recorder.get_sub_recorder().unwrap(), }); recorder.record(RecordPoint::TransferQueue).unwrap(); - (function_context, _) = transfer_queue.enqueu_work(args).await?; + function_context = transfer_queue.enqueu_work(args).await?.get_context(); recorder.record(RecordPoint::TransferDequeue).unwrap(); function_item += 1; } @@ -460,14 +467,14 @@ impl Dispatcher { None => return Err(DandelionError::DispatcherConfigError), }; let subrecoder = recorder.get_sub_recorder()?; - let args = EngineArguments::FunctionArguments(FunctionArguments { + let args = WorkToDo::FunctionArguments(FunctionArguments { config: function_config, context: function_context, output_sets, recorder: subrecoder, }); recorder.record(RecordPoint::ExecutionQueue)?; - let (result, _) = engine_queue.enqueu_work(args).await?; + let result = engine_queue.enqueu_work(args).await?.get_context(); recorder.record(RecordPoint::FutureReturn)?; return Ok(result); } diff --git a/dispatcher/src/execution_qs.rs b/dispatcher/src/execution_qs.rs index 7fde04a3..2762ebc9 100644 --- a/dispatcher/src/execution_qs.rs +++ b/dispatcher/src/execution_qs.rs @@ -1,9 +1,8 @@ use crossbeam::channel::{TryRecvError, TrySendError}; -use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; +use dandelion_commons::{DandelionError, DandelionResult}; use log::error; use machine_interface::{ - function_driver::{EngineArguments, WorkQueue}, - memory_domain::Context, + function_driver::{WorkDone, WorkQueue, WorkToDo}, promise::{Debt, Promise}, }; @@ -11,13 +10,13 @@ use machine_interface::{ /// Highest priority queue holds promises if there are any #[derive(Clone)] pub struct EngineQueue { - queue_in: crossbeam::channel::Sender<(EngineArguments, Debt)>, - queue_out: crossbeam::channel::Receiver<(EngineArguments, Debt)>, + queue_in: crossbeam::channel::Sender<(WorkToDo, Debt)>, + queue_out: crossbeam::channel::Receiver<(WorkToDo, Debt)>, } /// This is run on the engine so it performs asyncornous access to the local state impl WorkQueue for EngineQueue { - fn get_engine_args(&self) -> (EngineArguments, Debt) { + fn get_engine_args(&self) -> (WorkToDo, Debt) { loop { match self.queue_out.try_recv() { Err(TryRecvError::Disconnected) => panic!("Work queue disconnected"), @@ -42,7 +41,7 @@ impl EngineQueue { }; } - pub async fn enqueu_work(&self, args: EngineArguments) -> DandelionResult<(Context, Recorder)> { + pub async fn enqueu_work(&self, args: WorkToDo) -> DandelionResult { let (promise, debt) = Promise::new(); match self.queue_in.try_send((args, debt)) { Ok(()) => (), diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 06761915..81a923a2 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -7,17 +7,20 @@ use futures::lock::Mutex; use machine_interface::{ function_driver::{ system_driver::{get_system_function_input_sets, get_system_function_output_sets}, - Driver, Function, FunctionConfig, + Driver, Function, FunctionConfig, ParsingArguments, }, machine_config::{get_system_functions, DomainType, EngineType}, - memory_domain::{malloc::MallocMemoryDomain, Context, MemoryDomain}, + memory_domain::{Context, MemoryDomain}, }; use std::{ collections::{BTreeMap, BTreeSet}, sync::Arc, }; -use crate::composition::{Composition, CompositionSet}; +use crate::{ + composition::{Composition, CompositionSet}, + execution_qs::EngineQueue, +}; #[derive(Clone, Debug)] pub enum FunctionType { @@ -82,7 +85,7 @@ pub struct FunctionRegistry { /// List of engines available for each function engine_map: Mutex>>, /// Drivers for the engines to prepare function (get them from available to ready) - pub(crate) drivers: BTreeMap>, + pub(crate) drivers: BTreeMap)>, /// map with list of all options for each function /// TODO: change structure to avoid copy on get_options options: Mutex>>, @@ -100,9 +103,9 @@ pub struct FunctionRegistry { impl FunctionRegistry { // TODO: make sure that system functions can't be added later for other engines pub fn new( - drivers: BTreeMap>, + drivers: BTreeMap)>, type_map: &BTreeMap, - domains: &BTreeMap>, + domains: &BTreeMap, ) -> Self { // insert all system functons let mut engine_map = BTreeMap::new(); @@ -110,10 +113,11 @@ impl FunctionRegistry { let mut in_memory = BTreeMap::new(); let mut metadata = BTreeMap::new(); let mut function_dict = FunctionDict::new(); - for (engine_type, driver) in drivers.iter() { + for (engine_type, (driver, _)) in drivers.iter() { let system_functions = get_system_functions(*engine_type); for (system_function, context_size) in system_functions { let function_id = function_dict.insert_or_lookup(system_function.to_string()); + // register engine for the function id of the system function engine_map .entry(function_id) .and_modify(|engine_set: &mut BTreeSet| { @@ -132,10 +136,11 @@ impl FunctionRegistry { function_type: FunctionType::Function(*engine_type, context_size), in_memory: true, }]); + // get the config from the parser let function_config = driver .parse_function( String::from(""), - domains.get(type_map.get(engine_type).unwrap()).unwrap(), + *domains.get(type_map.get(engine_type).unwrap()).unwrap(), ) .unwrap(); match function_config.config { @@ -259,60 +264,6 @@ impl FunctionRegistry { return Ok(()); } - pub fn add_system( - &mut self, - function_id: FunctionId, - engine_id: EngineType, - ctx_size: usize, - ) -> DandelionResult<()> { - if !self.metadata.get_mut().contains_key(&function_id) { - return Err(DandelionError::DispatcherMetaDataUnavailable); - } - let driver = - self.drivers - .get(&engine_id) - .ok_or(DandelionError::DispatcherMissingLoader(format!( - "{:?}", - engine_id - )))?; - // domain for the static context, expected to not be used - let malloc_domain = Box::new(MallocMemoryDomain {}); - let function_config = - driver.parse_function(String::new(), &(malloc_domain as Box))?; - match function_config.config { - FunctionConfig::SysConfig(_) => (), - _ => return Err(DandelionError::DispatcherConfigError), - }; - self.in_memory - .get_mut() - .insert((function_id, engine_id), Arc::new(function_config)); - self.engine_map - .get_mut() - .entry(function_id) - .and_modify(|set| { - set.insert(engine_id); - }) - .or_insert({ - let mut set = BTreeSet::new(); - set.insert(engine_id); - set - }); - self.options - .get_mut() - .entry(function_id) - .and_modify(|option_vec| { - option_vec.push(Alternative { - function_type: FunctionType::Function(engine_id, ctx_size), - in_memory: true, - }) - }) - .or_insert(vec![Alternative { - function_type: FunctionType::Function(engine_id, ctx_size), - in_memory: true, - }]); - return Ok(()); - } - pub async fn add_local( &self, function_id: FunctionId, @@ -360,10 +311,11 @@ impl FunctionRegistry { &self, function_id: FunctionId, engine_id: EngineType, - domain: &Box, + domain: &'static dyn MemoryDomain, + recorder: &mut Recorder, ) -> DandelionResult { // get loader - let driver = match self.drivers.get(&engine_id) { + let (driver, parse_queue) = match self.drivers.get(&engine_id) { Some(l) => l, None => { return Err(DandelionError::DispatcherMissingLoader(format!( @@ -381,7 +333,19 @@ impl FunctionRegistry { None => return Err(DandelionError::DispatcherUnavailableFunction), } }; - let tripple = driver.parse_function(path, domain)?; + recorder.record(RecordPoint::ParsingQueueu).unwrap(); + let tripple = parse_queue + .enqueu_work( + machine_interface::function_driver::WorkToDo::ParsingArguments(ParsingArguments { + driver: *driver, + path, + static_domain: domain, + recorder: recorder.get_sub_recorder().unwrap(), + }), + ) + .await? + .get_function(); + recorder.record(RecordPoint::ParsingDequeu).unwrap(); return Ok(tripple); } @@ -389,11 +353,11 @@ impl FunctionRegistry { &self, function_id: FunctionId, engine_id: EngineType, - domain: &Box, + domain: &'static dyn MemoryDomain, ctx_size: usize, non_caching: bool, mut recorder: Recorder, - ) -> DandelionResult<(Context, FunctionConfig, Recorder)> { + ) -> DandelionResult<(Context, FunctionConfig)> { recorder.record(RecordPoint::LoadStart).unwrap(); // check if function for the engine is in registry already @@ -406,11 +370,13 @@ impl FunctionRegistry { }; if let Some(function) = function_opt { let function_context = function.load(domain, ctx_size)?; - return Ok((function_context, function.config.clone(), recorder)); + return Ok((function_context, function.config.clone())); } - + // TODO add check to see if local loading has already been kicked off, to avoid double parsing // if it is not in memory or disk we return the error from loading as it is not available - let function = self.load_local(function_id, engine_id, domain).await?; + let function = self + .load_local(function_id, engine_id, domain, &mut recorder) + .await?; let function_context = function.load(domain, ctx_size)?; let function_config = function.config.clone(); if !non_caching { @@ -423,6 +389,6 @@ impl FunctionRegistry { // need to figure out how to avoid this } recorder.record(RecordPoint::LoadEnd)?; - return Ok((function_context, function_config, recorder)); + return Ok((function_context, function_config)); } } diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index 25e91c59..d5cbea6f 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -77,7 +77,6 @@ mod dispatcher_tests { context .read(out_mat_position.data.offset, &mut out_mat) .expect("Should read output matrix"); - println!("matrix {:?}", out_mat); assert_eq!(rows, out_mat[0]); for i in 0..expected.len() { assert_eq!(expected[i], out_mat[1 + i]); diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 312bcc38..8181e58a 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -65,7 +65,7 @@ pub struct Function { impl Function { pub fn load( &self, - domain: &Box, + domain: &'static dyn MemoryDomain, ctx_size: usize, ) -> DandelionResult { return match &self.config { @@ -91,10 +91,32 @@ pub enum ComputeResource { GPU(u8), } -pub enum EngineArguments { +pub enum WorkToDo { FunctionArguments(FunctionArguments), TransferArguments(TransferArguments), - Shutdown(fn(Vec) -> ()), + ParsingArguments(ParsingArguments), + Shutdown(), +} + +pub enum WorkDone { + Context(Context), + Function(Function), + Resources(Vec), +} + +impl WorkDone { + pub fn get_context(self) -> Context { + return match self { + WorkDone::Context(context) => context, + _ => panic!("WorkDone is not context when context was expected"), + }; + } + pub fn get_function(self) -> Function { + return match self { + WorkDone::Function(function) => function, + _ => panic!("WorkDone is not function when function was expected"), + }; + } } pub struct FunctionArguments { @@ -116,8 +138,15 @@ pub struct TransferArguments { pub recorder: Recorder, } +pub struct ParsingArguments { + pub driver: &'static dyn Driver, + pub path: String, + pub static_domain: &'static dyn MemoryDomain, + pub recorder: Recorder, +} + pub trait WorkQueue { - fn get_engine_args(&self) -> (EngineArguments, crate::promise::Debt); + fn get_engine_args(&self) -> (WorkToDo, crate::promise::Debt); } pub trait Driver: Send + Sync { @@ -135,6 +164,6 @@ pub trait Driver: Send + Sync { fn parse_function( &self, function_path: String, - static_domain: &Box, + static_domain: &'static dyn MemoryDomain, ) -> DandelionResult; } diff --git a/machine_interface/src/function_driver/compute_driver/cheri.rs b/machine_interface/src/function_driver/compute_driver/cheri.rs index db23550b..e61a7929 100644 --- a/machine_interface/src/function_driver/compute_driver/cheri.rs +++ b/machine_interface/src/function_driver/compute_driver/cheri.rs @@ -98,7 +98,7 @@ impl Driver for CheriDriver { fn parse_function( &self, function_path: String, - static_domain: &Box, + static_domain: &'static dyn MemoryDomain, ) -> DandelionResult { let function = load_u8_from_file(function_path)?; let elf = elf_parser::ParsedElf::new(&function)?; diff --git a/machine_interface/src/function_driver/compute_driver/cheri/test.rs b/machine_interface/src/function_driver/compute_driver/cheri/test.rs index c791e9cb..9c9f8734 100644 --- a/machine_interface/src/function_driver/compute_driver/cheri/test.rs +++ b/machine_interface/src/function_driver/compute_driver/cheri/test.rs @@ -10,15 +10,17 @@ fn test_loader_basic() { "{}/tests/data/test_elf_cheri_basic", env!("CARGO_MANIFEST_DIR") ); - let mut malloc_domain = MallocMemoryDomain::init(crate::memory_domain::MemoryResource::None) - .expect("Should be able to get malloc domain"); + let malloc_domain = Box::leak( + MallocMemoryDomain::init(crate::memory_domain::MemoryResource::None) + .expect("Should be able to get malloc domain"), + ); let driver = CheriDriver {}; let Function { requirements, context, config, } = driver - .parse_function(elf_path, &mut malloc_domain) + .parse_function(elf_path, malloc_domain) .expect("Parsing should work"); // check requirement list to be list of programm header info for after load // meaning addresses and sizes in virtual address space diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index d6c00a59..9fab40bd 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -2,8 +2,8 @@ mod compute_driver_tests { use crate::{ function_driver::{ - test_queue::TestQueue, ComputeResource, Driver, EngineArguments, FunctionArguments, - FunctionConfig, + test_queue::TestQueue, ComputeResource, Driver, FunctionArguments, FunctionConfig, + WorkToDo, }, memory_domain::{Context, ContextState, ContextTrait, MemoryDomain, MemoryResource}, DataItem, DataSet, Position, @@ -18,9 +18,9 @@ mod compute_driver_tests { fn loader_empty(dom_init: MemoryResource, driver: Box) { // load elf file let elf_path = String::new(); - let mut domain = Dom::init(dom_init).expect("Should be able to get domain"); + let domain = Box::leak(Dom::init(dom_init).expect("Should be able to get domain")); driver - .parse_function(elf_path, &mut domain) + .parse_function(elf_path, domain) .expect("Empty string should return error"); } @@ -52,15 +52,15 @@ mod compute_driver_tests { drv_init: Vec, ) -> (Context, FunctionConfig, Box) { let queue = Box::new(TestQueue::new()); - let mut domain = Dom::init(dom_init).expect("Should have initialized domain"); + let domain = Box::leak(Dom::init(dom_init).expect("Should have initialized domain")); let function = driver - .parse_function(filename.to_string(), &mut domain) + .parse_function(filename.to_string(), domain) .expect("Should be able to parse function"); driver .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function - .load(&mut domain, 0x802_0000) + .load(domain, 0x802_0000) .expect("Should be able to load function"); return (function_context, function.config, queue); } @@ -78,7 +78,7 @@ mod compute_driver_tests { timestamp_count: 1000, }))); let recorder = archive.get_recorder().unwrap(); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config: config, context: function_context, output_sets: Arc::new(Vec::new()), @@ -123,18 +123,19 @@ mod compute_driver_tests { recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config, context: function_context, output_sets: Arc::new(vec![String::from("")]), - recorder, + recorder: recorder.get_sub_recorder().unwrap(), })); - let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() + let result_context = tokio::runtime::Builder::new_current_thread() .build() .unwrap() .block_on(promise) - .expect("Engine should run ok with basic function"); - result_recorder + .expect("Engine should run ok with basic function") + .get_context(); + recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); // check that result is 4 @@ -214,19 +215,19 @@ mod compute_driver_tests { recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config, context: function_context, output_sets: Arc::new(vec![String::from("")]), - recorder, + recorder: recorder.get_sub_recorder().unwrap(), })); - let (result_context, mut result_recorder) = - tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function"); - result_recorder + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); assert_eq!(1, result_context.content.len()); @@ -311,18 +312,19 @@ mod compute_driver_tests { recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config, context: function_context, output_sets: Arc::new(vec![String::from("stdio")]), - recorder, + recorder: recorder.get_sub_recorder().unwrap(), })); - let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() + let result_context = tokio::runtime::Builder::new_current_thread() .build() .unwrap() .block_on(promise) - .expect("Engine should run ok with basic function"); - result_recorder + .expect("Engine should run ok with basic function") + .get_context(); + recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); // check the function exited with exit code 0 @@ -459,7 +461,7 @@ mod compute_driver_tests { recorder .record(RecordPoint::TransferEnd) .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config: config, context: function_context, output_sets: Arc::new(vec![ @@ -467,14 +469,15 @@ mod compute_driver_tests { "out".to_string(), "out_nested".to_string(), ]), - recorder, + recorder: recorder.get_sub_recorder().unwrap(), })); - let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() + let result_context = tokio::runtime::Builder::new_current_thread() .build() .unwrap() .block_on(promise) - .expect("Engine should run ok with basic function"); - result_recorder + .expect("Engine should run ok with basic function") + .get_context(); + recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); assert_eq!(3, result_context.content.len()); diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index 73656e81..2ecf2d31 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -245,7 +245,7 @@ impl Driver for MmuDriver { fn parse_function( &self, function_path: String, - static_domain: &Box, + static_domain: &'static dyn MemoryDomain, ) -> DandelionResult { let function = load_u8_from_file(function_path)?; let elf = elf_parser::ParsedElf::new(&function)?; diff --git a/machine_interface/src/function_driver/compute_driver/mmu/test.rs b/machine_interface/src/function_driver/compute_driver/mmu/test.rs index d6311c2a..13619451 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu/test.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu/test.rs @@ -12,14 +12,16 @@ fn test_loader_basic() { std::env::consts::ARCH ); let driver = MmuDriver {}; - let mut mmu_domain = MmuMemoryDomain::init(crate::memory_domain::MemoryResource::None) - .expect("Should be able to get mmu domain"); + let mmu_domain = Box::leak( + MmuMemoryDomain::init(crate::memory_domain::MemoryResource::None) + .expect("Should be able to get mmu domain"), + ); let Function { requirements, context, config, } = driver - .parse_function(elf_path, &mut mmu_domain) + .parse_function(elf_path, mmu_domain) .expect("Should correctly parse elf file"); // check requirement list #[cfg(target_arch = "x86_64")] diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index 2c98c3cc..727e0344 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -98,7 +98,7 @@ impl Driver for WasmDriver { fn parse_function( &self, function_path: String, - static_domain: &Box, + static_domain: &'static dyn MemoryDomain, ) -> DandelionResult { let lib = unsafe { Library::new(function_path).map_err(|e| { diff --git a/machine_interface/src/function_driver/load_utils.rs b/machine_interface/src/function_driver/load_utils.rs index eeb0df51..bd502ac4 100644 --- a/machine_interface/src/function_driver/load_utils.rs +++ b/machine_interface/src/function_driver/load_utils.rs @@ -20,7 +20,7 @@ pub fn load_u8_from_file(full_path: String) -> DandelionResult> { } pub fn load_static( - domain: &Box, + domain: &'static dyn MemoryDomain, static_context: &Context, requirement_list: &DataRequirementList, ctx_size: usize, diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index 363ada59..5ed20ab4 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -392,7 +392,7 @@ impl Driver for HyperDriver { fn parse_function( &self, function_path: String, - static_domain: &Box, + static_domain: &'static dyn crate::memory_domain::MemoryDomain, ) -> DandelionResult { if function_path.len() != 0 { return Err(DandelionError::CalledSystemFuncParser); diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 127757bc..9df3bf50 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -3,7 +3,7 @@ mod system_driver_tests { use crate::{ function_driver::{ system_driver::get_system_function_output_sets, test_queue::TestQueue, ComputeResource, - Driver, EngineArguments, FunctionArguments, FunctionConfig, SystemFunction, + Driver, FunctionArguments, FunctionConfig, SystemFunction, WorkToDo, }, memory_domain::{Context, ContextTrait, MemoryDomain, MemoryResource}, DataItem, DataSet, Position, @@ -55,6 +55,25 @@ mod system_driver_tests { return Ok(()); } + fn write_body(context: &mut Context, body: &[u8]) -> DandelionResult<()> { + let body_offset = context + .get_free_space_and_write_slice(body) + .expect("Should have space for body") as usize; + let body_set = DataSet { + ident: String::from("body"), + buffers: vec![DataItem { + ident: String::from(""), + data: Position { + offset: body_offset, + size: body.len(), + }, + key: 0, + }], + }; + context.content.push(Some(body_set)); + return Ok(()); + } + fn get_http( dom_init: MemoryResource, driver: Box, @@ -80,20 +99,21 @@ mod system_driver_tests { #[cfg(feature = "timestamp")] timestamp_count: 1000, }))); - let recorder = archive.get_recorder().unwrap(); + let mut recorder = archive.get_recorder().unwrap(); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config, context, output_sets, - recorder, + recorder: recorder.get_sub_recorder().unwrap(), })); - let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() + let result_context = tokio::runtime::Builder::new_current_thread() .build() .unwrap() .block_on(promise) - .expect("Engine should return without error"); - result_recorder + .expect("Engine should return without error") + .get_context(); + recorder .record(RecordPoint::FutureReturn) .expect("Should have advanced record"); @@ -144,32 +164,27 @@ mod system_driver_tests { write_headers(&mut context, headers).expect("Should be able to write headers"); let request_body = "Hello World\n".as_bytes(); - let body_size = request_body.len(); - let body_offset = context - .get_free_space(body_size, 8) - .expect("Should have space for body"); - context - .write(body_offset, request_body) - .expect("Should be able to write body"); + write_body(&mut context, request_body).expect("Should be able to write body"); let archive = Box::leak(Box::new(Archive::init(ArchiveInit { #[cfg(feature = "timestamp")] timestamp_count: 1000, }))); - let recorder = archive.get_recorder().unwrap(); + let mut recorder = archive.get_recorder().unwrap(); let output_sets = Arc::new(get_system_function_output_sets(SystemFunction::HTTP)); - let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { config, context, output_sets, - recorder, + recorder: recorder.get_sub_recorder().unwrap(), })); - let (result_context, mut result_recorder) = tokio::runtime::Builder::new_current_thread() + let result_context = tokio::runtime::Builder::new_current_thread() .build() .unwrap() .block_on(promise) - .expect("Engine should not fail"); - result_recorder + .expect("Engine should not fail") + .get_context(); + recorder .record(RecordPoint::FutureReturn) .expect("Should have advanced record"); diff --git a/machine_interface/src/function_driver/test_queue.rs b/machine_interface/src/function_driver/test_queue.rs index 08368acf..79c80de5 100644 --- a/machine_interface/src/function_driver/test_queue.rs +++ b/machine_interface/src/function_driver/test_queue.rs @@ -1,11 +1,11 @@ use crate::{ - function_driver::{EngineArguments, WorkQueue}, + function_driver::{WorkQueue, WorkToDo}, promise::{Debt, Promise}, }; use std::sync::{Arc, Condvar, Mutex}; struct TestQueueInternal { - args: Option<(EngineArguments, Debt)>, + args: Option<(WorkToDo, Debt)>, } #[derive(Clone)] @@ -19,7 +19,7 @@ impl TestQueue { internal: Arc::new((Mutex::new(TestQueueInternal { args: None }), Condvar::new())), }; } - pub fn enqueu(&self, args: EngineArguments) -> Promise { + pub fn enqueu(&self, args: WorkToDo) -> Promise { let (lock, arg_var) = self.internal.as_ref(); let mut lock_guard = lock.lock().expect("Test queue failed to lock on enqueuing"); if lock_guard.args.is_some() { @@ -37,7 +37,7 @@ impl TestQueue { } impl WorkQueue for TestQueue { - fn get_engine_args(&self) -> (EngineArguments, Debt) { + fn get_engine_args(&self) -> (WorkToDo, Debt) { let (lock, arg_var) = self.internal.as_ref(); let mut lock_guard = lock .lock() diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index cc1e0b40..1dcbe42c 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -1,7 +1,7 @@ use crate::{ function_driver::{ - ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, TransferArguments, - WorkQueue, + ComputeResource, FunctionArguments, FunctionConfig, ParsingArguments, TransferArguments, + WorkDone, WorkQueue, WorkToDo, }, memory_domain::{self, Context}, }; @@ -32,7 +32,7 @@ fn run_thread(core_id: u8, queue: Box) { // TODO catch unwind so we can always return an error or shut down gracefully let (args, debt) = queue.get_engine_args(); match args { - EngineArguments::FunctionArguments(func_args) => { + WorkToDo::FunctionArguments(func_args) => { let FunctionArguments { config, context, @@ -50,10 +50,10 @@ fn run_thread(core_id: u8, queue: Box) { continue; } } - let results = Box::new(result.and_then(|context| Ok((context, recorder)))); + let results = Box::new(result.and_then(|context| Ok(WorkDone::Context(context)))); debt.fulfill(results); } - EngineArguments::TransferArguments(transfer_args) => { + WorkToDo::TransferArguments(transfer_args) => { let TransferArguments { source, mut destination, @@ -89,12 +89,29 @@ fn run_thread(core_id: u8, queue: Box) { continue; } } - let transfer_return = transfer_result.and(Ok((destination, recorder))); + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); debt.fulfill(Box::new(transfer_return)); continue; } - EngineArguments::Shutdown(resource_returner) => { - resource_returner(vec![ComputeResource::CPU(core_id)]); + WorkToDo::ParsingArguments(ParsingArguments { + driver, + path, + static_domain, + mut recorder, + }) => { + recorder.record(RecordPoint::ParsingStart).unwrap(); + let function_result = driver.parse_function(path, static_domain); + recorder.record(RecordPoint::ParsingEnd).unwrap(); + match function_result { + Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), + Err(err) => debt.fulfill(Box::new(Err(err))), + } + continue; + } + WorkToDo::Shutdown() => { + debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ + ComputeResource::CPU(core_id), + ])))); return; } } diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index 7bb0bc07..6a9d6d81 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -55,54 +55,67 @@ pub fn get_system_functions(engine_type: EngineType) -> Vec<(SystemFunction, usi }; } -pub fn get_available_domains() -> BTreeMap> { +pub fn get_available_domains() -> BTreeMap { return BTreeMap::from([ ( DomainType::Mmap, - crate::memory_domain::mmap::MmapMemoryDomain::init(MemoryResource::None).unwrap(), + Box::leak( + crate::memory_domain::mmap::MmapMemoryDomain::init(MemoryResource::None).unwrap(), + ) as &'static dyn MemoryDomain, ), #[cfg(feature = "cheri")] ( DomainType::Cheri, - crate::memory_domain::cheri::CheriMemoryDomain::init(MemoryResource::None).unwrap(), + Box::leak( + crate::memory_domain::cheri::CheriMemoryDomain::init(MemoryResource::None).unwrap(), + ) as &'static dyn MemoryDomain, ), #[cfg(feature = "wasm")] ( DomainType::RWasm, - crate::memory_domain::wasm::WasmMemoryDomain::init(MemoryResource::None).unwrap(), + Box::leak( + crate::memory_domain::wasm::WasmMemoryDomain::init(MemoryResource::None).unwrap(), + ) as &'static dyn MemoryDomain, ), #[cfg(feature = "mmu")] ( DomainType::Process, - crate::memory_domain::mmu::MmuMemoryDomain::init(MemoryResource::None).unwrap(), + Box::leak( + crate::memory_domain::mmu::MmuMemoryDomain::init(MemoryResource::None).unwrap(), + ) as &'static dyn MemoryDomain, ), ]); } -pub fn get_available_drivers() -> BTreeMap> { - return BTreeMap::>::from([ +pub fn get_available_drivers() -> BTreeMap { + return BTreeMap::::from([ #[cfg(feature = "hyper_io")] ( EngineType::Hyper, - Box::new(crate::function_driver::system_driver::hyper::HyperDriver {}) - as Box, + Box::leak(Box::new( + crate::function_driver::system_driver::hyper::HyperDriver {}, + )) as &'static dyn Driver, ), #[cfg(feature = "cheri")] ( EngineType::Cheri, - Box::new(crate::function_driver::compute_driver::cheri::CheriDriver {}) - as Box, + Box::leak(Box::new( + crate::function_driver::compute_driver::cheri::CheriDriver {}, + )) as &'static dyn Driver, ), #[cfg(feature = "wasm")] ( EngineType::RWasm, - Box::new(crate::function_driver::compute_driver::wasm::WasmDriver {}) - as Box, + Box::leak(Box::new( + crate::function_driver::compute_driver::wasm::WasmDriver {}, + )) as &'static dyn Driver, ), #[cfg(feature = "mmu")] ( EngineType::Process, - Box::new(crate::function_driver::compute_driver::mmu::MmuDriver {}) as Box, + Box::leak(Box::new( + crate::function_driver::compute_driver::mmu::MmuDriver {}, + )) as &'static dyn Driver, ), ]); } diff --git a/machine_interface/src/promise.rs b/machine_interface/src/promise.rs index b41ba775..410feda5 100644 --- a/machine_interface/src/promise.rs +++ b/machine_interface/src/promise.rs @@ -1,4 +1,4 @@ -use crate::memory_domain::Context; +use crate::function_driver::WorkDone; use core::{ pin::Pin, @@ -6,7 +6,7 @@ use core::{ sync::atomic::{AtomicPtr, AtomicU8, Ordering}, task::Poll, }; -use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; +use dandelion_commons::{DandelionError, DandelionResult}; pub struct Promise { data: *const PromiseData, @@ -39,7 +39,7 @@ impl Promise { } impl futures::future::Future for Promise { - type Output = Box>; + type Output = Box>; // as per documentation calling after it has resolved once is undefined // handle this by returning pending again fn poll(self: Pin<&mut Self>, cx: &mut core::task::Context<'_>) -> Poll { @@ -73,7 +73,7 @@ impl Debt { return data.references.load(Ordering::Acquire) > 1; } - pub fn fulfill(self, results: Box>) { + pub fn fulfill(self, results: Box>) { let data = unsafe { &*self.data }; // make sure we are not aborted by this promise anymore data.abort_handle.store(ptr::null_mut(), Ordering::Release); @@ -132,7 +132,7 @@ struct PromiseData { ///non null that means the function has not been aborted or terminated on it's own abort_handle: AtomicPtr ()>, /// Points to raw box of the results the engine has put in there - results: AtomicPtr>, + results: AtomicPtr>, waker: AtomicPtr, references: AtomicU8, } diff --git a/server/src/main.rs b/server/src/main.rs index 803035ed..e9955783 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -519,7 +519,7 @@ fn main() -> () { .map(|code_id| ComputeResource::CPU(code_id as u8)) .collect(), ); - #[cfg(feature = "hyper_io")] + // #[cfg(feature = "hyper_io")] // pool_map.insert( // EngineType::Hyper, // (0..num_dispatcher_cores) From 012d95cf36e472ecf3e30c7bf1a1178ed21bbf5b Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 10 Apr 2024 16:59:44 +0200 Subject: [PATCH 065/176] Change to send matrix in response, switch to new response layout --- server/Cargo.toml | 1 + server/src/lib.rs | 99 ++++++++++++++++++++++++++++-------- server/src/main.rs | 12 ++--- server/tests/server_tests.rs | 23 +++++---- 4 files changed, 95 insertions(+), 40 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index c76f04f7..a2b92c2e 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -22,6 +22,7 @@ env_logger = "0.10.1" serde = "1.0.197" serde_json = "1.0.115" bson = "2.9.0" +serde_bytes = "0.11" signal-hook = "0.3.17" signal-hook-tokio = {version = "0.3.1", features = [ "futures-v0_3"]} diff --git a/server/src/lib.rs b/server/src/lib.rs index f0e256c4..717cf945 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -1,19 +1,25 @@ pub mod config; +use dispatcher::composition::CompositionSet; use machine_interface::{ - memory_domain::{read_only::ReadOnlyContext, Context}, + memory_domain::{read_only::ReadOnlyContext, Context, ContextTrait}, DataItem, DataSet, Position, }; use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; -#[derive(Deserialize, Serialize)] +#[derive(Serialize, Deserialize)] #[allow(dead_code)] pub struct DandelionRequest { pub name: String, pub sets: Vec, - pub data: Vec, } +#[derive(Serialize, Deserialize)] +#[allow(dead_code)] +pub struct DandelionResponse { + pub sets: Vec, +} #[derive(Deserialize, Serialize)] #[allow(dead_code)] pub struct InputSet { @@ -26,27 +32,76 @@ pub struct InputSet { pub struct InputItem { pub identifier: String, pub key: u32, - pub data_start: u64, - pub data_size: u64, + #[serde(with = "serde_bytes")] + pub data: Vec, } pub fn parse_request(request: DandelionRequest) -> (String, Context) { - let DandelionRequest { name, sets, data } = request; - let mut context = ReadOnlyContext::new(data.into()).unwrap(); - let map_item = |request_item: InputItem| DataItem { - ident: request_item.identifier, - key: request_item.key, - data: Position { - offset: usize::try_from(request_item.data_start).unwrap(), - size: usize::try_from(request_item.data_size).unwrap(), - }, - }; - let map_set = |request_set: InputSet| { - Some(DataSet { - ident: request_set.identifier, - buffers: request_set.items.into_iter().map(map_item).collect(), - }) - }; - context.content = sets.into_iter().map(map_set).collect(); + let DandelionRequest { name, sets } = request; + let mut context_buffer = Vec::new(); + let mut buffer_offset = 0usize; + let mut context_sets = Vec::new(); + for InputSet { identifier, items } in sets { + let mut set_items = Vec::new(); + for InputItem { + identifier, + key, + data, + } in items + { + set_items.push(DataItem { + ident: identifier, + key, + data: Position { + offset: buffer_offset, + size: buffer_offset + data.len(), + }, + }); + buffer_offset += data.len(); + context_buffer.extend_from_slice(&data); + } + context_sets.push(Some(DataSet { + ident: identifier, + buffers: set_items, + })); + } + let mut context = ReadOnlyContext::new(context_buffer.into()).unwrap(); + context.content = context_sets; return (name, context); } + +pub fn create_response(response_sets: BTreeMap) -> Vec { + let mut response_data = Vec::new(); + for (_, composition_set) in response_sets { + let mut composition_set_iter = composition_set.into_iter().peekable(); + let first_elem = composition_set_iter.peek(); + let set_name = if let Some(elem) = first_elem { + elem.2.content[elem.0].as_ref().unwrap().ident.clone() + } else { + continue; + }; + let mut response_items = Vec::new(); + for (set_index, item_index, context) in composition_set_iter { + let item = &context.content[set_index].as_ref().unwrap().buffers[item_index]; + let mut read_buffer = Vec::::with_capacity(item.data.size); + read_buffer.resize(item.data.size, 0); + context + .context + .read(item.data.offset, &mut read_buffer) + .unwrap(); + response_items.push(InputItem { + identifier: item.ident.clone(), + key: item.key, + data: read_buffer, + }); + } + response_data.push(InputSet { + identifier: set_name, + items: response_items, + }); + } + return bson::to_vec(&DandelionResponse { + sets: response_data, + }) + .unwrap(); +} diff --git a/server/src/main.rs b/server/src/main.rs index e9955783..3a1a424c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -139,7 +139,7 @@ async fn run_mat_func( is_cold: bool, request: DandelionRequest, mut recorder: Recorder, -) -> i64 { +) -> Vec { let (name, input_context) = dandelion_server::parse_request(request); let inputs = vec![( @@ -153,11 +153,9 @@ async fn run_mat_func( let result = dispatcher .queue_function_by_name(name, inputs, outputs, is_cold, recorder) .await - .expect("Should get result from function") - .remove(&0) - .expect("Should have composition set 0"); + .expect("Should get result from function"); - return get_checksum(result); + return dandelion_server::create_response(result); } // Given a result context, return the last element of the resulting matrix @@ -206,9 +204,7 @@ async fn serve_request( request, recorder.get_sub_recorder().unwrap(), ) - .await - .to_be_bytes() - .to_vec(); + .await; let response = Ok::<_, Infallible>(Response::new(response_vec.into())); diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 805b669c..cf5c99e3 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -5,8 +5,8 @@ mod server_tests { use assert_cmd::prelude::*; - use byteorder::{BigEndian, ReadBytesExt}; - use dandelion_server::{DandelionRequest, InputItem, InputSet}; + use byteorder::{LittleEndian, ReadBytesExt}; + use dandelion_server::{DandelionRequest, DandelionResponse, InputItem, InputSet}; use serde::Serialize; use std::{ io::{BufRead, BufReader, Cursor, Read}, @@ -76,7 +76,6 @@ mod server_tests { let mut data = Vec::new(); data.extend_from_slice(&i64::to_le_bytes(1)); data.extend_from_slice(&i64::to_le_bytes(1)); - let data_size = data.len() as u64; let mat_request = DandelionRequest { name: function_name, sets: vec![InputSet { @@ -84,11 +83,9 @@ mod server_tests { items: vec![InputItem { identifier: String::from(""), key: 0, - data_start: 0, - data_size, + data: data, }], }], - data, }; let client = reqwest::blocking::Client::new(); @@ -100,10 +97,16 @@ mod server_tests { assert!(resp.status().is_success()); let body = resp.bytes().unwrap(); - assert_eq!(body.len(), 8); - let mut reader = Cursor::new(body); - let checksum = reader.read_u64::().unwrap(); - assert_eq!(checksum, 1); + let response: DandelionResponse = bson::from_slice(&body).unwrap(); + assert_eq!(1, response.sets.len()); + assert_eq!(1, response.sets[0].items.len()); + let response_data = &response.sets[0].items[0].data; + assert_eq!(response_data.len(), 16); + let mut reader = Cursor::new(response_data); + let mat_size = reader.read_u64::().unwrap(); + assert_eq!(1, mat_size); + let checksum = reader.read_u64::().unwrap(); + assert_eq!(1, checksum); } #[test] From 654ca30171438396407f2946e2bb789a6387308c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:32:51 +0200 Subject: [PATCH 066/176] process pool --- machine_interface/Cargo.toml | 8 +- machine_interface/src/bin/gpu_worker.rs | 56 +++ machine_interface/src/function_driver.rs | 19 +- .../src/function_driver/compute_driver/gpu.rs | 39 +- .../compute_driver/gpu/buffer_pool.rs | 2 +- .../compute_driver/gpu/config_parsing.rs | 64 +-- .../compute_driver/gpu/gpu_utils.rs | 366 +++++++++++++++++- .../src/function_driver/compute_driver/mmu.rs | 2 +- .../function_driver/compute_driver/wasm.rs | 2 +- machine_interface/src/interface.rs | 12 +- machine_interface/src/lib.rs | 4 +- machine_interface/src/memory_domain.rs | 3 +- machine_interface/src/util/mmapmem.rs | 64 ++- server/src/main.rs | 1 + 14 files changed, 568 insertions(+), 74 deletions(-) create mode 100644 machine_interface/src/bin/gpu_worker.rs diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 6cbb6abb..92ff8ec8 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -25,11 +25,11 @@ dandelion_commons = { path = "../dandelion_commons" } libc = "0.2" nix = "0.26" rand = "0.8" -serde = { version = "1.0", features = ["derive"] } +serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" core_affinity = { version = "0.8"} futures = { version = "0.3.28" } -tokio = { version = "1", features = ["full"] } +tokio = { version = ">=1.3.7, <2.0.0", features = ["full"] } # need at least 1.3.7 for Semaphore.forget_tickets() hyper = { version = "0.14", optional = true, features = ["http1", "http2", "client", "runtime"]} libloading = { version = "0.8.1" } log = "0.4.20" @@ -44,6 +44,10 @@ bench = false name = "mmu_worker" required-features = ["mmu"] +[[bin]] +name = "gpu_worker" +required-features = ["gpu"] + [[bench]] name = "cheri_benchmark" harness = false diff --git a/machine_interface/src/bin/gpu_worker.rs b/machine_interface/src/bin/gpu_worker.rs new file mode 100644 index 00000000..20cfe2a4 --- /dev/null +++ b/machine_interface/src/bin/gpu_worker.rs @@ -0,0 +1,56 @@ +use std::{io, thread::sleep, time::Duration}; + +use core_affinity::CoreId; +use dandelion_commons::DandelionResult; +use machine_interface::{ + function_driver::{ + compute_driver::gpu::{ + gpu_utils::{SendContext, SendFunctionArgs}, + GpuLoop, + }, + thread_utils::EngineLoop, + FunctionConfig, + }, + memory_domain::{Context, ContextTrait}, +}; + +fn main() { + // parse args + let args: Vec = std::env::args().collect(); + assert_eq!(args.len(), 3); + let core_id: u8 = args[1].parse().expect("Invalid core ID"); + let gpu_id: u8 = args[2].parse().expect("Invalid GPU ID"); + + // set cpu affinity + assert!(core_affinity::set_for_current(CoreId { + id: core_id as usize + })); + + // setup worker struct TODO: add GPU ID + let mut worker = GpuLoop::init(core_id).expect("Should be able to create worker"); + + // unwrap okay, as all lines are valid Strings + for inp in io::stdin().lines().map(|l| l.unwrap()) { + match execute(&mut worker, inp) { + Ok(()) => { + println!("__OK__"); + } + Err(_) => { + println!("__ERROR__"); + } + } + } +} + +fn execute(worker: &mut GpuLoop, inp: String) -> DandelionResult<()> { + let SendFunctionArgs { + config, + context, + output_sets, + } = serde_json::from_str(&inp).expect("Parsing function args failed"); + + let config = FunctionConfig::GpuConfig(config); + let context: Context = context.into(); + + worker.run(config, context, output_sets).map(|_| ()) +} diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 8881c1ce..d94881a9 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -6,13 +6,14 @@ use crate::{ DataRequirementList, Position, }; extern crate alloc; -use crate::function_driver::compute_driver::gpu::hip::ModuleT; use alloc::sync::Arc; use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; #[cfg(feature = "wasm")] use libloading::Library; +use serde::{Deserialize, Serialize}; +#[cfg(feature = "gpu")] use self::compute_driver::gpu::{config_parsing::ExecutionBlueprint, hip::FunctionT}; pub mod compute_driver; @@ -55,11 +56,12 @@ pub struct WasmConfig { system_data_struct_offset: usize, } -#[derive(Clone)] +#[derive(Clone, Serialize, Deserialize)] pub struct GpuConfig { pub system_data_struct_offset: usize, - pub module: Arc, - pub kernels: Arc>, + pub module_path: Arc, + pub kernels: Arc>, + #[cfg(feature = "gpu")] pub blueprint: Arc, } @@ -97,10 +99,13 @@ impl Function { Ok(context) } // no need to occupy space or anything like that as long as context is only inputs/outputs - FunctionConfig::GpuConfig(_) => { + FunctionConfig::GpuConfig(cfg) => { let mut ctxt = domain.acquire_context(ctx_size)?; // Make sure sysdata struct isn't overwritten, 0 = system_data_offset - ctxt.occupy_space(0, std::mem::size_of::>())?; + ctxt.occupy_space( + cfg.system_data_struct_offset, + std::mem::size_of::>(), + )?; Ok(ctxt) } @@ -149,7 +154,7 @@ pub trait Driver: Send + Sync { &self, resource: ComputeResource, // TODO check out why this can't be impl instead of Box, + queue: Box, ) -> DandelionResult<()>; // parses an executable, diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 70c08ce5..5f01518c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -5,6 +5,7 @@ use crate::{ }, interface::{read_output_structs, setup_input_structs, write_gpu_outputs}, memory_domain::{Context, ContextTrait, ContextType}, + promise::Debt, DataRequirementList, DataSet, }; use core_affinity::CoreId; @@ -12,21 +13,22 @@ use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; use std::{ collections::HashMap, + process::{Child, ChildStdin, ChildStdout, Command, Stdio}, ptr::null, sync::{Arc, Mutex}, - thread, + thread::{self, spawn}, }; use self::{ buffer_pool::BufferPool, - config_parsing::{Action, Argument, BufferSizing}, - gpu_utils::{copy_data_to_device, get_data_length, get_grid_size}, + config_parsing::{Action, Argument, BufferSizing, RuntimeGpuConfig}, + gpu_utils::{copy_data_to_device, get_data_length, get_grid_size, start_gpu_process_pool}, hip::DEFAULT_STREAM, }; pub(crate) mod buffer_pool; pub(crate) mod config_parsing; -mod gpu_utils; +pub mod gpu_utils; pub(crate) mod hip; pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { @@ -87,10 +89,10 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { Ok(()) } -fn gpu_run( +pub fn gpu_run( cpu_slot: usize, gpu_id: u8, - config: GpuConfig, + config: RuntimeGpuConfig, buffer_pool: Arc>, mut context: Context, output_names: Arc>, @@ -114,7 +116,9 @@ fn gpu_run( for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; let idx = buffer_pool.alloc_buffer(size)?; - copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; + unsafe { + copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; + } buffers.insert(name.clone(), (idx, size)); } for (name, size) in &config.blueprint.buffers { @@ -215,23 +219,20 @@ impl EngineLoop for GpuLoop { return Err(DandelionError::ConfigMissmatch); }; - setup_input_structs::( - &mut context, - config.system_data_struct_offset, - &output_sets, - )?; + let sysdata_offset = config.system_data_struct_offset; + setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; - // in thread for now, in process pool eventually + // in thread in case the kernel crashes let cpu_slot_clone = self.cpu_slot as usize; let gpu_id_clone = self.gpu_id; - let config_clone = config.clone(); + let runtime_config: RuntimeGpuConfig = config.try_into()?; let outputs = output_sets.clone(); let buffer_pool = self.buffers.clone(); let handle = thread::spawn(move || { gpu_run( cpu_slot_clone, gpu_id_clone, - config_clone, + runtime_config, buffer_pool, context, outputs, @@ -245,7 +246,7 @@ impl EngineLoop for GpuLoop { let write_buf = vec![12345i64]; context.write(0, &write_buf)?; - read_output_structs::(&mut context, config.system_data_struct_offset)?; + read_output_structs::(&mut context, sysdata_offset)?; Ok(context) } @@ -257,7 +258,7 @@ impl Driver for GpuDriver { fn start_engine( &self, resource: ComputeResource, - queue: Box, + queue: Box, ) -> dandelion_commons::DandelionResult<()> { // extract resources let (cpu_slot, gpu_id) = match resource { @@ -277,7 +278,9 @@ impl Driver for GpuDriver { } // TODO: check gpu is available - start_thread::(cpu_slot, queue); + // To switch between single executor and process pool + // start_thread::(cpu_slot, queue); + spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); Ok(()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 7db8bac0..4f2c332b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -6,7 +6,7 @@ use super::hip::{self, DeviceAllocation, DevicePointer}; const Gi: usize = 1 << 30; // REGION_SIZE * #engines_on_device should never exceed total VRAM capacity (64GiB for MI210) -const REGION_SIZE: usize = 16 * Gi; +const REGION_SIZE: usize = 15 * Gi; #[derive(Debug)] struct Buffer { diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index f3714ed2..8672760a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize}; use crate::function_driver::GpuConfig; -use super::hip; +use super::hip::{self, FunctionT, ModuleT}; const SYSDATA_OFFSET: usize = 0usize; @@ -100,18 +100,12 @@ pub struct ExecutionBlueprint { } pub fn dummy_config() -> DandelionResult { - let module = - hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco")?; - let kernel_set = hip::module_get_function(&module, "set_mem")?; - let kernel_check = hip::module_get_function(&module, "check_mem")?; - Ok(GpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module: Arc::new(module), - kernels: Arc::new(HashMap::from([ - ("set_mem".into(), kernel_set), - ("check_mem".into(), kernel_check), - ])), + module_path: Arc::new( + "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), + ), + kernels: Arc::new(vec!["set_mem".into(), "check_mem".into()]), blueprint: Arc::new(ExecutionBlueprint { inputs: vec![], buffers: HashMap::from([("A".into(), BufferSizing::Absolute(1024))]), @@ -133,14 +127,12 @@ pub fn dummy_config() -> DandelionResult { } pub fn dummy_config2() -> DandelionResult { - let module = - hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco")?; - let kernel = hip::module_get_function(&module, "check_then_write")?; - Ok(GpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module: Arc::new(module), - kernels: Arc::new(HashMap::from([("check_then_write".into(), kernel)])), + module_path: Arc::new( + "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), + ), + kernels: Arc::new(vec!["check_then_write".into()]), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], buffers: HashMap::new(), @@ -160,14 +152,13 @@ pub fn matmul_dummy(parallel: bool) -> DandelionResult { } else { "matmul_loop" }; - let module = - hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco")?; - let kernel = hip::module_get_function(&module, fn_name)?; Ok(GpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module: Arc::new(module), - kernels: Arc::new(HashMap::from([(fn_name.into(), kernel)])), + module_path: Arc::new( + "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco".into(), + ), + kernels: Arc::new(vec![fn_name.into()]), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], buffers: HashMap::from([("B".into(), BufferSizing::Absolute(80))]), @@ -196,9 +187,28 @@ struct GpuConfigIR { blueprint: ExecutionBlueprint, } -impl TryFrom for GpuConfig { +impl From for GpuConfig { + fn from(value: GpuConfigIR) -> Self { + Self { + system_data_struct_offset: SYSDATA_OFFSET, + module_path: Arc::new(value.module_path), + kernels: Arc::new(value.kernels), + blueprint: Arc::new(value.blueprint), + } + } +} + +#[derive(Clone)] +pub struct RuntimeGpuConfig { + pub system_data_struct_offset: usize, + pub module: Arc, + pub kernels: Arc>, + pub blueprint: Arc, +} + +impl TryFrom for RuntimeGpuConfig { type Error = DandelionError; - fn try_from(value: GpuConfigIR) -> Result { + fn try_from(value: GpuConfig) -> Result { let module = hip::module_load(&value.module_path)?; let kernels = value .kernels @@ -208,10 +218,10 @@ impl TryFrom for GpuConfig { }) .collect::, _>>()?; // this is kinda ugly but also pretty cool Ok(Self { - module: Arc::new(module), system_data_struct_offset: SYSDATA_OFFSET, + module: Arc::new(module), kernels: Arc::new(kernels), - blueprint: Arc::new(value.blueprint), + blueprint: value.blueprint, }) } } @@ -221,7 +231,7 @@ pub fn parse_config(path: &str) -> DandelionResult { let reader = BufReader::new(file); let ir: GpuConfigIR = serde_json::from_reader(reader).map_err(|_| DandelionError::ConfigMissmatch)?; - ir.try_into() + Ok(ir.into()) } // For me so I could see how the file would look. Keeping it for now until format is finalised diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 34a1b167..247b9604 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -1,8 +1,32 @@ -// TODO remove unneeded imports; just took everything from wasm.rs -use crate::memory_domain::Context; -use dandelion_commons::{DandelionError, DandelionResult}; +use crate::{ + function_driver::{ + ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, GpuConfig, + TransferArguments, WorkQueue, + }, + interface::read_output_structs, + memory_domain::{ + self, + mmu::{MmuContext, MMAP_BASE_ADDR}, + Context, ContextState, ContextType, + }, + promise::Debt, + util::mmapmem::MmapMem, + DataSet, Position, +}; +use dandelion_commons::{ + records::{RecordPoint, Recorder}, + DandelionError, DandelionResult, +}; use libc::c_void; -use std::collections::HashMap; +use nix::sys::mman::ProtFlags; +use serde::{Deserialize, Serialize}; +use std::{collections::HashMap, process::Stdio, sync::Arc}; +use tokio::{ + io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, + process::{Child, ChildStdin, ChildStdout, Command}, + sync::{Mutex, Semaphore}, + task, +}; use self::super::{config_parsing::GridSizing, hip}; @@ -28,7 +52,7 @@ pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult Ok(length) } -pub fn copy_data_to_device( +pub unsafe fn copy_data_to_device( ident: &str, context: &Context, base: *mut u8, @@ -80,3 +104,335 @@ pub fn get_grid_size( } } } + +struct Worker { + _process: Child, + pub stdin: Mutex, + pub stdout: Mutex>, + pub available: Semaphore, + pub debt: Mutex>, +} + +impl Worker { + fn new(core_id: u8, gpu_id: u8) -> Self { + // this trick gives the desired path of mmu_worker for packages within the workspace + let path = std::env::var("PROCESS_WORKER_PATH").unwrap_or(format!( + "{}/../target/{}-unknown-linux-gnu/{}/gpu_worker", + env!("CARGO_MANIFEST_DIR"), + std::env::consts::ARCH, + if cfg!(debug_assertions) { + "debug" + } else { + "release" + }, + )); + + let mut child = Command::new(path) + .arg(core_id.to_string()) + .arg(gpu_id.to_string()) + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::inherit()) + .kill_on_drop(true) + .spawn() + .expect("Spawning GPU worker failed"); + + // Unwrapping okay, since child is spawned with piped stdin/stdout + let stdin = Mutex::new(child.stdin.take().unwrap()); + let stdout = Mutex::new(BufReader::new(child.stdout.take().unwrap())); + + Self { + _process: child, + stdin, + stdout, + // TODO write explanation since this is not trivial + available: Semaphore::new(1), + debt: Mutex::new(None), + } + } +} + +async fn process_output(worker: Arc) { + let mut reader = worker.stdout.lock().await; + let mut line = String::new(); + + while reader.read_line(&mut line).await.unwrap() != 0 { + let mut handle = worker.debt.lock().await; + if let Some((debt, mut recorder, mut context)) = handle.take() { + if line.trim() != "__ERROR__" && line.trim() != "__OK__" { + // The line is some other output from the GPU, log it + eprintln!("GPU output: {}", line); + *handle = Some((debt, recorder, context)); + continue; + } + if let Err(e) = recorder.record(RecordPoint::EngineEnd) { + debt.fulfill(Box::new(Err(e))); + } else if line.trim() == "__ERROR__" { + debt.fulfill(Box::new(Err(DandelionError::EngineError))); + } else { + read_output_structs::(&mut context, 0).unwrap(); + let results = Box::new(Ok((context, recorder))); + debt.fulfill(results); + } + } else { + panic!("Got output from GPUWorker but had no debt to fulfill"); + } + + worker.available.add_permits(1); + line.clear(); + } +} + +// slightly modified Context that can be exchanged between processes +#[derive(Serialize, Deserialize, Debug)] +pub struct SendContext { + pub context_filename: String, + pub content: Vec>, + pub size: usize, + pub state: ContextState, + pub occupation: Vec, +} + +impl From for Context { + fn from(value: SendContext) -> Self { + Self { + context: ContextType::Mmu(Box::new(MmuContext { + storage: MmapMem::alt_open( + &value.context_filename, + ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, + ) + // TODO: actually handle error + .unwrap(), + })), + content: value.content, + size: value.size, + state: value.state, + occupation: value.occupation, + } + } +} + +impl TryFrom<&Context> for SendContext { + type Error = DandelionError; + fn try_from(value: &Context) -> DandelionResult { + let ContextType::Mmu(ref ctxt) = value.context else { + return Err(DandelionError::ConfigMissmatch); + }; + + // TODO: this is kinda inefficient + Ok(SendContext { + // unwrap okay, as Mmu memory is always created as shared so a filename exists + context_filename: ctxt.storage.filename().unwrap().to_string(), + content: value.content.clone(), + size: value.size, + state: value.state.clone(), + occupation: value.occupation.clone(), + }) + } +} + +#[derive(Serialize, Deserialize)] +pub struct SendFunctionArgs { + pub config: GpuConfig, + pub context: SendContext, + pub output_sets: Arc>, +} + +async fn process_inputs( + core_id: u8, + gpu_id: u8, + queue: Box, + worker1: Arc, + worker2: Arc, + worker3: Arc, + worker4: Arc, +) { + let queue = Arc::new(queue); + loop { + // A bit clumsy but necessary to use spawn_blocking + let queue = queue.clone(); + let (args, debt) = task::spawn_blocking(move || queue.get_engine_args()) + .await + .expect("spawn_blocking thread crashed"); + + match args { + EngineArguments::FunctionArguments(func_args) => { + let FunctionArguments { + config, + context, + output_sets, + mut recorder, + } = func_args; + + // transform relevant data into serialisable counterparts + let FunctionConfig::GpuConfig(config) = config else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + continue; + }; + let Ok(send_context) = (&context).try_into() else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + continue; + }; + + let mut task = serde_json::to_string(&SendFunctionArgs { + config, + context: send_context, + output_sets, + }) + .unwrap(); + + // Very important to add this newline, as the worker reads line by line + task += "\n"; + + // Unfortunate code duplication because of how select works + tokio::select! { + Ok(permit) = worker1.available.acquire() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + continue; + } + + // Give debt and recorder to worker + *worker1.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + + // unfortunate way to bring ticket count to 0; have to drop first else the forget_permits does nothing + drop(permit); + worker1.available.forget_permits(1); + }, + Ok(permit) = worker2.available.acquire() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + continue; + } + + // Give debt and recorder to worker + *worker2.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + + drop(permit); + worker2.available.forget_permits(1); + }, + Ok(permit) = worker3.available.acquire() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + continue; + } + + // Give debt and recorder to worker + *worker3.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + + drop(permit); + worker3.available.forget_permits(1); + }, + Ok(permit) = worker4.available.acquire() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + continue; + } + + // Give debt and recorder to worker + *worker4.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + + drop(permit); + worker4.available.forget_permits(1); + } + } + } + EngineArguments::TransferArguments(transfer_args) => { + let TransferArguments { + source, + mut destination, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name, + source_set_index, + source_item_index, + recorder, + } = transfer_args; + // wait for all pending functions to complete + if let Ok((_, _, _, _)) = tokio::try_join!( + worker1.available.acquire(), + worker2.available.acquire(), + worker3.available.acquire(), + worker4.available.acquire(), + ) { + // execute transfer + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ) + .and(Ok((destination, recorder))); + debt.fulfill(Box::new(transfer_result)); + continue; + } else { + // shouldn't really happen unless Workers processes die + debt.fulfill(Box::new(Err(DandelionError::EngineError))); + } + } + EngineArguments::Shutdown(resource_returner) => { + // wait for all pending functions to complete + if let Ok((_, _, _, _)) = tokio::try_join!( + worker1.available.acquire(), + worker2.available.acquire(), + worker3.available.acquire(), + worker4.available.acquire(), + ) { + resource_returner(vec![ComputeResource::GPU(core_id, gpu_id)]); + return; + } else { + // shouldn't really happen unless Workers processes die + debt.fulfill(Box::new(Err(DandelionError::EngineError))); + } + } + } + } +} + +async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { + let worker1 = Arc::new(Worker::new(core_id, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id, gpu_id)); + + tokio::spawn(process_output(worker1.clone())); + tokio::spawn(process_output(worker2.clone())); + tokio::spawn(process_output(worker3.clone())); + tokio::spawn(process_output(worker4.clone())); + + tokio::join!(process_inputs( + core_id, + gpu_id, + queue, + worker1.clone(), + worker2.clone(), + worker3.clone(), + worker4.clone() + )); +} + +pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { + let rt = tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .expect("Runtime building failed"); + + rt.block_on(run_pool(core_id, gpu_id, queue)); +} diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index 73656e81..e436a662 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -217,7 +217,7 @@ impl Driver for MmuDriver { fn start_engine( &self, resource: ComputeResource, - queue: Box, + queue: Box, ) -> DandelionResult<()> { let cpu_slot = match resource { ComputeResource::CPU(core) => core, diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index 2c98c3cc..9caf4adc 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -70,7 +70,7 @@ impl Driver for WasmDriver { fn start_engine( &self, resource: ComputeResource, - queue: Box, + queue: Box, ) -> DandelionResult<()> { // sanity checks; extract core id let cpu_slot = match resource { diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index c2dca1a3..34cda801 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -1,10 +1,9 @@ use std::collections::HashMap; +#[cfg(feature = "gpu")] +use crate::function_driver::compute_driver::gpu::{buffer_pool::BufferPool, hip}; + use crate::{ - function_driver::compute_driver::gpu::{ - buffer_pool::BufferPool, - hip::{self, DeviceAllocation}, - }, memory_domain::{Context, ContextState, ContextTrait}, DataItem, DataSet, Position, }; @@ -126,6 +125,7 @@ struct IoBufferDescriptor { key: SizeT, // size_t, } +#[cfg(feature = "gpu")] /// Only really used for GPU, but defined here so we can access private fields of DandelionSystemData pub fn write_gpu_outputs( context: &mut Context, @@ -169,9 +169,9 @@ pub fn write_gpu_outputs( .ok_or(DandelionError::ConfigMissmatch)?; let buf_offset = context.get_free_space(*size, 8)?; - let src = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; - hip::memcpy_d_to_h(src, &dev_ptr, *size)?; + hip::memcpy_d_to_h(dst, &dev_ptr, *size)?; output_buffers.push(IoBufferDescriptor { ident: ptr_t!(0), diff --git a/machine_interface/src/lib.rs b/machine_interface/src/lib.rs index ca3c7641..f2045133 100644 --- a/machine_interface/src/lib.rs +++ b/machine_interface/src/lib.rs @@ -44,13 +44,13 @@ pub struct Position { pub size: usize, } -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize, Clone)] pub struct DataSet { pub ident: String, pub buffers: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct DataItem { pub ident: String, pub data: Position, diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index c024b654..849b582a 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -13,6 +13,7 @@ pub mod wasm; use crate::{DataItem, DataSet, Position}; use dandelion_commons::{DandelionError, DandelionResult}; +use serde::{Deserialize, Serialize}; pub trait ContextTrait: Send + Sync { fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()>; @@ -69,7 +70,7 @@ impl ContextTrait for ContextType { } } -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize, Clone)] pub enum ContextState { InPreparation, Run(i32), diff --git a/machine_interface/src/util/mmapmem.rs b/machine_interface/src/util/mmapmem.rs index 247b53ae..a5253db3 100644 --- a/machine_interface/src/util/mmapmem.rs +++ b/machine_interface/src/util/mmapmem.rs @@ -25,6 +25,7 @@ pub struct MmapMem { size: usize, fd: RawFd, filename: Option, + unmap_on_drop: bool, } static COUNTER: AtomicU64 = AtomicU64::new(0); @@ -40,6 +41,7 @@ impl MmapMem { size, fd: -1, filename: None, + unmap_on_drop: true, }); } let mut filename = None; @@ -100,6 +102,7 @@ impl MmapMem { size, fd, filename, + unmap_on_drop: true, }; Ok(shmem) @@ -151,6 +154,59 @@ impl MmapMem { size, fd: shmem_fd, filename: Some(filename.to_string()), + unmap_on_drop: false, + }; + + Ok(shmem) + } + + // Memory-maps a file and protection flags, at the given address. + // TODO good name; replace eprintln with error again + pub fn alt_open(filename: &str, prot: ProtFlags) -> Result { + let shmem_fd = match shm_open(filename, OFlag::O_RDWR, Mode::S_IRUSR) { + Err(err) => { + error!("Error opening shared memory file: {}:{}", err, err.desc()); + return Err(DandelionError::FileError); + } + Ok(fd) => fd, + }; + + let size = match fstat(shmem_fd) { + Err(err) => { + error!("Error getting file stats: {}:{}", err, err.desc()); + return Err(DandelionError::FileError); + } + Ok(stat) => stat.st_size as usize, + }; + + let ptr = unsafe { + match mmap( + None, + NonZeroUsize::new(size).unwrap(), + prot, + MapFlags::MAP_SHARED, + shmem_fd, + 0, + ) { + Err(err) => { + eprintln!( + "Error mapping memory from file {}: {}:{}", + filename, + err, + err.desc() + ); + return Err(DandelionError::MemoryAllocationError); + } + Ok(ptr) => ptr as *mut _, + } + }; + + let shmem = MmapMem { + ptr, + size, + fd: shmem_fd, + filename: Some(filename.to_string()), + unmap_on_drop: false, }; Ok(shmem) @@ -249,9 +305,11 @@ impl Drop for MmapMem { if !self.ptr.is_null() { unsafe { munmap(self.ptr as *mut _, self.size).unwrap() }; } - if let Some(filename) = &self.filename { - close(self.fd).unwrap(); - shm_unlink(filename.as_str()).unwrap(); + if self.unmap_on_drop { + if let Some(filename) = &self.filename { + close(self.fd).unwrap(); + shm_unlink(filename.as_str()).unwrap(); + } } } } diff --git a/server/src/main.rs b/server/src/main.rs index c9881d96..9bb0cf20 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -45,6 +45,7 @@ const FUNCTION_FOLDER_PATH: &str = "/tmp/dandelion_server"; // Handles graceful shutdown async fn handle_signals(mut signals: Signals) -> io::Result<()> { + #[allow(clippy::never_loop)] while let Some(signal) = signals.next().await { match signal { SIGTERM | SIGINT | SIGQUIT => { From 21e082d876a4bafdfc3291a437a5b769b6130135 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 16 Apr 2024 10:49:20 +0200 Subject: [PATCH 067/176] Change hyper io to reqwest on hyper update removing client, Add hyper context formed from bytes --- .github/workflows/cargo-tests.yaml | 2 +- dandelion_commons/src/lib.rs | 15 + dispatcher/Cargo.toml | 2 +- .../tests/dispatcher_tests/registry_tests.rs | 2 +- machine_interface/Cargo.toml | 8 +- .../src/function_driver/system_driver.rs | 4 +- .../system_driver/{hyper.rs => reqwest.rs} | 126 +++--- .../system_driver/system_driver_tests.rs | 10 +- machine_interface/src/machine_config.rs | 21 +- machine_interface/src/memory_domain.rs | 8 + machine_interface/src/memory_domain/hyper.rs | 375 ++++++++++++++++++ server/Cargo.toml | 6 +- server/src/main.rs | 46 ++- server/tests/server_tests.rs | 2 +- 14 files changed, 524 insertions(+), 103 deletions(-) rename machine_interface/src/function_driver/system_driver/{hyper.rs => reqwest.rs} (81%) create mode 100644 machine_interface/src/memory_domain/hyper.rs diff --git a/.github/workflows/cargo-tests.yaml b/.github/workflows/cargo-tests.yaml index 60aa8f66..fbc3a34f 100644 --- a/.github/workflows/cargo-tests.yaml +++ b/.github/workflows/cargo-tests.yaml @@ -17,7 +17,7 @@ jobs: # test different available compute engines with different system engines matrix: compute_driver: [ mmu, wasm ] - system_driver: [ hyper_io ] + system_driver: [ reqwest_io ] steps: # check out the code - uses: actions/checkout@v3 diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 36d7e3b5..fc26bbdd 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -119,6 +119,21 @@ pub enum DandelionError { FunctionError(i32), /// Work queue from the dispatcher to the engines is full WorkQueueFull, + // Frontend errors + /// Error in the frontend receiveing requests + RequestError(FrontendError), +} + +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum FrontendError { + /// Failed to get more frames from the connection + FailledToGetFrames, + /// Attemped to read bytes form stream to desiarialize but stream ran out + StreamEnd, + /// The stream was not formated according to the expected specification + ViolatedSpec, + /// The structure descibed does not cofrom with the expected message + MalformedMessage, } pub type DandelionResult = std::result::Result; diff --git a/dispatcher/Cargo.toml b/dispatcher/Cargo.toml index aa966b3c..ba6cb08b 100644 --- a/dispatcher/Cargo.toml +++ b/dispatcher/Cargo.toml @@ -19,5 +19,5 @@ crossbeam = "0.8.4" cheri = ["machine_interface/cheri"] wasm = ["machine_interface/wasm"] mmu = ["machine_interface/mmu"] -hyper_io = ["machine_interface/hyper_io"] +reqwest_io = ["machine_interface/reqwest_io"] timestamp = ["dandelion_commons/timestamp"] \ No newline at end of file diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index 993efdff..c9c15742 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -268,7 +268,7 @@ pub fn multiple_input_fixed( } #[test] -#[cfg(any(feature = "hyper_io"))] +#[cfg(any(feature = "reqwest_io"))] fn test_insert_composition_with_http_func() { let dispatcher = Dispatcher::init(dispatcher::resource_pool::ResourcePool { engine_pool: Mutex::new(BTreeMap::new()), diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index de5c670e..5cf647fb 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -7,7 +7,8 @@ edition = "2021" std = [] cheri = ["std"] mmu = ["std"] -hyper_io = ["std", "dep:hyper"] +reqwest_io = ["std", "dep:reqwest", "dep:http", "dep:bytes"] +hyper_context = ["std", "dep:hyper", "dep:bytes"] wasm = ["std"] timestamp = ["dandelion_commons/timestamp"] @@ -30,7 +31,10 @@ serde_json = "1.0" core_affinity = { version = "0.8"} futures = { version = "0.3.28" } tokio = { version = "1", features = ["full"] } -hyper = { version = "0.14", optional = true, features = ["http1", "http2", "client", "runtime"]} +hyper = { version = "1.2", optional = true, features = ["full"]} +reqwest = { version = "0.12", optional = true } +http = { version = "1.1", optional = true } +bytes = { version = "1.6", optional = true} libloading = { version = "0.8.1" } log = "0.4.20" diff --git a/machine_interface/src/function_driver/system_driver.rs b/machine_interface/src/function_driver/system_driver.rs index e60b9fc7..3be20770 100644 --- a/machine_interface/src/function_driver/system_driver.rs +++ b/machine_interface/src/function_driver/system_driver.rs @@ -1,7 +1,7 @@ use crate::function_driver::SystemFunction; -#[cfg(feature = "hyper_io")] -pub mod hyper; +#[cfg(feature = "reqwest_io")] +pub mod reqwest; /// HTTP function currently expects following sets: /// - request: expetcts to have a single item containing a http request formatted as diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/reqwest.rs similarity index 81% rename from machine_interface/src/function_driver/system_driver/hyper.rs rename to machine_interface/src/function_driver/system_driver/reqwest.rs index 5ed20ab4..2d0d7042 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/reqwest.rs @@ -8,8 +8,9 @@ use crate::{ }; use core_affinity::set_for_current; use dandelion_commons::{DandelionError, DandelionResult}; -use hyper::{body::HttpBody, Body, Client, HeaderMap, Method, Request, Version}; +use http::{version::Version, HeaderName, HeaderValue, Method}; use log::error; +use reqwest::{header::HeaderMap, Client}; use std::sync::Arc; use tokio::runtime::{Builder, Runtime}; @@ -17,13 +18,13 @@ struct RequestInformation { method: Method, uri: String, version: Version, - headermap: Vec<(String, String)>, - body: Body, + headermap: HeaderMap, + body: Vec, } struct ResponseInformation { status: String, headermap: HeaderMap, - body: Vec, + body: bytes::Bytes, } fn http_setup(context: &Context) -> DandelionResult { @@ -108,20 +109,23 @@ fn http_setup(context: &Context) -> DandelionResult { .and_then(|set| Some(set.ident == "headers")) .unwrap_or(false) }) { - let mut headermap = Vec::<(String, String)>::with_capacity(header_set.buffers.len()); + let mut headermap = HeaderMap::with_capacity(header_set.buffers.len()); for header_item in &header_set.buffers { let mut header_value = Vec::::with_capacity(header_item.data.size); - header_value.resize(header_item.data.size, 0); context.read(header_item.data.offset, &mut header_value)?; - let value_string = - String::from_utf8(header_value).or(Err(DandelionError::MalformedSystemFuncArg( - String::from("header value not utf8 conformant"), - )))?; - headermap.push((header_item.ident.clone(), value_string)); + let value = HeaderValue::from_bytes(&header_value).or(Err( + DandelionError::MalformedSystemFuncArg(String::from( + "header value not utf8 conformant", + )), + ))?; + let header_name = HeaderName::from_bytes(header_item.ident.as_bytes()).unwrap(); + if !headermap.append(header_name.clone(), value.clone()) { + let _ = headermap.insert(header_name, value); + } } headermap } else { - Vec::new() + HeaderMap::with_capacity(0) }; let body = if let Some(Some(body_set)) = context.content.iter().find(|&set_option| { @@ -131,16 +135,18 @@ fn http_setup(context: &Context) -> DandelionResult { .unwrap_or(false) }) { if body_set.buffers.len() < 1 { - Body::empty() + Vec::new() } else { let body_item = &body_set.buffers[0]; let mut body_buffer = Vec::::with_capacity(body_item.data.size); body_buffer.resize(body_item.data.size, 0); context.read(body_item.data.offset, &mut body_buffer)?; - Body::from(body_buffer) + body_buffer + // Body::from(body_buffer) } } else { - Body::empty() + // Body::empty() + Vec::new() }; return Ok(RequestInformation { @@ -152,7 +158,10 @@ fn http_setup(context: &Context) -> DandelionResult { }); } -async fn http_request(request_info: RequestInformation) -> DandelionResult { +async fn http_request( + client: Client, + request_info: RequestInformation, +) -> DandelionResult { let RequestInformation { method, uri, @@ -161,14 +170,22 @@ async fn http_request(request_info: RequestInformation) -> DandelionResult client.put(uri.clone()), + Method::GET => client.get(uri.clone()), + _ => { + return Err(DandelionError::MalformedSystemFuncArg(String::from( + "Unsupported Method", + ))) + } + }; + + let request = match request_builder + .headers(headermap) + .version(version) + .body(body) + .build() + { Ok(req) => req, Err(http_error) => { error!("URI: {}", uri); @@ -178,44 +195,40 @@ async fn http_request(request_info: RequestInformation) -> DandelionResult body.into_parts(), - Err(err) => { - println!("message: {}, err: {}", err.message(), err); - panic!("Future Error") - } + let response = match client.execute(request).await { + Ok(resp) => resp, + Err(_) => return Err(DandelionError::SystemFuncResponseError), }; // write the status line let status = format!( "{:?} {} {}", - parts.version, - parts.status.as_str(), - parts.status.canonical_reason().unwrap_or("") + response.version(), + response.status().as_str(), + response.status().canonical_reason().unwrap_or("") ); // read the content length in the header // TODO also accept chunked data - let content_length = parts - .headers + let content_length = response + .headers() .get("content-length") .and_then(|value| value.to_str().ok()) .and_then(|len_str| len_str.parse::().ok()) .ok_or(DandelionError::SystemFuncResponseError)?; - let mut response_data = Vec::new(); - while let Some(Ok(chunk)) = body.data().await { - response_data.extend_from_slice(&chunk.slice(0..chunk.len())); - } - if content_length == response_data.len() { + let headers = response.headers().to_owned(); + + let body = match response.bytes().await { + Ok(bytes) => bytes, + Err(_) => return Err(DandelionError::SystemFuncResponseError), + }; + + if content_length == body.len() { let response_info = ResponseInformation { status, - headermap: parts.headers.to_owned(), - body: response_data, + headermap: headers, + body, }; return Ok(response_info); } else { @@ -302,13 +315,14 @@ fn http_context_write( fn http_run( mut context: Context, runtime: &Runtime, + client: &Client, output_set_names: Arc>, ) -> DandelionResult { let response_result = { let _guard = runtime.enter(); let request = http_setup(&context)?; runtime - .block_on(http_request(request)) + .block_on(http_request(client.clone(), request)) .or(Err(DandelionError::EngineError)) }; let response = match response_result { @@ -321,11 +335,12 @@ fn http_run( return Ok(context); } -struct HyperLoop { +struct ReqwestLoop { runtime: Runtime, + client: Client, } -impl EngineLoop for HyperLoop { +impl EngineLoop for ReqwestLoop { fn init(core_id: u8) -> DandelionResult> { log::debug!("Hyper engine Init"); let runtime = Builder::new_multi_thread() @@ -338,8 +353,8 @@ impl EngineLoop for HyperLoop { .enable_all() .build() .or(Err(DandelionError::EngineError))?; - - return Ok(Box::new(HyperLoop { runtime })); + let client = Client::new(); + return Ok(Box::new(ReqwestLoop { runtime, client })); } fn run( &mut self, @@ -354,15 +369,16 @@ impl EngineLoop for HyperLoop { }; return match function { - SystemFunction::HTTP => http_run(context, &self.runtime, output_sets), + SystemFunction::HTTP => http_run(context, &self.runtime, &self.client, output_sets), + #[allow(unreachable_patterns)] _ => Err(DandelionError::MalformedConfig), }; } } -pub struct HyperDriver {} +pub struct ReqwestDriver {} -impl Driver for HyperDriver { +impl Driver for ReqwestDriver { fn start_engine( &self, resource: ComputeResource, @@ -385,7 +401,7 @@ impl Driver for HyperDriver { { return Err(DandelionError::EngineResourceError); } - start_thread::(core_id, queue); + start_thread::(core_id, queue); return Ok(()); } diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 9df3bf50..8a822678 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -1,4 +1,4 @@ -#[cfg(all(test, any(feature = "hyper_io")))] +#[cfg(all(test, any(feature = "reqwest_io")))] mod system_driver_tests { use crate::{ function_driver::{ @@ -229,11 +229,11 @@ mod system_driver_tests { }; } - #[cfg(feature = "hyper_io")] - mod hyper_io { - use crate::function_driver::system_driver::hyper::HyperDriver; + #[cfg(feature = "reqwest_io")] + mod reqwest_io { + use crate::function_driver::system_driver::reqwest::ReqwestDriver; use crate::function_driver::ComputeResource; use crate::memory_domain::malloc::MallocMemoryDomain as domain; - driverTests!(hyper_io; domain; crate::memory_domain::MemoryResource::None; HyperDriver{}; ComputeResource::CPU(1)); + driverTests!(reqwest_io; domain; crate::memory_domain::MemoryResource::None; ReqwestDriver{}; ComputeResource::CPU(1)); } } diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index 6a9d6d81..23457ca9 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -10,8 +10,8 @@ use crate::{ /// Enum for all engine types that allows use in lookup structures #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub enum EngineType { - #[cfg(feature = "hyper_io")] - Hyper, + #[cfg(feature = "reqwest_io")] + Reqwest, #[cfg(feature = "cheri")] Cheri, #[cfg(feature = "wasm")] @@ -33,8 +33,8 @@ pub enum DomainType { pub fn get_compatibilty_table() -> BTreeMap { return BTreeMap::from([ - #[cfg(feature = "hyper_io")] - (EngineType::Hyper, DomainType::Mmap), + #[cfg(feature = "reqwest_io")] + (EngineType::Reqwest, DomainType::Mmap), #[cfg(feature = "cheri")] (EngineType::Cheri, DomainType::Cheri), #[cfg(feature = "wasm")] @@ -44,13 +44,14 @@ pub fn get_compatibilty_table() -> BTreeMap { ]); } -#[cfg(any(feature = "hyper_io"))] +#[cfg(any(feature = "reqwest_io"))] const SYS_FUNC_DEFAULT_CONTEXT_SIZE: usize = 0x200_0000; pub fn get_system_functions(engine_type: EngineType) -> Vec<(SystemFunction, usize)> { return match engine_type { - #[cfg(feature = "hyper_io")] - EngineType::Hyper => vec![(SystemFunction::HTTP, SYS_FUNC_DEFAULT_CONTEXT_SIZE)], + #[cfg(feature = "reqwest_io")] + EngineType::Reqwest => vec![(SystemFunction::HTTP, SYS_FUNC_DEFAULT_CONTEXT_SIZE)], + #[allow(unreachable_patterns)] _ => Vec::new(), }; } @@ -89,11 +90,11 @@ pub fn get_available_domains() -> BTreeMap BTreeMap { return BTreeMap::::from([ - #[cfg(feature = "hyper_io")] + #[cfg(feature = "reqwest_io")] ( - EngineType::Hyper, + EngineType::Reqwest, Box::leak(Box::new( - crate::function_driver::system_driver::hyper::HyperDriver {}, + crate::function_driver::system_driver::reqwest::ReqwestDriver {}, )) as &'static dyn Driver, ), #[cfg(feature = "cheri")] diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 5b6de9f8..23256191 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -1,6 +1,8 @@ // list of memory domain implementations #[cfg(feature = "cheri")] pub mod cheri; +#[cfg(feature = "hyper_context")] +pub mod hyper; pub mod malloc; pub mod mmap; #[cfg(feature = "mmu")] @@ -24,6 +26,8 @@ pub enum ContextType { Malloc(Box), Mmap(Box), ReadOnly(Box), + #[cfg(feature = "hyper_context")] + Hyper(Box), #[cfg(feature = "cheri")] Cheri(Box), #[cfg(feature = "mmu")] @@ -44,6 +48,8 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.write(offset, data), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.write(offset, data), + #[cfg(feature = "hyper_context")] + ContextType::Hyper(context) => context.write(offset, data), } } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { @@ -57,6 +63,8 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.read(offset, read_buffer), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.read(offset, read_buffer), + #[cfg(feature = "hyper_context")] + ContextType::Hyper(context) => context.read(offset, read_buffer), } } } diff --git a/machine_interface/src/memory_domain/hyper.rs b/machine_interface/src/memory_domain/hyper.rs new file mode 100644 index 00000000..62ba546c --- /dev/null +++ b/machine_interface/src/memory_domain/hyper.rs @@ -0,0 +1,375 @@ +use crate::{ + memory_domain::{Context, ContextTrait}, + DataItem, DataSet, +}; +use bytes::Buf; +use core::mem::size_of; +use dandelion_commons::{DandelionError, DandelionResult, FrontendError}; +use futures::future::poll_fn; +use hyper::{ + body::{Body, Bytes, Incoming}, + Request, +}; +use log::{debug, error}; + +#[derive(Debug)] +pub struct HyperContext { + frames: Vec, +} + +impl ContextTrait for HyperContext { + fn write(&mut self, _offset: usize, _data: &[T]) -> dandelion_commons::DandelionResult<()> { + error!("Tried to write to read only contet"); + return Err(dandelion_commons::DandelionError::InvalidWrite); + } + fn read( + &self, + mut offset: usize, + read_buffer: &mut [T], + ) -> dandelion_commons::DandelionResult<()> { + let byte_buffer = unsafe { + core::slice::from_raw_parts_mut( + read_buffer.as_ptr() as *mut u8, + read_buffer.len() * core::mem::size_of::(), + ) + }; + let mut read_offset = 0usize; + let mut remaining = byte_buffer.len(); + for frame in self.frames.iter() { + // check if beginning of read is within current frame + if frame.len() <= offset { + offset -= frame.len(); + continue; + } + // read starts or has started in current frame + // check if end is within current frame + if frame.len() >= offset + remaining { + // remaining bytes are from current frame + byte_buffer[read_offset..].copy_from_slice(&frame[offset..offset + remaining]); + return Ok(()); + } else { + // end is not in current frame, read current frame until end and go to next + let subframe = &frame[offset..]; + byte_buffer[read_offset..read_offset + subframe.len()].copy_from_slice(subframe); + remaining -= subframe.len(); + read_offset += subframe.len(); + offset = 0; + } + } + return Err(DandelionError::InvalidRead); + } +} + +struct IncomingFrames { + incoming: Incoming, +} + +impl IncomingFrames { + async fn get_all_frames(&mut self) -> DandelionResult<(usize, Vec)> { + let mut body_pin = std::pin::Pin::new(&mut self.incoming); + let mut frames = Vec::new(); + let mut total_size = 0; + loop { + if let Some(frame_result) = poll_fn(|cx| body_pin.as_mut().poll_frame(cx)).await { + let frame = frame_result.or(Err(DandelionError::RequestError( + FrontendError::FailledToGetFrames, + )))?; + let data_frame = frame.into_data().or(Err(DandelionError::RequestError( + FrontendError::FailledToGetFrames, + )))?; + total_size += data_frame.len(); + frames.push(data_frame); + } else { + if body_pin.is_end_stream() { + return Ok((total_size, frames)); + } else { + continue; + } + } + } + } +} + +struct FrameBuf<'data> { + byte_iter: &'data Vec, + remaining: usize, + current_frame: usize, + current_buf_offset: usize, +} + +impl<'data> bytes::Buf for FrameBuf<'data> { + fn remaining(&self) -> usize { + return self.remaining; + } + + fn advance(&mut self, cnt: usize) { + let mut to_advance = cnt; + self.remaining -= cnt; + while to_advance > 0 { + let current_frame_size = self.byte_iter[self.current_frame].len(); + if self.current_buf_offset + to_advance < current_frame_size { + self.current_buf_offset += to_advance; + break; + } else { + let available = current_frame_size - self.current_buf_offset; + to_advance -= available; + self.current_buf_offset = 0; + self.current_frame += 1; + } + } + } + + fn chunk(&self) -> &[u8] { + return &(self.byte_iter[self.current_frame])[self.current_buf_offset..]; + } +} + +fn check_remaining(buf: &impl bytes::Buf) -> DandelionResult<()> { + if buf.remaining() < size_of::() { + return Err(DandelionError::RequestError(FrontendError::StreamEnd)); + } else { + return Ok(()); + } +} + +fn read_type_byte(buf: &mut impl bytes::Buf) -> DandelionResult { + check_remaining::(buf)?; + return Ok(buf.get_i8()); +} + +fn read_and_check_type(buf: &mut impl bytes::Buf, expected_type: i8) -> DandelionResult<()> { + let type_byte = read_type_byte(buf)?; + if type_byte != expected_type { + debug!( + "Unexpected type: {}, expected: {}", + type_byte, expected_type + ); + return Err(DandelionError::RequestError( + FrontendError::MalformedMessage, + )); + } + return Ok(()); +} + +fn read_length(buf: &mut impl bytes::Buf) -> DandelionResult { + check_remaining::(buf)?; + return usize::try_from(buf.get_i32_le()).or(Err(DandelionError::RequestError( + FrontendError::ViolatedSpec, + ))); +} + +fn read_cstring(buf: &mut impl bytes::Buf) -> DandelionResult { + // cstrings are bytes series of unkown length which are null terminated + let mut cstring = String::new(); + 'string_loop: while buf.remaining() > 0 { + let mut chunk_index = 0; + let chunk = buf.chunk(); + while chunk_index < chunk.len() { + if chunk[chunk_index] == 0 { + cstring.push_str(std::str::from_utf8(&chunk[0..=chunk_index]).unwrap()); + buf.advance(chunk_index + 1); + break 'string_loop; + } + chunk_index += 1; + } + cstring.push_str(std::str::from_utf8(chunk).unwrap()); + buf.advance(chunk_index); + } + return Ok(cstring); +} + +fn read_and_check_cstring(buf: &mut impl bytes::Buf, expected_string: &str) -> DandelionResult<()> { + let cstring = read_cstring(buf)?; + if cstring.as_str() != expected_string { + debug!( + "Unexpeced cstring: {:?}, expected: {:?}", + cstring, expected_string + ); + return Err(DandelionError::RequestError( + FrontendError::MalformedMessage, + )); + } + return Ok(()); +} + +fn read_string(buf: &mut impl bytes::Buf) -> DandelionResult { + // get string length, remove trainling null char, as they are not needed for rust string + let string_length = read_length(buf)? - 1; + let mut byte_buffer = Vec::with_capacity(string_length); + byte_buffer.resize(string_length, 0); + if buf.remaining() < string_length { + return Err(DandelionError::RequestError(FrontendError::StreamEnd)); + } + // the string length describes a character buffer of lenght n with a trailing null char + // do not copy null char + buf.copy_to_slice(byte_buffer.as_mut_slice()); + // read the trailing null bytes + if buf.get_i8() != 0 { + return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); + } + let string = String::from_utf8(byte_buffer).or(Err(DandelionError::RequestError( + FrontendError::ViolatedSpec, + )))?; + return Ok(string); +} + +fn read_string_elem(buf: &mut impl bytes::Buf, expected_ident: &str) -> DandelionResult { + // read elem type + let elem_type = read_type_byte(buf)?; + if elem_type != 2 { + debug!("Expected string type, found type: {}", elem_type); + return Err(DandelionError::RequestError( + FrontendError::MalformedMessage, + )); + } + read_and_check_cstring(buf, expected_ident)?; + return read_string(buf); +} + +fn read_data_item( + buf: &mut impl bytes::Buf, + total_length: usize, +) -> DandelionResult> { + // check item doc type + let item_doc_type = read_type_byte(buf)?; + match item_doc_type { + 0 => return Ok(None), + 3 => (), + _ => { + debug!("Expected item of type doc, found: {}", item_doc_type); + return Err(DandelionError::RequestError( + FrontendError::MalformedMessage, + )); + } + } + let _doc_name = read_cstring(buf)?; + let _doc_lenght = read_length(buf)?; + // parse e_list + let ident = read_string_elem(buf, "identifier\0")?; + // check type is 64-bit integer + read_and_check_type(buf, 18)?; + // read the e_name + read_and_check_cstring(buf, "key\0")?; + let key = u32::try_from(buf.get_i64_le()).or(Err(DandelionError::RequestError( + FrontendError::MalformedMessage, + )))?; + read_and_check_type(buf, 5)?; + read_and_check_cstring(buf, "data\0")?; + let binary_lenght = read_length(buf)?; + let _binary_subtype = read_type_byte(buf)?; + + let offset = total_length - buf.remaining(); + let size = binary_lenght; + buf.advance(size); + return Ok(Some(DataItem { + ident, + key, + data: crate::Position { offset, size }, + })); +} + +fn read_data_set( + buf: &mut impl bytes::Buf, + total_length: usize, +) -> DandelionResult> { + // check type of current element, expecting document + let doc_type = read_type_byte(buf)?; + if doc_type == 0 { + return Ok(None); + } + if doc_type != 3 { + debug!( + "Set type is not equal to document, found {} instead", + doc_type + ); + return Err(DandelionError::RequestError( + FrontendError::MalformedMessage, + )); + } + let _set_doc_cstring = read_cstring(buf)?; + + // start parsing document, first read size, then start parsing element list + let _ = read_length(buf)?; + + // expect first element to be string identifier + let set_name = read_string_elem(buf, "identifier\0")?; + + // expect second element to be array + read_and_check_type(buf, 4)?; + read_and_check_cstring(buf, "items\0")?; + + // read array lenghth + let item_array_size = read_length(buf)?; + let mut items = Vec::new(); + let array_end = buf.remaining() + 4 - item_array_size; + while buf.remaining() > array_end { + if let Some(item) = read_data_item(buf, total_length)? { + items.push(item); + } else { + break; + } + } + // read terminating 0 char + check_remaining::(buf)?; + if buf.get_i8() != 0 { + debug!("Terminating 0 not 0"); + return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); + } + + return Ok(Some(DataSet { + ident: set_name, + buffers: items, + })); +} + +impl HyperContext { + pub async fn from_stream(incoming: Request) -> DandelionResult<(String, Context)> { + let body = incoming.into_body(); + let mut frames = IncomingFrames { incoming: body }; + let (total_size, frame_data) = frames.get_all_frames().await?; + + let mut frame_buf = FrameBuf { + byte_iter: &frame_data, + remaining: total_size, + current_buf_offset: 0, + current_frame: 0, + }; + // read the total length of the bson document + let bson_dict_length = read_length(&mut frame_buf)?; + // check the total remaining data is equal to the remaining expected data + if frame_buf.remaining() + size_of::() != bson_dict_length { + return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); + } + + // TODO should we accept also reordered version? + // parse function name + let function_name = read_string_elem(&mut frame_buf, "name\0")?; + + // expecting sets to be an array + read_and_check_type(&mut frame_buf, 4)?; + read_and_check_cstring(&mut frame_buf, "sets\0")?; + let _ = read_length(&mut frame_buf); + // parse elements one by one + let mut sets = Vec::new(); + while frame_buf.remaining() > 0 { + if let Some(set) = read_data_set(&mut frame_buf, bson_dict_length)? { + sets.push(Some(set)); + } else { + break; + } + } + // read terminating 0 + check_remaining::(&frame_buf)?; + if frame_buf.get_i8() != 0 { + debug!("Context terminating 0 char not 0"); + return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); + } + let mut context = Context::new( + crate::memory_domain::ContextType::Hyper(Box::new(HyperContext { frames: frame_data })), + bson_dict_length, + ); + context.occupy_space(0, bson_dict_length)?; + context.content = sets; + return Ok((function_name, context)); + } +} diff --git a/server/Cargo.toml b/server/Cargo.toml index a2b92c2e..aa02ffb6 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -machine_interface = { path = "../machine_interface" } +machine_interface = { path = "../machine_interface", features = ["hyper_context"] } dandelion_commons = { path = "../dandelion_commons" } dispatcher = { path = "../dispatcher" } futures = { version = "0.3.28", default-features=false} @@ -17,7 +17,7 @@ core_affinity = "0.8" num_cpus = "1.16.0" bytes = "1.4" http = "0.2" -log = { version = "0.4.20", features = ["serde"] } +log = { version = "0.4.20", features = ["serde", "release_max_level_warn"] } env_logger = "0.10.1" serde = "1.0.197" serde_json = "1.0.115" @@ -35,5 +35,5 @@ reqwest = { version = "0.11", default-features = false, features = ["blocking"] cheri = ["machine_interface/cheri"] mmu = ["machine_interface/mmu"] wasm = ["machine_interface/wasm"] -hyper_io = ["machine_interface/hyper_io"] +reqwest_io = ["machine_interface/reqwest_io"] timestamp = ["dispatcher/timestamp"] \ No newline at end of file diff --git a/server/src/main.rs b/server/src/main.rs index 3a1a424c..0b04e276 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,6 +1,5 @@ use core_affinity::{self, CoreId}; use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint, Recorder}; -use dandelion_server::DandelionRequest; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, @@ -15,7 +14,9 @@ use log::{error, info, warn}; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, - memory_domain::{mmap::MmapMemoryDomain, ContextTrait, MemoryDomain}, + memory_domain::{ + hyper::HyperContext, mmap::MmapMemoryDomain, Context, ContextTrait, MemoryDomain, + }, DataItem, DataSet, Position, }; use serde::Deserialize; @@ -137,21 +138,19 @@ async fn run_chain( async fn run_mat_func( dispatcher: Arc, is_cold: bool, - request: DandelionRequest, + function_name: String, + request: Context, mut recorder: Recorder, ) -> Vec { - let (name, input_context) = dandelion_server::parse_request(request); + // let (name, input_context) = dandelion_server::parse_request(request); - let inputs = vec![( - 0, - CompositionSet::from((0, vec![(Arc::new(input_context))])), - )]; + let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; let outputs = vec![Some(0)]; recorder .record(RecordPoint::QueueFunctionDispatcher) .unwrap(); let result = dispatcher - .queue_function_by_name(name, inputs, outputs, is_cold, recorder) + .queue_function_by_name(function_name, inputs, outputs, is_cold, recorder) .await .expect("Should get result from function"); @@ -188,20 +187,16 @@ async fn serve_request( ) -> Result>, Infallible> { let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); - - // Try to parse the request - let request_buf = req - .collect() - .await - .expect("Could not read request body") - .to_bytes(); - let request: DandelionRequest = - bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - + let request_context_result = HyperContext::from_stream(req).await; + if request_context_result.is_err() { + warn!("request parsing failed with: {:?}", request_context_result); + } + let (function_name, request_context) = request_context_result.unwrap(); let response_vec = run_mat_func( dispatcher, is_cold, - request, + function_name, + request_context, recorder.get_sub_recorder().unwrap(), ) .await; @@ -452,7 +447,14 @@ fn main() -> () { // check if there is a configuration file let config = dandelion_server::config::get_config(); - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("warn")).init(); + let default_warn_level = if cfg!(debug_assertions) { + "debug" + } else { + "warn" + }; + + env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default_warn_level)) + .init(); // Initilize metric collection match TRACING_ARCHIVE.set(Archive::init(ArchiveInit { @@ -515,7 +517,7 @@ fn main() -> () { .map(|code_id| ComputeResource::CPU(code_id as u8)) .collect(), ); - // #[cfg(feature = "hyper_io")] + // #[cfg(feature = "reqwest_io")] // pool_map.insert( // EngineType::Hyper, // (0..num_dispatcher_cores) diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index cf5c99e3..8ac79fbb 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -1,6 +1,6 @@ #[cfg(all( any(feature = "wasm", feature = "mmu", feature = "cheri"), - feature = "hyper_io" + feature = "reqwest_io" ))] mod server_tests { From dd20076fc82ebad10806633257212a736126cd7d Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 16 Apr 2024 13:16:11 +0200 Subject: [PATCH 068/176] Make hyper context into bytes context. Add transfer functions bytes to mmu and wasm --- machine_interface/Cargo.toml | 4 +- machine_interface/src/memory_domain.rs | 36 +++++++-- .../src/memory_domain/{hyper.rs => bytes.rs} | 80 ++++++++----------- machine_interface/src/memory_domain/mmu.rs | 17 ++++ machine_interface/src/memory_domain/wasm.rs | 18 ++++- server/Cargo.toml | 2 +- server/src/main.rs | 32 ++++++-- 7 files changed, 127 insertions(+), 62 deletions(-) rename machine_interface/src/memory_domain/{hyper.rs => bytes.rs} (87%) diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 5cf647fb..9e28d225 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -4,11 +4,12 @@ version = "0.1.0" edition = "2021" [features] +default = ["bytes_context"] std = [] cheri = ["std"] mmu = ["std"] reqwest_io = ["std", "dep:reqwest", "dep:http", "dep:bytes"] -hyper_context = ["std", "dep:hyper", "dep:bytes"] +bytes_context = ["std", "dep:bytes"] wasm = ["std"] timestamp = ["dandelion_commons/timestamp"] @@ -31,7 +32,6 @@ serde_json = "1.0" core_affinity = { version = "0.8"} futures = { version = "0.3.28" } tokio = { version = "1", features = ["full"] } -hyper = { version = "1.2", optional = true, features = ["full"]} reqwest = { version = "0.12", optional = true } http = { version = "1.1", optional = true } bytes = { version = "1.6", optional = true} diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 23256191..277f4c5e 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -1,8 +1,8 @@ // list of memory domain implementations +#[cfg(feature = "bytes_context")] +pub mod bytes; #[cfg(feature = "cheri")] pub mod cheri; -#[cfg(feature = "hyper_context")] -pub mod hyper; pub mod malloc; pub mod mmap; #[cfg(feature = "mmu")] @@ -26,8 +26,8 @@ pub enum ContextType { Malloc(Box), Mmap(Box), ReadOnly(Box), - #[cfg(feature = "hyper_context")] - Hyper(Box), + #[cfg(feature = "bytes_context")] + Bytes(Box), #[cfg(feature = "cheri")] Cheri(Box), #[cfg(feature = "mmu")] @@ -48,8 +48,8 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.write(offset, data), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.write(offset, data), - #[cfg(feature = "hyper_context")] - ContextType::Hyper(context) => context.write(offset, data), + #[cfg(feature = "bytes_context")] + ContextType::Bytes(context) => context.write(offset, data), } } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { @@ -63,8 +63,8 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.read(offset, read_buffer), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.read(offset, read_buffer), - #[cfg(feature = "hyper_context")] - ContextType::Hyper(context) => context.read(offset, read_buffer), + #[cfg(feature = "bytes_context")] + ContextType::Bytes(context) => context.read(offset, read_buffer), } } } @@ -262,6 +262,16 @@ pub fn transfer_memory( source_offset, size, ), + #[cfg(all(feature = "mmu", feature = "bytes_context"))] + (ContextType::Mmu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { + mmu::bytest_to_mmu_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + ) + } #[cfg(feature = "wasm")] (ContextType::Wasm(destination_ctxt), ContextType::Wasm(source_ctxt)) => { wasm::wasm_transfer( @@ -272,6 +282,16 @@ pub fn transfer_memory( size, ) } + #[cfg(all(feature = "wasm", feature = "bytes_context"))] + (ContextType::Wasm(destination_ctxt), ContextType::Bytes(source_ctxt)) => { + wasm::bytes_to_wasm_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + ) + } // default implementation using reads and writes (destination, source) => { let mut read_buffer: Vec = vec![0; size]; diff --git a/machine_interface/src/memory_domain/hyper.rs b/machine_interface/src/memory_domain/bytes.rs similarity index 87% rename from machine_interface/src/memory_domain/hyper.rs rename to machine_interface/src/memory_domain/bytes.rs index 62ba546c..65c635ff 100644 --- a/machine_interface/src/memory_domain/hyper.rs +++ b/machine_interface/src/memory_domain/bytes.rs @@ -2,22 +2,17 @@ use crate::{ memory_domain::{Context, ContextTrait}, DataItem, DataSet, }; -use bytes::Buf; +use bytes::{Buf, Bytes}; use core::mem::size_of; use dandelion_commons::{DandelionError, DandelionResult, FrontendError}; -use futures::future::poll_fn; -use hyper::{ - body::{Body, Bytes, Incoming}, - Request, -}; use log::{debug, error}; #[derive(Debug)] -pub struct HyperContext { +pub struct BytesContext { frames: Vec, } -impl ContextTrait for HyperContext { +impl ContextTrait for BytesContext { fn write(&mut self, _offset: usize, _data: &[T]) -> dandelion_commons::DandelionResult<()> { error!("Tried to write to read only contet"); return Err(dandelion_commons::DandelionError::InvalidWrite); @@ -60,36 +55,6 @@ impl ContextTrait for HyperContext { } } -struct IncomingFrames { - incoming: Incoming, -} - -impl IncomingFrames { - async fn get_all_frames(&mut self) -> DandelionResult<(usize, Vec)> { - let mut body_pin = std::pin::Pin::new(&mut self.incoming); - let mut frames = Vec::new(); - let mut total_size = 0; - loop { - if let Some(frame_result) = poll_fn(|cx| body_pin.as_mut().poll_frame(cx)).await { - let frame = frame_result.or(Err(DandelionError::RequestError( - FrontendError::FailledToGetFrames, - )))?; - let data_frame = frame.into_data().or(Err(DandelionError::RequestError( - FrontendError::FailledToGetFrames, - )))?; - total_size += data_frame.len(); - frames.push(data_frame); - } else { - if body_pin.is_end_stream() { - return Ok((total_size, frames)); - } else { - continue; - } - } - } - } -} - struct FrameBuf<'data> { byte_iter: &'data Vec, remaining: usize, @@ -322,12 +287,11 @@ fn read_data_set( })); } -impl HyperContext { - pub async fn from_stream(incoming: Request) -> DandelionResult<(String, Context)> { - let body = incoming.into_body(); - let mut frames = IncomingFrames { incoming: body }; - let (total_size, frame_data) = frames.get_all_frames().await?; - +impl BytesContext { + pub async fn from_bytes_vec( + frame_data: Vec, + total_size: usize, + ) -> DandelionResult<(String, Context)> { let mut frame_buf = FrameBuf { byte_iter: &frame_data, remaining: total_size, @@ -365,7 +329,7 @@ impl HyperContext { return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); } let mut context = Context::new( - crate::memory_domain::ContextType::Hyper(Box::new(HyperContext { frames: frame_data })), + crate::memory_domain::ContextType::Bytes(Box::new(BytesContext { frames: frame_data })), bson_dict_length, ); context.occupy_space(0, bson_dict_length)?; @@ -373,3 +337,29 @@ impl HyperContext { return Ok((function_name, context)); } } + +#[test] +fn read_test() { + let first = vec![1u8, 2u8, 3u8, 4u8]; + let second = vec![]; + let third = vec![5u8, 6u8, 7u8]; + let fourth = vec![8u8]; + let frames = vec![first, second, third, fourth] + .into_iter() + .map(|vec| Bytes::from(vec)) + .collect(); + let read_context = BytesContext { frames }; + let expected_data = vec![1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8, 8u8]; + let mut all_read_vec = Vec::::new(); + all_read_vec.resize(8, 0); + read_context + .read(0, &mut all_read_vec) + .expect("read should succeed"); + assert_eq!(expected_data, all_read_vec.as_slice()); + let mut partial_read_vec = Vec::::new(); + partial_read_vec.resize(4, 0); + read_context + .read(2, &mut partial_read_vec) + .expect("Partial read should succeed"); + assert_eq!(&expected_data[2..6], partial_read_vec.as_slice()); +} diff --git a/machine_interface/src/memory_domain/mmu.rs b/machine_interface/src/memory_domain/mmu.rs index 94d9e3bd..1ce414dc 100644 --- a/machine_interface/src/memory_domain/mmu.rs +++ b/machine_interface/src/memory_domain/mmu.rs @@ -73,3 +73,20 @@ pub fn mmu_transfer( } Ok(()) } + +#[cfg(feature = "bytes_context")] +pub fn bytest_to_mmu_transfer( + destination: &mut MmuContext, + source: &crate::memory_domain::bytes::BytesContext, + destination_offset: usize, + source_offset: usize, + size: usize, +) -> DandelionResult<()> { + // check if bounds for mmu context + if destination.storage.size() < destination_offset + size { + return Err(DandelionError::InvalidWrite); + } + let mmu_slice = &mut destination.storage[destination_offset..destination_offset + size]; + source.read(source_offset, mmu_slice)?; + Ok(()) +} diff --git a/machine_interface/src/memory_domain/wasm.rs b/machine_interface/src/memory_domain/wasm.rs index e8674476..cae7c107 100644 --- a/machine_interface/src/memory_domain/wasm.rs +++ b/machine_interface/src/memory_domain/wasm.rs @@ -50,5 +50,21 @@ pub fn wasm_transfer( } destination.mem[destination_offset..destination_offset + size] .copy_from_slice(&source.mem[source_offset..source_offset + size]); - Ok(()) + return Ok(()); +} + +#[cfg(feature = "bytes_context")] +pub fn bytes_to_wasm_transfer( + destination: &mut WasmContext, + source: &crate::memory_domain::bytes::BytesContext, + destination_offset: usize, + source_offset: usize, + size: usize, +) -> DandelionResult<()> { + if destination_offset + size > destination.mem.size() { + return Err(DandelionError::InvalidWrite); + } + let wasm_slice = &mut destination.mem[destination_offset..destination_offset + size]; + source.read(source_offset, wasm_slice)?; + return Ok(()); } diff --git a/server/Cargo.toml b/server/Cargo.toml index aa02ffb6..6cae8074 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -machine_interface = { path = "../machine_interface", features = ["hyper_context"] } +machine_interface = { path = "../machine_interface", features = ["bytes_context"] } dandelion_commons = { path = "../dandelion_commons" } dispatcher = { path = "../dispatcher" } futures = { version = "0.3.28", default-features=false} diff --git a/server/src/main.rs b/server/src/main.rs index 0b04e276..388b30be 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -6,7 +6,7 @@ use dispatcher::{ }; use http_body_util::{BodyExt, Full}; use hyper::{ - body::{Bytes, Incoming}, + body::{Body, Bytes, Incoming}, service::service_fn, Request, Response, StatusCode, }; @@ -15,7 +15,7 @@ use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, memory_domain::{ - hyper::HyperContext, mmap::MmapMemoryDomain, Context, ContextTrait, MemoryDomain, + bytes::BytesContext, mmap::MmapMemoryDomain, Context, ContextTrait, MemoryDomain, }, DataItem, DataSet, Position, }; @@ -142,8 +142,7 @@ async fn run_mat_func( request: Context, mut recorder: Recorder, ) -> Vec { - // let (name, input_context) = dandelion_server::parse_request(request); - + // TODO match set names to assign sets to composition sets let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; let outputs = vec![Some(0)]; recorder @@ -187,7 +186,30 @@ async fn serve_request( ) -> Result>, Infallible> { let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); - let request_context_result = HyperContext::from_stream(req).await; + + // pull all frames from the network + let mut incomming = req.into_body(); + let mut body_pin = std::pin::Pin::new(&mut incomming); + let mut frame_data = Vec::new(); + let mut total_size = 0usize; + loop { + if let Some(frame_result) = + futures::future::poll_fn(|cx| body_pin.as_mut().poll_frame(cx)).await + { + let data_frame = frame_result.unwrap().into_data().unwrap(); + total_size += data_frame.len(); + frame_data.push(data_frame); + } else { + if body_pin.is_end_stream() { + break; + } else { + continue; + } + } + } + + // from context from frame bytes + let request_context_result = BytesContext::from_bytes_vec(frame_data, total_size).await; if request_context_result.is_err() { warn!("request parsing failed with: {:?}", request_context_result); } From 3d6446dc98cfbb238d362dbc22afdc4942f09a50 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Thu, 18 Apr 2024 18:04:57 +0200 Subject: [PATCH 069/176] GPU can be selected everywhere --- dispatcher/src/dispatcher.rs | 1 + machine_interface/benches/gpu_benchmark.rs | 100 +++++++++++++++++- machine_interface/hip_interface/bigger.hsaco | Bin 0 -> 123680 bytes .../hip_interface/combined.hsaco | Bin 0 -> 88352 bytes machine_interface/src/bin/gpu_worker.rs | 5 +- .../compute_driver/compute_driver_tests.rs | 54 ++++++++-- .../src/function_driver/compute_driver/gpu.rs | 20 ++-- .../function_driver/compute_driver/gpu/hip.rs | 24 ++++- .../src/function_driver/compute_driver/mmu.rs | 5 +- .../function_driver/compute_driver/wasm.rs | 4 +- .../src/function_driver/thread_utils.rs | 5 +- 11 files changed, 190 insertions(+), 28 deletions(-) create mode 100644 machine_interface/hip_interface/bigger.hsaco create mode 100644 machine_interface/hip_interface/combined.hsaco diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 20eaa571..ccbca004 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -53,6 +53,7 @@ impl Dispatcher { let mut engine_queues = BTreeMap::new(); for (engine_type, driver) in function_registry.drivers.iter() { let work_queue = Box::new(EngineQueue::new()); + // TODO: change Driver.start_engine to take a Vec and possibly consume more than one resource here while let Ok(Some(resource)) = resource_pool.sync_acquire_engine_resource(*engine_type) { driver.start_engine(resource, work_queue.clone())?; diff --git a/machine_interface/benches/gpu_benchmark.rs b/machine_interface/benches/gpu_benchmark.rs index a2e0bbf0..41333d65 100644 --- a/machine_interface/benches/gpu_benchmark.rs +++ b/machine_interface/benches/gpu_benchmark.rs @@ -1,7 +1,11 @@ +use std::fs; use std::sync::{Arc, Mutex}; +use std::time::Duration; use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; use dandelion_commons::records::{Archive, RecordPoint, Recorder}; +use libc::c_void; +use machine_interface::function_driver::compute_driver::gpu::hip; use machine_interface::function_driver::thread_utils::EngineLoop; use machine_interface::{ function_driver::{ @@ -53,7 +57,7 @@ fn context_allocation(c: &mut Criterion) { } } -fn matmul_benchmark(c: &mut Criterion) { +fn engine_loop_run_matmul(c: &mut Criterion) { let core_id = 3u8; let mut group = c.benchmark_group("matmul_benchmark"); group.measurement_time(std::time::Duration::new(30, 0)); @@ -66,7 +70,8 @@ fn matmul_benchmark(c: &mut Criterion) { let function = driver .parse_function(filename.to_string(), &domain) .expect("Should be able to parse function"); - let mut engine_loop = GpuLoop::init(core_id).expect("Should be able to init engineloop"); + let mut engine_loop = + GpuLoop::init(ComputeResource::GPU(core_id, 0)).expect("Should be able to init engineloop"); // set core affinity if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { log::error!("core received core id that could not be set"); @@ -78,7 +83,7 @@ fn matmul_benchmark(c: &mut Criterion) { group.throughput(Throughput::Bytes((rows * rows * 8) as u64)); group.bench_with_input( - BenchmarkId::from_parameter(format!("{} x {}", rows, rows)), + BenchmarkId::new(format!("{} x {}", rows, rows), rows), &rows, |b, &rows| { b.iter_custom(|iters| { @@ -124,7 +129,94 @@ fn matmul_benchmark(c: &mut Criterion) { } } -criterion_group!(benches, matmul_benchmark); +fn module_load_helper(iters: u64, path: &str) -> Duration { + let mut total = Duration::new(0, 0); + + for _ in 0..iters { + let begin = std::time::Instant::now(); + let module = hip::module_load(path).unwrap(); + let duration = begin.elapsed(); + + drop(module); + total += duration + } + total +} + +fn module_load_data_helper(iters: u64, path: &str) -> Duration { + let mut total = Duration::new(0, 0); + + let file = fs::read(path).unwrap(); + let image = file.as_ptr() as *const c_void; + + for _ in 0..iters { + let begin = std::time::Instant::now(); + let module = hip::module_load_data(image).unwrap(); + let duration = begin.elapsed(); + + drop(module); + total += duration + } + total +} + +fn loading(c: &mut Criterion) { + let mut group = c.benchmark_group("Loading"); + + // hipModuleLoad + group.bench_with_input( + BenchmarkId::new("hipModuleLoad", 34), + "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco", + |b, path| b.iter_custom(|iters| module_load_helper(iters, path)), + ); + + group.bench_with_input( + BenchmarkId::new("hipModuleLoad", 61), + "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + |b, path| b.iter_custom(|iters| module_load_helper(iters, path)), + ); + + group.bench_with_input( + BenchmarkId::new("hipModuleLoad", 87), + "/home/smithj/dandelion/machine_interface/hip_interface/combined.hsaco", + |b, path| b.iter_custom(|iters| module_load_helper(iters, path)), + ); + + group.bench_with_input( + BenchmarkId::new("hipModuleLoad", 121), + "/home/smithj/dandelion/machine_interface/hip_interface/bigger.hsaco", + |b, path| b.iter_custom(|iters| module_load_helper(iters, path)), + ); + + // hipModuleLoadData + group.bench_with_input( + BenchmarkId::new("hipModuleLoadData", 34), + "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco", + |b, path| b.iter_custom(|iters| module_load_data_helper(iters, path)), + ); + + group.bench_with_input( + BenchmarkId::new("hipModuleLoadData", 61), + "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + |b, path| b.iter_custom(|iters| module_load_data_helper(iters, path)), + ); + + group.bench_with_input( + BenchmarkId::new("hipModuleLoadData", 87), + "/home/smithj/dandelion/machine_interface/hip_interface/combined.hsaco", + |b, path| b.iter_custom(|iters| module_load_data_helper(iters, path)), + ); + + group.bench_with_input( + BenchmarkId::new("hipModuleLoadData", 121), + "/home/smithj/dandelion/machine_interface/hip_interface/bigger.hsaco", + |b, path| b.iter_custom(|iters| module_load_data_helper(iters, path)), + ); + + group.finish(); +} + +criterion_group!(benches, loading); #[cfg(feature = "gpu")] criterion_main!(benches); diff --git a/machine_interface/hip_interface/bigger.hsaco b/machine_interface/hip_interface/bigger.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..15a2b267ec819cf67c8f5e0712ae5a9945aaa24e GIT binary patch literal 123680 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 ZiO=f3>NLqOao680_t~F}5Es4v{|6QqsFVNz literal 0 HcmV?d00001 diff --git a/machine_interface/hip_interface/combined.hsaco b/machine_interface/hip_interface/combined.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5e578dc26f2623ccca9afd2e150cad61ce398b0b GIT binary patch literal 88352 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 = Mutex::new(()); } + #[test] + fn module_load_data_test() { + let file = load_u8_from_file( + "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), + ) + .unwrap(); + + let image = file.as_ptr() as *const c_void; + + let module = hip::module_load_data(image).unwrap(); + + let func = hip::module_get_function(&module, "hello_world").unwrap(); + + let args: [*const c_void; 0] = []; + + assert!(hip::module_launch_kernel( + &func, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + DEFAULT_STREAM, + args.as_ptr(), + null() + ) + .is_ok()) + } + #[test] fn run_dummy_gpu_payload() { let _lock = GPU_LOCK.lock().unwrap(); - let mut runner = GpuLoop::init(0).unwrap(); + let mut runner = GpuLoop::init(ComputeResource::GPU(7, 0)).unwrap(); assert!(dummy_run(&mut runner).is_ok()); } @@ -701,7 +741,7 @@ mod compute_driver_tests { "foo", MemoryResource::None, driver, - vec![ComputeResource::GPU(1, 1)], + vec![ComputeResource::GPU(7, 0)], ); } @@ -714,7 +754,7 @@ mod compute_driver_tests { "bar", MemoryResource::None, &driver, - vec![ComputeResource::GPU(1, 1)], + vec![ComputeResource::GPU(7, 0)], ); // add inputs let in_size_offset = function_context @@ -774,7 +814,7 @@ mod compute_driver_tests { "/home/smithj/dandelion/machine_interface/hip_interface/matmul_loop.json"; let dom_init = MemoryResource::None; let driver: Box = Box::new(GpuDriver {}); - let drv_init = vec![ComputeResource::GPU(1, 1)]; + let drv_init = vec![ComputeResource::GPU(7, 0)]; let (mut function_context, config, queue) = prepare_engine_and_function::( filename, dom_init, &driver, drv_init, @@ -856,7 +896,7 @@ mod compute_driver_tests { "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; let dom_init = MemoryResource::None; let driver: Box = Box::new(GpuDriver {}); - let drv_init = vec![ComputeResource::GPU(1, 1)]; + let drv_init = vec![ComputeResource::GPU(7, 0)]; const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 5f01518c..d8117b61 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -29,7 +29,7 @@ use self::{ pub(crate) mod buffer_pool; pub(crate) mod config_parsing; pub mod gpu_utils; -pub(crate) mod hip; +pub mod hip; pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { // set gpu @@ -191,7 +191,6 @@ pub fn gpu_run( Ok(context) } -// TODO: remove pub at some point pub struct GpuLoop { cpu_slot: u8, // needed to set processes to run on that core gpu_id: u8, @@ -199,14 +198,16 @@ pub struct GpuLoop { } impl EngineLoop for GpuLoop { - // TODO: have init take a ComputeResource to set gpu_id - fn init(core_id: u8) -> DandelionResult> { + fn init(resource: ComputeResource) -> DandelionResult> { + let ComputeResource::GPU(cpu_slot, gpu_id) = resource else { + return Err(DandelionError::ConfigMissmatch); + }; + Ok(Box::new(Self { - cpu_slot: core_id, - gpu_id: 0, + cpu_slot, + gpu_id, buffers: Arc::new(Mutex::new(BufferPool::try_new(0)?)), })) - // this is where the process pool would be launched } fn run( @@ -276,7 +277,10 @@ impl Driver for GpuDriver { { return Err(DandelionError::EngineResourceError); } - // TODO: check gpu is available + // check gpu is available + if usize::from(gpu_id) >= hip::get_device_count()? { + return Err(DandelionError::EngineResourceError); + } // To switch between single executor and process pool // start_thread::(cpu_slot, queue); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 3d60aab4..1149f7ec 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -40,9 +40,11 @@ pub struct DevicePointer { #[link(name = "amdhip64")] extern "C" { + fn hipGetDeviceCount(count: *const i32) -> ErrorT; fn hipSetDevice(gpu_id: i32) -> ErrorT; fn hipDeviceSynchronize() -> ErrorT; fn hipModuleLoad(module: *mut _ModuleT, fname: *const i8) -> ErrorT; + fn hipModuleLoadData(module: *mut _ModuleT, image: *const c_void) -> ErrorT; fn hipModuleUnload(module: _ModuleT) -> ErrorT; fn hipModuleGetFunction( function: *mut _FunctionT, @@ -70,7 +72,6 @@ extern "C" { fn hipMemset(dst: *const c_void, value: i32, sizeBytes: size_t) -> ErrorT; } -// TODO: Possibly move away from DandelionResult if HipError not wanted macro_rules! checked_call { ($fcall: expr) => { unsafe { @@ -87,6 +88,14 @@ pub fn set_device(gpu_id: u8) -> DandelionResult<()> { Ok(()) } +pub fn get_device_count() -> DandelionResult { + let mut ret: i32 = -1; + checked_call!(hipGetDeviceCount(&mut ret as *const i32)); + + ret.try_into() + .map_err(|_| DandelionError::EngineResourceError) +} + pub fn device_synchronize() -> DandelionResult<()> { checked_call!(hipDeviceSynchronize()); Ok(()) @@ -108,6 +117,15 @@ pub fn module_load(path: &str) -> DandelionResult { Ok(ModuleT(ret)) } +// TODO: mark these functions as unsafe +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub fn module_load_data(image: *const c_void) -> DandelionResult { + let mut ret: _ModuleT = null(); + + checked_call!(hipModuleLoadData(&mut ret as *mut _ModuleT, image)); + Ok(ModuleT(ret)) +} + pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult { let mut ret: _FunctionT = null(); let kname = CString::new(name).or(Err(DandelionError::HipError("Invalid Name".into())))?; @@ -119,7 +137,7 @@ pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult DandelionResult> { + fn init(resource: ComputeResource) -> DandelionResult> { + let ComputeResource::CPU(core_id) = resource else { + return Err(DandelionError::ConfigMissmatch); + }; return Ok(Box::new(MmuLoop { cpu_slot: core_id })); } fn run( diff --git a/machine_interface/src/function_driver/compute_driver/wasm.rs b/machine_interface/src/function_driver/compute_driver/wasm.rs index 9caf4adc..36fc8cff 100644 --- a/machine_interface/src/function_driver/compute_driver/wasm.rs +++ b/machine_interface/src/function_driver/compute_driver/wasm.rs @@ -17,8 +17,8 @@ type WasmEntryPoint = fn(&mut [u8]) -> Option; struct WasmLoop {} impl EngineLoop for WasmLoop { - fn init(_core_id: u8) -> DandelionResult> { - return Ok(Box::new(WasmLoop {})); + fn init(_core_id: ComputeResource) -> DandelionResult> { + Ok(Box::new(WasmLoop {})) } fn run( &mut self, diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index ec909b0b..6a04068f 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -12,7 +12,7 @@ use std::thread::spawn; extern crate alloc; pub trait EngineLoop { - fn init(core_id: u8) -> DandelionResult>; + fn init(resource: ComputeResource) -> DandelionResult>; fn run( &mut self, config: FunctionConfig, @@ -27,7 +27,8 @@ fn run_thread(core_id: u8, queue: Box) { log::error!("core received core id that could not be set"); return; } - let mut engine_state = E::init(core_id).expect("Failed to initialize thread state"); + let mut engine_state = + E::init(ComputeResource::CPU(core_id)).expect("Failed to initialize thread state"); loop { // TODO catch unwind so we can always return an error or shut down gracefully let (args, debt) = queue.get_engine_args(); From 2217990682614025473505137f67e33e38d5a97b Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 19 Apr 2024 15:19:22 +0200 Subject: [PATCH 070/176] Add get_chunk_ref to context interface to make reading easier --- .../cheri/include/memory.h | 2 + .../c_machine_libraries/cheri/src/memory.c | 5 ++ machine_interface/src/memory_domain.rs | 31 +++++++++- .../{bytes.rs => bytes_context.rs} | 12 ++++ machine_interface/src/memory_domain/cheri.rs | 9 +++ .../src/memory_domain/domain_tests.rs | 59 ++++++++++++++++++- machine_interface/src/memory_domain/malloc.rs | 8 +++ machine_interface/src/memory_domain/mmap.rs | 4 ++ machine_interface/src/memory_domain/mmu.rs | 10 +++- .../src/memory_domain/read_only.rs | 7 +++ machine_interface/src/memory_domain/wasm.rs | 5 +- machine_interface/src/util/mmapmem.rs | 7 +++ 12 files changed, 152 insertions(+), 7 deletions(-) rename machine_interface/src/memory_domain/{bytes.rs => bytes_context.rs} (96%) diff --git a/machine_interface/c_machine_libraries/cheri/include/memory.h b/machine_interface/c_machine_libraries/cheri/include/memory.h index 347cec98..504cbec9 100644 --- a/machine_interface/c_machine_libraries/cheri/include/memory.h +++ b/machine_interface/c_machine_libraries/cheri/include/memory.h @@ -29,6 +29,8 @@ void cheri_write_context(cheri_context* context, unsigned char* source_pointer, void cheri_read_context(cheri_context* context, unsigned char* destination_pointer, size_t context_offset, size_t size); +unsigned char* cheri_get_chunk_ref(cheri_context* context, + size_t context_offset); void cheri_transfer_context(cheri_context* destination, cheri_context* source, size_t destination_offset, size_t source_offset, size_t size); diff --git a/machine_interface/c_machine_libraries/cheri/src/memory.c b/machine_interface/c_machine_libraries/cheri/src/memory.c index 12efcc3e..22538f2d 100644 --- a/machine_interface/c_machine_libraries/cheri/src/memory.c +++ b/machine_interface/c_machine_libraries/cheri/src/memory.c @@ -101,6 +101,11 @@ void cheri_read_context(cheri_context *context, memcpy(destination_pointer, src, size); } +unsigned char* cheri_get_chunk_ref(cheri_context* context, + size_t context_offset){ + return ((unsigned char*)(__cheri_fromcap void*)context->cap) + context_offset; +} + void cheri_transfer_context(cheri_context *destination, cheri_context *source, size_t destination_offset, size_t source_offset, size_t size) { diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 277f4c5e..c25cce77 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -1,6 +1,6 @@ // list of memory domain implementations #[cfg(feature = "bytes_context")] -pub mod bytes; +pub mod bytes_context; #[cfg(feature = "cheri")] pub mod cheri; pub mod malloc; @@ -15,8 +15,17 @@ use crate::{DataItem, DataSet, Position}; use dandelion_commons::{DandelionError, DandelionResult}; pub trait ContextTrait: Send + Sync { + /// Write data at the given offset into the context + /// May fail if the range offset..offset+data lenght in bytes is not completely within the context size fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()>; + /// Read data from the context into the read buffer + /// May fail if the range offset..offset+buffer length in bytes is not completely within context size fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()>; + /// Get a &[u8] reference to a chunck of at reference with size up to length. + /// May return a slice smaller then the requwested length if there is internal fragementation that + /// prevents an efficient slice representation of the entire chunck + /// May fail if the range offset..offset+length is not completely within the context size + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]>; } // https://docs.rs/enum_dispatch/latest/enum_dispatch/index.html @@ -27,7 +36,7 @@ pub enum ContextType { Mmap(Box), ReadOnly(Box), #[cfg(feature = "bytes_context")] - Bytes(Box), + Bytes(Box), #[cfg(feature = "cheri")] Cheri(Box), #[cfg(feature = "mmu")] @@ -67,6 +76,21 @@ impl ContextTrait for ContextType { ContextType::Bytes(context) => context.read(offset, read_buffer), } } + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + match self { + ContextType::Malloc(context) => context.get_chunk_ref(offset, length), + ContextType::Mmap(context) => context.get_chunk_ref(offset, length), + ContextType::ReadOnly(context) => context.get_chunk_ref(offset, length), + #[cfg(feature = "cheri")] + ContextType::Cheri(context) => context.get_chunk_ref(offset, length), + #[cfg(feature = "mmu")] + ContextType::Mmu(context) => context.get_chunk_ref(offset, length), + #[cfg(feature = "wasm")] + ContextType::Wasm(context) => context.get_chunk_ref(offset, length), + #[cfg(feature = "bytes_context")] + ContextType::Bytes(context) => context.get_chunk_ref(offset, length), + } + } } #[derive(Debug)] @@ -91,6 +115,9 @@ impl ContextTrait for Context { fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { self.context.read(offset, read_buffer) } + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + self.context.get_chunk_ref(offset, length) + } } impl Context { diff --git a/machine_interface/src/memory_domain/bytes.rs b/machine_interface/src/memory_domain/bytes_context.rs similarity index 96% rename from machine_interface/src/memory_domain/bytes.rs rename to machine_interface/src/memory_domain/bytes_context.rs index 65c635ff..48729fa6 100644 --- a/machine_interface/src/memory_domain/bytes.rs +++ b/machine_interface/src/memory_domain/bytes_context.rs @@ -53,6 +53,18 @@ impl ContextTrait for BytesContext { } return Err(DandelionError::InvalidRead); } + fn get_chunk_ref(&self, mut offset: usize, length: usize) -> DandelionResult<&[u8]> { + for frame in self.frames.iter() { + if offset > frame.len() { + offset -= frame.len(); + } else if frame.len() >= offset + length { + return Ok(&frame[offset..offset + length]); + } else { + return Ok(&frame[offset..]); + } + } + return Err(DandelionError::InvalidRead); + } } struct FrameBuf<'data> { diff --git a/machine_interface/src/memory_domain/cheri.rs b/machine_interface/src/memory_domain/cheri.rs index 3908b748..483e5db4 100644 --- a/machine_interface/src/memory_domain/cheri.rs +++ b/machine_interface/src/memory_domain/cheri.rs @@ -23,6 +23,7 @@ extern "C" { context_offset: size_t, size: size_t, ) -> (); + fn cheri_get_chunk_ref(context: *const cheri_c_context, context_offset: size_t) -> *const u8; fn cheri_transfer_context( destination: *const cheri_c_context, source: *const cheri_c_context, @@ -82,6 +83,14 @@ impl ContextTrait for CheriContext { } Ok(()) } + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + if offset + length > self.size { + return Err(DandelionError::InvalidRead); + } + Ok(unsafe { + core::slice::from_raw_parts(cheri_get_chunk_ref(self.context, offset), length) + }) + } } impl Drop for CheriContext { diff --git a/machine_interface/src/memory_domain/domain_tests.rs b/machine_interface/src/memory_domain/domain_tests.rs index a68373b6..15a71ef4 100644 --- a/machine_interface/src/memory_domain/domain_tests.rs +++ b/machine_interface/src/memory_domain/domain_tests.rs @@ -68,9 +68,11 @@ fn read( let mut context = domain .acquire_context(context_size) .expect("Context should always be allocatable"); - context - .write(0, &vec![BYTEPATTERN; context_size]) - .expect("Writing should succeed"); + if expect_success { + context + .write(offset, &vec![BYTEPATTERN; size]) + .expect("Writing should succeed"); + } let mut read_buffer = vec![0; size]; let read_error = context.read(offset, &mut read_buffer); match (expect_success, read_error) { @@ -81,6 +83,37 @@ fn read( } } +fn get_chunks( + arg: MemoryResource, + context_size: usize, + offset: usize, + size: usize, + expect_success: bool, +) { + let domain = init_domain::(arg); + let mut context = domain + .acquire_context(context_size) + .expect("Context should always be allocatable"); + if expect_success { + context + .write(offset, &vec![BYTEPATTERN; size]) + .expect("Writing should succeed"); + } + let mut total_read = 0usize; + while total_read < size { + let chunk_ref_result = context.get_chunk_ref(offset + total_read, size - total_read); + match (expect_success, chunk_ref_result) { + (true, Ok(chunk_ref)) => { + assert_eq!(&vec![BYTEPATTERN; chunk_ref.len()], chunk_ref); + total_read += chunk_ref.len() + } + (false, Ok(_)) => panic!("Unexpected ok from get_chunk_ref"), + (false, Err(DandelionError::InvalidRead)) => return, + (_, Err(err)) => panic!("Unexpected error from get_chunk_ref {:?}", err), + } + } +} + fn transefer(arg: MemoryResource, size: usize) { let domain = init_domain::(arg); let mut destination = domain @@ -184,6 +217,10 @@ macro_rules! domainTests { read::<$domain>($init, 1, 0, 1, true); } #[test] + fn test_read_large_success() { + read::<$domain>($init, 12288, 2048, 8192, true); + } + #[test] fn test_read_single_oob_offset() { read::<$domain>($init, 1, 1, 1, false); } @@ -192,6 +229,22 @@ macro_rules! domainTests { read::<$domain>($init, 1, 0, 2, false); } #[test] + fn test_chunk_ref_single_success() { + get_chunks::<$domain>($init, 1, 0, 1, true); + } + #[test] + fn test_chunk_ref_single_oob_offset() { + get_chunks::<$domain>($init, 1, 1, 1, false); + } + #[test] + fn test_chunk_ref_single_oob_size() { + read::<$domain>($init, 1, 0, 2, false); + } + #[test] + fn test_chunk_ref_large_success() { + read::<$domain>($init, 12288, 2048, 8192, true); + } + #[test] fn test_write_single_oob_offset() { write::<$domain>($init, 1, 1, 1, false); } diff --git a/machine_interface/src/memory_domain/malloc.rs b/machine_interface/src/memory_domain/malloc.rs index aba51601..705216ca 100644 --- a/machine_interface/src/memory_domain/malloc.rs +++ b/machine_interface/src/memory_domain/malloc.rs @@ -54,6 +54,14 @@ impl ContextTrait for MallocContext { } return Ok(()); } + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + if offset + length > self.layout.size() { + return Err(DandelionError::InvalidRead); + } + return Ok(unsafe { + core::slice::from_raw_parts(self.storage.as_ref(), self.layout.size()) + }); + } } #[derive(Debug)] diff --git a/machine_interface/src/memory_domain/mmap.rs b/machine_interface/src/memory_domain/mmap.rs index d7128329..7bea99f6 100644 --- a/machine_interface/src/memory_domain/mmap.rs +++ b/machine_interface/src/memory_domain/mmap.rs @@ -21,6 +21,10 @@ impl ContextTrait for MmapContext { fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { self.storage.read(offset, read_buffer) } + + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + self.storage.get_chunk_ref(offset, length) + } } #[derive(Debug)] diff --git a/machine_interface/src/memory_domain/mmu.rs b/machine_interface/src/memory_domain/mmu.rs index 1ce414dc..35c1b0fd 100644 --- a/machine_interface/src/memory_domain/mmu.rs +++ b/machine_interface/src/memory_domain/mmu.rs @@ -30,6 +30,14 @@ impl ContextTrait for MmuContext { } self.storage.read(offset, read_buffer) } + + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + if offset < MMAP_BASE_ADDR { + warn!("read offset smaller than MMAP_BASE_ADDR") + // TODO: could be an issue if the context will be used by mmu_worker (function context) + } + self.storage.get_chunk_ref(offset, length) + } } #[derive(Debug)] @@ -77,7 +85,7 @@ pub fn mmu_transfer( #[cfg(feature = "bytes_context")] pub fn bytest_to_mmu_transfer( destination: &mut MmuContext, - source: &crate::memory_domain::bytes::BytesContext, + source: &crate::memory_domain::bytes_context::BytesContext, destination_offset: usize, source_offset: usize, size: usize, diff --git a/machine_interface/src/memory_domain/read_only.rs b/machine_interface/src/memory_domain/read_only.rs index 9dd4033f..91b42636 100644 --- a/machine_interface/src/memory_domain/read_only.rs +++ b/machine_interface/src/memory_domain/read_only.rs @@ -34,6 +34,13 @@ impl ContextTrait for ReadOnlyContext { byte_buffer.copy_from_slice(&self.storage[offset..offset + read_size]); return Ok(()); } + + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + if offset + length > self.storage.len() { + return Err(DandelionError::InvalidRead); + } + return Ok(&self.storage[offset..offset + length]); + } } impl ReadOnlyContext { diff --git a/machine_interface/src/memory_domain/wasm.rs b/machine_interface/src/memory_domain/wasm.rs index cae7c107..31fb3b46 100644 --- a/machine_interface/src/memory_domain/wasm.rs +++ b/machine_interface/src/memory_domain/wasm.rs @@ -18,6 +18,9 @@ impl ContextTrait for WasmContext { fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { self.mem.read(offset, read_buffer) } + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + self.mem.get_chunk_ref(offset, length) + } } #[derive(Debug)] @@ -56,7 +59,7 @@ pub fn wasm_transfer( #[cfg(feature = "bytes_context")] pub fn bytes_to_wasm_transfer( destination: &mut WasmContext, - source: &crate::memory_domain::bytes::BytesContext, + source: &crate::memory_domain::bytes_context::BytesContext, destination_offset: usize, source_offset: usize, size: usize, diff --git a/machine_interface/src/util/mmapmem.rs b/machine_interface/src/util/mmapmem.rs index 247b53ae..5d2f02aa 100644 --- a/machine_interface/src/util/mmapmem.rs +++ b/machine_interface/src/util/mmapmem.rs @@ -225,6 +225,13 @@ impl MmapMem { Ok(()) } + + pub fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + if offset + length > self.size() { + return Err(DandelionError::InvalidRead); + } + return Ok(unsafe { &self.as_slice()[offset..offset + length] }); + } } unsafe impl Send for MmapMem {} From 6dd92859c98c29cec7f72a90efad8c386aeca41a Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 19 Apr 2024 18:20:07 +0200 Subject: [PATCH 071/176] Try to make serde serialize directly from contexts --- server/src/lib.rs | 122 ++++++++++++++++++----------------- server/src/main.rs | 25 +------ server/tests/server_tests.rs | 8 +-- 3 files changed, 68 insertions(+), 87 deletions(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index 717cf945..f87fdf9a 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -1,73 +1,76 @@ pub mod config; use dispatcher::composition::CompositionSet; -use machine_interface::{ - memory_domain::{read_only::ReadOnlyContext, Context, ContextTrait}, - DataItem, DataSet, Position, -}; +use machine_interface::memory_domain::{Context, ContextTrait}; use serde::{Deserialize, Serialize}; -use std::collections::BTreeMap; +use std::{collections::BTreeMap, sync::Arc}; #[derive(Serialize, Deserialize)] -#[allow(dead_code)] -pub struct DandelionRequest { +pub struct DandelionRequest<'data> { pub name: String, - pub sets: Vec, + #[serde(borrow)] + pub sets: Vec>, } #[derive(Serialize, Deserialize)] -#[allow(dead_code)] +pub struct DandelionDeserializeResponse<'data> { + #[serde(borrow)] + pub sets: Vec>, +} + +#[derive(Serialize, Deserialize)] +pub struct InputSet<'data> { + pub identifier: String, + #[serde(borrow)] + pub items: Vec>, +} + +#[derive(Serialize, Deserialize)] +pub struct InputItem<'data> { + pub identifier: String, + pub key: u32, + #[serde(with = "serde_bytes")] + pub data: &'data [u8], +} + +#[derive(Serialize)] pub struct DandelionResponse { - pub sets: Vec, + pub sets: Vec, } -#[derive(Deserialize, Serialize)] -#[allow(dead_code)] -pub struct InputSet { +#[derive(Serialize)] +pub struct OutputSet { pub identifier: String, - pub items: Vec, + pub items: Vec, } -#[derive(Deserialize, Serialize)] -#[allow(dead_code)] -pub struct InputItem { +#[derive(Serialize)] +pub struct OutputItem { pub identifier: String, pub key: u32, #[serde(with = "serde_bytes")] - pub data: Vec, + data: ReadSlice, } -pub fn parse_request(request: DandelionRequest) -> (String, Context) { - let DandelionRequest { name, sets } = request; - let mut context_buffer = Vec::new(); - let mut buffer_offset = 0usize; - let mut context_sets = Vec::new(); - for InputSet { identifier, items } in sets { - let mut set_items = Vec::new(); - for InputItem { - identifier, - key, - data, - } in items - { - set_items.push(DataItem { - ident: identifier, - key, - data: Position { - offset: buffer_offset, - size: buffer_offset + data.len(), - }, - }); - buffer_offset += data.len(); - context_buffer.extend_from_slice(&data); - } - context_sets.push(Some(DataSet { - ident: identifier, - buffers: set_items, - })); +struct ReadSlice { + context: Arc, + offset: usize, + size: usize, +} + +impl core::ops::Deref for ReadSlice { + type Target = [u8]; + fn deref(&self) -> &Self::Target { + return self.context.get_chunk_ref(self.offset, self.size).unwrap(); + } +} + +impl serde_bytes::Serialize for ReadSlice { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_bytes(&self) } - let mut context = ReadOnlyContext::new(context_buffer.into()).unwrap(); - context.content = context_sets; - return (name, context); } pub fn create_response(response_sets: BTreeMap) -> Vec { @@ -82,20 +85,21 @@ pub fn create_response(response_sets: BTreeMap) -> Vec::with_capacity(item.data.size); - read_buffer.resize(item.data.size, 0); - context - .context - .read(item.data.offset, &mut read_buffer) - .unwrap(); - response_items.push(InputItem { + let local_context = context.clone(); + let item = &local_context.content[set_index].as_ref().unwrap().buffers[item_index]; + let offset = item.data.offset; + let size = item.data.size; + response_items.push(OutputItem { identifier: item.ident.clone(), key: item.key, - data: read_buffer, + data: ReadSlice { + context: local_context, + offset: offset, + size: size, + }, }); } - response_data.push(InputSet { + response_data.push(OutputSet { identifier: set_name, items: response_items, }); diff --git a/server/src/main.rs b/server/src/main.rs index 388b30be..a4e2e94c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -15,7 +15,7 @@ use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, memory_domain::{ - bytes::BytesContext, mmap::MmapMemoryDomain, Context, ContextTrait, MemoryDomain, + bytes_context::BytesContext, mmap::MmapMemoryDomain, Context, ContextTrait, MemoryDomain, }, DataItem, DataSet, Position, }; @@ -156,29 +156,6 @@ async fn run_mat_func( return dandelion_server::create_response(result); } -// Given a result context, return the last element of the resulting matrix -fn get_checksum(composition_set: CompositionSet) -> i64 { - // Determine offset of last matrix element - assert_eq!(1, composition_set.context_list.len()); - let context = &composition_set.context_list[0].0; - let output_dataset = context.content[0].as_ref().expect("Should contain matrix"); - let output_item = output_dataset - .buffers - .iter() - .find(|buffer| buffer.key == 0) - .expect("should find a buffer with the correct key") - .data; - let checksum_offset = output_item.offset + output_item.size - 8; - - // Read out the checksum - let mut read_buffer: Vec = vec![0; 1]; - context - .read(checksum_offset, &mut read_buffer) - .expect("Context should contain matrix"); - - return read_buffer[0]; -} - async fn serve_request( is_cold: bool, req: Request, diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 8ac79fbb..351504e6 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -6,7 +6,7 @@ mod server_tests { use assert_cmd::prelude::*; use byteorder::{LittleEndian, ReadBytesExt}; - use dandelion_server::{DandelionRequest, DandelionResponse, InputItem, InputSet}; + use dandelion_server::{DandelionDeserializeResponse, DandelionRequest, InputItem, InputSet}; use serde::Serialize; use std::{ io::{BufRead, BufReader, Cursor, Read}, @@ -83,7 +83,7 @@ mod server_tests { items: vec![InputItem { identifier: String::from(""), key: 0, - data: data, + data: &data, }], }], }; @@ -97,10 +97,10 @@ mod server_tests { assert!(resp.status().is_success()); let body = resp.bytes().unwrap(); - let response: DandelionResponse = bson::from_slice(&body).unwrap(); + let response: DandelionDeserializeResponse = bson::from_slice(&body).unwrap(); assert_eq!(1, response.sets.len()); assert_eq!(1, response.sets[0].items.len()); - let response_data = &response.sets[0].items[0].data; + let response_data = response.sets[0].items[0].data; assert_eq!(response_data.len(), 16); let mut reader = Cursor::new(response_data); let mat_size = reader.read_u64::().unwrap(); From de89684883c886dd36d45a104294899455a5cd39 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sat, 20 Apr 2024 15:48:02 +0200 Subject: [PATCH 072/176] Loading module from Context --- machine_interface/hip_interface/basic_io.json | 18 ++++++ .../{foo.json => gpu_function_2.json} | 0 machine_interface/hip_interface/minimal.json | 18 ++++++ machine_interface/src/bin/gpu_worker.rs | 4 +- machine_interface/src/function_driver.rs | 13 +++- .../compute_driver/compute_driver_tests.rs | 5 +- .../src/function_driver/compute_driver/gpu.rs | 59 +++++++++++-------- .../compute_driver/gpu/config_parsing.rs | 43 +++++++------- .../compute_driver/gpu/gpu_utils.rs | 3 +- 9 files changed, 108 insertions(+), 55 deletions(-) create mode 100644 machine_interface/hip_interface/basic_io.json rename machine_interface/hip_interface/{foo.json => gpu_function_2.json} (100%) create mode 100644 machine_interface/hip_interface/minimal.json diff --git a/machine_interface/hip_interface/basic_io.json b/machine_interface/hip_interface/basic_io.json new file mode 100644 index 00000000..18d36c94 --- /dev/null +++ b/machine_interface/hip_interface/basic_io.json @@ -0,0 +1,18 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + "kernels": ["check_then_write"], + "blueprint": { + "inputs": ["A"], + "buffers": {}, + "outputs": ["A"], + "control_flow": [ + {"ExecKernel": ["check_then_write", [{"Ptr": "A"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, + "shared_mem_bytes": 0 + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/hip_interface/foo.json b/machine_interface/hip_interface/gpu_function_2.json similarity index 100% rename from machine_interface/hip_interface/foo.json rename to machine_interface/hip_interface/gpu_function_2.json diff --git a/machine_interface/hip_interface/minimal.json b/machine_interface/hip_interface/minimal.json new file mode 100644 index 00000000..e89709ca --- /dev/null +++ b/machine_interface/hip_interface/minimal.json @@ -0,0 +1,18 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + "kernels": ["set_mem", "check_mem"], + "blueprint": { + "inputs": [], + "buffers": {"A": {"Absolute": 1024}}, + "outputs": [], + "control_flow": [ + {"ExecKernel": ["set_mem", [{"Ptr": "A"}, {"Sizeof": "A"}], { + "grid_dim_x": {"CoverBuffer": {"bufname": "A", "dimensionality": 1, "block_dim": 1024}}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": 1024, "block_dim_y": 1, "block_dim_z": 1, + "shared_mem_bytes": 0 + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/src/bin/gpu_worker.rs b/machine_interface/src/bin/gpu_worker.rs index 3e23da5c..92a29676 100644 --- a/machine_interface/src/bin/gpu_worker.rs +++ b/machine_interface/src/bin/gpu_worker.rs @@ -36,8 +36,8 @@ fn main() { Ok(()) => { println!("__OK__"); } - Err(_) => { - println!("__ERROR__"); + Err(e) => { + println!("__ERROR__ {:?}", e); } } } diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index d94881a9..cb636121 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -2,7 +2,7 @@ use std::{collections::HashMap, sync::Mutex}; use crate::{ interface::DandelionSystemData, - memory_domain::{Context, MemoryDomain}, + memory_domain::{transfer_memory, Context, MemoryDomain}, DataRequirementList, Position, }; extern crate alloc; @@ -59,7 +59,7 @@ pub struct WasmConfig { #[derive(Clone, Serialize, Deserialize)] pub struct GpuConfig { pub system_data_struct_offset: usize, - pub module_path: Arc, + pub module_offset: usize, pub kernels: Arc>, #[cfg(feature = "gpu")] pub blueprint: Arc, @@ -106,7 +106,14 @@ impl Function { cfg.system_data_struct_offset, std::mem::size_of::>(), )?; - + transfer_memory( + &mut ctxt, + &self.context, + cfg.module_offset, + 0, + self.context.size, + )?; + ctxt.occupy_space(cfg.module_offset, self.context.size)?; Ok(ctxt) } } diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index ac69a415..a71d66b9 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -697,6 +697,7 @@ mod compute_driver_tests { #[test] fn module_load_data_test() { + let _lock = GPU_LOCK.lock().unwrap(); let file = load_u8_from_file( "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), ) @@ -738,7 +739,7 @@ mod compute_driver_tests { let _lock = GPU_LOCK.lock().unwrap(); let driver: Box = Box::new(GpuDriver {}); engine_minimal::( - "foo", + "/home/smithj/dandelion/machine_interface/hip_interface/minimal.json", MemoryResource::None, driver, vec![ComputeResource::GPU(7, 0)], @@ -751,7 +752,7 @@ mod compute_driver_tests { let driver: Box = Box::new(GpuDriver {}); let (mut function_context, config, queue) = prepare_engine_and_function::( - "bar", + "/home/smithj/dandelion/machine_interface/hip_interface/basic_io.json", MemoryResource::None, &driver, vec![ComputeResource::GPU(7, 0)], diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index d8117b61..5e62b1b8 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -1,18 +1,20 @@ use crate::{ function_driver::{ + load_utils::load_u8_from_file, thread_utils::{start_thread, EngineLoop}, ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, - interface::{read_output_structs, setup_input_structs, write_gpu_outputs}, + interface::{read_output_structs, setup_input_structs, write_gpu_outputs, DandelionSystemData}, memory_domain::{Context, ContextTrait, ContextType}, promise::Debt, - DataRequirementList, DataSet, + DataItem, DataRequirementList, DataSet, Position, }; use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; use std::{ collections::HashMap, + mem::size_of, process::{Child, ChildStdin, ChildStdout, Command, Stdio}, ptr::null, sync::{Arc, Mutex}, @@ -92,7 +94,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { pub fn gpu_run( cpu_slot: usize, gpu_id: u8, - config: RuntimeGpuConfig, + config: GpuConfig, buffer_pool: Arc>, mut context: Context, output_names: Arc>, @@ -105,6 +107,7 @@ pub fn gpu_run( return Err(DandelionError::ConfigMissmatch); }; let base = mmu_context.storage.as_ptr(); + let config = config.load(base)?; hip::set_device(gpu_id)?; // TODO: disable device-side malloc @@ -226,14 +229,14 @@ impl EngineLoop for GpuLoop { // in thread in case the kernel crashes let cpu_slot_clone = self.cpu_slot as usize; let gpu_id_clone = self.gpu_id; - let runtime_config: RuntimeGpuConfig = config.try_into()?; + let config_clone = config.clone(); let outputs = output_sets.clone(); let buffer_pool = self.buffers.clone(); let handle = thread::spawn(move || { gpu_run( cpu_slot_clone, gpu_id_clone, - runtime_config, + config_clone, buffer_pool, context, outputs, @@ -294,28 +297,34 @@ impl Driver for GpuDriver { static_domain: &Box, ) -> dandelion_commons::DandelionResult { // Concept for now: function_path gives config file which contains name of module (.hsaco) file - let config = if function_path == "foo" { - FunctionConfig::GpuConfig(config_parsing::dummy_config()?) - } else if function_path == "bar" { - FunctionConfig::GpuConfig(config_parsing::dummy_config2()?) - } else if function_path == "matmul_loop" { - FunctionConfig::GpuConfig(config_parsing::matmul_dummy(false)?) - } else if function_path == "matmul_para" { - FunctionConfig::GpuConfig(config_parsing::matmul_dummy(true)?) - } else { - FunctionConfig::GpuConfig(config_parsing::parse_config(&function_path)?) - }; - - let total_size = 0usize; - - let mut context = static_domain.acquire_context(total_size)?; - - // Taken from wasm.rs; TODO: ask Tom why/if this is the case - // there must be one data set, which would normally describe the - // elf sections to be copied + // let config = if function_path == "foo" { + // FunctionConfig::GpuConfig(config_parsing::dummy_config()?) + // } else if function_path == "bar" { + // FunctionConfig::GpuConfig(config_parsing::dummy_config2()?) + // } else if function_path == "matmul_loop" { + // FunctionConfig::GpuConfig(config_parsing::matmul_dummy(false)?) + // } else if function_path == "matmul_para" { + // FunctionConfig::GpuConfig(config_parsing::matmul_dummy(true)?) + // } else { + // FunctionConfig::GpuConfig(config_parsing::parse_config(&function_path)?) + // }; + let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; + + let code_object = load_u8_from_file(module_path)?; + let size = code_object.len() * size_of::(); + let mut context = static_domain.acquire_context(size)?; + context.write(0, &code_object)?; + gpu_config.module_offset = std::mem::size_of::>(); + + let config = FunctionConfig::GpuConfig(gpu_config); + // Location of code object context.content = vec![Some(DataSet { ident: String::from("static"), - buffers: vec![], + buffers: vec![DataItem { + ident: String::from(""), + data: Position { offset: 0, size }, + key: 0, + }], })]; let requirements = DataRequirementList { static_requirements: vec![], diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 8672760a..ac34c131 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -2,17 +2,19 @@ use std::{ collections::HashMap, fs::{self, File}, io::BufReader, + os::raw::c_void, sync::Arc, }; use dandelion_commons::{DandelionError, DandelionResult}; use serde::{Deserialize, Serialize}; -use crate::function_driver::GpuConfig; +use crate::{function_driver::GpuConfig, interface::DandelionSystemData, memory_domain::Context}; use super::hip::{self, FunctionT, ModuleT}; const SYSDATA_OFFSET: usize = 0usize; +const MODULE_OFFSET: usize = std::mem::size_of::>(); // This is subject to change; not very happy with it #[derive(Deserialize, Serialize, Debug)] @@ -102,9 +104,7 @@ pub struct ExecutionBlueprint { pub fn dummy_config() -> DandelionResult { Ok(GpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module_path: Arc::new( - "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), - ), + module_offset: MODULE_OFFSET, kernels: Arc::new(vec!["set_mem".into(), "check_mem".into()]), blueprint: Arc::new(ExecutionBlueprint { inputs: vec![], @@ -129,9 +129,7 @@ pub fn dummy_config() -> DandelionResult { pub fn dummy_config2() -> DandelionResult { Ok(GpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module_path: Arc::new( - "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), - ), + module_offset: MODULE_OFFSET, kernels: Arc::new(vec!["check_then_write".into()]), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], @@ -155,9 +153,7 @@ pub fn matmul_dummy(parallel: bool) -> DandelionResult { Ok(GpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module_path: Arc::new( - "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco".into(), - ), + module_offset: MODULE_OFFSET, kernels: Arc::new(vec![fn_name.into()]), blueprint: Arc::new(ExecutionBlueprint { inputs: vec!["A".into()], @@ -191,7 +187,7 @@ impl From for GpuConfig { fn from(value: GpuConfigIR) -> Self { Self { system_data_struct_offset: SYSDATA_OFFSET, - module_path: Arc::new(value.module_path), + module_offset: 0, kernels: Arc::new(value.kernels), blueprint: Arc::new(value.blueprint), } @@ -206,32 +202,35 @@ pub struct RuntimeGpuConfig { pub blueprint: Arc, } -impl TryFrom for RuntimeGpuConfig { - type Error = DandelionError; - fn try_from(value: GpuConfig) -> Result { - let module = hip::module_load(&value.module_path)?; - let kernels = value +impl GpuConfig { + pub fn load(self, base: *const u8) -> DandelionResult { + let module = hip::module_load_data(base.wrapping_add(self.module_offset) as *const c_void)?; + let kernels = self .kernels .iter() .map(|kname| { hip::module_get_function(&module, kname).map(|module| (kname.clone(), module)) }) .collect::, _>>()?; // this is kinda ugly but also pretty cool - Ok(Self { + Ok(RuntimeGpuConfig { system_data_struct_offset: SYSDATA_OFFSET, module: Arc::new(module), kernels: Arc::new(kernels), - blueprint: value.blueprint, + blueprint: self.blueprint, }) } } -pub fn parse_config(path: &str) -> DandelionResult { +pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { + // TODO: better erros let file = File::open(path).map_err(|_| DandelionError::ConfigMissmatch)?; let reader = BufReader::new(file); - let ir: GpuConfigIR = - serde_json::from_reader(reader).map_err(|_| DandelionError::ConfigMissmatch)?; - Ok(ir.into()) + let mut ir: GpuConfigIR = serde_json::from_reader(reader).map_err(|e| { + eprintln!("Parsing error: {e}"); + DandelionError::ConfigMissmatch + })?; + let module_path: String = ir.module_path.drain(..).collect(); + Ok((ir.into(), module_path)) } // For me so I could see how the file would look. Keeping it for now until format is finalised diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 247b9604..8dd23963 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -167,7 +167,8 @@ async fn process_output(worker: Arc) { } if let Err(e) = recorder.record(RecordPoint::EngineEnd) { debt.fulfill(Box::new(Err(e))); - } else if line.trim() == "__ERROR__" { + } else if line.trim().starts_with("__ERROR__") { + eprintln!("GPU error: {}", line); debt.fulfill(Box::new(Err(DandelionError::EngineError))); } else { read_output_structs::(&mut context, 0).unwrap(); From 35b5289f2faad0fa2b3325239d898bdbb16430ca Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:45:45 +0200 Subject: [PATCH 073/176] add gpu engines to server --- .../src/function_driver/compute_driver/gpu.rs | 2 +- machine_interface/src/machine_config.rs | 16 +++++++++++++++ machine_interface/src/memory_domain.rs | 8 -------- machine_interface/src/memory_domain/gpu.rs | 20 ------------------- server/Cargo.toml | 3 ++- server/src/main.rs | 19 +++++++++++++++++- 6 files changed, 37 insertions(+), 31 deletions(-) delete mode 100644 machine_interface/src/memory_domain/gpu.rs diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 5e62b1b8..6a4b949a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -209,7 +209,7 @@ impl EngineLoop for GpuLoop { Ok(Box::new(Self { cpu_slot, gpu_id, - buffers: Arc::new(Mutex::new(BufferPool::try_new(0)?)), + buffers: Arc::new(Mutex::new(BufferPool::try_new(gpu_id)?)), })) } diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index 7bb0bc07..a213f0e4 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -18,6 +18,8 @@ pub enum EngineType { RWasm, #[cfg(feature = "mmu")] Process, + #[cfg(feature = "gpu")] + Gpu, } #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] @@ -29,6 +31,8 @@ pub enum DomainType { RWasm, #[cfg(feature = "mmu")] Process, + #[cfg(feature = "gpu")] + Gpu, } pub fn get_compatibilty_table() -> BTreeMap { @@ -41,6 +45,8 @@ pub fn get_compatibilty_table() -> BTreeMap { (EngineType::RWasm, DomainType::RWasm), #[cfg(feature = "mmu")] (EngineType::Process, DomainType::Process), + #[cfg(feature = "gpu")] + (EngineType::Gpu, DomainType::Gpu), ]); } @@ -76,6 +82,11 @@ pub fn get_available_domains() -> BTreeMap> { DomainType::Process, crate::memory_domain::mmu::MmuMemoryDomain::init(MemoryResource::None).unwrap(), ), + #[cfg(feature = "gpu")] + ( + DomainType::Gpu, + crate::memory_domain::mmu::MmuMemoryDomain::init(MemoryResource::None).unwrap(), + ), ]); } @@ -104,5 +115,10 @@ pub fn get_available_drivers() -> BTreeMap> { EngineType::Process, Box::new(crate::function_driver::compute_driver::mmu::MmuDriver {}) as Box, ), + #[cfg(feature = "gpu")] + ( + EngineType::Gpu, + Box::new(crate::function_driver::compute_driver::gpu::GpuDriver {}) as Box, + ), ]); } diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 849b582a..93e2ee7e 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -1,8 +1,6 @@ // list of memory domain implementations #[cfg(feature = "cheri")] pub mod cheri; -#[cfg(feature = "gpu")] -pub mod gpu; pub mod malloc; pub mod mmap; #[cfg(any(feature = "mmu", feature = "gpu"))] @@ -33,8 +31,6 @@ pub enum ContextType { Mmu(Box), #[cfg(feature = "wasm")] Wasm(Box), - #[cfg(feature = "gpu")] - Gpu(Box), } impl ContextTrait for ContextType { @@ -49,8 +45,6 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.write(offset, data), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.write(offset, data), - #[cfg(feature = "gpu")] - ContextType::Gpu(context) => context.write(offset, data), } } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { @@ -64,8 +58,6 @@ impl ContextTrait for ContextType { ContextType::Mmu(context) => context.read(offset, read_buffer), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.read(offset, read_buffer), - #[cfg(feature = "gpu")] - ContextType::Gpu(context) => context.read(offset, read_buffer), } } } diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs deleted file mode 100644 index a26c8523..00000000 --- a/machine_interface/src/memory_domain/gpu.rs +++ /dev/null @@ -1,20 +0,0 @@ -use dandelion_commons::DandelionResult; - -use super::ContextTrait; - -// NOTE: might be removed in the future - -#[derive(Debug)] -pub struct GpuContext {} - -unsafe impl Send for GpuContext {} -unsafe impl Sync for GpuContext {} - -impl ContextTrait for GpuContext { - fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { - todo!() - } - fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { - todo!() - } -} diff --git a/server/Cargo.toml b/server/Cargo.toml index 989e6cb4..7ce54680 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -30,4 +30,5 @@ reqwest = { version = "0.11", default-features = false, features = ["blocking"] cheri = ["machine_interface/cheri"] mmu = ["machine_interface/mmu"] wasm = ["machine_interface/wasm"] -hyper_io = ["machine_interface/hyper_io"] \ No newline at end of file +hyper_io = ["machine_interface/hyper_io"] +gpu = ["machine_interface/gpu"] \ No newline at end of file diff --git a/server/src/main.rs b/server/src/main.rs index 9bb0cf20..3f0c0725 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -389,6 +389,8 @@ async fn register_function( "Process" => EngineType::Process, #[cfg(feature = "cheri")] "Cheri" => EngineType::Cheri, + #[cfg(feature = "gpu")] + "Gpu" => EngineType::Gpu, _ => panic!("Unkown engine type string"), }; dispatcher @@ -505,6 +507,8 @@ fn main() -> () { let engine_type = EngineType::Process; #[cfg(feature = "cheri")] let engine_type = EngineType::Cheri; + #[cfg(feature = "gpu")] + let engine_type = EngineType::Gpu; #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] pool_map.insert( engine_type, @@ -512,6 +516,17 @@ fn main() -> () { .map(|code_id| ComputeResource::CPU(code_id)) .collect(), ); + #[cfg(feature = "gpu")] + { + let gpu_count: u8 = 4; // TODO: don't hard code this + pool_map.insert( + engine_type, + (num_dispatcher_cores..num_cores) + .zip(0..gpu_count) + .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id, gpu_id)) + .collect(), + ); + } #[cfg(feature = "hyper_io")] pool_map.insert( EngineType::Hyper, @@ -552,7 +567,9 @@ fn main() -> () { println!("Hello, World (mmu)"); #[cfg(feature = "wasm")] println!("Hello, World (wasm)"); - #[cfg(not(any(feature = "cheri", feature = "mmu", feature = "wasm")))] + #[cfg(feature = "gpu")] + println!("Hello, World (gpu)"); + #[cfg(not(any(feature = "cheri", feature = "mmu", feature = "wasm", feature = "gpu")))] println!("Hello, World (native)"); // Run this server for... forever... unless I receive a signal! if let Err(e) = runtime.block_on(graceful) { From e2a14571f5e93623a623f0b46b9621b9ce20030c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:54:10 +0200 Subject: [PATCH 074/176] submodule via ssh --- .gitmodules | 4 ++-- .../src/function_driver/system_driver/hyper.rs | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 087be7d8..963c6d34 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "unity/source"] path = machine_interface/c_machine_libraries/unity/source - url = https://github.com/ThrowTheSwitch/Unity.git + url = git@github.com:ThrowTheSwitch/Unity.git [submodule "http"] path = net/http - url = https://github.com/cesanta/mongoose.git + url = git@github.com:cesanta/mongoose.git diff --git a/machine_interface/src/function_driver/system_driver/hyper.rs b/machine_interface/src/function_driver/system_driver/hyper.rs index 363ada59..866a47c7 100644 --- a/machine_interface/src/function_driver/system_driver/hyper.rs +++ b/machine_interface/src/function_driver/system_driver/hyper.rs @@ -326,7 +326,10 @@ struct HyperLoop { } impl EngineLoop for HyperLoop { - fn init(core_id: u8) -> DandelionResult> { + fn init(resource: ComputeResource) -> DandelionResult> { + let ComputeResource::CPU(core_id) = resource else { + return Err(DandelionError::ConfigMissmatch); + }; log::debug!("Hyper engine Init"); let runtime = Builder::new_multi_thread() .on_thread_start(move || { @@ -366,7 +369,7 @@ impl Driver for HyperDriver { fn start_engine( &self, resource: ComputeResource, - queue: Box, + queue: Box, ) -> DandelionResult<()> { log::debug!("Starting hyper engine"); let core_id = match resource { From 98029de37a38a22b7f05d6a46799a08be1ac4789 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 29 Apr 2024 15:10:53 +0200 Subject: [PATCH 075/176] reworked function config and added new features for benchmarking --- machine_interface/build.rs | 4 +- machine_interface/hip_interface/basic_io.json | 6 +- .../hip_interface/inference.json | 38 ++++ .../hip_interface/matmul_loop.json | 8 +- .../hip_interface/matmul_para.json | 14 +- machine_interface/hip_interface/minimal.json | 8 +- machine_interface/hip_interface/mlops.hsaco | Bin 0 -> 44992 bytes machine_interface/src/bin/gpu_worker.rs | 9 +- .../compute_driver/compute_driver_tests.rs | 17 ++ .../src/function_driver/compute_driver/gpu.rs | 55 ++--- .../compute_driver/gpu/config_parsing.rs | 208 ++---------------- .../compute_driver/gpu/gpu_utils.rs | 65 +++--- 12 files changed, 160 insertions(+), 272 deletions(-) create mode 100644 machine_interface/hip_interface/inference.json create mode 100644 machine_interface/hip_interface/mlops.hsaco diff --git a/machine_interface/build.rs b/machine_interface/build.rs index f6ab575e..76143f13 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -17,7 +17,7 @@ fn cmake_libraries() -> () { println!("cargo:rustc-link-lib=static=cheri_lib"); } -fn cmake_libraries_gpu() { +fn libraries_gpu() { // TODO: cleanup/remove the CMake files/C++ code // let install = Config::new("hip_interface").build(); // println!("cargo:rustc-link-search=native={}/build", install.display()); @@ -34,5 +34,5 @@ fn main() { cmake_libraries(); #[cfg(feature = "gpu")] - cmake_libraries_gpu(); + libraries_gpu(); } diff --git a/machine_interface/hip_interface/basic_io.json b/machine_interface/hip_interface/basic_io.json index 18d36c94..f2bebfe6 100644 --- a/machine_interface/hip_interface/basic_io.json +++ b/machine_interface/hip_interface/basic_io.json @@ -10,8 +10,10 @@ "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, - "shared_mem_bytes": 0 + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} }]} ] } diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json new file mode 100644 index 00000000..5ccef2bb --- /dev/null +++ b/machine_interface/hip_interface/inference.json @@ -0,0 +1,38 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", + "kernels": ["matmul_f", "convolution_f", "relu_2d_f", "maxpool_f"], + "blueprint": { + "inputs": ["cfg", "A", "B"], + "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 2}}}, + "outputs": ["D"], + "control_flow": [ + {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 0}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["relu_2d_f", [{"Ptr": "C"}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 0}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["maxpool_f", [{"Ptr": "D", "Constant": 2}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 3}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 4}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/hip_interface/matmul_loop.json b/machine_interface/hip_interface/matmul_loop.json index 480544cf..389ddaf3 100644 --- a/machine_interface/hip_interface/matmul_loop.json +++ b/machine_interface/hip_interface/matmul_loop.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco", + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", "kernels": ["matmul_loop"], "blueprint": { "inputs": ["A"], @@ -10,8 +10,10 @@ "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, - "shared_mem_bytes": 0 + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} }]} ] } diff --git a/machine_interface/hip_interface/matmul_para.json b/machine_interface/hip_interface/matmul_para.json index 3b234d63..bf828982 100644 --- a/machine_interface/hip_interface/matmul_para.json +++ b/machine_interface/hip_interface/matmul_para.json @@ -1,17 +1,19 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/matmul.hsaco", + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", "kernels": ["matmul_para"], "blueprint": { - "inputs": ["A"], + "inputs": ["cfg", "A"], "buffers": {"B": {"Sizeof": "A"}}, "outputs": ["B"], "control_flow": [ {"ExecKernel": ["matmul_para", [{"Ptr": "A"}, {"Sizeof": "A"}, {"Ptr": "B"}], { - "grid_dim_x": {"CoverBuffer": {"bufname": "A", "dimensionality": 2, "block_dim": 32}}, - "grid_dim_y": {"CoverBuffer": {"bufname": "A", "dimensionality": 2, "block_dim": 32}}, + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 0}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 0}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": 32, "block_dim_y": 32, "block_dim_z": 1, - "shared_mem_bytes": 0 + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} }]} ] } diff --git a/machine_interface/hip_interface/minimal.json b/machine_interface/hip_interface/minimal.json index e89709ca..db9c2962 100644 --- a/machine_interface/hip_interface/minimal.json +++ b/machine_interface/hip_interface/minimal.json @@ -7,11 +7,13 @@ "outputs": [], "control_flow": [ {"ExecKernel": ["set_mem", [{"Ptr": "A"}, {"Sizeof": "A"}], { - "grid_dim_x": {"CoverBuffer": {"bufname": "A", "dimensionality": 1, "block_dim": 1024}}, + "grid_dim_x": {"Absolute": 1}, "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": 1024, "block_dim_y": 1, "block_dim_z": 1, - "shared_mem_bytes": 0 + "block_dim_x": {"Absolute": 1024}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} }]} ] } diff --git a/machine_interface/hip_interface/mlops.hsaco b/machine_interface/hip_interface/mlops.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..42578f3351007b9174690407e5a1ad2e70aeb885 GIT binary patch literal 44992 zcmeHw4{#jUdEeW;y}iA?y}iZW-rnK>f=391K~;i?vqV8|98-~GNiJ>C9y^miN)do%;VmP03k-EkTZQoR3&Prc4F5~EZ0rqq?rSm%w#-CRZEJd>13FUJ55qY zNt`_Wt1j94R?=65I^%_RrgW|GxKozwdkBdpj|4-;sMi^x(uJ?|=W1 zNAA6U;s-wVq5F?KFfk!B@w38%AnX&T({l@pw?8$0XyVYFx1XJTVs`H1v$xNjnmzl} z?YA@W$kmsExO>A#PMvx3&f6zXA3u3)mIC^lUYNZ7_LC=`y651eh_xH+*1&EJ?AE|; z4eZvyZVl|#z-|rf*1&EJ?AE|;4eZvyZVkNSHE{lcBkz|b>2O56Il{ilq^493i(~)A z;NX2x#tyS_rs02*C76oK3jPiUw>O1X#mmA_6Y=OWJ-5~G*n!|q7=}g#dJb7&?AG8u zdrw<F5!re9l_&-1G+48yvQ;c^1^==QxIy#K+YA7kv9Uk)rYqfboD&rZ!O zeCCgt{l(GAlV|29j?JB&U1Xmdot!_paGmvB_~p^b#!p_>R~t|?Csb^S~uUq`!srjfTF>QI)K!@SL(IzDmy)aiwK zV^43B0$Ej$P0q}S-tp_BqV=avo}QXroH%jnsj1^!7TB-y&WUa~u^?_v&YU_qtNqHR z>m)j_NZuDlXC`M)o}D~7_4!B6OwHbRB!Aym>X#;-oSI)aH8)$4+1Ex-Pd+tqVrFu2 z;^TAkPc+2u6$RaScJlPp7f(+vo<2J>F*7%J=0A*{nLqX9H z!!DZffo?NeHmc|!JeqxPBh#75`N^)4X-^l(L@#`M$Yg$Zk!c5L>%_iV8PpCh*ri~^ zZ98zb2D8|uU_t}vOxqe2^&O*N-r`gpQ8x_?V;u>|;mB#qJ30J>#Y;N|+xtX(zP!}h<$E^NsFze-(SAN%k>*sdh zI5)2U-GG_N2&@7-KG7H^1?AfDiH6iU9qbexx^%<#<#zW#BToV>cQRx(vXtwP!e+&( zkt1P^Ye`^p{6>Zbx_W;jKL>;OH)LiS@A{cWzPeWc8+jAvtd_EGGBdq{prO5UCZjLR zPtBa2C>*~5z({Tb7+N zj$lErdwXCJxp}a-&fdOlc?WW`vjwL<0ny1;Q=e+9#}Y&Nj`X4-+PgDl^-0dnl%!Ej zyEA1|e{U4#9h~+00;a{z%+1Z*0EOAN9V*pd_x4ap?*^5ANzCUjV!m){@z-(Ic?m{1 z?;p+vN}&@0oCDf^cjMfSzuJdxWz2{{S|HsPClNZ z_dn(zWyTnanLo^YL|Bpihcq6Ss#eEe3V&(*z32D5kNxLM&%QFBo;Tk7%!fa8?nnP5 zHu~l#U-`jbe|7Bx-}-Xl!+-wYe)ZCXkJ>KuV~X=D41P)tR~Wivi|dvM zDKMLkI~`Izguk$ibPnm~zDNm#23^1}^sC_~P4n8U=@>meJf(@H=HsSYC&KH*TUd*U zr1gw$*A=41QT;MepWw0}L3pu%vc?g`p7@aujom#l@zBFZC+?e@n?HVP78Cmm50Bj$ zT>Am?kGcQU=?BK1exR$k4#FQu^qF5{etLZ(b75UJ zSTSPAMPK%PKT;}h$m}-8{72XWthj-p;M*JLCpMUjdhqX%?vab){x_tQTm*0zrKneA z(Oi)kPK71is+7!BT*oOn8K=aO*-FyMRFjTdNoJGPq?`2pOr~sPy{eJLy=>Aq9JiYB zl4aM&b;m(`isO_q4ip|o9u3DRv*-xkpR6#vE0au?BuAh5R_`YG3QGXTLk*erAr3muHkT0B9K)Z^uq+h~V zb0?L9MLu1YSl??h^h@pUPBYw?;dEoJ2R`ZYhZ#3Jf?Mq*1&N%9TUiG!Lk z{A`)|v2_>Mvl(fL-WN-LvYf>8EP5NB&n&t8d3Py^=iN+lDT(-!kz8Vqv6N%a@^(fW zmrPkMO6)(qmXb}GJxJ|`wr8KLQCq*YasCl%Q$}rya$!6~-5MpyU{xj?70D=-Sjj9& z@^ko$uVc(zG9+nhH@6wZh`{C`N0||0qIDjzd0aEH6jYs{uql z_xd%k4sB(?A7Y=xvCQKB-ttgHE7~jjd?m_?X@3xH^}Da)ad4Nf{=Uy7kL54ajB6sLy`OKEu+Rr$I!CV}fLzs?Y% zC_L07@-)3ml~^Gbk;fU{j~=DcHP2uAqo``KPHC~8KRow%zEazdeEHIq8r6fuF0YF` zfHYGbn7W3#VUp}oUR30Tzsvj9Yi#U*5=)!IQp6~#IFF6>Dry9Mtn2jOIQO`7<)T}x zKKpoaZQ1pz7mLnY&;Ieov+D>i7H#|~Z(XE(QN1dHXb>>=ir<^Ezx9w=)5C$2N& zJS)0yU38wSTu!4;P<-1l3JJ*^XYBdcm(i|N*FL*aqx$}NSt~|S2hoUGbl9hXQ+S7R z9$md!bJ%BU3es>!n5QCiZ)2V%?&n2#P=pL^K{DdYUNMh4G?-~onGq@q@)t$^C@+ep z4M%l-IEwapTX?f6e8Kp3g%j4AbQDq3$CY zxKgvZ3{-2>{`?vBJX5G#)Hm9nRZNBFBZ>BNs~4$UN*tMX-+K11MB7oDSwe;ZF2HKH z3f?o!9AozVpU8gI$Eo9;ItR8fa5z;}gs1>n&yAc|;vcY;~RFB-d+~ zY~K8Y}brYILY*`|5gxEv-`-W#CH^_YC}%WTQxR|2G>eDEo)6 zE28hT_sx=F4FBau8F4;J{Y#-|?&0m_6setbFna3S2n~vZ(2UAv(U<(%Jjz#Mb^-M; zuGo;JlsWDjZ=8!|O{S&|200prOx62%yseKzR(T&cA$KW~+lYmJw#a2Q8L?aHmioM| z2Kb`&{^7ae<8Ljekk7Dfnbs-~BECUwVDz9(nSYV`ywQs`Wp6$E*VLw{W7dD6rfeww zL;rnaBf1eSZ{Vi@*YB4vtkbh)jSc(q4-|h}Glr=z{0jPI8Es!e+sCLKytgjePQ_1W zK2=s6#gAs9WgE{Q!t;#%`K$IBU|P{%w!h{qr7=D@7q#^Pv=`N%gSImTmO8lRJX5{w zOKY|8nj*b`es}o#K9-XxFB|gV;f)Q_!=8WLJ1jGA#q)dp-g2&#^ZWe1vbLvx#Pwq9 z@x22hf4zY;*o(Cyd-GWZX~}GPT}6KBnA&k4Q%vXU{Uv3E`B99?{q=lRYyHTVCGwTw zd0nf8=RV~rH{?rw`!N<$-iD+w{q6Fo?aPn!=a9Es21ovi=j~@}Mfc5TCFCoLd*<3M^}TA1)cS}a4`=a#W@uEF1=F|>C;&L0bm*7>^^1=(7kq?CM?E1EqI@45I4}?D-Xxt zXANr@BQ=bXgs;Sn?3zb?$|W z{lyo-pFX?XKlI|oVova<9JmwkmUv7fKaWzq^lRYX@#rXc(;DYZM)b~NGJ2@!=3ZFt zTN|q6*7jF(Yqx+my;zH*T>FQHOT&UU-7@YK_C#{yG(LC-nMZudz<5&Z#~A$F+U4Gm zUwxld*o$#WmAsM1*qS6%ijd#Z(v;Ai?Jl0$}!LIMpWWh zXm>67eFZ7?{b-9%Tps`@Bi=LsEMjLispnLa4gnOj*I1 zRFpA>GUi+=V;{=ck22;e{e1x^%!zW*m}+$3OZ!YQo^rnQg5XOp*7*|EfeRjy#dzP& zm-eZGYth)+{~{k-)g;E&e!-W}R>XrS&n4LcS85&4Iak8_1y|yFgKxEPr98=L9%amJ z!IiYU;7X8*{X<^KLp$9vZlEpY@hgS_USbAZ3HPPw!J>yg-`ly{nemF<61`57CGVTs|1qX8GdvBae9>_6c zug8+mfs7ujg(Fd4uJ>udk?bC;kdD~nR-_+&Y4N&-_Uwraw6qKF(;&fAZzkH5IMN>= zf5bIHo}`(OttRd(p0Vf|Yfr$FO!Nb5UxO$8&fk^SUwNy{`Q_bGdHoRnDE<)XNFk;f zt$N|VAnbtLP@Tk}Z&CdA`lLRLdt5I>sByh81HPDT=!HfbXEa28z{bUO9if+T`JuAJ zv@P_)OrRGAn0BR(X_PLt7eYfvxkH^$Lq2$(xlTBy#IrVZLaV6ZJU+Hh(Hc5o7iptj zyV40w&bcWs%zu>fq_yjV26TtycT692pbtX7BCJAt?%l9o)`d=}FzIz=zb_}yw_<4b zx2qEd^09+Xh_XgeR!1S-Hv`?*h3@NA+)SpFfnMZT&eJ7K6SwjDB0kx@cS9j&9Ni9gcNmyGTY_ zb#3bFiWcCC-bo*X9^Q^~h#%;KnE>agzqjjyLlLsO37*CRo~G1!+J#ymw=%~yX&YR_ zJ%w-uA;&c(1N%m{Vc#HJYqoC~ux}9FXmJfT4xMu~=YL}Y3S?m9dS($ z>|BmkNT7~roC@q*dFbPV+|H$7d~4Xbw7|~g>4jum3vdl>O1KskxCT4(>nd#e47`7qm6 ztHVWGsVt}0(iMBnsoHCH#Yv}2Y3QQ%4dGfv*xCX+1aUmQTfPQ6LVa!$^U8c~67yK^ z+}tGQ6t}Rq=^L+4=^f@Kb(#~yeKm@)7xp&H-@^WMiQ8Kun4dIp{~FF4bCj2A z|GSGh$~PNxl(3CnYM-Ozwzt+f$|jxEGGTwi9HklP4ZilqIp|_cNx{4V?xMi{7V;Oe zp|{xI1b;DMe@mro%u!-ql{h)qNn7or#AkFx*hM?w8*%bx9xvhtIw{RNV~&#AwnZmJ zT@I0c7V4yy%=AsX4Rgd?XAAV(b}mJ{4SG7~Z3qM2)~gT4`i$X_r^Qfins*Q9-(yL^ z+Y&9jjob0K?yYyW>5(q}INB%RZI!y6ttowz_>GjrPJE$%@?iKR42z)Qd?*erh_+HptAB_t;8$v|~Z%c6Ac1g@148hJe zTvTl8?^*PB5B=T6{J|COcj0AwOTCx}CeG<<{e@^|V4Um;x!Q{xWzRd@nv*gIC?_EQ8(*9yr84SEG3X@MSi{egSp* zi#77;8G49$GQ!~_f!_t)r}+a4Y5ssh>LY<3>J;;k4Vt$nIY0;>2oF9GIi7b09|CDh zTw_IBvkFm3=%H=4W70!)!<4BG0r&jmwzu(3DUo%yrK3q8xC!MH?a zBKs@(%QSFJ<~|qT*78>K2(p+*kcGXZc^(1RL>gP;8s?=K_ql+4cv-?Vm=H7>AV8)Nx;V<6I=IGC85JNJ<};lki!99!C9|`ggNl78CX+%v}|d33FVB zuNUDO`L84*t^P68-!)nI$H3my?t7tPTxf1v5uf*0Js#j1`3q5>ulrtbTvLj2h-(m% z#(ZdKXHz+@MNki1PCEFN;U2fMAq?znN!Zy?_ORUKSJrH2(>vSQxUGWn9l;>cDJ?D8 z8P}T9*9p7BIZ=h@!{)fA0Lv6$8Mm|HIG8`E+u6EEyIWjSx!fR6ke5fVQ{FV-TD%F@ zboBScj<{wCT=NRio?u=yz_q~dr9MAe$F(57jybnjk2x;W`~li?4{%M58U;&M;M=$= zux&+-#mw;@$g#zKx{hxatJEy^DUNSeKEOA!?a}<`_V{LTe51ZW_=XU8;{b15fp2-> z+hEaBR+oF$dMehMUA5M%irv#w>OnuZGz0w{K5!)a7}J~Om@rDy1-|idZB_8LU|i$R zY=duT^Jpm|bY8Se+=V-@<8HSjH8w6@@F zRDa)9e5>;{gUhE1xg=ae$ZgaJbs8UNo|4a(YHGpP&2dEyd_R5m#yR*o^F<<3LLFvt zZ5Z>ouSYmvY3<+9m>SrdU`J2H;42pa7Nczyj1lpO+A;=Fe@EKE_yv1YJFY2c+h%zX z@i{(dG-iRXQJYeqZ^kv6>$cGU;+Vyyeuz-niNjHS5FhD;JtWt-$HxGKCbxI>I>U)R zcQ}E1NT41p;GB+7$2o;o*5&nJW}HGQOLJtz0Ro>yDo1=<{8H9%(qh=WB#_z;Z`_@voKcoMBSpIUs_H;XVamx>Co9&ewA}LCr$H+0Z!PS zQ%ItoENV}SINT68+%V^GDgKj&f`4S&nfgzzGz*C)(!2!JpNH4++hwS*sVROuRo>0^`tTL4OEjxFqL+af2=WkT8zw zm@p19%6$?1d;{ZfP4qdZsBeLB7V3**9OT1EYb6c&wLKf61dz!wDf^(geI zEqy^S=ZJa_eL=ttJNhn^9H;I#Ya)O2Ou*gp9OEqXQ|i+QZR#@!9U7DB7}uXG_ydFE zO3o?tK<>y-IB|>1^gf3r_U4B5J^jN;^yMV_ateLhL}=oi!c;b0O`q$mM->h5D*J{m0zC!=cz;Cuv3(sjS z0&_fH%Jg!-*#qzj3)9~&j|TifT?cuq`-6U_R)l=yI z8RjWGzv(=|CzRI{d_n`C=Z^K1+peDag-nNe3eRskPxp)m_4Lo*Bl6U-p8DJCDe#+J zt&uzph&%;;vz1zS&YJpN_F6XZo877Jz4!Y@vhbTtzVG`3zgfsp=r;?w9vF%oEslgb zBKj`%6{BwdTCIhCvj>!Qz;Hm+9r7$n> z)#~*MJ$*UOoeXw9PwyvuJdp3q(~JiK8%X<{C8bMa0K)tr#z(U6Q9dl>gO>+$l*U*| z>3MK)I2i$t$9WHUltoyMF{Hb+fz>z!{~t@hSg!c z5&6vq>y13lJG{gB!oJ?Y`g|qng;vWvWf0H4KUcV=*BjSAct7`>C2ZHr_T|Bh!|WIB zlJDk6>!N|TJZSjfggPbcMgug6tra}125@#Ch zC(cxpI?9+JzcQ`>oe}XMJrJxr5`@aK7N(GB{40uxD(LS?|g- z^vhxN&w3wDxAoz)=)*4ha29>oi41X$WS~7Wk>Qp)<$c;R1I~js?c_IWfLk@UgLuZF zx_0&lJjq7ib`CUn($;>nPEijr&5>ESwuaVI1~yxl+r1Ltko5lc`XrggJ&tJz15De4 zx&UtsIiuZHA9iO<>D!^dFvnJ&kHG-fp#K?T z4=WtgaNLGzU8IeA?MfGPIp;=QfNMX>>&AjE*u(8!fi7r6M@sLg3+6dK*xpDXx$oAF zx}ejd3kLDE{=q_OUw(Y=hW4^a`XJgAyLh~=_4slRI6CQt*4}~f1a!h(eej=zJ_wB4 zq!02r%2s_a*U$&~8Ug5oSR+83gRc>|C0rw5^ECo-@RK;{f9TuIbCjucu+GQ99AyUU zeC%+I0M`dMuMx1qH3A*sR3ZEy|uIIbal zM{q4}Y{AvGz%@!&*tj^Z)wvpQjml^UOzYVzxY{PA!xpwK&fP8vdw#>#rEFvCGP<&L)z^q?Tdfh-kOuL$(6-dPMjY3K-z+%7 z7PhXsA4c8Q1^<(Ny^xAq!5VQ(tP#h3ZChIx)?1_AL;e=}e7AFel4aFxT^91!z_xxq z?wW$bA>@4rp-r~Jx~9=u!`8s#LOXV{jkmxi%WYjYcw9Q0 z!}_OSO#rQD>*=s2zzo*}i1km+Ys3xIdpn0i{9x@<)0%+hwNGSk9-_63Az$-g>#ggb zA+A{**D&AHkwXz*!o6?~H?ZIDvxgJ6IK!d6K7n!*wucy>$O!v=y2XCa`5^H%&Fst# zY2DZ3Xw!DS)|9?YHg0o|@SEL-d4yYndCI_k|F9C;?&Gbt`!3S%7T0oIZjxMH9=(oG zGl6TVCS2>zcHbZHHEXC4-!shD0|dC%SPx*+dVsp^K8UY51BJw%evWHgzeJnz^-aLF z6y{5aubHsPhImH(EyOdL$EGxBu9xOS$#zfo3C}1bJfpCIXZ_rEPkn;q03r6h$OF#? zdEU3jGp(pw9@aRK4FYR8+jJ1pMNLci8(}Obznga3y|Im7nc2MO1#I_qzp@tFeI3uR zjtj-j(BFEzFKYfUxTL4CbGKgsc|b=~G>p4Qd6 z&HB1Y()+ZGHB4)X!g8B!9Mu%%##-0rwdj0ahwu#RHo5Gyk39xo-?SOen$~Ta;X1BH zK60F^Y2aoWFpRH7$8oZCEqWJecZ+BBb(@fvVBKarPcy+=QakFO!d_3g%uFpv-+u|C0vzl;?2~2J8D<$lq6z=5%T;pR< z+g?8Zc>QDv*Fui=P$yrqx{qwf`CJ;Cn|xHcFPWNwk8E~lA6X4Pvb1i8Z1rgKI<8>7 zDL-y+Cv6K%Yf7K5*$jQj)C_!Nv38WkG8H&R>ziWa6O7|1UyEK}+tfwc-D27Y_*l4~ z^VUbNBW&^|3v6mS`gmeTObdL&Y^~u-7GPSNFIgSag7}(Y!Nn&= zwi(ORZhgqW(ds^AEgY?mW$=;hjAh;Vkli4bwfV^Mb?E4a^0rt;zOfCC1}xjsHH7kb-??44jiptJr2nDPCA+>@QxW{VS7xbjc_w zOTM%WKP{!GU~Pq3QvH}8E32}-{t$d4)TCBXjd)d!=oM8?RO6afiW%`rLf1<%IZ@H# z@set26&=1ps;pOh>2i(UW0p)mt@obm_|>v$FfQ(1OAlo zqcnBfPbJc2`%{aId*O=9aM=r_J{uAwNJhA!FSF{F~!4{G7246`?}c z5t2V(B&AM6u`Wn4+DCGc=j)F)F0B6!ttnxp_1s@j=)dj1`u?x1dH+}4SFq0}zzh4o zCd%+t;rqW@hF{(tw|=;ro6P`@bqO-~Uy5fcAQogZ*D+h423=-=h@8 z{cp%ArAT|g%EFHylcp7x#{RGAru|>j*-9FFwx+TFYdV{*rrk8(|JBC+uQv97#WmmN z`@g37{;xLne@#0S$0?^}neWePJ9b&ZoFcQ+!TzsU_eA@@rlmCB|JBC+uQu)fnil)N zrd#)awbPCLU+pyBkrw;EhVRGzue1)qVs^z!J5`JJe}yd39?OtlBk*lFAEsqg=4 zm$7$wMPkUOZI=xj`=lZb^psLEP5Zw(C7fgbSGm~Z_$5o0gZ*EVt7RGczZx>e6Zjih z{%YAuialT1@4afkZ`n$!*z1P9=3}SW4E&U@`Ti1}N1`%AX?@$b%4zImYr}Vl;l6}* zP>j9uD%J_0S0Wzd&cb!tqlET|jfiW=N15@oq$NYHo?}P{`9(Tkkmw!P{5O}d4*{b+ zAAR|SbEx~G62lG!QHAwm?G(v~PQKKJUy`wRY(g<*=|O6H>_y2+HIftBJC@{uxHn6% z3iea4CRn1RC$M*{0pGyHCBAp8Zv0e9H-f!mfd$w*7IAQn_)C0@VHiJ|e02zNi+zWO zH&6(Lef>3-IUv)%rEEi5ro9N+DtkW0Vii?VfiG-2rfKMF@`x{Afjz>nMfpBJa*?lV z@`Al+B}9Zi%Ga!6&yS*^{g-nLI44UogHP=;&4a!V&&dkr4>ehi(3&gYBH^HdYe_Aq zpidPEBg4HpZsk~s_)L~*-%^z!9?N0xRvozb{OiwPf73YXQ`59UG@_5MV9e$|#&i$u z7F?Hc9lnAx)>MQxKHwPHX$gnG8H^S9xEt5dNlkNn#eyz-Em?;AjT-`w6r^ipY=!n< zGqPkahYw$d@M+^UJ)tUp0o*|`3cd;~qO>6~5wt1frXXXjwg!BneO3vVp5gfP_HpT* zz_xDQ(Fy<1zE^1&p1P9%HCXW62)IUQ*OSTH8>Dyd=;^bww#e z;_A4(!u%CF#-5eFigh^T!;keeFKPN9&6|`VdlLDAKwe<~!5DOueEA_$M@hD#<~6f) z0ngL3N<^DB;bTQ(rJgXK{GX5)2ARS-e&r=550cCPbRf$L^!QL_&Rl1)KxVpWr|(pp zu>B#&95>1=7zfpQJL&ayisBx_&sbHSk14T=Bn9U&L!PE~lpr4r?P!QLr1p~&HrmfB zsydsN!uA6u`@q_;{URE*-*dHNXg|d=i`UGRb1~?JAA<}T{+6}1wRWylcY^3Ncv)CZ)Pz$vshmvLYd&1n%P zwAXv1Rp6j$?s6SSrUV@q?s->GBlAbu4uNBM(#pnfcG$h>@4agFY& zGI)Y0V}!KV=n9dStW_B^ zt+akFVo7CYU0HF!4Kt)aIM5$5H={q?hIB`Z%*EdF*<4l1_EvHp_SEe4N-Wz~$$Guj zte2}~`?A$+F6;Zy+uXkXs@sQqeOcf2a@F4cY&nPhs9n!Pe2U|hu?HsCA6(A`zdwlg zXDbZv>dj_Lk|$NN68zRZR&iNx)n&Pgm+h~3;H+M@uL{!Z`+Z&+A5HSztW@=SgYQSU z&{&Tv6!Z>OMqjQtsX(X5q)4a8m2l2=ir$=0`;7)VMP`lb6pqj- zJb$h1Wk{#!TVl{D9PkAX7)rVU=@fk!8=7^B6m*Id^oe#|f^>&apFnzL#@{I|Iix$_ zeGT1#-uLEG1Y9PCca!cwx{7Q0E1<)-V$e9`L4S~g?~9at=nAAawCW4+6H2iPzBg4( zu~Z3lS!FVGed{vDMV!m4_=~UO{*q;y&==@ha31OlM$2NjvK7z8 z2%N=QgG_HF<7TTF$Z)0?-zf3$b&qVe?DXQB3B9=2oADidkRhAPls$aQ!*N~2r#Nmo zBjnU^9mwfzcz>n>S*>QV*QDf1m5h`r;X5Yywn?^%XX7wssV3T+K(yepkACR$)`Suw937Z)2v6|P{B7^AgB0DQpLviRUi+gbdu!ME8(2WY1Z>gZYZbeYB>Vk z*A{Z>`qi?VCOPfpa%zL$xM|uWH;~g_u9NypbgqEc;7c!llFKQ+Q9<8OAe|S_ggUMQ zI}Fk*GyYC#$tF3)`xoO-8l5XkG>5Nf%;T5~eW9)=KxYWYY~q^=_@)fL zxxoV78k5y&;+~PH7?Z)}X#MWv3^qCF4idPh0-bjZV;R>OP&R!<_hsmQ(I|uj+AtrPN=n65i@6q}}8Q*mwJ6|-R zyQ=jc&yl_mOPMa#zPtYe+)Pd?1qJnh{PBIQDZYYue~Nod{ubFNw$~@3@SA{+{)5=} z7X`pLjj@_^Q&`z)-17#gkyEozOwGS1fA0tH z&mTE*e}3%l(SxH08Kd)KGn2C?^Wx*H;!b{KdU5g0!h7zx9dcG9-BLT$44fQ zPtDCfa%O7wzPZz9&Mr>fF*Ebz>D$lD&pkeMY%xDSckK4NM(-XS%NO4L?(stY#Ji`) z?!I$!?08}P(AZt$#||Evy7Snv@xtAQ-hJrMV`InfeC*i4WA}{RiM4B6{;0ULLnafE z?h-Mn{^To3_$qqEcZTYGW6(|1?teLVhZ@PhEWt9Od{{=0(f zhl7CKhmgnrba3H$;<9gv>+Roxbr7M` z_jd0U*W15`dsTvr2F*LEUw_;#mUDIP9u776oj}$&*R_dSonq1nYp<$ z&BydHQ}Mmk-4CoDo%kO7!0N>PKm4J4Klm{9*0=YA7-IeuP!ql;JP=_%AKnPU5TC=V z^ekb1_*gg&gyG*(0{GE5K!+Ng;1`Y$&@I{j+1Qv1pAW}@FucNJH{KsUFD^5}J$iTe zd^m1|;md8$hxre~y|@our~Z66PK9AOPKnp>GK9wz5`0p*3Uq>B{kzu!S8oY37Tjis zMHmKm;DDYNFolmki#xZ9u>E_qqCUl4M&k%QOJ(4{aJ&$Bd`4WRI-*}#e^zkHz8@jI z@}M{mgEQj!p9?RDFibuSAH?;xBJ!9P0W^Mx#Z3dpROey(Vf#OVYxTV2IQ$(I = Mutex::new(()); } + #[ignore = "pollutes stdout"] #[test] fn module_load_data_test() { let _lock = GPU_LOCK.lock().unwrap(); @@ -727,6 +728,7 @@ mod compute_driver_tests { .is_ok()) } + #[ignore = "pollutes stdout"] #[test] fn run_dummy_gpu_payload() { let _lock = GPU_LOCK.lock().unwrap(); @@ -941,6 +943,21 @@ mod compute_driver_tests { }, ], })); + let cfg_offset = function_context + .get_free_space_and_write_slice(&[((mat_size + 31) / 32) as i64]) + .expect("Should be able to write cfg"); + function_context.content.push(Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: cfg_offset as usize, + size: 8, + }, + key: 0, + }], + })); + let archive = Arc::new(Mutex::new(Archive::new())); let recorder = Recorder::new(archive, RecordPoint::TransferEnd); let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 6a4b949a..d4e3f6e6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -1,12 +1,10 @@ use crate::{ function_driver::{ - load_utils::load_u8_from_file, - thread_utils::{start_thread, EngineLoop}, - ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, + load_utils::load_u8_from_file, thread_utils::EngineLoop, ComputeResource, Driver, Function, + FunctionConfig, GpuConfig, WorkQueue, }, interface::{read_output_structs, setup_input_structs, write_gpu_outputs, DandelionSystemData}, memory_domain::{Context, ContextTrait, ContextType}, - promise::Debt, DataItem, DataRequirementList, DataSet, Position, }; use core_affinity::CoreId; @@ -15,7 +13,6 @@ use libc::c_void; use std::{ collections::HashMap, mem::size_of, - process::{Child, ChildStdin, ChildStdout, Command, Stdio}, ptr::null, sync::{Arc, Mutex}, thread::{self, spawn}, @@ -23,8 +20,8 @@ use std::{ use self::{ buffer_pool::BufferPool, - config_parsing::{Action, Argument, BufferSizing, RuntimeGpuConfig}, - gpu_utils::{copy_data_to_device, get_data_length, get_grid_size, start_gpu_process_pool}, + config_parsing::{Action, Argument}, + gpu_utils::{copy_data_to_device, get_data_length, get_size, start_gpu_process_pool}, hip::DEFAULT_STREAM, }; @@ -124,18 +121,10 @@ pub fn gpu_run( } buffers.insert(name.clone(), (idx, size)); } - for (name, size) in &config.blueprint.buffers { - match size { - BufferSizing::Absolute(bytes) => { - let idx = buffer_pool.alloc_buffer(*bytes)?; - buffers.insert(name.clone(), (idx, *bytes)); - } - BufferSizing::Sizeof(id) => { - let size = buffers.get(id).ok_or(DandelionError::ConfigMissmatch)?.1; - let idx = buffer_pool.alloc_buffer(size)?; - buffers.insert(name.clone(), (idx, size)); - } - } + for (name, sizing) in &config.blueprint.buffers { + let size = get_size(sizing, &buffers, &context)?; + let idx = buffer_pool.alloc_buffer(size)?; + buffers.insert(name.clone(), (idx, size)); } for action in &config.blueprint.control_flow { @@ -143,6 +132,7 @@ pub fn gpu_run( Action::ExecKernel(name, args, launch_config) => { let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); let mut ptrs = vec![]; + let mut constants = vec![]; for arg in args { match arg { Argument::Ptr(id) => { @@ -150,23 +140,29 @@ pub fn gpu_run( let dev_ptr = buffer_pool.get(idx)?; ptrs.push(dev_ptr); let addr = &ptrs.last().unwrap().ptr; - params.push(addr as *const _ as *const c_void) + params.push(addr as *const _ as *const c_void); } Argument::Sizeof(id) => { - params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void) + params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void); + } + Argument::Constant(constant) => { + // TODO: test this! + constants.push(*constant); + let addr = constants.last().unwrap(); + params.push(addr as *const _ as *const c_void); } }; } hip::module_launch_kernel( config.kernels.get(name).unwrap(), - get_grid_size(&launch_config.grid_dim_x, &buffers)?, - get_grid_size(&launch_config.grid_dim_y, &buffers)?, - get_grid_size(&launch_config.grid_dim_z, &buffers)?, - launch_config.block_dim_x, - launch_config.block_dim_y, - launch_config.block_dim_z, - launch_config.shared_mem_bytes, + get_size(&launch_config.grid_dim_x, &buffers, &context)? as u32, + get_size(&launch_config.grid_dim_y, &buffers, &context)? as u32, + get_size(&launch_config.grid_dim_z, &buffers, &context)? as u32, + get_size(&launch_config.block_dim_x, &buffers, &context)? as u32, + get_size(&launch_config.block_dim_y, &buffers, &context)? as u32, + get_size(&launch_config.block_dim_z, &buffers, &context)? as u32, + get_size(&launch_config.shared_mem_bytes, &buffers, &context)?, DEFAULT_STREAM, params.as_ptr(), null(), @@ -176,9 +172,6 @@ pub fn gpu_run( } } - // Not required, as hipMemcpy-s synchronise as well - // hip::device_synchronize()?; - write_gpu_outputs::( &mut context, config.system_data_struct_offset, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index ac34c131..1ac69abe 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -1,78 +1,30 @@ -use std::{ - collections::HashMap, - fs::{self, File}, - io::BufReader, - os::raw::c_void, - sync::Arc, -}; +use std::{collections::HashMap, fs::File, io::BufReader, os::raw::c_void, sync::Arc}; use dandelion_commons::{DandelionError, DandelionResult}; use serde::{Deserialize, Serialize}; -use crate::{function_driver::GpuConfig, interface::DandelionSystemData, memory_domain::Context}; +use crate::function_driver::GpuConfig; use super::hip::{self, FunctionT, ModuleT}; const SYSDATA_OFFSET: usize = 0usize; -const MODULE_OFFSET: usize = std::mem::size_of::>(); - -// This is subject to change; not very happy with it -#[derive(Deserialize, Serialize, Debug)] -pub enum GridSizing { - CoverBuffer { - bufname: String, - dimensionality: u8, - block_dim: u32, - }, - Absolute(u32), -} #[derive(Deserialize, Serialize, Debug)] pub struct LaunchConfig { - pub grid_dim_x: GridSizing, - pub grid_dim_y: GridSizing, - pub grid_dim_z: GridSizing, - pub block_dim_x: u32, - pub block_dim_y: u32, - pub block_dim_z: u32, - pub shared_mem_bytes: usize, -} - -impl LaunchConfig { - pub fn one_dimensional(grid_dim: u32, block_dim: u32, shared_mem_bytes: usize) -> Self { - Self { - grid_dim_x: GridSizing::Absolute(grid_dim), - grid_dim_y: GridSizing::Absolute(1), - grid_dim_z: GridSizing::Absolute(1), - block_dim_x: block_dim, - block_dim_y: 1, - block_dim_z: 1, - shared_mem_bytes, - } - } - pub fn two_dimensional( - grid_dim_x: u32, - grid_dim_y: u32, - block_dim_x: u32, - block_dim_y: u32, - shared_mem_bytes: usize, - ) -> Self { - Self { - grid_dim_x: GridSizing::Absolute(grid_dim_x), - grid_dim_y: GridSizing::Absolute(grid_dim_y), - grid_dim_z: GridSizing::Absolute(1), - block_dim_x, - block_dim_y, - block_dim_z: 1, - shared_mem_bytes, - } - } + pub grid_dim_x: Sizing, + pub grid_dim_y: Sizing, + pub grid_dim_z: Sizing, + pub block_dim_x: Sizing, + pub block_dim_y: Sizing, + pub block_dim_z: Sizing, + pub shared_mem_bytes: Sizing, } #[derive(Deserialize, Serialize, Debug)] pub enum Argument { Ptr(String), Sizeof(String), + Constant(i64), } #[derive(Deserialize, Serialize, Debug)] @@ -82,100 +34,26 @@ pub enum Condition { #[derive(Deserialize, Serialize, Debug)] pub enum Action { - ExecKernel(String, Vec, LaunchConfig), + ExecKernel(String, Vec, Box), Repeat(Condition, Vec), } #[derive(Deserialize, Serialize, Debug)] -pub enum BufferSizing { +pub enum Sizing { Sizeof(String), Absolute(usize), + FromInput { bufname: String, idx: usize }, } #[derive(Deserialize, Serialize, Debug)] pub struct ExecutionBlueprint { pub inputs: Vec, /// buffer names to sizes - pub buffers: HashMap, + pub buffers: HashMap, pub outputs: Vec, // might not be required pub control_flow: Vec, } -pub fn dummy_config() -> DandelionResult { - Ok(GpuConfig { - system_data_struct_offset: SYSDATA_OFFSET, - module_offset: MODULE_OFFSET, - kernels: Arc::new(vec!["set_mem".into(), "check_mem".into()]), - blueprint: Arc::new(ExecutionBlueprint { - inputs: vec![], - buffers: HashMap::from([("A".into(), BufferSizing::Absolute(1024))]), - outputs: vec![], - control_flow: vec![ - Action::ExecKernel( - "set_mem".into(), - vec![Argument::Ptr("A".into()), Argument::Sizeof("A".into())], - LaunchConfig::one_dimensional((256 + 1024 - 1) / 1024, 1024, 0), - ), - Action::ExecKernel( - "check_mem".into(), - vec![Argument::Ptr("A".into()), Argument::Sizeof("A".into())], - LaunchConfig::one_dimensional(1, 1, 0), - ), - ], - }), - }) -} - -pub fn dummy_config2() -> DandelionResult { - Ok(GpuConfig { - system_data_struct_offset: SYSDATA_OFFSET, - module_offset: MODULE_OFFSET, - kernels: Arc::new(vec!["check_then_write".into()]), - blueprint: Arc::new(ExecutionBlueprint { - inputs: vec!["A".into()], - buffers: HashMap::new(), - outputs: vec!["A".into()], - control_flow: vec![Action::ExecKernel( - "check_then_write".into(), - vec![Argument::Ptr("A".into())], - LaunchConfig::one_dimensional(1, 1, 0), - )], - }), - }) -} - -pub fn matmul_dummy(parallel: bool) -> DandelionResult { - let fn_name = if parallel { - "matmul_para" - } else { - "matmul_loop" - }; - - Ok(GpuConfig { - system_data_struct_offset: SYSDATA_OFFSET, - module_offset: MODULE_OFFSET, - kernels: Arc::new(vec![fn_name.into()]), - blueprint: Arc::new(ExecutionBlueprint { - inputs: vec!["A".into()], - buffers: HashMap::from([("B".into(), BufferSizing::Absolute(80))]), - outputs: vec!["B".into()], - control_flow: vec![Action::ExecKernel( - fn_name.into(), - vec![ - Argument::Ptr("A".into()), - Argument::Sizeof("A".into()), - Argument::Ptr("B".into()), - ], - if parallel { - LaunchConfig::two_dimensional(1, 1, 3, 3, 0) - } else { - LaunchConfig::one_dimensional(1, 1, 0) - }, - )], - }), - }) -} - #[derive(Deserialize, Serialize, Debug)] struct GpuConfigIR { module_path: String, @@ -232,61 +110,3 @@ pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { let module_path: String = ir.module_path.drain(..).collect(); Ok((ir.into(), module_path)) } - -// For me so I could see how the file would look. Keeping it for now until format is finalised -// #[test] -#[allow(unused)] -fn test_parse() { - let cfg = GpuConfigIR { - module_path: "/[PATH]/nearest_neigbours.hsaco".into(), - kernels: vec!["SUB".into(), "ADD".into(), "MUL".into()], - blueprint: ExecutionBlueprint { - inputs: vec!["X".into(), "A".into()], - buffers: HashMap::from([ - ("V".into(), BufferSizing::Sizeof("X".into())), - ("X_tmp".into(), BufferSizing::Sizeof("X".into())), - ]), - outputs: vec!["V".into()], - control_flow: vec![Action::Repeat( - Condition::NTimes(25), - vec![ - Action::ExecKernel( - "SUB".into(), - vec![ - Argument::Ptr("X".into()), - Argument::Ptr("V".into()), - Argument::Ptr("X_tmp".into()), - Argument::Sizeof("X".into()), - ], - LaunchConfig::one_dimensional(1, 1, 0), - ), - Action::ExecKernel( - "ADD".into(), - vec![ - Argument::Ptr("X".into()), - Argument::Ptr("V".into()), - Argument::Ptr("V".into()), - Argument::Sizeof("X".into()), - ], - LaunchConfig::one_dimensional(1, 1, 0), - ), - Action::ExecKernel( - "MUL".into(), - vec![ - Argument::Ptr("A".into()), - Argument::Ptr("X_tmp".into()), - Argument::Ptr("X".into()), - Argument::Sizeof("A".into()), - Argument::Sizeof("X".into()), - ], - LaunchConfig::one_dimensional(1, 1, 0), - ), - ], - )], - }, - }; - - let j = serde_json::to_string(&cfg).unwrap(); - - println!("{}", j); -} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 8dd23963..420165f2 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -4,11 +4,7 @@ use crate::{ TransferArguments, WorkQueue, }, interface::read_output_structs, - memory_domain::{ - self, - mmu::{MmuContext, MMAP_BASE_ADDR}, - Context, ContextState, ContextType, - }, + memory_domain::{self, mmu::MmuContext, Context, ContextState, ContextTrait, ContextType}, promise::Debt, util::mmapmem::MmapMem, DataSet, Position, @@ -28,9 +24,9 @@ use tokio::{ task, }; -use self::super::{config_parsing::GridSizing, hip}; +use self::super::hip; -use super::hip::DevicePointer; +use super::{config_parsing::Sizing, hip::DevicePointer}; pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context @@ -52,6 +48,8 @@ pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult Ok(length) } +/// # Safety +/// Requires *base* to point to the stat of *context* pub unsafe fn copy_data_to_device( ident: &str, context: &Context, @@ -80,28 +78,45 @@ pub unsafe fn copy_data_to_device( Ok(()) } -// subject to change; not super happy with this -pub fn get_grid_size( - gs: &GridSizing, +// used to be called get_grid_size +pub fn get_size( + sizing: &Sizing, buffers: &HashMap, -) -> DandelionResult { - match gs { - GridSizing::Absolute(size) => Ok(*size), - GridSizing::CoverBuffer { - bufname, - dimensionality, - block_dim, - } => { - if *dimensionality > 3 || *dimensionality == 0 { + context: &Context, +) -> DandelionResult { + match sizing { + Sizing::Absolute(size) => Ok(*size), + Sizing::FromInput { bufname, idx } => { + let dataset = context + .content + .iter() + .find(|&elem| match elem { + Some(set) => &set.ident == bufname, + _ => false, + }) + .ok_or(DandelionError::ConfigMissmatch)? + .as_ref() + .unwrap(); // okay, as we matched successfully + + let data_item = dataset + .buffers + .first() + .ok_or(DandelionError::ConfigMissmatch)?; + + let relative_offset = *idx * std::mem::size_of::(); + if relative_offset > data_item.data.size { return Err(DandelionError::ConfigMissmatch); } - let bufsize = buffers - .get(bufname) - .ok_or(DandelionError::ConfigMissmatch)? - .1; - let side_length = (bufsize as f64).powf(1.0 / (*dimensionality as f64)).ceil() as u32; - Ok((side_length + block_dim - 1) / block_dim) + + let mut buf: [usize; 1] = [0]; + context.read(data_item.data.offset + relative_offset, &mut buf)?; + + Ok(buf[0]) } + Sizing::Sizeof(bufname) => Ok(buffers + .get(bufname) + .ok_or(DandelionError::ConfigMissmatch)? + .1), } } From 6c221ef48858a7b2a2ada3829faed58fbc473306 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 29 Apr 2024 17:20:46 +0200 Subject: [PATCH 076/176] inference test and updated single thread engine --- .../hip_interface/inference.json | 12 +- machine_interface/hip_interface/mlops.hsaco | Bin 44992 -> 68576 bytes .../compute_driver/compute_driver_tests.rs | 189 +++++++++++++++++- .../src/function_driver/compute_driver/gpu.rs | 9 +- .../compute_driver/gpu/gpu_utils.rs | 74 ++++++- .../src/function_driver/thread_utils.rs | 2 +- 6 files changed, 269 insertions(+), 17 deletions(-) diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json index 5ccef2bb..680da2a6 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/hip_interface/inference.json @@ -3,11 +3,11 @@ "kernels": ["matmul_f", "convolution_f", "relu_2d_f", "maxpool_f"], "blueprint": { "inputs": ["cfg", "A", "B"], - "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 2}}}, + "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, "outputs": ["D"], "control_flow": [ {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 0}}, + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -16,7 +16,7 @@ "shared_mem_bytes": {"Absolute": 0} }]}, {"ExecKernel": ["relu_2d_f", [{"Ptr": "C"}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 0}}, + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, @@ -24,9 +24,9 @@ "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["maxpool_f", [{"Ptr": "D", "Constant": 2}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 3}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 4}}, + {"ExecKernel": ["maxpool_f", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, "grid_dim_z": {"Absolute": 1}, "block_dim_x": {"Absolute": 32}, "block_dim_y": {"Absolute": 32}, diff --git a/machine_interface/hip_interface/mlops.hsaco b/machine_interface/hip_interface/mlops.hsaco index 42578f3351007b9174690407e5a1ad2e70aeb885..957372c7e14cb6dcd81f75bbc5194f18f3a3725a 100644 GIT binary patch literal 68576 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 Iwo~^10Y|_%C;$Ke delta 3832 zcmZu!eT)@X6+idR$NPRW``&!Mw}A)UT9#5+C?88n+68T@4F-r-8w4w$%?72Rersgj zoyopsYxsCOQ)VbOS+wyF8^|Lbo{^fWUh)5{g2*19!;jn7??vt)d$!H+lC%q`2czU?GyuYfj9JGuF;4w8^P_N zDk;oMm0jhaVD1Q34KEMI)~=jiHM~~{J~y(33S&ZEDV0O{&BJbEr$br!!sn0mLq|?;bZm|T)iS> z0M5j2O!3g+H4$8V+$1N0?HkQz7G*008D2=DotVIZM1EjE&h>rFBqCN<%D)rO zza9_pS}K1%7ToEl0AN#$zZX6;us{jzhR~sjN8%SI;sJ(n>@VDo1s@mVac3$|(%PW0 z{EcXjM9lRklkYe)msW%fpkBEI(d6!lz;b|D_%I*vSCpB{kwN^pCF8Jypk zrTa(c-`u!Nm_6UfTRd2JEmUS_Yr(B8Ba}_@r#0gvWFpuz{uF^=cDycej~9d65Q21 z35n;KBAw)VqKXcvS*O^8>0Xax$UZGp9I>D}avmm0&O3(QUjy`xQQ0{RYpN$Geg$J1|F10|6IYu`L99E8LlkJ zZl)+tGC184$If&N7iIbUqztXMX@)OXcKDJG+MqoBZaM-tTF z7nhbbRdsSXw7Q2I-|oEELx<30QKdk|6Vv=Ti{2N-sc8`%{yXaBA#HL_Ggju|^xK|B zVTe|oyl5|}_*@W&mvUwW)v$tUuXkxV~I#Kcs}|bBrdMMqw=A^h zHkM~ny5TT-VpxVpq%p)deLyVRG+km5-z26B7WhUJ?9hOkZ<)is1rSWs59L|W!pHR4-JJ+x{N)(K$@ zH>a%(hqj{lL?O(s)x#z(=G770t|>k!3W9^D0r;9iLOfAiT_HY@nu~LvQ0mw<=310) zX^&G?T}}v(?j;%?KO81rHO39P~rCV6%4M0sI#Dg6lNBUi z)%AKZT?0*EyU5eAM|XP77kU)WIbiFAt+LZM0CrVSFggl#1ZfpIyV?QG@IkjiqMN>D z;6Y^?F6g$e8)m2@k#$=SbxUW=G(F9(g_?~zTW6YKA&GU*VkkEZwAWdanTDq)WYP=` z*}4W7(0ycVXzIF44C3oVcfmkTfEj9F`G#Ke4UCqd+aV_@vkec~%ru>Zh8dGp(-A{| zKUpz7=sX&qlJE zR>_A_sZZ7llC@Hb$yzOOvRW?A`(!mO<{BwktDz?#St|)y4HkMvwaM9P_t{#(N?=sw zF4n3(TWusHXDgqJSOH2duu`9_StM&dCM&+f$=bImP{0K}sB%ows&KL*-hHxiyqhf% z$y!2ePFAsrz*;$FYj!hMiGCHm&srB*+ZtdkCoMW55?>@F6p82-MT`I~`Nh%+m$*2m zC-Kg8QQs;Ri>+A3=VD7l(u!HI_;K2VHde-@+-3+r?&Gq}ORtEfmtyHnOL&ILle`QI zQgYPe_GEY_9EPcBUWEx(VX?tF>+#s9ST|+-xcp3>QRpp65)uVJq`(SzW?)T~0D3gv z#4xg+1XCSGraQ8zPR^;7m04a1v0@gm=;l>*L#A38=T$BX&5Z2IEQ?=2MX)j~<4J|Q zA*;VR#;adODI1cKH~xkNj+Vp?B1Qro98c{^_{$3x1Ue71AXp`{f5>4TB;ssSY6(j+NVxgFU9smKG^XeN#ujS8n4B20S=Bv&&uRm z^Z(uS6B50eB_E02&5{Ntn&im3Tw^8rfmb8inj>3sX~M1O8#v8hNb-MSB)XI%n{)df zj;;4a|3>xDy}yj)H{hXYd!CF9rN5NvFXoZREs$l=`8-kc_jnOSm-6IEdNhjugQKpV kjgcp?O!BLUw-|l2Kpv&L&qd!XkSB8&ljK~DNS-YJAI?e`5&!@I diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 367e6e36..21324f26 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -661,12 +661,14 @@ mod compute_driver_tests { mod gpu { use std::{ + cmp::max, os::raw::c_void, ptr::null, sync::{Arc, Mutex}, }; use dandelion_commons::records::{Archive, RecordPoint, Recorder}; + use futures::SinkExt; use crate::{ function_driver::{ @@ -944,7 +946,7 @@ mod compute_driver_tests { ], })); let cfg_offset = function_context - .get_free_space_and_write_slice(&[((mat_size + 31) / 32) as i64]) + .get_free_space_and_write_slice(&[(mat_size + 31) / 32]) .expect("Should be able to write cfg"); function_context.content.push(Some(DataSet { ident: "cfg".to_string(), @@ -1001,5 +1003,190 @@ mod compute_driver_tests { } } } + + fn get_inference_inputs() -> (Vec, Vec) { + let mut a: Vec = Vec::with_capacity(224 * 224 + 2); + let mut b: Vec = Vec::with_capacity(5 * 5 + 2); + + a.push(224.0); + a.push(224.0); + for i in 0..224 * 224 { + a.push(i as f32); + } + + b.push(5.0); + b.push(5.0); + for i in 0..5 * 5 { + b.push(i as f32); + } + + (a, b) + } + + fn get_expected_inference_output() -> Vec { + let (a, b) = get_inference_inputs(); + let mut c = vec![0f32; a.len()]; + let mut d = vec![0f32; c.len() / 2 + 1]; + + // convolution + c[0] = 224f32; + c[1] = 224f32; + for i in 0..224 { + for j in 0..224 { + let mut sum = 0f32; + for k in -2..=2i32 { + for l in -2..=2i32 { + let cur_row = i - k; + let cur_col = j - l; + + let filter_row = 2 + k; + let filter_col = 2 + l; + + if (0..224).contains(&cur_row) && (0..224).contains(&cur_col) { + let cur_row = cur_row as usize; // There has to be a better way to do this... + let cur_col = cur_col as usize; + let filter_row = filter_row as usize; + let filter_col = filter_col as usize; + sum += a[2 + cur_row * 224 + cur_col] + * b[2 + filter_row * 5 + filter_col]; + } + } + } + let i = i as usize; + let j = j as usize; + c[2 + i * 224 + j] = sum; + } + } + + // relu + for i in 0..224 * 224 { + c[2 + i] = c[2 + i].max(0f32); + } + + // max pooling + d[0] = 112f32; + d[1] = 112f32; + for i in 0..112 { + for j in 0..112 { + let mut max = f32::NEG_INFINITY; + let base_row = i * 2; + let base_col = j * 2; + for k in 0..2 { + for l in 0..2 { + max = max.max(c[2 + (base_row + k) * 224 + (base_col + l)]); + } + } + d[2 + i * 112 + j] = max; + } + } + + d + } + + #[test] + fn inference_benchmark_function() { + let _lock = GPU_LOCK.lock().unwrap(); + let filename = "/home/smithj/dandelion/machine_interface/hip_interface/inference.json"; + let dom_init = MemoryResource::None; + let driver: Box = Box::new(GpuDriver {}); + let drv_init = vec![ComputeResource::GPU(7, 0)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::( + filename, dom_init, &driver, drv_init, + ); + let d_size: usize = 112 * 112 * 4 + 8; //side_len * side_len * sizeof(float) + [[size convention at start]] + let a_grid_dim: usize = (224 + 31) / 32; + let d_grid_dim: usize = (112 + 31) / 32; + let (a_matrix, b_matrix) = get_inference_inputs(); + let cfg_offset = function_context + .get_free_space_and_write_slice(&[d_size, a_grid_dim, d_grid_dim]) + .expect("Should have space for cfg"); + let a_offset = function_context + .get_free_space_and_write_slice(&a_matrix) + .expect("Should have space for A"); + let b_offset = function_context + .get_free_space_and_write_slice(&b_matrix) + .expect("Should have space for B"); + + function_context.content.append(&mut vec![ + Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: cfg_offset as usize, + size: 3 * 8, + }, + key: 0, + }], + }), + Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_matrix.len() * 4, + }, + key: 0, + }], + }), + Some(DataSet { + ident: "B".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: b_offset as usize, + size: b_matrix.len() * 4, + }, + key: 0, + }], + }), + ]); + let archive = Arc::new(Mutex::new(Archive::new())); + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("D")]), + recorder, + })); + queue.enqueu(EngineArguments::Shutdown(|_| { + // GPU allocation automatically dropped when Engine dropped + })); + let (result_context, mut result_recorder) = + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + result_recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!( + 112 * 112 * 4 + 8, + position.size, + "Checking for size of output" + ); + let mut read_buffer = vec![0f32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + let expected = get_expected_inference_output(); + eprintln!( + "{:?}, {:?}, {:?}", + read_buffer[2], read_buffer[3], read_buffer[4] + ); + for (idx, (should, is)) in expected.iter().zip(read_buffer[..].iter()).enumerate() { + assert_eq!(should, is, "Comparing args at {}", idx); + } + } } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index d4e3f6e6..a833c77c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -21,7 +21,9 @@ use std::{ use self::{ buffer_pool::BufferPool, config_parsing::{Action, Argument}, - gpu_utils::{copy_data_to_device, get_data_length, get_size, start_gpu_process_pool}, + gpu_utils::{ + copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, start_gpu_thread, + }, hip::DEFAULT_STREAM, }; @@ -240,9 +242,6 @@ impl EngineLoop for GpuLoop { Err(_) => return Err(DandelionError::EngineError), }; - let write_buf = vec![12345i64]; - context.write(0, &write_buf)?; - read_output_structs::(&mut context, sysdata_offset)?; Ok(context) @@ -279,7 +278,7 @@ impl Driver for GpuDriver { } // To switch between single executor and process pool - // start_thread::(cpu_slot, queue); + // spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); Ok(()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 420165f2..db758ec7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -1,7 +1,7 @@ use crate::{ function_driver::{ - ComputeResource, EngineArguments, FunctionArguments, FunctionConfig, GpuConfig, - TransferArguments, WorkQueue, + thread_utils::EngineLoop, ComputeResource, EngineArguments, FunctionArguments, + FunctionConfig, GpuConfig, TransferArguments, WorkQueue, }, interface::read_output_structs, memory_domain::{self, mmu::MmuContext, Context, ContextState, ContextTrait, ContextType}, @@ -26,7 +26,7 @@ use tokio::{ use self::super::hip; -use super::{config_parsing::Sizing, hip::DevicePointer}; +use super::{config_parsing::Sizing, hip::DevicePointer, GpuLoop}; pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context @@ -78,7 +78,6 @@ pub unsafe fn copy_data_to_device( Ok(()) } -// used to be called get_grid_size pub fn get_size( sizing: &Sizing, buffers: &HashMap, @@ -120,6 +119,73 @@ pub fn get_size( } } +pub fn start_gpu_thread(core_id: u8, gpu_id: u8, queue: Box) { + // set core affinity + if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { + log::error!("core received core id that could not be set"); + return; + } + let mut engine_state = GpuLoop::init(ComputeResource::GPU(core_id, gpu_id)) + .expect("Failed to initialize thread state"); + loop { + // TODO catch unwind so we can always return an error or shut down gracefully + let (args, debt) = queue.get_engine_args(); + match args { + EngineArguments::FunctionArguments(func_args) => { + let FunctionArguments { + config, + context, + output_sets, + mut recorder, + } = func_args; + if let Err(err) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(err))); + continue; + } + let result = engine_state.run(config, context, output_sets); + if result.is_ok() { + if let Err(err) = recorder.record(RecordPoint::EngineEnd) { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let results = Box::new(result.map(|context| (context, recorder))); + debt.fulfill(results); + } + EngineArguments::TransferArguments(transfer_args) => { + let TransferArguments { + source, + mut destination, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name, + source_set_index, + source_item_index, + recorder, + } = transfer_args; + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ) + .and(Ok((destination, recorder))); + debt.fulfill(Box::new(transfer_result)); + continue; + } + EngineArguments::Shutdown(resource_returner) => { + resource_returner(vec![ComputeResource::CPU(core_id)]); + return; + } + } + } +} + struct Worker { _process: Child, pub stdin: Mutex, diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index 6a04068f..84611cf0 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -51,7 +51,7 @@ fn run_thread(core_id: u8, queue: Box) { continue; } } - let results = Box::new(result.and_then(|context| Ok((context, recorder)))); + let results = Box::new(result.map(|context| (context, recorder))); debt.fulfill(results); } EngineArguments::TransferArguments(transfer_args) => { From 0308e925448bae28385e361d1dbb9c0b4941d6da Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Mon, 29 Apr 2024 17:56:38 +0200 Subject: [PATCH 077/176] Fix serialization --- dandelion_commons/src/lib.rs | 9 + server/Cargo.toml | 2 +- server/src/lib.rs | 484 ++++++++++++++++++++++++++++++----- server/src/main.rs | 389 +++++++++++++--------------- 4 files changed, 607 insertions(+), 277 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index fc26bbdd..a6eec1f0 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -124,6 +124,15 @@ pub enum DandelionError { RequestError(FrontendError), } +// Implement display to be compliant with core::error::Error +impl core::fmt::Display for DandelionError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + return f.write_fmt(format_args!("{:?}", self)); + } +} + +impl std::error::Error for DandelionError {} + #[derive(Debug, Clone, Copy, PartialEq)] pub enum FrontendError { /// Failed to get more frames from the connection diff --git a/server/Cargo.toml b/server/Cargo.toml index 6cae8074..7fe16da1 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -15,7 +15,7 @@ http-body-util = "0.1" tower = { version = "0.4.13", features = ["make"] } core_affinity = "0.8" num_cpus = "1.16.0" -bytes = "1.4" +bytes = "1.6" http = "0.2" log = { version = "0.4.20", features = ["serde", "release_max_level_warn"] } env_logger = "0.10.1" diff --git a/server/src/lib.rs b/server/src/lib.rs index f87fdf9a..dc5d3d78 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -1,9 +1,11 @@ pub mod config; +use dandelion_commons::DandelionError; use dispatcher::composition::CompositionSet; +use hyper::body::Frame; use machine_interface::memory_domain::{Context, ContextTrait}; use serde::{Deserialize, Serialize}; -use std::{collections::BTreeMap, sync::Arc}; +use std::{collections::BTreeMap, io::IoSlice, sync::Arc}; #[derive(Serialize, Deserialize)] pub struct DandelionRequest<'data> { @@ -33,79 +35,441 @@ pub struct InputItem<'data> { pub data: &'data [u8], } -#[derive(Serialize)] -pub struct DandelionResponse { - pub sets: Vec, +#[derive(Debug)] +struct ItemData { + response_offset: usize, + reponse_size: usize, + set_index: usize, + item_index: usize, + context: Arc, } -#[derive(Serialize)] -pub struct OutputSet { - pub identifier: String, - pub items: Vec, + +fn encode_item( + set_index: usize, + item_index: usize, + context: Arc, + response: &mut Vec, + data_items: &mut Vec, + array_index: usize, +) -> usize { + let item_ref = &context.content[set_index].as_ref().unwrap().buffers[item_index]; + // add item to array with doc type and index into array as name + response.push(3); + response.extend_from_slice(format!("{}", array_index).as_bytes()); + response.push(0); + // start item doc + let doc_start = response.len(); + response.extend_from_slice(&0i32.to_le_bytes()); + + // item identifier to be type string, name identifier and item identifier + response.push(2); + response.extend_from_slice("identifier\0".as_bytes()); + let identifier = &item_ref.ident; + response.extend_from_slice(&((identifier.len() + 1) as i32).to_le_bytes()); + response.extend_from_slice(identifier.as_bytes()); + response.push(0); + + // item key to be type int64, name key and item key + response.push(18); + response.extend_from_slice("key\0".as_bytes()); + let key = item_ref.key as i64; + response.extend_from_slice(&key.to_le_bytes()); + + // item data to be binary type, name data, with item data + response.push(5); + response.extend_from_slice("data\0".as_bytes()); + // binary lenth, generic subtype subtype and then all data + let data_size = item_ref.data.size as i32; + response.extend_from_slice(&data_size.to_le_bytes()); + response.push(0); + + let item_size = item_ref.data.size; + data_items.push(ItemData { + response_offset: response.len(), + reponse_size: item_size, + set_index, + item_index, + context, + }); + + // end doc and set length + response.push(0); + let doc_size = (response.len() - doc_start + item_size) as i32; + response[doc_start..doc_start + 4].copy_from_slice(&doc_size.to_le_bytes()); + + return item_size; } -#[derive(Serialize)] -pub struct OutputItem { - pub identifier: String, - pub key: u32, - #[serde(with = "serde_bytes")] - data: ReadSlice, +fn encode_sets( + sets: BTreeMap, + response: &mut Vec, + data_items: &mut Vec, +) -> usize { + let mut all_items = 0; + // if list is empty need to push empty string + for (index, set) in sets.into_values().enumerate() { + // add item to array with doc type and name equal to index into the array + response.push(3); + response.extend_from_slice(format!("{}", index).as_bytes()); + response.push(0); + // start doc by making space for size + let doc_start = response.len(); + response.extend_from_slice(&0i32.to_le_bytes()); + + // set identifier: string type, identifier e_name and actual set name as length, string, null byte + response.push(2); + response.extend_from_slice("identifier\0".as_bytes()); + let set_name = &set.context_list[0].0.content[set.set_index] + .as_ref() + .unwrap() + .ident; + response.extend_from_slice(&((set_name.len() + 1) as i32).to_le_bytes()); + response.extend_from_slice(set_name.as_bytes()); + response.push(0); + + // set items: array type, items e_name and a doc for the array + response.push(4); + response.extend_from_slice("items\0".as_bytes()); + let item_array_start = response.len(); + response.extend_from_slice(&0i32.to_le_bytes()); + + let mut set_items_length = 0; + for (array_index, (set_index, item_index, context)) in set.into_iter().enumerate() { + set_items_length += encode_item( + set_index, + item_index, + context, + response, + data_items, + array_index, + ); + } + all_items += set_items_length; + + // end array + response.push(0); + let array_size = (response.len() - item_array_start + set_items_length) as i32; + response[item_array_start..item_array_start + 4].copy_from_slice(&array_size.to_le_bytes()); + + // end set doc + response.push(0); + let doc_size = (response.len() - doc_start + set_items_length) as i32; + response[doc_start..doc_start + 4].copy_from_slice(&doc_size.to_le_bytes()); + } + return all_items; } -struct ReadSlice { - context: Arc, - offset: usize, - size: usize, +fn encode_response(sets: BTreeMap) -> (usize, Vec, Vec) { + // lenght of dict, list of items closing 0 byte + let mut response = Vec::::new(); + let mut data_items = Vec::new(); + // add space for the doc size + response.extend_from_slice(&0i32.to_le_bytes()); + + // document always has an array of sets + response.push(4); + response.extend_from_slice("sets\0".as_bytes()); + let set_length_offset = response.len(); + response.extend_from_slice(&0i32.to_le_bytes()); + + // encode sets + let all_items = encode_sets(sets, &mut response, &mut data_items); + + // end array and set length + response.push(0); + let set_array_length = (response.len() - set_length_offset + all_items) as i32; + response[set_length_offset..set_length_offset + 4] + .copy_from_slice(&set_array_length.to_le_bytes()); + + // end docuemnt and set length + response.push(0); + let doc_length = (response.len() + all_items) as i32; + response[0..4].copy_from_slice(&doc_length.to_le_bytes()); + + return (all_items, response, data_items); } -impl core::ops::Deref for ReadSlice { - type Target = [u8]; - fn deref(&self) -> &Self::Target { - return self.context.get_chunk_ref(self.offset, self.size).unwrap(); +#[derive(Debug, Clone, Copy, PartialEq)] +enum ReadMode { + /// index of the next item and how much to read in serial until hit next item + ToItem(usize, usize), + /// index of the item to read and how much to read until hit end of item + ToItemEnd(usize, usize), + /// there are no more items, are reading rest of serial + ToEnd(usize), +} + +impl ReadMode { + fn len(&self) -> usize { + match self { + ReadMode::ToItem(_, to_end) + | ReadMode::ToItemEnd(_, to_end) + | ReadMode::ToEnd(to_end) => *to_end, + } } } -impl serde_bytes::Serialize for ReadSlice { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_bytes(&self) +#[derive(Debug)] +pub struct DandelionBuf { + remaining: usize, + read_offset: ReadMode, + serial: Vec, + items: Vec, +} + +impl DandelionBuf { + fn get_chunk(&self, read_mode: ReadMode) -> &[u8] { + return match read_mode { + ReadMode::ToEnd(to_end) => { + let start = self.serial.len() - to_end; + &self.serial[start..self.serial.len()] + } + ReadMode::ToItem(item_index, to_item) => { + let item_offset = self.items[item_index].response_offset; + &self.serial[item_offset - to_item..item_offset] + } + ReadMode::ToItemEnd(buf_item_index, to_end) => { + let ItemData { + context, + response_offset: _, + reponse_size: _, + set_index, + item_index, + } = &self.items[buf_item_index]; + let position = + context.content[*set_index].as_ref().unwrap().buffers[*item_index].data; + let start = position.offset + (position.size - to_end); + context.get_chunk_ref(start, to_end).unwrap() + } + }; + } + fn advance_descriptor(&self, read_mode: ReadMode, to_advance: usize) -> (usize, ReadMode) { + let (advanced, new_mode) = match read_mode { + ReadMode::ToEnd(to_end) => { + if to_end >= to_advance { + (to_advance, ReadMode::ToEnd(to_end - to_advance)) + } else { + (to_end, ReadMode::ToEnd(0)) + } + } + ReadMode::ToItem(item_index, to_item) => { + if to_item > to_advance { + ( + to_advance, + ReadMode::ToItem(item_index, to_item - to_advance), + ) + } else { + ( + to_item, + ReadMode::ToItemEnd(item_index, self.items[item_index].reponse_size), + ) + } + } + ReadMode::ToItemEnd(item_index, to_end) => { + if to_end > to_advance { + ( + to_advance, + ReadMode::ToItemEnd(item_index, to_end - to_advance), + ) + } else { + let next_read = if item_index + 1 >= self.items.len() { + ReadMode::ToEnd(self.serial.len() - self.items[item_index].response_offset) + } else { + let next_index = item_index + 1; + let next_size = self.items[next_index].reponse_size; + if self.items[next_index].response_offset + == self.items[item_index].response_offset + { + ReadMode::ToItemEnd(next_index, next_size) + } else { + ReadMode::ToItem(next_index, next_size) + } + }; + (to_end, next_read) + } + } + }; + return (advanced, new_mode); } } -pub fn create_response(response_sets: BTreeMap) -> Vec { - let mut response_data = Vec::new(); - for (_, composition_set) in response_sets { - let mut composition_set_iter = composition_set.into_iter().peekable(); - let first_elem = composition_set_iter.peek(); - let set_name = if let Some(elem) = first_elem { - elem.2.content[elem.0].as_ref().unwrap().ident.clone() +impl bytes::Buf for DandelionBuf { + fn remaining(&self) -> usize { + return self.remaining; + } + + fn advance(&mut self, cnt: usize) { + if cnt > self.remaining { + self.remaining = 0; + self.read_offset = ReadMode::ToEnd(0); + return; + } + self.remaining -= cnt; + let mut to_advance = cnt; + loop { + let (read_length, next_reader) = self.advance_descriptor(self.read_offset, to_advance); + to_advance -= read_length; + self.read_offset = next_reader; + if next_reader.len() == 0 && next_reader != ReadMode::ToEnd(0) { + continue; + } + if to_advance == 0 { + break; + } + } + } + + fn chunk(&self) -> &[u8] { + self.get_chunk(self.read_offset) + } + + fn chunks_vectored<'a>(&'a self, dst: &mut [std::io::IoSlice<'a>]) -> usize { + let mut slice_index = 0; + let mut next_read = self.read_offset; + let mut remaining = self.remaining; + while slice_index < dst.len() && next_read != ReadMode::ToEnd(0) && remaining > 0 { + let chunk = self.get_chunk(next_read); + if chunk.len() > 0 { + dst[slice_index] = IoSlice::new(chunk); + slice_index += 1; + } + remaining -= chunk.len(); + (_, next_read) = self.advance_descriptor(next_read, chunk.len()); + } + return slice_index; + } +} + +pub struct DandelionBody { + buffer: Option, +} + +impl DandelionBody { + pub fn new(sets: BTreeMap) -> Self { + let (total_item_size, serial, items) = encode_response(sets); + let read_offset = if items.len() > 0 { + if items[0].response_offset > 0 { + ReadMode::ToItem(0, items[0].response_offset) + } else { + ReadMode::ToItemEnd(0, items[0].reponse_size) + } } else { - continue; + ReadMode::ToEnd(serial.len()) + }; + return DandelionBody { + buffer: Some(DandelionBuf { + read_offset, + remaining: total_item_size + serial.len(), + serial, + items, + }), }; - let mut response_items = Vec::new(); - for (set_index, item_index, context) in composition_set_iter { - let local_context = context.clone(); - let item = &local_context.content[set_index].as_ref().unwrap().buffers[item_index]; - let offset = item.data.offset; - let size = item.data.size; - response_items.push(OutputItem { - identifier: item.ident.clone(), - key: item.key, - data: ReadSlice { - context: local_context, - offset: offset, - size: size, - }, - }); - } - response_data.push(OutputSet { - identifier: set_name, - items: response_items, - }); } - return bson::to_vec(&DandelionResponse { - sets: response_data, - }) - .unwrap(); + pub fn from_vec(array: Vec) -> Self { + return DandelionBody { + buffer: Some(DandelionBuf { + read_offset: ReadMode::ToEnd(array.len()), + remaining: array.len(), + serial: array, + items: Vec::new(), + }), + }; + } +} + +impl hyper::body::Body for DandelionBody { + type Data = DandelionBuf; + type Error = DandelionError; + fn poll_frame( + self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + ) -> std::task::Poll, Self::Error>>> { + let frame_data = self + .get_mut() + .buffer + .take() + .and_then(|bytes| Some(Ok(Frame::data(bytes)))); + return std::task::Poll::Ready(frame_data); + } +} + +#[cfg(test)] +async fn test_dandelion_body_serialization_async(mut body: DandelionBody, expected: Vec) { + use bytes::Buf; + use futures::future::poll_fn; + use hyper::body::Body; + use std::pin::Pin; + + let context_frame = poll_fn(|cx| Pin::new(&mut body).poll_frame(cx)) + .await + .unwrap() + .unwrap(); + if poll_fn(|cx| Pin::new(&mut body).poll_frame(cx)) + .await + .is_some() + { + panic!("body not end of frame or returned second frame"); + } + let mut context_data = context_frame + .into_data() + .expect("Should be able to get data from dandelion body frame"); + let data_length = context_data.remaining(); + let mut data_buf = Vec::with_capacity(data_length); + data_buf.resize(data_length, 0u8); + context_data.copy_to_slice(&mut data_buf); + assert_eq!(expected, data_buf); +} + +#[test] +fn test_dandelion_body_serialization() { + use machine_interface::{ + memory_domain::read_only::ReadOnlyContext, DataItem, DataSet, Position, + }; + + let pattern = [0xCu8, 0xAu8, 0xFu8, 0xEu8]; + let repetitions = 4; + let mut data = Vec::with_capacity(pattern.len() * repetitions); + for _ in 0..repetitions { + data.extend_from_slice(&pattern); + } + let data_box = data.clone().into_boxed_slice(); + + let expected_response_struct = DandelionDeserializeResponse { + sets: vec![InputSet { + identifier: String::from("set_ident"), + items: vec![InputItem { + identifier: String::from("item_ident"), + key: 7, + data: &data_box, + }], + }], + }; + let expected_response = bson::to_vec(&expected_response_struct).unwrap(); + + let mut new_context = ReadOnlyContext::new(data_box).unwrap(); + new_context.content = vec![Some(DataSet { + ident: String::from("set_ident"), + buffers: vec![DataItem { + key: 7, + ident: String::from("item_ident"), + data: Position { + offset: 0, + size: repetitions * pattern.len(), + }, + }], + })]; + let composition_set = CompositionSet { + set_index: 0, + context_list: vec![(Arc::new(new_context), 0..1)], + }; + let context_map = BTreeMap::from([(0, composition_set)]); + let context_body = DandelionBody::new(context_map); + + tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(test_dandelion_body_serialization_async( + context_body, + expected_response, + )); } diff --git a/server/src/main.rs b/server/src/main.rs index a4e2e94c..378e9c4f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,23 +1,21 @@ use core_affinity::{self, CoreId}; use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint, Recorder}; +use dandelion_server::DandelionBody; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, resource_pool::ResourcePool, }; -use http_body_util::{BodyExt, Full}; +use http_body_util::BodyExt; use hyper::{ - body::{Body, Bytes, Incoming}, + body::{Body, Incoming}, service::service_fn, - Request, Response, StatusCode, + Request, Response, }; use log::{error, info, warn}; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, - memory_domain::{ - bytes_context::BytesContext, mmap::MmapMemoryDomain, Context, ContextTrait, MemoryDomain, - }, - DataItem, DataSet, Position, + memory_domain::{bytes_context::BytesContext, Context}, }; use serde::Deserialize; use std::{ @@ -28,120 +26,119 @@ use std::{ path::PathBuf, sync::{ atomic::{AtomicU8, Ordering}, - Arc, Once, OnceLock, + Arc, OnceLock, }, }; use tokio::{net::TcpListener, runtime::Builder, signal::unix::SignalKind}; -static INIT_MATRIX: Once = Once::new(); -static mut DUMMY_MATRIX: Vec = Vec::new(); const FUNCTION_FOLDER_PATH: &str = "/tmp/dandelion_server"; -async fn run_chain( - dispatcher: Arc, - is_cold: bool, - function_name: String, - get_uri: String, - post_uri: String, - mut recorder: Recorder, -) -> u64 { - // TODO just have all the strings concatinated and create const context - let domain = MmapMemoryDomain::init(machine_interface::memory_domain::MemoryResource::None) - .expect("Should be able to get Mmap domain"); - let mut input_context = domain - .acquire_context(128) - .expect("Should be able to get malloc context"); - let get_request = format!("GET {} HTTP/1.1", get_uri); - let post_request = format!("PUT {} HTTP/1.1", post_uri); - let get_request_offset = input_context - .get_free_space_and_write_slice(get_request.as_bytes()) - .expect("Should be able to write") as usize; - let post_request_offset = input_context - .get_free_space_and_write_slice(post_request.as_bytes()) - .expect("Should be able to write") as usize; - input_context.content.push(Some(DataSet { - ident: String::from("request"), - buffers: vec![DataItem { - ident: String::from("request"), - data: Position { - offset: get_request_offset, - size: get_request.len(), - }, - key: 0, - }], - })); - input_context.content.push(Some(DataSet { - ident: String::from("request"), - buffers: vec![DataItem { - ident: String::from("request"), - data: Position { - offset: post_request_offset, - size: post_request.len(), - }, - key: 0, - }], - })); - let input_arc = Arc::new(input_context); - let inputs = vec![ - (0, CompositionSet::from((0, vec![input_arc.clone()]))), - (1, CompositionSet::from((1, vec![input_arc]))), - ]; - let output_mapping = vec![Some(0), Some(1)]; - - recorder - .record(RecordPoint::QueueFunctionDispatcher) - .unwrap(); - let result = dispatcher - .queue_function_by_name(function_name, inputs, output_mapping, is_cold, recorder) - .await - .expect("Should get response from chain"); - assert_eq!(2, result.len()); - // check http post response - let post_composition_set = result - .get(&1) - .expect("Should have composition set for post response"); - assert_eq!(1, post_composition_set.context_list.len()); - let post_context = &post_composition_set.context_list[0].0; - assert_eq!(3, post_context.content.len()); - let post_set = post_context.content[0] - .as_ref() - .expect("Should have status set"); - assert_eq!(1, post_set.buffers.len()); - let post_status_position = post_set.buffers[0].data; - let mut post_vec = Vec::::new(); - post_vec.resize(post_status_position.size, 0); - post_context - .read(post_status_position.offset, post_vec.as_mut_slice()) - .expect("Should be able to read post response"); - assert_eq!("HTTP/1.1 200 OK".as_bytes(), post_vec.as_slice()); - - // check iteration result - let result_compositon_set = result.get(&0).expect("Should have set 0"); - assert_eq!(1, result_compositon_set.context_list.len()); - let result_context = &result_compositon_set.context_list[0].0; - assert_eq!(1, result_context.content.len()); - let result_set = result_context.content[0] - .as_ref() - .expect("Should contain a return number"); - assert_eq!(1, result_set.buffers.len()); - let result_position = result_set.buffers[0].data; - - let mut result_vec = vec![0u8; result_position.size]; - result_context - .read(result_position.offset, result_vec.as_mut_slice()) - .expect("Should be able to read result"); - let checksum = u64::from_ne_bytes(result_vec[0..8].try_into().unwrap()); - - return checksum; -} - +// async fn run_chain( +// dispatcher: Arc, +// is_cold: bool, +// function_name: String, +// get_uri: String, +// post_uri: String, +// mut recorder: Recorder, +// ) -> u64 { +// // TODO just have all the strings concatinated and create const context +// let domain = MmapMemoryDomain::init(machine_interface::memory_domain::MemoryResource::None) +// .expect("Should be able to get Mmap domain"); +// let mut input_context = domain +// .acquire_context(128) +// .expect("Should be able to get malloc context"); +// let get_request = format!("GET {} HTTP/1.1", get_uri); +// let post_request = format!("PUT {} HTTP/1.1", post_uri); +// let get_request_offset = input_context +// .get_free_space_and_write_slice(get_request.as_bytes()) +// .expect("Should be able to write") as usize; +// let post_request_offset = input_context +// .get_free_space_and_write_slice(post_request.as_bytes()) +// .expect("Should be able to write") as usize; +// input_context.content.push(Some(DataSet { +// ident: String::from("request"), +// buffers: vec![DataItem { +// ident: String::from("request"), +// data: Position { +// offset: get_request_offset, +// size: get_request.len(), +// }, +// key: 0, +// }], +// })); +// input_context.content.push(Some(DataSet { +// ident: String::from("request"), +// buffers: vec![DataItem { +// ident: String::from("request"), +// data: Position { +// offset: post_request_offset, +// size: post_request.len(), +// }, +// key: 0, +// }], +// })); +// let input_arc = Arc::new(input_context); +// let inputs = vec![ +// (0, CompositionSet::from((0, vec![input_arc.clone()]))), +// (1, CompositionSet::from((1, vec![input_arc]))), +// ]; +// let output_mapping = vec![Some(0), Some(1)]; + +// recorder +// .record(RecordPoint::QueueFunctionDispatcher) +// .unwrap(); +// let result = dispatcher +// .queue_function_by_name(function_name, inputs, output_mapping, is_cold, recorder) +// .await +// .expect("Should get response from chain"); +// assert_eq!(2, result.len()); +// // check http post response +// let post_composition_set = result +// .get(&1) +// .expect("Should have composition set for post response"); +// assert_eq!(1, post_composition_set.context_list.len()); +// let post_context = &post_composition_set.context_list[0].0; +// assert_eq!(3, post_context.content.len()); +// let post_set = post_context.content[0] +// .as_ref() +// .expect("Should have status set"); +// assert_eq!(1, post_set.buffers.len()); +// let post_status_position = post_set.buffers[0].data; +// let mut post_vec = Vec::::new(); +// post_vec.resize(post_status_position.size, 0); +// post_context +// .read(post_status_position.offset, post_vec.as_mut_slice()) +// .expect("Should be able to read post response"); +// assert_eq!("HTTP/1.1 200 OK".as_bytes(), post_vec.as_slice()); + +// // check iteration result +// let result_compositon_set = result.get(&0).expect("Should have set 0"); +// assert_eq!(1, result_compositon_set.context_list.len()); +// let result_context = &result_compositon_set.context_list[0].0; +// assert_eq!(1, result_context.content.len()); +// let result_set = result_context.content[0] +// .as_ref() +// .expect("Should contain a return number"); +// assert_eq!(1, result_set.buffers.len()); +// let result_position = result_set.buffers[0].data; + +// let mut result_vec = vec![0u8; result_position.size]; +// result_context +// .read(result_position.offset, result_vec.as_mut_slice()) +// .expect("Should be able to read result"); +// let checksum = u64::from_ne_bytes(result_vec[0..8].try_into().unwrap()); + +// return checksum; +// } + +// TODO: integrate into serve request async fn run_mat_func( dispatcher: Arc, is_cold: bool, function_name: String, request: Context, mut recorder: Recorder, -) -> Vec { +) -> DandelionBody { // TODO match set names to assign sets to composition sets let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; let outputs = vec![Some(0)]; @@ -153,14 +150,14 @@ async fn run_mat_func( .await .expect("Should get result from function"); - return dandelion_server::create_response(result); + return dandelion_server::DandelionBody::new(result); } async fn serve_request( is_cold: bool, req: Request, dispatcher: Arc, -) -> Result>, Infallible> { +) -> Result, Infallible> { let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -191,7 +188,7 @@ async fn serve_request( warn!("request parsing failed with: {:?}", request_context_result); } let (function_name, request_context) = request_context_result.unwrap(); - let response_vec = run_mat_func( + let response_body = run_mat_func( dispatcher, is_cold, function_name, @@ -200,50 +197,7 @@ async fn serve_request( ) .await; - let response = Ok::<_, Infallible>(Response::new(response_vec.into())); - - recorder.record(RecordPoint::EndService).unwrap(); - TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); - - return response; -} - -#[derive(Deserialize)] -struct ChainRequest { - name: String, - get_uri: String, - post_uri: String, -} - -async fn serve_chain( - is_cold: bool, - req: Request, - dispatcher: Arc, -) -> Result>, Infallible> { - let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); - let _ = recorder.record(RecordPoint::Arrival); - - let request_buf = req - .collect() - .await - .expect("Should be able to parse body") - .to_bytes(); - let request_map: ChainRequest = - bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - - let response_vec = run_chain( - dispatcher, - is_cold, - request_map.name, - request_map.get_uri, - request_map.post_uri, - recorder.get_sub_recorder().unwrap(), - ) - .await - .to_be_bytes() - .to_vec(); - - let response = Ok::<_, Infallible>(Response::new(response_vec.into())); + let response = Ok::<_, Infallible>(Response::new(response_body)); recorder.record(RecordPoint::EndService).unwrap(); TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); @@ -251,50 +205,48 @@ async fn serve_chain( return response; } -async fn serve_native(req: Request) -> Result>, Infallible> { - // Try to parse the request - let request_buf = req - .collect() - .await - .expect("Could not read request body") - .to_bytes(); - - if request_buf.len() != 16 { - let mut bad_request = Response::new(Full::new(String::from("").into())); - *bad_request.status_mut() = StatusCode::BAD_REQUEST; - return Ok::<_, Infallible>(bad_request); - } - - let rows = i64::from_le_bytes(request_buf[0..8].try_into().unwrap()) as usize; - let cols = i64::from_le_bytes(request_buf[8..16].try_into().unwrap()) as usize; - - let mat_size: usize = rows * cols; - - // Initialize matrix if necessary - unsafe { - INIT_MATRIX.call_once(|| { - for i in 0..mat_size { - DUMMY_MATRIX.push(i as i64 + 1) - } - }); - } - - let mut out_mat: Vec = vec![0; mat_size]; - for i in 0..rows { - for j in 0..rows { - for k in 0..cols { - unsafe { - out_mat[i * rows + j] += - DUMMY_MATRIX[i * cols + k] * DUMMY_MATRIX[j * cols + k]; - } - } - } - } - - let checksum = out_mat[rows * cols - 1]; - - Ok::<_, Infallible>(Response::new(checksum.to_be_bytes().to_vec().into())) -} +// #[derive(Deserialize)] +// struct ChainRequest { +// name: String, +// get_uri: String, +// post_uri: String, +// } + +// async fn serve_chain( +// is_cold: bool, +// req: Request, +// dispatcher: Arc, +// ) -> Result, DandelionBody>>, Infallible> { +// let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); +// let _ = recorder.record(RecordPoint::Arrival); + +// let request_buf = req +// .collect() +// .await +// .expect("Should be able to parse body") +// .to_bytes(); +// let request_map: ChainRequest = +// bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); + +// let response_vec = run_chain( +// dispatcher, +// is_cold, +// request_map.name, +// request_map.get_uri, +// request_map.post_uri, +// recorder.get_sub_recorder().unwrap(), +// ) +// .await +// .to_be_bytes() +// .to_vec(); + +// let response = Ok::<_, Infallible>(Response::new(Either::Left(response_vec.into()))); + +// recorder.record(RecordPoint::EndService).unwrap(); +// TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); + +// return response; +// } #[derive(Debug, Deserialize)] struct RegisterFunction { @@ -307,7 +259,7 @@ struct RegisterFunction { async fn register_function( req: Request, dispatcher: Arc, -) -> Result>, Infallible> { +) -> Result, Infallible> { let bytes = req .collect() .await @@ -347,7 +299,9 @@ async fn register_function( ) .await .expect("Should be able to insert function"); - return Ok::<_, Infallible>(Response::new("Function registered".into())); + return Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( + "Function registered".as_bytes().to_vec(), + ))); } #[derive(Debug, Deserialize)] @@ -358,7 +312,7 @@ struct RegisterChain { async fn register_composition( req: Request, dispatcher: Arc, -) -> Result>, Infallible> { +) -> Result, Infallible> { let bytes = req .collect() .await @@ -372,12 +326,16 @@ async fn register_composition( .insert_compositions(request_map.composition) .await .expect("Should be able to insert function"); - return Ok::<_, Infallible>(Response::new("Function registered".into())); + return Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( + "Function registered".as_bytes().to_vec(), + ))); } -async fn serve_stats(_req: Request) -> Result>, Infallible> { +async fn serve_stats(_req: Request) -> Result, Infallible> { let archive_ref = TRACING_ARCHIVE.get().unwrap(); - let response = Response::new(archive_ref.get_summary().into()); + let response = Response::new(DandelionBody::from_vec( + archive_ref.get_summary().into_bytes(), + )); archive_ref.reset(); return Ok::<_, Infallible>(response); } @@ -385,23 +343,22 @@ async fn serve_stats(_req: Request) -> Result>, I async fn service( req: Request, dispatcher: Arc, -) -> Result>, Infallible> { +) -> Result, Infallible> { let uri = req.uri().path(); match uri { + // TODO rename to cold func and hot func, remove matmul, compute, io "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, "/cold/matmul" => serve_request(true, req, dispatcher).await, "/hot/matmul" => serve_request(false, req, dispatcher).await, - "/cold/compute" => serve_chain(true, req, dispatcher).await, - "/hot/compute" => serve_chain(false, req, dispatcher).await, - "/cold/io" => serve_chain(true, req, dispatcher).await, - "/hot/io" => serve_chain(false, req, dispatcher).await, - "/native" => serve_native(req).await, + // "/cold/compute" => serve_chain(true, req, dispatcher).await, + // "/hot/compute" => serve_chain(false, req, dispatcher).await, + // "/cold/io" => serve_chain(true, req, dispatcher).await, + // "/hot/io" => serve_chain(false, req, dispatcher).await, "/stats" => serve_stats(req).await, - _ => Ok::<_, Infallible>(Response::new( - // format!("Hello, World! You asked for: {}\n", uri).into(), - format!("Hello, Wor\n").into(), - )), + _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( + format!("Hello, Wor\n").into_bytes(), + ))), } } From 4cc3890084dea756b19f92d9424c81bd3e932650 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 29 Apr 2024 18:45:11 +0200 Subject: [PATCH 078/176] added loops and updated benchmark test --- .../hip_interface/gpu_function_2.json | 2 +- .../hip_interface/inference.json | 56 ++++----- machine_interface/hip_interface/mlops.hsaco | Bin 68576 -> 44992 bytes .../compute_driver/compute_driver_tests.rs | 4 - .../src/function_driver/compute_driver/gpu.rs | 113 +++++++++++------- .../compute_driver/gpu/config_parsing.rs | 7 +- 6 files changed, 98 insertions(+), 84 deletions(-) diff --git a/machine_interface/hip_interface/gpu_function_2.json b/machine_interface/hip_interface/gpu_function_2.json index dc200874..afd25555 100644 --- a/machine_interface/hip_interface/gpu_function_2.json +++ b/machine_interface/hip_interface/gpu_function_2.json @@ -6,7 +6,7 @@ "buffers": {"V": {"Sizeof": "X"}, "X_tmp": {"Sizeof": "X"}}, "outputs": ["V"], "control_flow": [ - {"Repeat": [{"NTimes": 25},[ + {"Repeat": [25, [ {"ExecKernel": ["SUB", [{"Ptr": "X"}, {"Ptr": "V"}, {"Ptr": "X_tmp"}, {"Sizeof": "X"}], { diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json index 680da2a6..e102b360 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/hip_interface/inference.json @@ -6,33 +6,35 @@ "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, "outputs": ["D"], "control_flow": [ - {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["relu_2d_f", [{"Ptr": "C"}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]}, - {"ExecKernel": ["maxpool_f", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}], { - "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, - "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, - "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, - "block_dim_z": {"Absolute": 1}, - "shared_mem_bytes": {"Absolute": 0} - }]} + {"Repeat": [50, [ + {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["relu_2d_f", [{"Ptr": "C"}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["maxpool_f", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}] + ]} ] } } \ No newline at end of file diff --git a/machine_interface/hip_interface/mlops.hsaco b/machine_interface/hip_interface/mlops.hsaco index 957372c7e14cb6dcd81f75bbc5194f18f3a3725a..42578f3351007b9174690407e5a1ad2e70aeb885 100644 GIT binary patch delta 3832 zcmZu!eT)@X6+idR$NPRW``&!Mw}A)UT9#5+C?88n+68T@4F-r-8w4w$%?72Rersgj zoyopsYxsCOQ)VbOS+wyF8^|Lbo{^fWUh)5{g2*19!;jn7??vt)d$!H+lC%q`2czU?GyuYfj9JGuF;4w8^P_N zDk;oMm0jhaVD1Q34KEMI)~=jiHM~~{J~y(33S&ZEDV0O{&BJbEr$br!!sn0mLq|?;bZm|T)iS> z0M5j2O!3g+H4$8V+$1N0?HkQz7G*008D2=DotVIZM1EjE&h>rFBqCN<%D)rO zza9_pS}K1%7ToEl0AN#$zZX6;us{jzhR~sjN8%SI;sJ(n>@VDo1s@mVac3$|(%PW0 z{EcXjM9lRklkYe)msW%fpkBEI(d6!lz;b|D_%I*vSCpB{kwN^pCF8Jypk zrTa(c-`u!Nm_6UfTRd2JEmUS_Yr(B8Ba}_@r#0gvWFpuz{uF^=cDycej~9d65Q21 z35n;KBAw)VqKXcvS*O^8>0Xax$UZGp9I>D}avmm0&O3(QUjy`xQQ0{RYpN$Geg$J1|F10|6IYu`L99E8LlkJ zZl)+tGC184$If&N7iIbUqztXMX@)OXcKDJG+MqoBZaM-tTF z7nhbbRdsSXw7Q2I-|oEELx<30QKdk|6Vv=Ti{2N-sc8`%{yXaBA#HL_Ggju|^xK|B zVTe|oyl5|}_*@W&mvUwW)v$tUuXkxV~I#Kcs}|bBrdMMqw=A^h zHkM~ny5TT-VpxVpq%p)deLyVRG+km5-z26B7WhUJ?9hOkZ<)is1rSWs59L|W!pHR4-JJ+x{N)(K$@ zH>a%(hqj{lL?O(s)x#z(=G770t|>k!3W9^D0r;9iLOfAiT_HY@nu~LvQ0mw<=310) zX^&G?T}}v(?j;%?KO81rHO39P~rCV6%4M0sI#Dg6lNBUi z)%AKZT?0*EyU5eAM|XP77kU)WIbiFAt+LZM0CrVSFggl#1ZfpIyV?QG@IkjiqMN>D z;6Y^?F6g$e8)m2@k#$=SbxUW=G(F9(g_?~zTW6YKA&GU*VkkEZwAWdanTDq)WYP=` z*}4W7(0ycVXzIF44C3oVcfmkTfEj9F`G#Ke4UCqd+aV_@vkec~%ru>Zh8dGp(-A{| zKUpz7=sX&qlJE zR>_A_sZZ7llC@Hb$yzOOvRW?A`(!mO<{BwktDz?#St|)y4HkMvwaM9P_t{#(N?=sw zF4n3(TWusHXDgqJSOH2duu`9_StM&dCM&+f$=bImP{0K}sB%ows&KL*-hHxiyqhf% z$y!2ePFAsrz*;$FYj!hMiGCHm&srB*+ZtdkCoMW55?>@F6p82-MT`I~`Nh%+m$*2m zC-Kg8QQs;Ri>+A3=VD7l(u!HI_;K2VHde-@+-3+r?&Gq}ORtEfmtyHnOL&ILle`QI zQgYPe_GEY_9EPcBUWEx(VX?tF>+#s9ST|+-xcp3>QRpp65)uVJq`(SzW?)T~0D3gv z#4xg+1XCSGraQ8zPR^;7m04a1v0@gm=;l>*L#A38=T$BX&5Z2IEQ?=2MX)j~<4J|Q zA*;VR#;adODI1cKH~xkNj+Vp?B1Qro98c{^_{$3x1Ue71AXp`{f5>4TB;ssSY6(j+NVxgFU9smKG^XeN#ujS8n4B20S=Bv&&uRm z^Z(uS6B50eB_E02&5{Ntn&im3Tw^8rfmb8inj>3sX~M1O8#v8hNb-MSB)XI%n{)df zj;;4a|3>xDy}yj)H{hXYd!CF9rN5NvFXoZREs$l=`8-kc_jnOSm-6IEdNhjugQKpV kjgcp?O!BLUw-|l2Kpv&L&qd!XkSB8&ljK~DNS-YJAI?e`5&!@I literal 68576 zcmeHw3v?UTdFGwLU@#aAhJ(QX1R;uoD4L;Nn~@Mdm{%jmb`ocuSaF>+ZM}!3CCZX5 zi7G`oPB(%Eut?FaA~T4>s6KApo<5SCG^xAU^f=udP-=TxpSIcBZrbkYsy*4WZBOcU zx7&8R+q0XP`~CMZ06~z19&QqcIETFRxHI?8ef;--eE)yP$M3l3_V>Sg{N8uH>z;dW zzjOSZAAJ9v_uMr;t~2@b)PYF1$kPK;$7XJNZ0y$YTW`MU_>o7BOnv0YO@|I1IsVv9 zH!=ChH~ycRnO_TemT#n@4N4>X72zWsf7zI)FH8GHPTLNhb^$mH~q z$wS9J{TIyt{OH6(N2ka4P8~lo!+vRWV)~(DmssZ17e^=d?VFxFc5M9E(TTm2zx>dl zsRt(xeP(oO|Ndi>l=0ZXpPaNlKlF$AMm2T+pz`vJOnw~s7fu5Y4ZmH3Y zUFC09Xtb;R&HC&X`Bx03Usp}U2i>?Bb1ijxPuI^h>$RurXPR~UaEEVsPStJt;J)#F z2M-^MI{UynC6HEi@5G@)a&~-WRQCSlLx(4i%#80p_}Jt=J{H)o^T~;6IDSmtoH%sw zp(ECpS6!!}^EIvTxzR%tM;#zs0<|{j?{Jb{OI9{ z$Hw;`nwS~?$kg;B&EfYo1Jn7)#No-$AD);weEiV(p{c2(|8ex_^ub3bW+tO*wAAtQ zqsJneapSLvlVe8@;`0O<`ON6Cj~;$->d+TkUO4*5zUN1eA33;xYWgs*z<9F;+LuO; zADcWjzVD-`#=*Vg$7Uw>KJuHGG*Kxx{F*pvE#+57KQi&?99%7_(HduS~i>Ld!CwocT=XL6Vnr2Q>Lw5P$qie)lnw*J4=~1AZ?wv zuaz9s1~1rT!HBo*z_T?ui%k|xN&ubNwq`@UW-QouC(-(>{D&p^Z+@1D*Lu0!XZTk*=PBX&bq zPVAoDfKpw)%y=29DMx4$HhiMFv`RK@!zY@OO3*>K(Sglr>dW%oJT}bRhmMbz_gw~&8CZwN{7Uq??-+sk*-Zk|ru*I`FeGYr7NVL&@4Je? zTtmU@niGp%mqRR48xjk8-PI9`*p+i5*TN#V0lnE+^orQlPCB8;q!;Cq%m0QfNpom# zTI3>Q>S{Ko*-V=jxycnQ-`Z@?fpwU%*N*MEh8DTc!DM%IYUI6 zS8~-CB-UUCw#>mO>nPWO4a5|{E-;3?==!ymu?$NZE% zCKC43>iVCE3-hvGx5)Q@u7omDyc!S8lTO_O>DS!Vb#D)7Mz~dfu{k*vT{0@=+ z0utU1ZQuKGS?&+Fl}pv)?bFt7KPs<>ZPy>cbzYyZ;sC#A3L?FPgxd3m+TMR0*ZFs~ zz2`ZZ|Gu{TgaM+qrq3+mkFg&I2&rJ${SStFn6nF`qqLia$S|*m@3DAZ!qwRL>%m_Z ze{cEy!UzB4$tS)xot<`G`Sb_gf8xjfGBNtf$G`TWue^Bvz2E%R@(2FrzkTApU;fj| zW8Zk{Ywu0(`RBiW-*XTBKJwjv@?G`6zVGSZ`1QM9I{!0x=H@+ze&iVP=I~DX%gFa5 z;bjGMfFJdp!dWHx6$Ttt6RJa(e0g2^Q1LTYURx`nc2Ga{jdV`f9%`o){v7<#PvL&} zNsHZ`wH#yCt5Y(3wH~+J+OMt?zr$9jV^*Hg?MRSn9z~alWfGSq^Mn^ma@IVe+~Ys` z{$00?kH6>cJ>z#wO-=7Rcm%+MV|VYmSzLQ3;dkylc=)beAHA!qym#+=Y~8%Ki1*%q zV0v<5-$t2NRpPPBsKh#XS62d=SN{rf5bUOby~dBm{$1Lya$2XxpUSG9X9v}l)hUhL ziww`>;kBN>aCr4|>I&v0t8VaoIHhv0PHC2t?oW!e(|>yYx7R3NJyXkqHuKE4zJm0DQ_f37|*jq~19olze>5i#G>hSjQLz72v`6rLxSh|}I=>EOO zXZVrL?wh>lc!_XAllw|jM@qMs-d?)ysLkFdrcKM8ck(+o${aVA_D}4cnVP1HhxXa* z_8;5%Z^f%`|FK=sQ8_w#6F;)q9Zl_R%e(Jrd$%Zy#@P4LPuJ}WRNtCmULcx#^1_)V z`vo^V#moyhWvPojHTUtkr|7z=ho?gpHdvTl8qb|t(j8WbIeI13!!V3hYs)&jk+JYz zb{DHGW2yPp^2zaKrlU#1H)?OzEAsvyYCU=d3qwVV7b+}XtS~32vvht@OXuqOAgBhp zpvuy{^>mP1Ob7XTx;MR;&ZomLm#aCwg+-?q_j=Qz6XX|jg>)?+;(8DuKjjH(SZB%) zqmEAC)L483?@!km-jz$It6HGd(^|U90#E1TFpu09ckRtv>KX4yk7%bgZi7yshjCw(PYT)I6O}xom))c87J+82^K7B zIjt6iP7P~PU1LEQI!+DkSJwk=5mUDsL%kU4h4VUCyGkM*RqW%S$?e zT5+BW!y1bvm$di|m5ZS^o70m^7sK2vi%H>b_g z`x5Do*V1^N#c#y(x!F8_K0lkr^Z8tQHjVt6lb&UPGh1X&@P0-gS6yANXzV||)T6sP zdpGqT`ksBfL4Ez|^2vLtPZ{+ozRN*-I?SnR4meQVscTNP%BpTv)6d{9xr8-+*3qg8h|2%HGtW#Mm^Jga>F4Y^?pXKbJ2oo~{J1 zKJgdJPb?ulUGec}yn34IMeWwC*8{x$Slq%`uqzd<-r#k^oJ(MA8o{}_-1)wGaK5-0 zoG;W_X|a*QHx~Q0RJUL(@pkc8If=G%@NNDOE7bJv}ISmDPmG3O+!&#(HZZ^5(6 z$)q!O&bG>-V~<&^#_yZ)p^6`xOEEUPMBk``zNB%_!CzH(D%AG>ygZL@|G*_f&YkwT zS#_M@zgw;$&;2yN40`6xyuX49^^?t9MspjfLwS(8aow$iTG*Jz_f?r+MmvldKE_gy zI~F=$KauElnVEGM#?dgwR5ZtvZF3xBmCtb(^G+Z7l)d`IKTw~djamPxhOumfFZ}iL za(p>nTgJ}-UB6R5wM5U>EH)hK@2vcmawiw9$sE1Iq#{L3%hkzm@kBVVPCCSErwgdEj4Rv|46=&SW0di z82N`~l);{9RM;y|7${3;b4w=bOUKlY+nM18FZ5T9c^1a8Cih46T5R;AUY@L1j@R{k zL!F0Ir{YkkZMhC>A=Pb2Q{}H$M{9d&q`!!|?HC;SdtSGnX;kvBJfWdpanwuHiFy4m zY^^fXiTH%AEp^(8I{9sNQs-A(r|X7Bwo;wmFf8kY_F7#he=FKa)v3Lmg0?!T^DC~? z^&_I4e&B}n+9_DCo$_sUQs-A(r<-mR?exac_1Y=FUON@q>ZH!ExK6uvigtQadA)Wj zw71jyG@5&h4H{2HStpu%H1E_oYngXjFK(@_H?Gy#w{E$4WGi^R3juf$6!o+_E~Iei6PEvK_S=biOtWa@quI<`oI7G|wZQYd(T3vkl zbbsX;@K3)u*FW^k=}J-ZPet%fptr=wH0$#KwM)MR{yP~T1>ba@^G#0t=1Mw#Yb9TN zdTz`4p?dNBb&JLGJHR(R(@5gGt{WPz4okji$5^4fHC7y>^`Wqn6^LJQu%1-r)68JQ}-nP%ds;*03>48fF;HT)Bju<-R0>FbNk*;Zg_$UsiUTfrmIT#n|nS zj%*L;*to1C$&#HXEVh;gfPx~8o|*Kp4ux`LF`H6sW8MsHKUL3FKEzu`c?LG;E-TF`OWoL7U) z9?=%f68edD8fvUT*Qi`sKBsG>%iugC>OtigpkoGjGoowp6?6@{5zy@J%I=n~>3r;n zIz2#bVjIwN#ar}T7Up_#L%L=QJy&3rQ)nYvr-YuX1bKXr>$wc9Z%sXyCG=bcyPQs1 zg07)YiLS*ZU4x$aWfOGG0A16;r^LXgM6?b1qASsNT@%_Cc;!@*cy_VYw~pm*bY0dp z)pcDF|F)s7%j%@-3T%A$rmpL?&~>%bHgj#d#_3Kwts#C5bC>JTX%2J!bjBGbeR%>h zXaamI(KQpPiE~Pw9+%TKJ1z8sL|edLb3HB5a81e)?PZx#kKfL(QMrn)k-SDS2i3zy zJ&3N6&fWxFOJ(!JiC9pvah`%s--hn4`?4>au5o@1b+b&+wL}YD>yBS@1zq!;auPb! zPWpRuh5p_VbS-epskF0#t|i*|HP|l39LR8K@Zu3&!@T>B(X~yUZBvI&d`>5x?Fx1H zn{=&Pn)>>pYc}Xw>ZFq-+Fp{*eGFFC7ztiq$~BJ#Lw7< z)QfhYZ^Vzi&?FyL`Z8=2pnUYC8o!P7SHrR-{%qHa9c3z73HpuCm zZ$m2hwmy3}vBeoyd|CqEO?G!>e@~<(-kX ziNCRP5_{1H{&9;fc(*+9Zf`a?--hG(O1`a&veAZq{d7<{2iw8oT#!FUcng8OAlwDo zQeZE9E{`Uqo(-vCgKtZ5zU@hAKNy0ZZMb6iG~atM-wT-UdDsumaok0rx3AgmTIBMm3q1tkKKwIJo=wU8wv#U>a={q437|i>E!)q5j|2AN z7aKq#zsz!&&ENxv*e^B6P5^$H4Y6NFn|`K2n4Y2cu!4?s_#T0~p!;M$pp@(fl+qj# za%fN~VQi4yp2h)EU?2*>Kooi1888Ienskj-e9J4xH7SR->5fSbwH;TdHqf^U{i?uR zH0he96Xt@UJm}b4^v?WQ)PPK8dM0Dj_)?c&gsC!82Xr^YkF67&8SfOE4s$mN!~{7^Rj9f z!-}q{J`>mrkB?6abC%{cQZDl#b>h0&)U`Qw88)Xe!#2vvggF)(Uq2DcnoLg_EY@QW z>uF#XAcxVsrup3}mnEdW3AU?pI^~Ypzzzp`?E#}lT|H$jh{N&qVt11(11 z8dxKeF>}QlMDrbGi}eforgpk!pl@5pgUrwAgGFl=_%-TNn)9u6jcnZ>=3f$4T$+bS zjg5FXY7gQ^I?)~)*SN>m0HiM0cl8CssV({86xtz$cJM&wY@{~MDfN2uydB(JQ10m^ z8yWEc0+UGJkzAL5o0s_6CmZxFWIL91a7p)uI(V%-oQt|py>0)SFWI|pH+r@V45whH zc5&VVe$FM^P1oh4UF|1NdzA(7aP>LQUm(6s@NmSxS*v(B*xRX%VZV)dxOvXQd04A6 z@qERwpPWlUX0su)*^t>-X@T=_L6+=@f=>8_pqxfKdDNdC@o+=n;f6U6M_AJe=Bj;W z{%lh6a8`eRxrcZ@qIKZm++08SxA{g-?*Oo~UL^_LV-nwOu_rigdVi!u~bY_s#I4{3)OcRas18GOQNvv^#hg;yhJIx&rJb{7t#M>|&{8>w4 zNXVwM?Fl;$*2pXLnGfYzjl#`PD=;lSXSQ4Go%j61>!r*`C-y(M6&ZN*`G zYyWT>b2*K<+=IF8B6V?2Y0s7-pWDIK{&H^1z?cuL74?(rpJdq>d_Y?GY?|wyE$yDy zt)_8q+nOiy`!t{ZK0)KSKKi;A8izJixLN0`Yv5+Rdw`q0uku@704!L(@>y*jxLJWm z=eSwOW0pN1CR0z;z`us^RJ>-j;ASm}o3);|XOm%S){d~CVT1Gv3j0aeJ^S$m;AWvy zk#eyC+&^JcuZPnGeaCWP568_qn5+ICo%!=X=!V%Eyko)~`MUrI>iLPKG;p8-H@mnd zZuWX+`1T9=2sfLL>b20wqh1RCDR8s(hB_x-1QrxRE!W3!v)2O^rpjNhjt=mk`2cl` z@SvY=RJ@hA+3Oh#@-OsO6-KqUrB1!5lfr+hI;rz3t`qQ}y;P?N4~q6$U8j66+DX-^ zy`2>PQ`JeGUvZs)2j%S);XymLQ(?V!Qut3*Cv|?sbpj@ow-Yd-0`uIlor>$VQ@F`owJsC*L$&7;AS_PdvAZ+ zNH1`+>395~z|CSDDcmf^^}tYUPh~{Oh?u)HSDZ-ywa`$w+3T4*NcY-hY+5gIk7HGk zdc-?9cNK=y?=D94wFLU=fUY{AuauS~ef9bZ<;<2M=bapOvPADE`gnb*GoR+%C3GO| zHcKj()&QiXL9CCY-=lhXs0aTZ*eIP{RU`B6!Qpfad_2xG;G;aEzAup9YkT15GT`T^y={DBig0CK zCtO)j3Fy0Wl3zj@t?McAJlFejJ-wd#d$petwSfmdF@yDf)w7cCwrOpJpONCDTm6iP z4?^ATDwf<3db-wka9)Ytk38Uu`1(e8QY8=K+6aB)2)=PGA0uZ(@=92Pg^y8CDeTVU zn+s#-@Y&SMVuVh#tfA5YvX2vimhl`pflxL zL;jRPXPf7GuM~JldVhO+(wN3QPScPInzj{f0lrc3jDA~t_?>AQA3yXhDaYk}cY9eL z*Xzzh_e?lqVaI7J-&c5HPFs0B1_fP%{O9bt+u$?}$89vNi?Y$KUCDxZ&U2$Jz-vFi z+s1<|nBjUaAq)DDk+K`gf+bEL{K7~%z5RxcvS6@678Lod{=st3_R`q4W$QVY>{a`~#3*(8d=3 z0KZKhBs$fu<7)D0imv&bt|ix@Yq-bh8q#Y**OJZ}yxJOcjmnieE>71XUJZ1OzR{61 zEwfGXYU|Lowaf07u0?iAPS>d29MHA&Wz#ib>+|~yW#|sZXq^%|t`X?CZs0mDTHl&F zF2T21rD8b)zK!S_`J9rT%LZMuLD$lm5~piU7GoCrhd6juMcYVUw4SbubT!1cQA&Ip zr8HmKaI>6u6Mo{rUP#`}03DC7sq3;UcE45b;rMCjd^_-NjxTjxoOgRt>hqhrE@K^C zm(!K5EAkPy*76azPzLdDO1ISNBaUklHwzwN4P94+!-#ZUz@PNn<({M`e8fHJBaZvl zy1Fj-Tch0-|E4hC?L0u$^CDfBhx#>XTR&fSUCF~C<#PwAPrAZL*HwT|KyiTk1b|iv zpMY)BCjdHZ3w)f?W2f8r7U*QTuFD4>m+dXW|4H}+kUv|dgHM2~d;+BZQ>%}-gLZG{ z;gDbWKDGD+wE8}gzIljz85O@)fUY-^KNVf`I9-Firy~zV{1Wad8?MmbZ}*2&JAz@Q zuTSB-iMA^mpUO%7eRhTZp7VpmuUT$q-jMvh9!8(G^J^{T`=sM`w@TdXcGwYi2s@?F z-`{O0-F&#hgezO2yN~D@{5U(yqhvQFdIme=DtQ#wHl$|`+H0lmp73-X zVqRb_n(NXtig~euo|&EGr`DJkkXc*kS%HsBtT{Hxq)55F3#qpv=0$**7x^NOd68Bz zFSf{-7x1SsbI^H9UXA8;t6eT7c{LB?ER)TTxiaR3jd9x3A?AgnVqSn>X}3?>v~ITP z`jKDwf40QDpt&B|CpkS^>9@I>PwUEWGxD1xxzEaZ!{ke(zT0i%QC<1n@O5qVMdx-M zqG#~i6=v|cEEj^3;HZfj= z-)1|X=7MkO*--wJ`ZBLnPD;I+pl8iEK3u;R(KE@X1@PPK%X50hF=g=GRP@YF3woC7 zfejegMGbxs*M_dG!pp)&*o^1H@V(lae3}lrru=si?*(gl>o_L5wlbE_YP!bOp=(Z8 zbS=VN7!)g~6Yj#0xC`(_oQ|~OE^tj^JJ#mYBHRV$oUlm(Pv`07q-F_RnWaZINn>5Q z25eRfU1O4_w$GI+VkoItKA>xS4Qh+!^ZLcf5?xa~+Iu=-$s&wwM|&=<%`F&JjwLg5 zz{vJ)jFGi~ktM$!($%BSBf0{AQ-0juPu3bVt)+bKv#GFTW)2ux_>R(AW`d59e^Y`m z!8nd{U-Zbgsf)6^rD^ZwYvFaAZ++kr(iSY4(5cy&kQ|2t&4lM~i3~FtVL#S$7z+%cNy(7+LOz zj(MoBOUnow+vL$e%htrka$1JGf`)w`V8_sQjQ!UabzOr4`YUrEM*JWHab_Hx)0j39 zX2z(Tnq%y5U!?ez=`cR)RE^nCn*&bEs2K3AFso*m2op6^_m|!SY=oJ%>ZX%iG-Gz% z)KiN|%c>@vWIbiu)r6j^TghbAbga4!tdObO^-w$8p!c{{H|z-!uN3cjh2j|@j@bWQ zKE33oy}IjU7Bik#?Qwvo1dh_R{jevMt@)4F&u;hqa4?$%#)0sPKq@&N-g&NJXp0S^ zUjbI2T(YlLc>Mg?fkGkN*4I}HykeNkY?03tjAF|@@t%UIuoC%;`4F~cMC0^%3=+Zt znkgNA3&1xgb>N)ghlqrR?80#?)K(H=r35p{*!|V0u%cquphkQy{b*cEbl!jOR z7sY>Nt?^&&&_J9`5HG}kP1S%^;qhNRCye61#y7K#eWT|I7j?fy^;ySs;BEB{%d-n zrX&8Vqhmb*-pC6VYF=8#d}Y7?q66Hrmo^dWhP@ObQfv-5<%?lBOXsn;&hWLNA9}Sc zBH8-D4l&%<;0MLn*ItC50A?lfVcdDRPBBU-Mr=%8Lp^GYm!-`*`r-+Oa!_BC^Er*) zaWQ;l7I6p|#e59)r%#~mD@Fnl3gQN0@;|}Hh)q~(C#>p-9h)*-U3)k6Jz`O^YJp!1hpmVyWGhk}x$PW4rJf|D5A6mK|BcChK zMWTZSuBEM_fjLzn8mVG)+`wri@-tnhxTPjTK2}8RRvUEjsh1x|eA6V_)3U5`JZ6v0 zW6kCmW4eca6W4WI2UbvrPleL)fsT=$mgo?824@}^cjqD|sq2o-dyr)>rfV2~V~(Up z2Fi7EzCkhAoLM1CltUA=h|0!@iJ?z1Zpu1*wJp#minB^| z>2XeVAkhqh0kOd5YTV*I&PW2uBSRHwCMD`U?Z<{ODv{u?F_tF1>@xm~s;Ky$~%k)7SGaxz`%Le3lHD-=p zVhJ&3y6LCaDi6jlrx)$xz&I~rj8gwN%LeZgXCeMnA`ZG?m~};8nCwqXjROhxmIM87 zWh0133_5bE@#7ZZ56laDsPkpK>H!(6dY~<4kFMr!=}hAuNq?wp(&=Fwa(!gGOh)n_ z?qM+Sl*gz>pzPro{0)?^fdw8zhmM}c1ErSqH8A5wIRXDGlK;@JoS!9~mZqB>d0Rb6 zy4tf1p`#bJCt1FXtzlZEXV&A=M-ug*@t_Cad`XAAmq@w8L=#P%i}=*=Yv{Uc$bXO{ z{7N18`g3z&7fwSzF7Wk`!748P9O0KjZ6@mlT_45mF%2Ct$zzDqUICxT^=-h9CF6q? z$0Prm9QG~QqUHP$He~&08qTs4 z{=u2$<@9oz$ES9{Q%3Qr+3w*`e^=$Vn1T3&X61{Rm)Hyec70dGr-qN7>zxgIGEdbU z2p#E6y5_dv>|Keocc1rWd&11D7h%W4hKIgWzUGAW^&sDoET^tHkm(q3_B&Xf)6`|_ z&SBySiQfwD)LAeu@b&pBWH#)bVB~@kAGq;&Z(ic;&vTr;(-NPWj)?~EV2XhjvnR zYHufnEmU<<=T}@O#PR0s6vgrG*iPPh?WFuPRGrlM71s&=8@!#OINlxG$zQLXl%IyG zlRCfRI>B#)w^QV|(XpL^_I46D`+9@Mlk(FLIQw%Ab5E;!n%U}$UFhtKU7+_9|FomfnO8Gz5x8r?KZ*Svh)IdLzMdAaM4GJ+N(gdD%+% zEHJzg?z4@4kH>E=8;M)N!+h*g5j+{;8;Y>+lkU6-J00oHi-fBJ?p@*R@qJuxj#T%- z(`BVkr5?W#yy9pj@6$K-;u{P2#(cfdOFW@b$Y&4lkY`id|MROc$!x2%kLKsb9H@25QA>G}Fb zabpzD9@n_P$soQlzXq>l3`$-JYjFP-XfRRN;!YFa4Evu6dCvkbO!0DX-+*q7_Jiom zE0O*0T*ND>`n1o%rv2}MOGU^b^o+vU<2$*}HT9L8BW@NLE#Yqse3o4r^C@Pl!e^%Ho*eqzotBBLmo_RC=Uu7A8Y|p ze2I2>kjLMTTxlj{BUj1ulr#5?e!^Y=SZL`_;;X0*ku7Ovv!9Jhp_h zR&0rlV&`nigU$Vlu1FpPjawxT^8Jb+2e!zAEwR8DVu3-w>mU{w#aSkr9?!~HV2Do* z#cd?xQ_P&!J;|`25vO$y^tWl~YHiX>lfD)-D@E}|+pt)cA?S+PK^`RhN{9SH9&CvP zwjyQ@$&HI&bJHKd%bMZ6l~=Fm49 zlBOklB(Js(U0b{CZt0qePc7&g>SP+AYw^pbYa%{%;8DEbu8w+Jj8S%^`i!dU10|S3`UorNp;UO7rEK z&^G!;jpCF8XWua{*!r}MVyj#`T^HHQE}MUo`n0umU4-#krR#EZe0MW080X(!16`Nu ztCjJ(jMO9sX+F5XCuExKx3=Tg9`zu66hWO0V`dSg~7dlVTlKxYW+F8OflAv`Zot zcF7FvlG&zRlCV#$c1aZjt<5gUWn7X2!IpNmOY)fet7T9smv}{_eBa#2E{S>&uO{r0 zv~R8**(KwA-`vP9*+tpi@@hZGajDxl|MHpfDw-zZ8|t8Gv1>-t6h2kx z*&y41cM4!9Y>RQYrX0Faj6+G&)`@Yr7OzHip)tT?xNaEZkaTTVgHK(XS0lQzidXwr zuuB5RG`A9;D)el?n{fFCsZI9W$Q~(U8#@0gu?=Ovb{*SL(4aMA8}fatp^N0Sz?L*Y zXQa{;z8bR;lp#sVYz@w4nH>=0KCjZflQe8Hag!c>^4>4@PK3xisGXRU#_YE|Pc z`hk!=1wGKk7k?920b}Q<8nF9S<74aq+3aDT2hIn20LV~;WgSI%*|#`{E;_XnI-W5T zI{DQ%$VVoR{jGV7GTV!^DPI_n!o7{ueS zTXI|wwzmiN3&(M0aGhZyV?Fw3z=UP1dbP*xsb+J)561O}fprB&>66@+`g_ZBOaF)C z#=iN|*7)@Lm?7x531@b#@Ibn*UkLEV8Z$2-VFqlsaoBDZzK8H6mc;*9E%+a{4({iF z#jgbSGyh$T`%$scfqj#4HA&x~bTP_KLG!~@xF4?#_k;5*!u>dBPP>(}uv;z60TVzt zA7QtWmaVKgSfh+Um)C%pP_vb1n$SP znz*0#IKmwF1NqtE@zDkDhsP0Kh5I?P3iso%j{_?pd^sF;wt@J5JbthPoGD>gN%unb ztIqPmlWXFBEZ}~U688g&H4NNnq!YY)+|L(vBsu zT4blfIJ!#Q5B%KMuw{`xg0HWjhki!HNcTFeueh&bq<6Muk)HR-$d<)6^8dhh37J9d z`LH(bCyDVEt+NvMV|_2;e$a-jAO20tRycV8dk8NlIqrwzW3Gk!`84L`3fvF*Q#ntD zsq|0PEXN9y>154r!Ts10_hUcr%%;NhtP^2b!iIx&PGNiqd*D2N7Py~<2=`-Yb<8`$ z*7&P%KOStz9@gj#)@Z*f;%pM`$MsrqKj-*bWwqdb=$L5W4rbZT3qjSw+L6TC5k&Pm z+aUX>!ubfC#zG732X*rEp_c8HxSzbC$|wG`75CFxN5cICi2d2b{d}rXaaZGhf){cT z#wOQNryS~}a6YO|>YQSdUQwNZ`^izABHRz+My{@to9h@~^K66SkSd&ys*^ewbqdf< z@Lk}27-C+& z`KUUn^DC|sa6i27BHT~Mb_#NB?IdtNVvH-CkHGyPuB_4-w9LEUVz3JL(>kuz*f)Ut z30iSK=(Fx|KWD!SaX$+ZH{IM@W`~rukaouX@ckEBa6hZ}VCW9_v)bm9AQAH+jd{B-M{GS>$8v-W;65$*?LqR{KX_l&Sk9dJLmZvaC;INQ#= z65)OpB3`L`+|RiTxgZoi2#=hHdKdWWJu5dq)10&oIj;{#!)0Irv3HO6N z4qD_v8}{-P?B(mrg969nwcvi*I56w@zx(%`;wc?%NYsv9WCh$(cK5_px z*0Ogq>_|fQ-?lFo<94LgG_Bo^M0>q)Js0Z1zX>#qVV^9rBWdK{hI3&@f?fpvZQYd( zJ5pCPEwUp42gU73CX0KR*G(Ol!T_yL({zr#_8iehYEPHeJpc(GM*dPl$HjPl+ru~{ z{0w|$=C~cnevbUdLUu-Aesc5hWA?Epy#+gxT~Tz6+n3kTb&;NCHRea{1-ROdWPxu> zMs}nP=vpi0rvqNwvRmy)tLYkHe%8`+t*|3?rRTaD%+K0-t_btfs^{v2`MJh=u5Ro| zq#umvnY1HW-?Mfk*m^*V7;H6s?!$gW_MfeBX*X(#1wb)8$p?C?w$h%l(rp6z!Y>+Q?poS7*0YtsL-hg*gZ)F;K}e6TFYDaj`2w!dJyS=V1o)rRy%_ny z$7=8et~Jv5##aAs4Kf3=%a{P)`EOhAyVbo-|L;xz?@j;jP5>KAA>imlRnm7HwyNf5V>HocCZ2Er#1Gwq`z3KnG z>HkeKK9A|J>Hody|BbzwX*_KDe@lHS--~K99vERq)m}tOm)9PXq0N_Q)Bl^W?vX8M z)Bl@vtc-o@8}#2GKl(0X9TIMbe9>i`!%hG1jbdB0+JZLyzpr_$!%hG1);&BFUHfjs z?X32d>ws;{MXC&mGt1R=C8mw^0;I?E*pI4Z>D{6`29bm{ZHV`4J_Xf z${og@HP?7g9N=AZ;$e7jK5Qx^%(ZU!TYcl%l&ZZ zeXq>w$eh4CLiY3t9edFDPB@P|H{kD9-LWgZ*cT`MZU#OntcJ7)4#oxTfkXXI?Su`X z>TslA#2z(OwB;hx9qflShgbqQ*U#WDxrF<(j%i{K9J(gXX}>L$Q7|x8)j0hoqj733 z=2Zjj;bt^t7rV| zVg_S4lf%ASK_(2bzm}K7J_|YA%Vk2(53r|GrWS;_?)%73d9Xi{+*`@>J?yQ7x!`5$ z*uQBpi#@wEU#n-dOch&n)jgKQeoH~!&*bYq+RD%57FnKQ|0j&^fQ4R0TlBNop9y0L z`+cE~xQBh2u+=EV1u{Tt}7ISi(X5;zA zY&>4q;#x@iQlYF`4)4we@j3z!^Kpup4|O*##%WJn?B|4YzMoST`#Je)Kc}90jrMbL zF}7%&`eD81_cZr&at-XK)MFw(Lg)RQ;uxoKK2B*LC)#I7?Bhh^l%9zJ(2w$JjK5Qx zb!p!wypP7P*td!Hhk9i;hA|%}|6}aiMEgW}CdR3*-+=Lds~Dr8V`_}9*ry3`>*A~) zN4v*aylTX0jGA@BJVo&?s)jy?zvL3`&zgpTF-q6Od9+UxVs0>sxuG>-`ir~T$=ZztVg1=@EmmN4_C^9LtL=8325JoZn?|98Zs zp#9g3s!>I~##DX-`TmOT>0QLChyg>5J)`!&S`%vw_Ko7PH?iv@tvf^uzKwgo^gXs` z5(X`3-sazC8*Gk&@AMb|E}Q=@42l$c;qhNVrXZ30_pR$h3dWQFeglgE{r>sYa;j_zcP&i5XgIPy^G(aGs! z2d9q6JEf5WGc!kzz2%K>eCXiJf#VO3?wvaP#``ArO->!T_vqx2JEjgFJw7w}#zTi5 zJ$%#A>8Xb&_s*22r}o}-%jj*RyGrFZy=kmm+W)4>UANslv1?y>?ABekjP2cd>*URQ z_l}isyY)@C-umFKeK$Y2cjw+W@4ET=sFte_=yPE!VWG@)i_AjpN7uh4uaC&mO{p z4#9%w|4`fYFUspb+;*Lf9+{e%WTX2&dgRzg53|vSjvOC7FmdbvlmF@Z%rqOFp4vAt zGr>k@CLf#OxhD=E+{Lv zBk#ZceRtm>M*h|P$MA$WNghk`rw(NL)sng)QbqsOReF}z6!n-|XH@zxQ~-Xo&d{Mn zC-_Nn0Fjol|Gm6CrJh&oj7rb(+|Bo^=jCPAhXZ=IdS0zdDt)f)c~yUvZo~ap%kyd- zRH<4A$JTmsNURRZQGwyJf19H{yVvSL?K*_v{Bmjtjr5a>`V; zr@Bh(6g^AdKtHvPT=++EepDp9jp$IdpC_;XAX0jzT94#qw)3CF(a)+2GF8Q^^xe4L z_K7^_i}Lw-c@ujL@^PlhSN(r4uB*E92j#yH|8H?H(RvZbs$6yXM{v;T`LD?5|FZ3Y Iwo~^10Y|_%C;$Ke diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 21324f26..d95d0b91 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -1180,10 +1180,6 @@ mod compute_driver_tests { .read(position.offset, &mut read_buffer) .expect("Should succeed in reading"); let expected = get_expected_inference_output(); - eprintln!( - "{:?}, {:?}, {:?}", - read_buffer[2], read_buffer[3], read_buffer[4] - ); for (idx, (should, is)) in expected.iter().zip(read_buffer[..].iter()).enumerate() { assert_eq!(should, is, "Comparing args at {}", idx); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index a833c77c..e89542ab 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -14,13 +14,13 @@ use std::{ collections::HashMap, mem::size_of, ptr::null, - sync::{Arc, Mutex}, + sync::{Arc, Mutex, MutexGuard}, thread::{self, spawn}, }; use self::{ buffer_pool::BufferPool, - config_parsing::{Action, Argument}, + config_parsing::{Action, Argument, RuntimeGpuConfig}, gpu_utils::{ copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, start_gpu_thread, }, @@ -90,6 +90,64 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { Ok(()) } +fn execute( + actions: &Vec, + buffers: &HashMap, + buffer_pool: &MutexGuard, + context: &Context, + config: &RuntimeGpuConfig, +) -> DandelionResult<()> { + for action in actions { + match action { + Action::ExecKernel(name, args, launch_config) => { + let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); + let mut ptrs = vec![]; + let mut constants = vec![]; + for arg in args { + match arg { + Argument::Ptr(id) => { + let idx = buffers.get(id).unwrap().0; + let dev_ptr = buffer_pool.get(idx)?; + ptrs.push(dev_ptr); + let addr = &ptrs.last().unwrap().ptr; + params.push(addr as *const _ as *const c_void); + } + Argument::Sizeof(id) => { + params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void); + } + Argument::Constant(constant) => { + // TODO: test this! + constants.push(*constant); + let addr = constants.last().unwrap(); + params.push(addr as *const _ as *const c_void); + } + }; + } + + hip::module_launch_kernel( + config.kernels.get(name).unwrap(), + get_size(&launch_config.grid_dim_x, buffers, context)? as u32, + get_size(&launch_config.grid_dim_y, buffers, context)? as u32, + get_size(&launch_config.grid_dim_z, buffers, context)? as u32, + get_size(&launch_config.block_dim_x, buffers, context)? as u32, + get_size(&launch_config.block_dim_y, buffers, context)? as u32, + get_size(&launch_config.block_dim_z, buffers, context)? as u32, + get_size(&launch_config.shared_mem_bytes, buffers, context)?, + DEFAULT_STREAM, + params.as_ptr(), + null(), + )?; + } + Action::Repeat(times, actions) => { + for _ in 0..*times { + execute(actions, buffers, buffer_pool, context, config)?; + } + } + } + } + Ok(()) +} + pub fn gpu_run( cpu_slot: usize, gpu_id: u8, @@ -129,50 +187,13 @@ pub fn gpu_run( buffers.insert(name.clone(), (idx, size)); } - for action in &config.blueprint.control_flow { - match action { - Action::ExecKernel(name, args, launch_config) => { - let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); - let mut ptrs = vec![]; - let mut constants = vec![]; - for arg in args { - match arg { - Argument::Ptr(id) => { - let idx = buffers.get(id).unwrap().0; - let dev_ptr = buffer_pool.get(idx)?; - ptrs.push(dev_ptr); - let addr = &ptrs.last().unwrap().ptr; - params.push(addr as *const _ as *const c_void); - } - Argument::Sizeof(id) => { - params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void); - } - Argument::Constant(constant) => { - // TODO: test this! - constants.push(*constant); - let addr = constants.last().unwrap(); - params.push(addr as *const _ as *const c_void); - } - }; - } - - hip::module_launch_kernel( - config.kernels.get(name).unwrap(), - get_size(&launch_config.grid_dim_x, &buffers, &context)? as u32, - get_size(&launch_config.grid_dim_y, &buffers, &context)? as u32, - get_size(&launch_config.grid_dim_z, &buffers, &context)? as u32, - get_size(&launch_config.block_dim_x, &buffers, &context)? as u32, - get_size(&launch_config.block_dim_y, &buffers, &context)? as u32, - get_size(&launch_config.block_dim_z, &buffers, &context)? as u32, - get_size(&launch_config.shared_mem_bytes, &buffers, &context)?, - DEFAULT_STREAM, - params.as_ptr(), - null(), - )?; - } - _ => return Err(DandelionError::NotImplemented), - } - } + execute( + &config.blueprint.control_flow, + &buffers, + &buffer_pool, + &context, + &config, + )?; write_gpu_outputs::( &mut context, diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 1ac69abe..d9516133 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -27,15 +27,10 @@ pub enum Argument { Constant(i64), } -#[derive(Deserialize, Serialize, Debug)] -pub enum Condition { - NTimes(usize), -} - #[derive(Deserialize, Serialize, Debug)] pub enum Action { ExecKernel(String, Vec, Box), - Repeat(Condition, Vec), + Repeat(u8, Vec), } #[derive(Deserialize, Serialize, Debug)] From 9c9664beed8ee7e5e5f0cbbf390db0b7790c0140 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 1 May 2024 11:54:25 +0200 Subject: [PATCH 079/176] push for benchmarks --- machine_interface/benches/gpu_benchmark.rs | 116 +++++++++++++++++- .../hip_interface/inference.json | 2 +- .../src/function_driver/compute_driver/gpu.rs | 16 +-- .../compute_driver/gpu/config_parsing.rs | 2 +- 4 files changed, 119 insertions(+), 17 deletions(-) diff --git a/machine_interface/benches/gpu_benchmark.rs b/machine_interface/benches/gpu_benchmark.rs index 41333d65..f0142989 100644 --- a/machine_interface/benches/gpu_benchmark.rs +++ b/machine_interface/benches/gpu_benchmark.rs @@ -7,6 +7,7 @@ use dandelion_commons::records::{Archive, RecordPoint, Recorder}; use libc::c_void; use machine_interface::function_driver::compute_driver::gpu::hip; use machine_interface::function_driver::thread_utils::EngineLoop; +use machine_interface::promise::Promise; use machine_interface::{ function_driver::{ compute_driver::gpu::{GpuDriver, GpuLoop}, @@ -129,6 +130,119 @@ fn engine_loop_run_matmul(c: &mut Criterion) { } } +fn get_inference_inputs() -> (Vec, Vec) { + let mut a: Vec = Vec::with_capacity(224 * 224 + 2); + let mut b: Vec = Vec::with_capacity(5 * 5 + 2); + + a.push(224.0); + a.push(224.0); + for i in 0..224 * 224 { + a.push(i as f32); + } + + b.push(5.0); + b.push(5.0); + for i in 0..5 * 5 { + b.push(i as f32); + } + + (a, b) +} + +fn inference_benchmark_latency(c: &mut Criterion) { + let filename = "/home/smithj/dandelion/machine_interface/hip_interface/inference.json"; + let dom_init = MemoryResource::None; + let driver: Box = Box::new(GpuDriver {}); + let drv_init = ComputeResource::GPU(7, 0); + let queue = Box::new(TestQueue::new()); + let domain = MmuMemoryDomain::init(dom_init).expect("Should have initialized domain"); + let function = driver + .parse_function(filename.to_string(), &domain) + .expect("Should be able to parse function"); + driver + .start_engine(drv_init, queue.clone()) + .expect("Should be able to start engine"); + + c.bench_function("Engine Latency", |b| { + b.iter_custom(|iters| { + let mut total = Duration::new(0, 0); + for _ in 0..iters { + let mut function_context = function + .load(&domain, 1 << 25) + .expect("Should be able to load function"); + let config = function.config.clone(); + let d_size: usize = 112 * 112 * 4 + 8; //side_len * side_len * sizeof(float) + [[size convention at start]] + let a_grid_dim: usize = (224 + 31) / 32; + let d_grid_dim: usize = (112 + 31) / 32; + let (a_matrix, b_matrix) = get_inference_inputs(); + let cfg_offset = function_context + .get_free_space_and_write_slice(&[d_size, a_grid_dim, d_grid_dim]) + .expect("Should have space for cfg"); + let a_offset = function_context + .get_free_space_and_write_slice(&a_matrix) + .expect("Should have space for A"); + let b_offset = function_context + .get_free_space_and_write_slice(&b_matrix) + .expect("Should have space for B"); + + function_context.content.append(&mut vec![ + Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: cfg_offset as usize, + size: 3 * 8, + }, + key: 0, + }], + }), + Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_matrix.len() * 4, + }, + key: 0, + }], + }), + Some(DataSet { + ident: "B".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: b_offset as usize, + size: b_matrix.len() * 4, + }, + key: 0, + }], + }), + ]); + let archive = Arc::new(Mutex::new(Archive::new())); + let recorder = Recorder::new(archive, RecordPoint::TransferEnd); + + let begin = std::time::Instant::now(); + let promise = queue.enqueu(EngineArguments::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("D")]), + recorder, + })); + let _ = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function"); + let duration = begin.elapsed(); + total += duration; + } + total + }) + }); +} + fn module_load_helper(iters: u64, path: &str) -> Duration { let mut total = Duration::new(0, 0); @@ -216,7 +330,7 @@ fn loading(c: &mut Criterion) { group.finish(); } -criterion_group!(benches, loading); +criterion_group!(benches, inference_benchmark_latency); #[cfg(feature = "gpu")] criterion_main!(benches); diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json index e102b360..fdfebb38 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/hip_interface/inference.json @@ -6,7 +6,7 @@ "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, "outputs": ["D"], "control_flow": [ - {"Repeat": [50, [ + {"Repeat": [500, [ {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index e89542ab..c225282a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -299,8 +299,8 @@ impl Driver for GpuDriver { } // To switch between single executor and process pool - // spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); - spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); + spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); + // spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); Ok(()) } @@ -309,18 +309,6 @@ impl Driver for GpuDriver { function_path: String, static_domain: &Box, ) -> dandelion_commons::DandelionResult { - // Concept for now: function_path gives config file which contains name of module (.hsaco) file - // let config = if function_path == "foo" { - // FunctionConfig::GpuConfig(config_parsing::dummy_config()?) - // } else if function_path == "bar" { - // FunctionConfig::GpuConfig(config_parsing::dummy_config2()?) - // } else if function_path == "matmul_loop" { - // FunctionConfig::GpuConfig(config_parsing::matmul_dummy(false)?) - // } else if function_path == "matmul_para" { - // FunctionConfig::GpuConfig(config_parsing::matmul_dummy(true)?) - // } else { - // FunctionConfig::GpuConfig(config_parsing::parse_config(&function_path)?) - // }; let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; let code_object = load_u8_from_file(module_path)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index d9516133..c5e89bfe 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -30,7 +30,7 @@ pub enum Argument { #[derive(Deserialize, Serialize, Debug)] pub enum Action { ExecKernel(String, Vec, Box), - Repeat(u8, Vec), + Repeat(u32, Vec), } #[derive(Deserialize, Serialize, Debug)] From 38c887c706c8e5afc74c7b0cfff57d0391bc6ad5 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 8 May 2024 17:13:01 +0200 Subject: [PATCH 080/176] adapt server for gpu --- server/src/main.rs | 47 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 3f0c0725..65db66b4 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -168,15 +168,20 @@ async fn run_mat_func( for i in 0..mat_size { DUMMY_MATRIX.push(i as i64 + 1) } + // Add cfg input for GPU functions + #[cfg(feature = "gpu")] + DUMMY_MATRIX.push((rows as i64 + 31) / 32); }); } let input_context = unsafe { add_matmul_inputs(&mut DUMMY_MATRIX) }; + let input_arc = Arc::new(input_context); - let inputs = vec![( - 0, - CompositionSet::from((0, vec![(Arc::new(input_context))])), - )]; + // Debug marker: this might be wrong! + let inputs = vec![ + (0, CompositionSet::from((0, vec![input_arc.clone()]))), + (1, CompositionSet::from((1, vec![input_arc]))), + ]; let outputs = vec![Some(0)]; let result: Result, dandelion_commons::DandelionError> = dispatcher @@ -200,6 +205,7 @@ fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { let _ = context.occupy_space(0, matrix_size); if let Some(set) = &mut context.content[0] { + set.ident = "A".to_string(); set.buffers.push(DataItem { ident: String::from(""), data: Position { @@ -210,7 +216,8 @@ fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { }); } else { context.content[0] = Some(DataSet { - ident: "".to_string(), + // TODO: verify this doesn't break non-GPU engines (I think it's fine) + ident: "A".to_string(), buffers: vec![DataItem { ident: "".to_string(), data: Position { @@ -221,6 +228,36 @@ fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { }], }); } + + #[cfg(feature = "gpu")] + { + context.content.resize_with(2, || None); + let _ = context.occupy_space(matrix_size, 8); // cfg is only one i64 here + + if let Some(set) = &mut context.content[1] { + set.ident = "cfg".to_string(); + set.buffers.push(DataItem { + ident: String::from(""), + data: Position { + offset: matrix_size, + size: 8, + }, + key: 0, + }); + } else { + context.content[0] = Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: matrix_size, + size: 8, + }, + key: 0, + }], + }); + } + } return context; } From a1fc8823a35c23b0c71521fce5aa3287a18c3367 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Tue, 14 May 2024 14:18:38 +0200 Subject: [PATCH 081/176] Prepare server for benchmarking, fix mulit-GPU bugs --- dispatcher/src/dispatcher.rs | 1 + .../src/function_driver/compute_driver/gpu.rs | 6 +-- .../function_driver/compute_driver/gpu/hip.rs | 32 +++++++++++++-- machine_interface/src/memory_domain.rs | 2 +- machine_interface/src/memory_domain/mmu.rs | 6 +++ .../src/memory_domain/read_only.rs | 6 +++ machine_interface/src/util/mmapmem.rs | 6 +++ server/src/main.rs | 40 +++++++++++++++---- 8 files changed, 83 insertions(+), 16 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index ccbca004..cb2e145c 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -407,6 +407,7 @@ impl Dispatcher { } } } + for (function_set, context_set) in inputs { if static_sets.contains(&function_set) { continue; diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index c225282a..430ae067 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -159,6 +159,8 @@ pub fn gpu_run( if !core_affinity::set_for_current(CoreId { id: cpu_slot }) { return Err(DandelionError::EngineResourceError); } + // TODO: disable device-side malloc + hip::set_device(gpu_id)?; let ContextType::Mmu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); @@ -166,9 +168,6 @@ pub fn gpu_run( let base = mmu_context.storage.as_ptr(); let config = config.load(base)?; - hip::set_device(gpu_id)?; - // TODO: disable device-side malloc - let mut buffer_pool = buffer_pool.lock().unwrap(); // bufname -> (index in buffer pool, local size) @@ -238,7 +237,6 @@ impl EngineLoop for GpuLoop { let FunctionConfig::GpuConfig(config) = config else { return Err(DandelionError::ConfigMissmatch); }; - let sysdata_offset = config.system_data_struct_offset; setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 1149f7ec..f5a365a5 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -2,7 +2,10 @@ use dandelion_commons::{DandelionError, DandelionResult}; use libc::{c_void, size_t}; -use std::{ffi::CString, ptr::null}; +use std::{ + ffi::{CStr, CString}, + ptr::null, +}; type ErrorT = u32; @@ -28,6 +31,7 @@ pub const DEFAULT_STREAM: StreamT = null(); pub struct DeviceAllocation { pub ptr: *const c_void, pub size: usize, + device: u8, } unsafe impl Send for DeviceAllocation {} @@ -42,6 +46,7 @@ pub struct DevicePointer { extern "C" { fn hipGetDeviceCount(count: *const i32) -> ErrorT; fn hipSetDevice(gpu_id: i32) -> ErrorT; + fn hipGetDevice(deviceId: *const i32) -> ErrorT; fn hipDeviceSynchronize() -> ErrorT; fn hipModuleLoad(module: *mut _ModuleT, fname: *const i8) -> ErrorT; fn hipModuleLoadData(module: *mut _ModuleT, image: *const c_void) -> ErrorT; @@ -96,6 +101,14 @@ pub fn get_device_count() -> DandelionResult { .map_err(|_| DandelionError::EngineResourceError) } +pub fn get_device() -> DandelionResult { + let mut ret: i32 = 0; + checked_call!(hipGetDevice(&mut ret as *const i32)); + + ret.try_into() + .map_err(|_| DandelionError::EngineResourceError) +} + pub fn device_synchronize() -> DandelionResult<()> { checked_call!(hipDeviceSynchronize()); Ok(()) @@ -103,9 +116,10 @@ pub fn device_synchronize() -> DandelionResult<()> { fn get_error_string(hip_error: ErrorT) -> String { unsafe { - CString::from_raw(hipGetErrorString(hip_error) as *mut i8) - .into_string() + CStr::from_ptr(hipGetErrorString(hip_error) as *mut i8) + .to_str() .expect("Invalid ROCm error string (shouldn't happen)") + .to_string() } } @@ -187,7 +201,13 @@ impl DeviceAllocation { checked_call!(hipMalloc(&mut ret as *mut *const c_void, size)); // zero out memory checked_call!(hipMemset(ret, 0, size)); - Ok(Self { ptr: ret, size }) + + let device = get_device()?; + Ok(Self { + ptr: ret, + size, + device, + }) } pub fn zero_out(&mut self) -> DandelionResult<()> { @@ -198,11 +218,15 @@ impl DeviceAllocation { impl Drop for DeviceAllocation { fn drop(&mut self) { + // Not entirely sure if this is required but device allocations are freed off the hot path anyway + let curr_dev = get_device().expect("Need to be able to get current device before freeing"); + set_device(self.device).expect("Need to be able to set device before freeing"); unsafe { if hipFree(self.ptr) != 0 { panic!("Freeing a device pointer failed (this shouldn't happen)"); } } + set_device(curr_dev).expect("Need to be able to restore device after freeing"); } } diff --git a/machine_interface/src/memory_domain.rs b/machine_interface/src/memory_domain.rs index 93e2ee7e..8661a5ed 100644 --- a/machine_interface/src/memory_domain.rs +++ b/machine_interface/src/memory_domain.rs @@ -248,7 +248,7 @@ pub fn transfer_memory( size, ) } - #[cfg(feature = "mmu")] + #[cfg(any(feature = "mmu", feature = "gpu"))] (ContextType::Mmu(destination_ctxt), ContextType::Mmu(source_ctxt)) => mmu::mmu_transfer( destination_ctxt, source_ctxt, diff --git a/machine_interface/src/memory_domain/mmu.rs b/machine_interface/src/memory_domain/mmu.rs index 94d9e3bd..11fb4a59 100644 --- a/machine_interface/src/memory_domain/mmu.rs +++ b/machine_interface/src/memory_domain/mmu.rs @@ -62,6 +62,12 @@ pub fn mmu_transfer( ) -> DandelionResult<()> { // check if there is space in both contexts if source.storage.size() < source_offset + size { + eprintln!( + "Out of bounds: storage_size {}, source_offset {}, size {}", + source.storage.size(), + source_offset, + size + ); return Err(DandelionError::InvalidRead); } if destination.storage.size() < destination_offset + size { diff --git a/machine_interface/src/memory_domain/read_only.rs b/machine_interface/src/memory_domain/read_only.rs index 9dd4033f..e90f6c92 100644 --- a/machine_interface/src/memory_domain/read_only.rs +++ b/machine_interface/src/memory_domain/read_only.rs @@ -23,6 +23,12 @@ impl ContextTrait for ReadOnlyContext { let read_size = core::mem::size_of::() * read_buffer.len(); if offset + read_size > self.storage.len() { + eprintln!( + "Invalid in ROC: len {}, offset {}, read_size {}", + self.storage.len(), + offset, + read_size + ); return Err(DandelionError::InvalidRead); } let byte_buffer = unsafe { diff --git a/machine_interface/src/util/mmapmem.rs b/machine_interface/src/util/mmapmem.rs index a5253db3..925bbcbc 100644 --- a/machine_interface/src/util/mmapmem.rs +++ b/machine_interface/src/util/mmapmem.rs @@ -268,6 +268,12 @@ impl MmapMem { let read_size = core::mem::size_of::() * read_buffer.len(); if offset + read_size > self.size() { + eprintln!( + "InvalidRead in MMM: len {}, offset {}, size {}", + self.size(), + offset, + read_size + ); debug!("Read out of bounds at offset {}", offset); return Err(DandelionError::InvalidRead); } diff --git a/server/src/main.rs b/server/src/main.rs index 65db66b4..3aa46ba6 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -200,6 +200,13 @@ async fn run_mat_func( fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { // Allocate a new set entry let matrix_size = matrix.len() * size_of::(); + // This is horrible + let mut offset = 0; + #[cfg(feature = "gpu")] + { + offset = 8; + } + let mut context = ReadOnlyContext::new_static(matrix); context.content.resize_with(1, || None); let _ = context.occupy_space(0, matrix_size); @@ -210,7 +217,7 @@ fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { ident: String::from(""), data: Position { offset: 0, - size: matrix_size, + size: matrix_size - offset, }, key: 0, }); @@ -222,7 +229,7 @@ fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { ident: "".to_string(), data: Position { offset: 0, - size: matrix_size, + size: matrix_size - offset, }, key: 0, }], @@ -239,18 +246,18 @@ fn add_matmul_inputs(matrix: &'static mut Vec) -> Context { set.buffers.push(DataItem { ident: String::from(""), data: Position { - offset: matrix_size, + offset: matrix_size - offset, size: 8, }, key: 0, }); } else { - context.content[0] = Some(DataSet { + context.content[1] = Some(DataSet { ident: "cfg".to_string(), buffers: vec![DataItem { ident: "".to_string(), data: Position { - offset: matrix_size, + offset: matrix_size - offset, size: 8, }, key: 0, @@ -430,6 +437,22 @@ async fn register_function( "Gpu" => EngineType::Gpu, _ => panic!("Unkown engine type string"), }; + + // remove this, just trying to hack it together + let cfg = vec![(128i64 + 31) / 32]; + let mut cfg_context = ReadOnlyContext::new(cfg.into_boxed_slice()).unwrap(); + cfg_context.content.resize_with(1, || None); + let _ = cfg_context.occupy_space(0, 8); + cfg_context.content[0] = Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { offset: 0, size: 8 }, + key: 0, + }], + }); + let cfg_set = CompositionSet::from((0usize, vec![Arc::new(cfg_context)])); + dispatcher .insert_func( request_map.name, @@ -437,8 +460,11 @@ async fn register_function( request_map.context_size as usize, path_buff.to_str().unwrap(), Metadata { - input_sets: Arc::new(vec![(String::from(""), None)]), - output_sets: Arc::new(vec![String::from("")]), + input_sets: Arc::new(vec![ + (String::from("A"), None), + (String::from("cfg"), Some(cfg_set)), + ]), + output_sets: Arc::new(vec![String::from("B")]), }, ) .await From c5816803fd6bd384aa45cf5ecff0a86ec275d4b4 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Tue, 14 May 2024 18:04:26 +0200 Subject: [PATCH 082/176] fix server for non-GPU engines --- server/src/main.rs | 22 ++-------------------- server/tests/server_tests.rs | 30 +++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 1afc9c22..5fd3cfe3 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -289,21 +289,6 @@ async fn register_function( _ => panic!("Unkown engine type string"), }; - // remove this, just trying to hack it together - let cfg = vec![(128i64 + 31) / 32]; - let mut cfg_context = ReadOnlyContext::new(cfg.into_boxed_slice()).unwrap(); - cfg_context.content.resize_with(1, || None); - let _ = cfg_context.occupy_space(0, 8); - cfg_context.content[0] = Some(DataSet { - ident: "cfg".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { offset: 0, size: 8 }, - key: 0, - }], - }); - let cfg_set = CompositionSet::from((0usize, vec![Arc::new(cfg_context)])); - dispatcher .insert_func( request_map.name, @@ -311,10 +296,7 @@ async fn register_function( request_map.context_size as usize, path_buff.to_str().unwrap(), Metadata { - input_sets: Arc::new(vec![ - (String::from("A"), None), - (String::from("cfg"), Some(cfg_set)), - ]), + input_sets: Arc::new(vec![(String::from("A"), None)]), output_sets: Arc::new(vec![String::from("B")]), }, ) @@ -503,7 +485,7 @@ fn main() -> () { engine_type, (num_dispatcher_cores..num_cores) .zip(0..gpu_count) - .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id, gpu_id)) + .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), ); } diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 351504e6..c4b0fb30 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -1,5 +1,5 @@ #[cfg(all( - any(feature = "wasm", feature = "mmu", feature = "cheri"), + any(feature = "wasm", feature = "mmu", feature = "cheri", feature = "gpu"), feature = "reqwest_io" ))] mod server_tests { @@ -79,7 +79,7 @@ mod server_tests { let mat_request = DandelionRequest { name: function_name, sets: vec![InputSet { - identifier: String::from(""), + identifier: String::from("A"), items: vec![InputItem { identifier: String::from(""), key: 0, @@ -130,7 +130,7 @@ mod server_tests { let mut server_killer = ServerKiller { server }; // register function - let version; + let version: String; let engine_type; #[cfg(feature = "wasm")] { @@ -147,12 +147,24 @@ mod server_tests { version = "elf_cheri"; engine_type = String::from("Cheri"); } - let matmul_path = format!( - "{}/../machine_interface/tests/data/test_{}_matmul", - env!("CARGO_MANIFEST_DIR"), - version, - ); - + let matmul_path; + #[cfg(any(feature = "wasm", feature = "mmu", feature = "cheri"))] + { + matmul_path = format!( + "{}/../machine_interface/tests/data/test_{}_matmul", + env!("CARGO_MANIFEST_DIR"), + version, + ); + } + // TODO: unify with other engines + #[cfg(feature = "gpu")] + { + matmul_path = format!( + "{}/../machine_interface/hip_interface/matmul_para.json", + env!("CARGO_MANIFEST_DIR"), + ); + engine_type = String::from("Gpu"); + } let register_request = RegisterFunction { name: String::from("matmul"), context_size: 0x802_0000, From c4feeb48cc0da9104e1c37ae9a78f83beb3932a8 Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 14 May 2024 18:35:03 +0200 Subject: [PATCH 083/176] Update ioscale and compute to work with new interface --- dispatcher/src/dispatcher.rs | 15 +- .../function_driver/system_driver/reqwest.rs | 25 +-- .../src/memory_domain/bytes_context.rs | 21 +- server/src/lib.rs | 6 +- server/src/main.rs | 212 ++++-------------- 5 files changed, 89 insertions(+), 190 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 282db0fe..3651aae7 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -100,7 +100,7 @@ impl Dispatcher { &self, function_name: String, inputs: Vec<(usize, CompositionSet)>, - output_mapping: Vec>, + output_mapping_option: Option>>, non_caching: bool, recorder: Recorder, ) -> DandelionResult> { @@ -109,6 +109,17 @@ impl Dispatcher { .get_function_id(&function_name) .await .ok_or(DandelionError::DispatcherUnavailableFunction)?; + let output_mapping = if let Some(mapping) = output_mapping_option { + mapping + } else { + let metadata = self.function_registry.get_metadata(function_id).await?; + let output_number = metadata.output_sets.len(); + let mut mapping = Vec::with_capacity(output_number); + for index in 0..output_number { + mapping.push(Some(index)); + } + mapping + }; return self .queue_function(function_id, inputs, output_mapping, non_caching, recorder) .await; @@ -343,7 +354,7 @@ impl Dispatcher { return Ok(compositon_output .into_iter() .filter_map(|(function_id, composition)| { - if output_mapping.len() < function_id { + if output_mapping.len() <= function_id { return None; } return output_mapping[function_id].and_then(|composition_id| { diff --git a/machine_interface/src/function_driver/system_driver/reqwest.rs b/machine_interface/src/function_driver/system_driver/reqwest.rs index 2d0d7042..2a8a9a97 100644 --- a/machine_interface/src/function_driver/system_driver/reqwest.rs +++ b/machine_interface/src/function_driver/system_driver/reqwest.rs @@ -64,10 +64,11 @@ fn http_setup(context: &Context) -> DandelionResult { let method_item = request_iter.next(); let method = match method_item { Some(method_string) if method_string == "GET" => Method::GET, - Some(method_string) if method_string == "PUT" => Method::PUT, + Some(method_string) if method_string == "POST" => Method::POST, Some(method_string) => { - return Err(DandelionError::InvalidSystemFuncArg(String::from( - method_string, + return Err(DandelionError::InvalidSystemFuncArg(format!( + "Unsupported Method: {}", + method_string ))) } _ => { @@ -172,6 +173,7 @@ async fn http_request( let request_builder = match method { Method::PUT => client.put(uri.clone()), + Method::POST => client.post(uri.clone()), Method::GET => client.get(uri.clone()), _ => { return Err(DandelionError::MalformedSystemFuncArg(String::from( @@ -318,19 +320,12 @@ fn http_run( client: &Client, output_set_names: Arc>, ) -> DandelionResult { - let response_result = { + let response = { let _guard = runtime.enter(); let request = http_setup(&context)?; - runtime - .block_on(http_request(client.clone(), request)) - .or(Err(DandelionError::EngineError)) - }; - let response = match response_result { - Ok(resp) => resp, - Err(err) => { - return Err(err); - } + runtime.block_on(http_request(client.clone(), request))? }; + http_context_write(&mut context, output_set_names, response)?; return Ok(context); } @@ -342,7 +337,7 @@ struct ReqwestLoop { impl EngineLoop for ReqwestLoop { fn init(core_id: u8) -> DandelionResult> { - log::debug!("Hyper engine Init"); + log::debug!("Reqwest engine Init"); let runtime = Builder::new_multi_thread() .on_thread_start(move || { if !set_for_current(core_affinity::CoreId { id: core_id.into() }) { @@ -362,7 +357,7 @@ impl EngineLoop for ReqwestLoop { context: Context, output_sets: Arc>, ) -> DandelionResult { - log::debug!("Hyper engine running function"); + log::debug!("Reqwest engine running function"); let function = match config { FunctionConfig::SysConfig(sys_func) => sys_func, _ => return Err(DandelionError::ConfigMissmatch), diff --git a/machine_interface/src/memory_domain/bytes_context.rs b/machine_interface/src/memory_domain/bytes_context.rs index 48729fa6..0fe42ab6 100644 --- a/machine_interface/src/memory_domain/bytes_context.rs +++ b/machine_interface/src/memory_domain/bytes_context.rs @@ -238,6 +238,14 @@ fn read_data_item( let offset = total_length - buf.remaining(); let size = binary_lenght; buf.advance(size); + let doc_termination = buf.get_i8(); + if doc_termination != 0 { + debug!( + "Terminating 0 of data item not 0, {} instead", + doc_termination + ); + return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); + } return Ok(Some(DataItem { ident, key, @@ -279,6 +287,7 @@ fn read_data_set( let item_array_size = read_length(buf)?; let mut items = Vec::new(); let array_end = buf.remaining() + 4 - item_array_size; + // reads all items, as well as the last terminating 0 of the array while buf.remaining() > array_end { if let Some(item) = read_data_item(buf, total_length)? { items.push(item); @@ -286,7 +295,7 @@ fn read_data_set( break; } } - // read terminating 0 char + // read terminating 0 char of the document check_remaining::(buf)?; if buf.get_i8() != 0 { debug!("Terminating 0 not 0"); @@ -326,7 +335,7 @@ impl BytesContext { read_and_check_cstring(&mut frame_buf, "sets\0")?; let _ = read_length(&mut frame_buf); // parse elements one by one - let mut sets = Vec::new(); + let mut sets: Vec> = Vec::new(); while frame_buf.remaining() > 0 { if let Some(set) = read_data_set(&mut frame_buf, bson_dict_length)? { sets.push(Some(set)); @@ -336,8 +345,12 @@ impl BytesContext { } // read terminating 0 check_remaining::(&frame_buf)?; - if frame_buf.get_i8() != 0 { - debug!("Context terminating 0 char not 0"); + let last_byte = frame_buf.get_i8(); + if last_byte != 0 || frame_buf.remaining > 0 { + debug!( + "Context terminating 0 char not 0, is {} and frame buffer has {} remaining", + last_byte, frame_buf.remaining + ); return Err(DandelionError::RequestError(FrontendError::ViolatedSpec)); } let mut context = Context::new( diff --git a/server/src/lib.rs b/server/src/lib.rs index dc5d3d78..59e0ea45 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -282,7 +282,11 @@ impl DandelionBuf { { ReadMode::ToItemEnd(next_index, next_size) } else { - ReadMode::ToItem(next_index, next_size) + ReadMode::ToItem( + next_index, + self.items[next_index].response_offset + - self.items[next_index - 1].response_offset, + ) } }; (to_end, next_read) diff --git a/server/src/main.rs b/server/src/main.rs index 378e9c4f..0eb45a0c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -11,7 +11,7 @@ use hyper::{ service::service_fn, Request, Response, }; -use log::{error, info, warn}; +use log::{debug, error, info, warn}; use machine_interface::{ function_driver::ComputeResource, machine_config::EngineType, @@ -33,104 +33,6 @@ use tokio::{net::TcpListener, runtime::Builder, signal::unix::SignalKind}; const FUNCTION_FOLDER_PATH: &str = "/tmp/dandelion_server"; -// async fn run_chain( -// dispatcher: Arc, -// is_cold: bool, -// function_name: String, -// get_uri: String, -// post_uri: String, -// mut recorder: Recorder, -// ) -> u64 { -// // TODO just have all the strings concatinated and create const context -// let domain = MmapMemoryDomain::init(machine_interface::memory_domain::MemoryResource::None) -// .expect("Should be able to get Mmap domain"); -// let mut input_context = domain -// .acquire_context(128) -// .expect("Should be able to get malloc context"); -// let get_request = format!("GET {} HTTP/1.1", get_uri); -// let post_request = format!("PUT {} HTTP/1.1", post_uri); -// let get_request_offset = input_context -// .get_free_space_and_write_slice(get_request.as_bytes()) -// .expect("Should be able to write") as usize; -// let post_request_offset = input_context -// .get_free_space_and_write_slice(post_request.as_bytes()) -// .expect("Should be able to write") as usize; -// input_context.content.push(Some(DataSet { -// ident: String::from("request"), -// buffers: vec![DataItem { -// ident: String::from("request"), -// data: Position { -// offset: get_request_offset, -// size: get_request.len(), -// }, -// key: 0, -// }], -// })); -// input_context.content.push(Some(DataSet { -// ident: String::from("request"), -// buffers: vec![DataItem { -// ident: String::from("request"), -// data: Position { -// offset: post_request_offset, -// size: post_request.len(), -// }, -// key: 0, -// }], -// })); -// let input_arc = Arc::new(input_context); -// let inputs = vec![ -// (0, CompositionSet::from((0, vec![input_arc.clone()]))), -// (1, CompositionSet::from((1, vec![input_arc]))), -// ]; -// let output_mapping = vec![Some(0), Some(1)]; - -// recorder -// .record(RecordPoint::QueueFunctionDispatcher) -// .unwrap(); -// let result = dispatcher -// .queue_function_by_name(function_name, inputs, output_mapping, is_cold, recorder) -// .await -// .expect("Should get response from chain"); -// assert_eq!(2, result.len()); -// // check http post response -// let post_composition_set = result -// .get(&1) -// .expect("Should have composition set for post response"); -// assert_eq!(1, post_composition_set.context_list.len()); -// let post_context = &post_composition_set.context_list[0].0; -// assert_eq!(3, post_context.content.len()); -// let post_set = post_context.content[0] -// .as_ref() -// .expect("Should have status set"); -// assert_eq!(1, post_set.buffers.len()); -// let post_status_position = post_set.buffers[0].data; -// let mut post_vec = Vec::::new(); -// post_vec.resize(post_status_position.size, 0); -// post_context -// .read(post_status_position.offset, post_vec.as_mut_slice()) -// .expect("Should be able to read post response"); -// assert_eq!("HTTP/1.1 200 OK".as_bytes(), post_vec.as_slice()); - -// // check iteration result -// let result_compositon_set = result.get(&0).expect("Should have set 0"); -// assert_eq!(1, result_compositon_set.context_list.len()); -// let result_context = &result_compositon_set.context_list[0].0; -// assert_eq!(1, result_context.content.len()); -// let result_set = result_context.content[0] -// .as_ref() -// .expect("Should contain a return number"); -// assert_eq!(1, result_set.buffers.len()); -// let result_position = result_set.buffers[0].data; - -// let mut result_vec = vec![0u8; result_position.size]; -// result_context -// .read(result_position.offset, result_vec.as_mut_slice()) -// .expect("Should be able to read result"); -// let checksum = u64::from_ne_bytes(result_vec[0..8].try_into().unwrap()); - -// return checksum; -// } - // TODO: integrate into serve request async fn run_mat_func( dispatcher: Arc, @@ -141,12 +43,11 @@ async fn run_mat_func( ) -> DandelionBody { // TODO match set names to assign sets to composition sets let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; - let outputs = vec![Some(0)]; recorder .record(RecordPoint::QueueFunctionDispatcher) .unwrap(); let result = dispatcher - .queue_function_by_name(function_name, inputs, outputs, is_cold, recorder) + .queue_function_by_name(function_name, inputs, None, is_cold, recorder) .await .expect("Should get result from function"); @@ -188,66 +89,43 @@ async fn serve_request( warn!("request parsing failed with: {:?}", request_context_result); } let (function_name, request_context) = request_context_result.unwrap(); - let response_body = run_mat_func( - dispatcher, - is_cold, - function_name, - request_context, - recorder.get_sub_recorder().unwrap(), - ) - .await; - + debug!("finshed creating request context"); + // TODO match set names to assign sets to composition sets + // map sets in the order they are in the request + let request_number = request_context.content.len(); + let request_arc = Arc::new(request_context); + let mut inputs = vec![]; + for request_set in 0..request_number { + inputs.push(( + request_set, + CompositionSet::from((request_set, vec![request_arc.clone()])), + )); + } + // let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; + // want a 1 to 1 mapping of all outputs the functions gives as long as we don't add user input on what they want + recorder + .record(RecordPoint::QueueFunctionDispatcher) + .unwrap(); + let function_output = dispatcher + .queue_function_by_name( + function_name, + inputs, + None, + is_cold, + recorder.get_sub_recorder().unwrap(), + ) + .await + .expect("Should get result from function"); + let response_body = dandelion_server::DandelionBody::new(function_output); + debug!("finshed creating response body"); let response = Ok::<_, Infallible>(Response::new(response_body)); - + debug!("finshed creating response"); recorder.record(RecordPoint::EndService).unwrap(); TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); return response; } -// #[derive(Deserialize)] -// struct ChainRequest { -// name: String, -// get_uri: String, -// post_uri: String, -// } - -// async fn serve_chain( -// is_cold: bool, -// req: Request, -// dispatcher: Arc, -// ) -> Result, DandelionBody>>, Infallible> { -// let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); -// let _ = recorder.record(RecordPoint::Arrival); - -// let request_buf = req -// .collect() -// .await -// .expect("Should be able to parse body") -// .to_bytes(); -// let request_map: ChainRequest = -// bson::from_slice(&request_buf).expect("Should be able to deserialize matrix request"); - -// let response_vec = run_chain( -// dispatcher, -// is_cold, -// request_map.name, -// request_map.get_uri, -// request_map.post_uri, -// recorder.get_sub_recorder().unwrap(), -// ) -// .await -// .to_be_bytes() -// .to_vec(); - -// let response = Ok::<_, Infallible>(Response::new(Either::Left(response_vec.into()))); - -// recorder.record(RecordPoint::EndService).unwrap(); -// TRACING_ARCHIVE.get().unwrap().return_recorder(recorder); - -// return response; -// } - #[derive(Debug, Deserialize)] struct RegisterFunction { name: String, @@ -349,12 +227,8 @@ async fn service( // TODO rename to cold func and hot func, remove matmul, compute, io "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, - "/cold/matmul" => serve_request(true, req, dispatcher).await, - "/hot/matmul" => serve_request(false, req, dispatcher).await, - // "/cold/compute" => serve_chain(true, req, dispatcher).await, - // "/hot/compute" => serve_chain(false, req, dispatcher).await, - // "/cold/io" => serve_chain(true, req, dispatcher).await, - // "/hot/io" => serve_chain(false, req, dispatcher).await, + "/cold/matmul" | "/cold/compute" | "/cold/io" => serve_request(true, req, dispatcher).await, + "/hot/matmul" | "/hot/compute" | "/hot/io" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), @@ -469,17 +343,17 @@ fn main() -> () { #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] pool_map.insert( engine_type, - (num_dispatcher_cores..num_cores) + (num_dispatcher_cores + 1..num_cores) .map(|code_id| ComputeResource::CPU(code_id as u8)) .collect(), ); - // #[cfg(feature = "reqwest_io")] - // pool_map.insert( - // EngineType::Hyper, - // (0..num_dispatcher_cores) - // .map(|core_id| ComputeResource::CPU(core_id as u8)) - // .collect(), - // ); + #[cfg(feature = "reqwest_io")] + pool_map.insert( + EngineType::Reqwest, + (num_dispatcher_cores..num_dispatcher_cores + 1) + .map(|core_id| ComputeResource::CPU(core_id as u8)) + .collect(), + ); let resource_pool = ResourcePool { engine_pool: futures::lock::Mutex::new(pool_map), }; @@ -498,6 +372,8 @@ fn main() -> () { print!(" mmu"); #[cfg(feature = "wasm")] print!(" wasm"); + #[cfg(feature = "reqwest_io")] + print!(" request_io"); #[cfg(feature = "timestamp")] print!(" timestamp"); print!("\n"); From 2eeb043a59afb671b9e8a558fd7ecb48af3105a9 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 15 May 2024 10:44:56 +0200 Subject: [PATCH 084/176] Updates before merge --- server/src/main.rs | 8 ++++++-- server/tests/server_tests.rs | 27 +++++++++++++++++++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 5fd3cfe3..91f3349f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -140,7 +140,11 @@ async fn run_mat_func( mut recorder: Recorder, ) -> DandelionBody { // TODO match set names to assign sets to composition sets - let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; + let request_arc = Arc::new(request); + let inputs = vec![ + (0, CompositionSet::from((0, vec![request_arc.clone()]))), + (1, CompositionSet::from((1, vec![request_arc.clone()]))), + ]; let outputs = vec![Some(0)]; recorder .record(RecordPoint::QueueFunctionDispatcher) @@ -296,7 +300,7 @@ async fn register_function( request_map.context_size as usize, path_buff.to_str().unwrap(), Metadata { - input_sets: Arc::new(vec![(String::from("A"), None)]), + input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), output_sets: Arc::new(vec![String::from("B")]), }, ) diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index c4b0fb30..31589b31 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -76,16 +76,27 @@ mod server_tests { let mut data = Vec::new(); data.extend_from_slice(&i64::to_le_bytes(1)); data.extend_from_slice(&i64::to_le_bytes(1)); + let cfg = Vec::from(i64::to_le_bytes(1i64)); let mat_request = DandelionRequest { name: function_name, - sets: vec![InputSet { - identifier: String::from("A"), - items: vec![InputItem { - identifier: String::from(""), - key: 0, - data: &data, - }], - }], + sets: vec![ + InputSet { + identifier: String::from("A"), + items: vec![InputItem { + identifier: String::from(""), + key: 0, + data: &data, + }], + }, + InputSet { + identifier: String::from("cfg"), + items: vec![InputItem { + identifier: String::from(""), + key: 0, + data: &cfg, + }], + }, + ], }; let client = reqwest::blocking::Client::new(); From 676f2b89b47cbdc4ab5544725bf3c8c63a89dee7 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 15 May 2024 11:33:38 +0200 Subject: [PATCH 085/176] update composition with GPU inputs --- server/tests/server_tests.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 69b5bda8..3cf4416b 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -193,6 +193,7 @@ mod server_tests { assert!(registration_resp.status().is_success()); let chain_request = RegisterChain { + #[cfg(not(feature = "gpu"))] composition: String::from( r#" (:function matmul (InMats) -> (OutMats)) @@ -202,6 +203,16 @@ mod server_tests { )) "#, ), + #[cfg(feature = "gpu")] + composition: String::from( + r#" + (:function matmul (InMats Config) -> (OutMats)) + (:composition chain (CompInMats CompConfig) -> (CompOutMats) ( + (matmul ((:all InMats <- CompInMats) (:all Config <- CompConfig)) => ((InterMat := OutMats))) + (matmul ((:all InMats <- InterMat) (:all Config <- CompConfig)) => ((CompOutMats := OutMats))) + )) + "#, + ), }; let chain_client = reqwest::blocking::Client::new(); let chain_resp = chain_client @@ -212,7 +223,7 @@ mod server_tests { assert!(chain_resp.status().is_success()); send_matrix_request("http://localhost:8080/hot/matmul", String::from("matmul")); - // send_matrix_request("http://localhost:8080/hot/matmul", String::from("chain")); + send_matrix_request("http://localhost:8080/hot/matmul", String::from("chain")); let status_result = server_killer.server.try_wait(); let status = status_result.unwrap(); From 2cef03241a5e869e96f1f92ea06a293ccf0c8145 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 17 May 2024 11:04:07 +0200 Subject: [PATCH 086/176] split GpuDriver into process/thread variants --- machine_interface/Cargo.toml | 2 + machine_interface/benches/gpu_benchmark.rs | 8 +- .../compute_driver/compute_driver_tests.rs | 26 +++- .../src/function_driver/compute_driver/gpu.rs | 138 +++++++++++------- .../compute_driver/gpu/gpu_utils.rs | 48 +++--- machine_interface/src/machine_config.rs | 25 +++- server/Cargo.toml | 4 +- server/src/main.rs | 20 ++- server/tests/server_tests.rs | 16 +- 9 files changed, 178 insertions(+), 109 deletions(-) diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 0ca16be8..c4941643 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -13,6 +13,8 @@ bytes_context = ["std", "dep:bytes"] wasm = ["std"] timestamp = ["dandelion_commons/timestamp"] gpu = ["std"] +gpu_process = ["gpu"] +gpu_thread = ["gpu"] [build-dependencies] cmake = "0.1" diff --git a/machine_interface/benches/gpu_benchmark.rs b/machine_interface/benches/gpu_benchmark.rs index f0142989..189fc6d3 100644 --- a/machine_interface/benches/gpu_benchmark.rs +++ b/machine_interface/benches/gpu_benchmark.rs @@ -10,7 +10,7 @@ use machine_interface::function_driver::thread_utils::EngineLoop; use machine_interface::promise::Promise; use machine_interface::{ function_driver::{ - compute_driver::gpu::{GpuDriver, GpuLoop}, + compute_driver::gpu::{GpuLoop, GpuThreadDriver}, test_queue::TestQueue, ComputeResource, Driver, EngineArguments, FunctionArguments, }, @@ -30,7 +30,7 @@ fn context_allocation(c: &mut Criterion) { let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; let dom_init = MemoryResource::None; - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = Box::new(GpuThreadDriver {}); let domain = MmuMemoryDomain::init(dom_init).expect("Should have initialized domain"); let function = driver .parse_function(filename.to_string(), &domain) @@ -66,7 +66,7 @@ fn engine_loop_run_matmul(c: &mut Criterion) { // mostly taken from compute_driver_tests let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; let dom_init = MemoryResource::None; - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = Box::new(GpuThreadDriver {}); let domain = MmuMemoryDomain::init(dom_init).expect("Should have initialized domain"); let function = driver .parse_function(filename.to_string(), &domain) @@ -152,7 +152,7 @@ fn get_inference_inputs() -> (Vec, Vec) { fn inference_benchmark_latency(c: &mut Criterion) { let filename = "/home/smithj/dandelion/machine_interface/hip_interface/inference.json"; let dom_init = MemoryResource::None; - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = Box::new(GpuThreadDriver {}); let drv_init = ComputeResource::GPU(7, 0); let queue = Box::new(TestQueue::new()); let domain = MmuMemoryDomain::init(dom_init).expect("Should have initialized domain"); diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 86faa893..996d4548 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -703,7 +703,7 @@ mod compute_driver_tests { gpu::{ dummy_run, hip::{self, DEFAULT_STREAM}, - GpuDriver, GpuLoop, + GpuLoop, GpuProcessDriver, GpuThreadDriver, }, }, load_utils::load_u8_from_file, @@ -721,6 +721,20 @@ mod compute_driver_tests { static ref GPU_LOCK: Mutex<()> = Mutex::new(()); } + fn get_driver() -> Box { + #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] + panic!("gpu_process and gpu_thread enabled simultaneously"); + + #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] + panic!("Neither gpu_process nor gpu_thread enabled"); + + #[cfg(feature = "gpu_process")] + return Box::new(GpuProcessDriver {}); + + #[cfg(feature = "gpu_thread")] + return Box::new(GpuThreadDriver {}); + } + #[ignore = "pollutes stdout"] #[test] fn module_load_data_test() { @@ -765,7 +779,7 @@ mod compute_driver_tests { #[test] fn minimal() { let _lock = GPU_LOCK.lock().unwrap(); - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = get_driver(); engine_minimal::( "/home/smithj/dandelion/machine_interface/hip_interface/minimal.json", MemoryResource::None, @@ -777,7 +791,7 @@ mod compute_driver_tests { #[test] fn basic_input_output() { let _lock = GPU_LOCK.lock().unwrap(); - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = get_driver(); let (mut function_context, config, queue) = prepare_engine_and_function::( "/home/smithj/dandelion/machine_interface/hip_interface/basic_io.json", @@ -847,7 +861,7 @@ mod compute_driver_tests { let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_loop.json"; let dom_init = MemoryResource::None; - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; let (mut function_context, config, queue) = prepare_engine_and_function::( @@ -934,7 +948,7 @@ mod compute_driver_tests { let filename = "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; let dom_init = MemoryResource::None; - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; @@ -1127,7 +1141,7 @@ mod compute_driver_tests { let _lock = GPU_LOCK.lock().unwrap(); let filename = "/home/smithj/dandelion/machine_interface/hip_interface/inference.json"; let dom_init = MemoryResource::None; - let driver: Box = Box::new(GpuDriver {}); + let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; let (mut function_context, config, queue) = prepare_engine_and_function::( diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index d1a2814e..411ef3d1 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -267,34 +267,74 @@ impl EngineLoop for GpuLoop { } } -pub struct GpuDriver {} +fn common_parse( + function_path: String, + static_domain: &'static dyn crate::memory_domain::MemoryDomain, +) -> DandelionResult { + let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; + + let code_object = load_u8_from_file(module_path)?; + let size = code_object.len() * size_of::(); + let mut context = static_domain.acquire_context(size)?; + context.write(0, &code_object)?; + gpu_config.module_offset = std::mem::size_of::>(); + + let config = FunctionConfig::GpuConfig(gpu_config); + // Location of code object + context.content = vec![Some(DataSet { + ident: String::from("static"), + buffers: vec![DataItem { + ident: String::from(""), + data: Position { offset: 0, size }, + key: 0, + }], + })]; + let requirements = DataRequirementList { + static_requirements: vec![], + input_requirements: vec![], + }; + + Ok(Function { + requirements, + context, + config, + }) +} + +fn common_start(resource: ComputeResource) -> DandelionResult<(u8, u8)> { + // extract resources + let (cpu_slot, gpu_id) = match resource { + ComputeResource::GPU(cpu, gpu) => (cpu, gpu), + _ => return Err(DandelionError::EngineResourceError), + }; + // check that core is available + let available_cores = match core_affinity::get_core_ids() { + None => return Err(DandelionError::EngineError), + Some(cores) => cores, + }; + if !available_cores + .iter() + .any(|x| x.id == usize::from(cpu_slot)) + { + return Err(DandelionError::EngineResourceError); + } + // check gpu is available + if usize::from(gpu_id) >= hip::get_device_count()? { + return Err(DandelionError::EngineResourceError); + } + + Ok((cpu_slot, gpu_id)) +} -impl Driver for GpuDriver { +pub struct GpuThreadDriver {} + +impl Driver for GpuThreadDriver { fn start_engine( &self, resource: ComputeResource, queue: Box, ) -> dandelion_commons::DandelionResult<()> { - // extract resources - let (cpu_slot, gpu_id) = match resource { - ComputeResource::GPU(cpu, gpu) => (cpu, gpu), - _ => return Err(DandelionError::EngineResourceError), - }; - // check that core is available - let available_cores = match core_affinity::get_core_ids() { - None => return Err(DandelionError::EngineError), - Some(cores) => cores, - }; - if !available_cores - .iter() - .any(|x| x.id == usize::from(cpu_slot)) - { - return Err(DandelionError::EngineResourceError); - } - // check gpu is available - if usize::from(gpu_id) >= hip::get_device_count()? { - return Err(DandelionError::EngineResourceError); - } + let (cpu_slot, gpu_id) = common_start(resource)?; // To switch between single executor and process pool spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); @@ -306,34 +346,32 @@ impl Driver for GpuDriver { &self, function_path: String, static_domain: &'static dyn crate::memory_domain::MemoryDomain, - ) -> dandelion_commons::DandelionResult { - let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; - - let code_object = load_u8_from_file(module_path)?; - let size = code_object.len() * size_of::(); - let mut context = static_domain.acquire_context(size)?; - context.write(0, &code_object)?; - gpu_config.module_offset = std::mem::size_of::>(); - - let config = FunctionConfig::GpuConfig(gpu_config); - // Location of code object - context.content = vec![Some(DataSet { - ident: String::from("static"), - buffers: vec![DataItem { - ident: String::from(""), - data: Position { offset: 0, size }, - key: 0, - }], - })]; - let requirements = DataRequirementList { - static_requirements: vec![], - input_requirements: vec![], - }; + ) -> DandelionResult { + common_parse(function_path, static_domain) + } +} + +pub struct GpuProcessDriver {} + +impl Driver for GpuProcessDriver { + fn start_engine( + &self, + resource: ComputeResource, + queue: Box, + ) -> dandelion_commons::DandelionResult<()> { + let (cpu_slot, gpu_id) = common_start(resource)?; - Ok(Function { - requirements, - context, - config, - }) + // To switch between single executor and process pool + // spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); + spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); + Ok(()) + } + + fn parse_function( + &self, + function_path: String, + static_domain: &'static dyn crate::memory_domain::MemoryDomain, + ) -> DandelionResult { + common_parse(function_path, static_domain) } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 2fe47339..00623e65 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -482,38 +482,26 @@ async fn process_inputs( continue; } } - // wait for all pending functions to complete - if let Ok((_, _, _, _)) = tokio::try_join!( - worker1.available.acquire(), - worker2.available.acquire(), - worker3.available.acquire(), - worker4.available.acquire(), - ) { - // execute transfer - let transfer_result = memory_domain::transfer_data_item( - &mut destination, - &source, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name.as_str(), - source_set_index, - source_item_index, - ); - match recorder.record(RecordPoint::TransferEnd) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - continue; - } + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; } - let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); - debt.fulfill(Box::new(transfer_return)); - continue; - } else { - // shouldn't really happen unless Workers processes die - debt.fulfill(Box::new(Err(DandelionError::EngineError))); } + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); + debt.fulfill(Box::new(transfer_return)); + continue; } WorkToDo::ParsingArguments(ParsingArguments { driver, diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index 30c34609..1c1c25de 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -18,8 +18,10 @@ pub enum EngineType { RWasm, #[cfg(feature = "mmu")] Process, - #[cfg(feature = "gpu")] - Gpu, + #[cfg(feature = "gpu_thread")] + GpuThread, + #[cfg(feature = "gpu_process")] + GpuProcess, } #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] @@ -45,8 +47,10 @@ pub fn get_compatibilty_table() -> BTreeMap { (EngineType::RWasm, DomainType::RWasm), #[cfg(feature = "mmu")] (EngineType::Process, DomainType::Process), - #[cfg(feature = "gpu")] - (EngineType::Gpu, DomainType::Gpu), + #[cfg(feature = "gpu_thread")] + (EngineType::GpuThread, DomainType::Gpu), + #[cfg(feature = "gpu_process")] + (EngineType::GpuProcess, DomainType::Gpu), ]); } @@ -131,11 +135,18 @@ pub fn get_available_drivers() -> BTreeMap { crate::function_driver::compute_driver::mmu::MmuDriver {}, )) as &'static dyn Driver, ), - #[cfg(feature = "gpu")] + #[cfg(feature = "gpu_thread")] + ( + EngineType::GpuThread, + Box::leak(Box::new( + crate::function_driver::compute_driver::gpu::GpuThreadDriver {}, + )) as &'static dyn Driver, + ), + #[cfg(feature = "gpu_process")] ( - EngineType::Gpu, + EngineType::GpuProcess, Box::leak(Box::new( - crate::function_driver::compute_driver::gpu::GpuDriver {}, + crate::function_driver::compute_driver::gpu::GpuProcessDriver {}, )) as &'static dyn Driver, ), ]); diff --git a/server/Cargo.toml b/server/Cargo.toml index 2a10d6a3..7ab6e8cd 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -37,4 +37,6 @@ mmu = ["machine_interface/mmu"] wasm = ["machine_interface/wasm"] reqwest_io = ["machine_interface/reqwest_io"] timestamp = ["dispatcher/timestamp"] -gpu = ["machine_interface/gpu"] \ No newline at end of file +gpu = [] +gpu_thread = ["machine_interface/gpu_thread", "gpu"] +gpu_process = ["machine_interface/gpu_process", "gpu"] \ No newline at end of file diff --git a/server/src/main.rs b/server/src/main.rs index 41a3d0e3..3097f36c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -167,8 +167,10 @@ async fn register_function( "Process" => EngineType::Process, #[cfg(feature = "cheri")] "Cheri" => EngineType::Cheri, - #[cfg(feature = "gpu")] - "Gpu" => EngineType::Gpu, + #[cfg(feature = "gpu_thread")] + "GpuThread" => EngineType::GpuThread, + #[cfg(feature = "gpu_process")] + "GpuProcess" => EngineType::GpuProcess, _ => panic!("Unkown engine type string"), }; @@ -351,8 +353,10 @@ fn main() -> () { let engine_type = EngineType::Process; #[cfg(feature = "cheri")] let engine_type = EngineType::Cheri; - #[cfg(feature = "gpu")] - let engine_type = EngineType::Gpu; + #[cfg(feature = "gpu_thread")] + let engine_type = EngineType::GpuThread; + #[cfg(feature = "gpu_process")] + let engine_type = EngineType::GpuProcess; #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] pool_map.insert( engine_type, @@ -360,7 +364,7 @@ fn main() -> () { .map(|code_id| ComputeResource::CPU(code_id as u8)) .collect(), ); - #[cfg(feature = "gpu")] + #[cfg(any(feature = "gpu_thread", feature = "gpu_process"))] { let gpu_count: u8 = 4; // TODO: don't hard code this pool_map.insert( @@ -396,8 +400,10 @@ fn main() -> () { print!(" mmu"); #[cfg(feature = "wasm")] print!(" wasm"); - #[cfg(feature = "gpu")] - print!(" gpu"); + #[cfg(feature = "gpu_thread")] + print!(" gpu_thread"); + #[cfg(feature = "gpu_process")] + print!(" gpu_process"); #[cfg(feature = "reqwest_io")] print!(" request_io"); #[cfg(feature = "timestamp")] diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 3cf4416b..e0652d7e 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -77,8 +77,8 @@ mod server_tests { data.extend_from_slice(&i64::to_le_bytes(1)); data.extend_from_slice(&i64::to_le_bytes(1)); #[cfg(feature = "gpu")] - // GPU specific config input for eg. grid size - let cfg = Vec::from(i64::to_le_bytes(1i64)); + let cfg = Vec::from(i64::to_le_bytes(1i64)); // GPU specific config input for eg. grid size + let mut sets = vec![InputSet { identifier: String::from("A"), items: vec![InputItem { @@ -87,6 +87,7 @@ mod server_tests { data: &data, }], }]; + #[cfg(feature = "gpu")] sets.push(InputSet { identifier: String::from("cfg"), @@ -144,7 +145,7 @@ mod server_tests { // register function let version: String; - let engine_type; + let mut engine_type; #[cfg(feature = "wasm")] { version = format!("sysld_wasm_{}", std::env::consts::ARCH); @@ -176,7 +177,14 @@ mod server_tests { "{}/../machine_interface/hip_interface/matmul_para.json", env!("CARGO_MANIFEST_DIR"), ); - engine_type = String::from("Gpu"); + #[cfg(feature = "gpu_thread")] + { + engine_type = String::from("GpuThread"); + } + #[cfg(feature = "gpu_process")] + { + engine_type = String::from("GpuProcess"); + } } let register_request = RegisterFunction { name: String::from("matmul"), From 12624275b2c45faaaab134d5749ae8a696ae5d1e Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Tue, 21 May 2024 19:14:20 +0200 Subject: [PATCH 087/176] Add independent scaling of frontend --- dispatcher/src/dispatcher.rs | 2 +- dispatcher/src/function_registry.rs | 6 +- dispatcher/tests/dispatcher_tests.rs | 2 +- .../tests/dispatcher_tests/registry_tests.rs | 50 +-- .../system_driver/system_driver_tests.rs | 8 +- server/src/config.rs | 26 +- server/src/main.rs | 287 +++++++++++++----- 7 files changed, 272 insertions(+), 109 deletions(-) diff --git a/dispatcher/src/dispatcher.rs b/dispatcher/src/dispatcher.rs index 3651aae7..94d14c50 100644 --- a/dispatcher/src/dispatcher.rs +++ b/dispatcher/src/dispatcher.rs @@ -80,7 +80,7 @@ impl Dispatcher { function_name: String, engine_type: EngineType, ctx_size: usize, - path: &str, + path: String, metadata: Metadata, ) -> DandelionResult { return self diff --git a/dispatcher/src/function_registry.rs b/dispatcher/src/function_registry.rs index 81a923a2..22e4299e 100644 --- a/dispatcher/src/function_registry.rs +++ b/dispatcher/src/function_registry.rs @@ -198,7 +198,7 @@ impl FunctionRegistry { function_name: String, engine_id: EngineType, ctx_size: usize, - path: &str, + path: String, metadata: Metadata, ) -> DandelionResult { // check if function is already present, get ID if not @@ -269,7 +269,7 @@ impl FunctionRegistry { function_id: FunctionId, engine_id: EngineType, ctx_size: usize, - path: &str, + path: String, ) -> DandelionResult<()> { if !self.metadata.lock().await.contains_key(&function_id) { return Err(DandelionError::DispatcherMetaDataUnavailable); @@ -277,7 +277,7 @@ impl FunctionRegistry { self.on_disk .lock() .await - .insert((function_id, engine_id), path.to_string()); + .insert((function_id, engine_id), path); self.engine_map .lock() .await diff --git a/dispatcher/tests/dispatcher_tests.rs b/dispatcher/tests/dispatcher_tests.rs index d5cbea6f..d1b674a1 100644 --- a/dispatcher/tests/dispatcher_tests.rs +++ b/dispatcher/tests/dispatcher_tests.rs @@ -29,7 +29,7 @@ mod dispatcher_tests { path.pop(); path.push("machine_interface/tests/data"); path.push(name); - let path_string = path.to_str().expect("Path should be string"); + let path_string = path.to_str().expect("Path should be string").to_string(); let metadata = Metadata { input_sets: Arc::new(in_set_names), output_sets: Arc::new(out_set_names), diff --git a/dispatcher/tests/dispatcher_tests/registry_tests.rs b/dispatcher/tests/dispatcher_tests/registry_tests.rs index c9c15742..c0c13381 100644 --- a/dispatcher/tests/dispatcher_tests/registry_tests.rs +++ b/dispatcher/tests/dispatcher_tests/registry_tests.rs @@ -81,16 +81,21 @@ pub fn single_input_fixed( let function_id = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.insert_func( - format!("local_name_{}", i), - engine_type, - DEFAULT_CONTEXT_SIZE, - absolute_path.to_str().expect("Path should be valid string"), - Metadata { - input_sets: Arc::new(local_names), - output_sets: Arc::new(out_set_names.clone()), - }, - )) + .block_on( + dispatcher.insert_func( + format!("local_name_{}", i), + engine_type, + DEFAULT_CONTEXT_SIZE, + absolute_path + .to_str() + .expect("Path should be valid string") + .to_string(), + Metadata { + input_sets: Arc::new(local_names), + output_sets: Arc::new(out_set_names.clone()), + }, + ), + ) .expect("should be able to update function"); let input_sets = (0..=2) .into_iter() @@ -202,16 +207,21 @@ pub fn multiple_input_fixed( let function_id = tokio::runtime::Builder::new_current_thread() .build() .unwrap() - .block_on(dispatcher.insert_func( - format!("insert_function_{}", i), - engine_type, - DEFAULT_CONTEXT_SIZE, - absolute_path.to_str().expect("Path should be valid string"), - Metadata { - input_sets: Arc::new(local_names), - output_sets: Arc::new(out_set_names.clone()), - }, - )) + .block_on( + dispatcher.insert_func( + format!("insert_function_{}", i), + engine_type, + DEFAULT_CONTEXT_SIZE, + absolute_path + .to_str() + .expect("Path should be valid string") + .to_string(), + Metadata { + input_sets: Arc::new(local_names), + output_sets: Arc::new(out_set_names.clone()), + }, + ), + ) .expect("should be able to update function"); let inputs = vec![(i, CompositionSet::from((0, vec![mat_con_a.clone()])))]; let mut overwrite_inputs = inputs.clone(); diff --git a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs index 8a822678..59c02295 100644 --- a/machine_interface/src/function_driver/system_driver/system_driver_tests.rs +++ b/machine_interface/src/function_driver/system_driver/system_driver_tests.rs @@ -141,7 +141,7 @@ mod system_driver_tests { assert_eq!("HTTP/1.1 200 OK", status); } - fn put_http( + fn post_http( dom_init: MemoryResource, driver: Box, drv_init: ComputeResource, @@ -156,7 +156,7 @@ mod system_driver_tests { .expect("Should be able to get engine"); let config = FunctionConfig::SysConfig(SystemFunction::HTTP); - let request = "PUT http://httpbin.org/put HTTP/1.1".as_bytes().to_vec(); + let request = "POST http://httpbin.org/post HTTP/1.1".as_bytes().to_vec(); write_request_line(&mut context, request).expect("Should be able to prepare request line"); @@ -222,9 +222,9 @@ mod system_driver_tests { } #[test] - fn test_http_put() { + fn test_http_post() { let driver = Box::new($driver); - super::put_http::<$domain>($dom_init, driver, $drv_init); + super::post_http::<$domain>($dom_init, driver, $drv_init); } }; } diff --git a/server/src/config.rs b/server/src/config.rs index 4b39f7cb..945c5a6c 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -7,7 +7,11 @@ pub struct DandelionConfig { #[serde(default = "total_cores_default")] pub total_cores: usize, #[serde(default = "dispatcher_cores_default")] - pub dispatcher_cores: usize, + pub dispatcher_cores: Option, + #[serde(default = "frontend_cores_default")] + pub frontend_cores: Option, + #[serde(default = "io_cores_default")] + pub io_cores: Option, #[serde(default = "timestamp_count_default")] pub timestamp_count: usize, #[serde(default = "loglevel_default")] @@ -21,8 +25,24 @@ fn total_cores_default() -> usize { ); } -fn dispatcher_cores_default() -> usize { - return std::env::var("NUM_DISP_CORES").map_or(1, |n| n.parse::().unwrap()); +macro_rules! env_default { + ($env_var: expr) => { + return std::env::var($env_var) + .ok() + .and_then(|n| Some(n.parse::().unwrap())); + }; +} + +fn dispatcher_cores_default() -> Option { + env_default!("DISPATCHER_CORES"); +} + +fn frontend_cores_default() -> Option { + env_default!("FRONTEND_CORES"); +} + +fn io_cores_default() -> Option { + env_default!("IO_CORES"); } fn timestamp_count_default() -> usize { diff --git a/server/src/main.rs b/server/src/main.rs index 0eb45a0c..7153590b 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,5 +1,8 @@ use core_affinity::{self, CoreId}; -use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint, Recorder}; +use dandelion_commons::{ + records::{Archive, ArchiveInit, RecordPoint, Recorder}, + DandelionResult, +}; use dandelion_server::DandelionBody; use dispatcher::{ composition::CompositionSet, dispatcher::Dispatcher, function_registry::Metadata, @@ -13,9 +16,8 @@ use hyper::{ }; use log::{debug, error, info, warn}; use machine_interface::{ - function_driver::ComputeResource, - machine_config::EngineType, - memory_domain::{bytes_context::BytesContext, Context}, + function_driver::ComputeResource, machine_config::EngineType, + memory_domain::bytes_context::BytesContext, }; use serde::Deserialize; use std::{ @@ -25,39 +27,47 @@ use std::{ net::SocketAddr, path::PathBuf, sync::{ - atomic::{AtomicU8, Ordering}, + atomic::{AtomicUsize, Ordering}, Arc, OnceLock, }, }; -use tokio::{net::TcpListener, runtime::Builder, signal::unix::SignalKind}; +use tokio::{ + net::TcpListener, + runtime::Builder, + select, + signal::unix::SignalKind, + spawn, + sync::{mpsc, oneshot}, +}; const FUNCTION_FOLDER_PATH: &str = "/tmp/dandelion_server"; -// TODO: integrate into serve request -async fn run_mat_func( - dispatcher: Arc, - is_cold: bool, - function_name: String, - request: Context, - mut recorder: Recorder, -) -> DandelionBody { - // TODO match set names to assign sets to composition sets - let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; - recorder - .record(RecordPoint::QueueFunctionDispatcher) - .unwrap(); - let result = dispatcher - .queue_function_by_name(function_name, inputs, None, is_cold, recorder) - .await - .expect("Should get result from function"); - - return dandelion_server::DandelionBody::new(result); +enum DispatcherCommand { + FunctionRequest { + name: String, + inputs: Vec<(usize, CompositionSet)>, + is_cold: bool, + recorder: Recorder, + callback: oneshot::Sender>>, + }, + FunctionRegistration { + name: String, + engine_type: EngineType, + context_size: usize, + path: String, + metadata: Metadata, + callback: oneshot::Sender>, + }, + CompositionRegistration { + composition: String, + callback: oneshot::Sender>, + }, } async fn serve_request( is_cold: bool, req: Request, - dispatcher: Arc, + dispatcher: mpsc::Sender, ) -> Result, Infallible> { let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -101,20 +111,24 @@ async fn serve_request( CompositionSet::from((request_set, vec![request_arc.clone()])), )); } - // let inputs = vec![(0, CompositionSet::from((0, vec![(Arc::new(request))])))]; // want a 1 to 1 mapping of all outputs the functions gives as long as we don't add user input on what they want recorder .record(RecordPoint::QueueFunctionDispatcher) .unwrap(); - let function_output = dispatcher - .queue_function_by_name( - function_name, + let (callback, output_recevier) = tokio::sync::oneshot::channel(); + dispatcher + .send(DispatcherCommand::FunctionRequest { + name: function_name, inputs, - None, is_cold, - recorder.get_sub_recorder().unwrap(), - ) + recorder: recorder.get_sub_recorder().unwrap(), + callback, + }) .await + .unwrap(); + let function_output = output_recevier + .await + .unwrap() .expect("Should get result from function"); let response_body = dandelion_server::DandelionBody::new(function_output); debug!("finshed creating response body"); @@ -136,7 +150,7 @@ struct RegisterFunction { async fn register_function( req: Request, - dispatcher: Arc, + dispatcher: mpsc::Sender, ) -> Result, Infallible> { let bytes = req .collect() @@ -164,18 +178,24 @@ async fn register_function( "Cheri" => EngineType::Cheri, _ => panic!("Unkown engine type string"), }; + let (callback, confirmation) = oneshot::channel(); dispatcher - .insert_func( - request_map.name, + .send(DispatcherCommand::FunctionRegistration { + name: request_map.name, engine_type, - request_map.context_size as usize, - path_buff.to_str().unwrap(), - Metadata { + context_size: request_map.context_size as usize, + path: path_buff.to_str().unwrap().to_string(), + metadata: Metadata { input_sets: Arc::new(vec![(String::from(""), None)]), output_sets: Arc::new(vec![String::from("")]), }, - ) + callback, + }) .await + .unwrap(); + confirmation + .await + .unwrap() .expect("Should be able to insert function"); return Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( "Function registered".as_bytes().to_vec(), @@ -189,7 +209,7 @@ struct RegisterChain { async fn register_composition( req: Request, - dispatcher: Arc, + dispatcher: mpsc::Sender, ) -> Result, Infallible> { let bytes = req .collect() @@ -199,11 +219,18 @@ async fn register_composition( // find first line end character let request_map: RegisterChain = bson::from_slice(&bytes).expect("Should be able to deserialize request"); - // write function to file + let (callback, confirmation) = oneshot::channel(); dispatcher - .insert_compositions(request_map.composition) + .send(DispatcherCommand::CompositionRegistration { + composition: request_map.composition, + callback, + }) .await - .expect("Should be able to insert function"); + .unwrap(); + confirmation + .await + .unwrap() + .expect("Should be able to insert composition"); return Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( "Function registered".as_bytes().to_vec(), ))); @@ -220,7 +247,7 @@ async fn serve_stats(_req: Request) -> Result, async fn service( req: Request, - dispatcher: Arc, + dispatcher: mpsc::Sender, ) -> Result, Infallible> { let uri = req.uri().path(); match uri { @@ -239,7 +266,68 @@ async fn service( /// Recording setup static TRACING_ARCHIVE: OnceLock = OnceLock::new(); -async fn service_loop(dispacher: Arc) { +async fn dispatcher_loop( + mut request_receiver: mpsc::Receiver, + dispatcher: &'static Dispatcher, +) { + while let Some(dispatcher_args) = request_receiver.recv().await { + match dispatcher_args { + DispatcherCommand::FunctionRequest { + name, + inputs, + is_cold, + recorder, + mut callback, + } => { + let function_future = + dispatcher.queue_function_by_name(name, inputs, None, is_cold, recorder); + spawn(async { + select! { + function_output = function_future => { + callback.send(function_output).unwrap(); + } + _ = callback.closed() => () + } + }); + } + DispatcherCommand::FunctionRegistration { + name, + engine_type, + context_size, + metadata, + mut callback, + path, + } => { + let insertion_future = + dispatcher.insert_func(name, engine_type, context_size, path, metadata); + spawn(async { + select! { + result = insertion_future => { + callback.send(result).unwrap(); + } + _ = callback.closed() => () + } + }); + } + DispatcherCommand::CompositionRegistration { + composition, + mut callback, + } => { + let insertion_future = dispatcher.insert_compositions(composition); + spawn(async { + select! { + result = insertion_future => { + callback.send(result).unwrap(); + } + _ = callback.closed() => () + } + }); + } + }; + } +} + +async fn service_loop(request_sender: mpsc::Sender) { // socket to listen to let addr = SocketAddr::from(([0, 0, 0, 0], 8080)); let listener = TcpListener::bind(addr).await.unwrap(); @@ -251,7 +339,7 @@ async fn service_loop(dispacher: Arc) { tokio::select! { connection_pair = listener.accept() => { let (stream,_) = connection_pair.unwrap(); - let loop_dispatcher = dispacher.clone(); + let loop_dispatcher = request_sender.clone(); let io = hyper_util::rt::TokioIo::new(stream); tokio::task::spawn(async move { let service_dispatcher_ptr = loop_dispatcher.clone(); @@ -296,7 +384,6 @@ fn main() -> () { } // find available resources - let num_cores = config.total_cores; let num_phyiscal_cores = u8::try_from(num_cpus::get_physical()).unwrap(); let num_virt_cores = u8::try_from(num_cpus::get()).unwrap(); if num_phyiscal_cores != num_virt_cores { @@ -305,30 +392,83 @@ fn main() -> () { num_virt_cores, num_phyiscal_cores ); } - // TODO: This calculation makes sense only for running matmul-128x128 workload on MMU engines - let num_dispatcher_cores = config.dispatcher_cores; - assert!( - num_dispatcher_cores > 0 && num_dispatcher_cores < num_cores, - "invalid dispatcher core number: {}", - num_dispatcher_cores - ); - // make multithreaded front end that only uses core 0 + + let resource_conversion = |core_index| ComputeResource::CPU(core_index as u8); + + // create core allocations + let (first_engine_core, frontend_cores, dispatcher_cores) = + match (config.frontend_cores, config.dispatcher_cores) { + // Per default use one core for both + (None, None) => (1, vec![0], vec![0]), + // If only dispatcher cores or only frontend cores are specified use one for dispatcher, rest for frontend + (None, Some(cores)) | (Some(cores), None) => ( + cores, + (0..cores - 1).collect(), + (cores - 1..cores).collect(), + ), + // If both are specified give them the according resources + (Some(f_cores), Some(d_cores)) => ( + f_cores + d_cores, + (0..f_cores).collect(), + (f_cores..f_cores + d_cores).collect(), + ), + }; + assert!(frontend_cores.len() > 0); + assert!(dispatcher_cores.len() > 0); + + let num_io_cores = config.io_cores.unwrap_or(0); + assert!(first_engine_core < config.total_cores); + assert!(first_engine_core + num_io_cores <= config.total_cores); + let io_cores = (first_engine_core..first_engine_core + num_io_cores) + .map(resource_conversion) + .collect(); + let first_compute_core = first_engine_core + num_io_cores; + assert!(first_compute_core < config.total_cores); + let compute_cores = (first_compute_core..config.total_cores) + .map(resource_conversion) + .collect(); + + // make multithreaded front end runtime // set up tokio runtime, need io in any case let mut runtime_builder = Builder::new_multi_thread(); runtime_builder.enable_io(); - runtime_builder.worker_threads(num_dispatcher_cores.into()); - runtime_builder.on_thread_start(|| { - static ATOMIC_ID: AtomicU8 = AtomicU8::new(0); - let core_id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); - if !core_affinity::set_for_current(CoreId { id: core_id.into() }) { + runtime_builder.worker_threads(frontend_cores.len()); + runtime_builder.on_thread_start(move || { + static ATOMIC_INDEX: AtomicUsize = AtomicUsize::new(0); + let core_index = ATOMIC_INDEX.fetch_add(1, Ordering::SeqCst); + if !core_affinity::set_for_current(CoreId { + id: frontend_cores[core_index].into(), + }) { return; } - info!("Dispatcher running on core {}", core_id); + info!( + "Frontend thread running on core {}", + frontend_cores[core_index] + ); }); runtime_builder.global_queue_interval(10); runtime_builder.event_interval(10); let runtime = runtime_builder.build().unwrap(); + let dispatcher_runtime = Builder::new_multi_thread() + .worker_threads(dispatcher_cores.len()) + .on_thread_start(move || { + static ATOMIC_INDEX: AtomicUsize = AtomicUsize::new(0); + let core_index = ATOMIC_INDEX.fetch_add(1, Ordering::SeqCst); + if !core_affinity::set_for_current(CoreId { + id: dispatcher_cores[core_index].into(), + }) { + return; + } + info!( + "Dispatcher thread running on core {}", + dispatcher_cores[core_index] + ); + }) + .build() + .unwrap(); + let (dispatcher_sender, dispatcher_recevier) = mpsc::channel(1000); + // set up dispatcher configuration basics let mut pool_map = BTreeMap::new(); @@ -341,26 +481,19 @@ fn main() -> () { #[cfg(feature = "cheri")] let engine_type = EngineType::Cheri; #[cfg(any(feature = "cheri", feature = "wasm", feature = "mmu"))] - pool_map.insert( - engine_type, - (num_dispatcher_cores + 1..num_cores) - .map(|code_id| ComputeResource::CPU(code_id as u8)) - .collect(), - ); + pool_map.insert(engine_type, compute_cores); #[cfg(feature = "reqwest_io")] - pool_map.insert( - EngineType::Reqwest, - (num_dispatcher_cores..num_dispatcher_cores + 1) - .map(|core_id| ComputeResource::CPU(core_id as u8)) - .collect(), - ); + pool_map.insert(EngineType::Reqwest, io_cores); let resource_pool = ResourcePool { engine_pool: futures::lock::Mutex::new(pool_map), }; // Create an ARC pointer to the dispatcher for thread-safe access - let dispatcher_ptr = - Arc::new(Dispatcher::init(resource_pool).expect("Should be able to start dispatcher")); + let dispatcher = Box::leak(Box::new( + Dispatcher::init(resource_pool).expect("Should be able to start dispatcher"), + )); + // start dispatcher + dispatcher_runtime.spawn(dispatcher_loop(dispatcher_recevier, dispatcher)); let _guard = runtime.enter(); @@ -379,7 +512,7 @@ fn main() -> () { print!("\n"); // Run this server for... forever... unless I receive a signal! - runtime.block_on(service_loop(dispatcher_ptr)); + runtime.block_on(service_loop(dispatcher_sender)); // clean up folder in tmp that is used for function storage std::fs::remove_dir_all(FUNCTION_FOLDER_PATH).unwrap(); From 49d1103f49ed9d213c29474e1f082583649a2d30 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 22 May 2024 10:44:19 +0200 Subject: [PATCH 088/176] server prep for inference benchmark --- .../compute_driver/gpu/gpu_utils.rs | 1 + server/src/main.rs | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 00623e65..47d34bff 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -107,6 +107,7 @@ pub fn get_size( return Err(DandelionError::ConfigMissmatch); } + // TODO: make this more portable (not usize) let mut buf: [usize; 1] = [0]; context.read(data_item.data.offset + relative_offset, &mut buf)?; diff --git a/server/src/main.rs b/server/src/main.rs index 3097f36c..b6caf458 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -181,11 +181,19 @@ async fn register_function( request_map.context_size as usize, path_buff.to_str().unwrap(), Metadata { - #[cfg(feature = "gpu")] - input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), - #[cfg(not(feature = "gpu"))] - input_sets: Arc::new(vec![(String::from("A"), None)]), - output_sets: Arc::new(vec![String::from("B")]), + // Comment to switch between matmul and inference workloads. TODO: stop hard coding + input_sets: Arc::new(vec![ + (String::from("A"), None), + (String::from("B"), None), + (String::from("cfg"), None), + ]), + // #[cfg(feature = "gpu")] + // input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), + // #[cfg(not(feature = "gpu"))] + // input_sets: Arc::new(vec![(String::from("A"), None)]), + + // output_sets: Arc::new(vec![String::from("B")]), + output_sets: Arc::new(vec![String::from("D")]), }, ) .await @@ -240,8 +248,12 @@ async fn service( // TODO rename to cold func and hot func, remove matmul, compute, io "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, - "/cold/matmul" | "/cold/compute" | "/cold/io" => serve_request(true, req, dispatcher).await, - "/hot/matmul" | "/hot/compute" | "/hot/io" => serve_request(false, req, dispatcher).await, + "/cold/matmul" | "/cold/compute" | "/cold/io" | "/cold/inference" => { + serve_request(true, req, dispatcher).await + } + "/hot/matmul" | "/hot/compute" | "/hot/io" | "/hot/inference" => { + serve_request(false, req, dispatcher).await + } "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From 89129dba241928f9f9f19cf7f9704c388972230c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 22 May 2024 12:48:47 +0200 Subject: [PATCH 089/176] debug out of memory error --- machine_interface/src/function_driver/compute_driver/gpu.rs | 3 +++ .../src/function_driver/compute_driver/gpu/buffer_pool.rs | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 411ef3d1..ecd36584 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -10,6 +10,7 @@ use crate::{ use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; +use log::debug; use std::{ collections::HashMap, mem::size_of, @@ -174,6 +175,7 @@ pub fn gpu_run( let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; + debug!("Trying to allocate {} for {}", size, name); let idx = buffer_pool.alloc_buffer(size)?; unsafe { copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; @@ -182,6 +184,7 @@ pub fn gpu_run( } for (name, sizing) in &config.blueprint.buffers { let size = get_size(sizing, &buffers, &context)?; + debug!("Trying to allocate {} for {}", size, name); let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 4f2c332b..d5f74b8e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -1,4 +1,5 @@ use dandelion_commons::{DandelionError, DandelionResult}; +use log::debug; use super::hip::{self, DeviceAllocation, DevicePointer}; @@ -59,6 +60,10 @@ impl BufferPool { let offset = round_to_eight!(last.offset + last.length); if offset + length > self.allocation.size { + debug!( + "Going to throw OutOfMemory, offset: {}, length: {}, self_alloc_size: {}", + offset, length, self.allocation.size + ); return Err(DandelionError::OutOfMemory); } From 3e3c044a2921872aceab774c832a4d63c2165119 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 22 May 2024 12:54:32 +0200 Subject: [PATCH 090/176] manually enable debugging --- server/src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/config.rs b/server/src/config.rs index 4b39f7cb..5630a7fb 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -31,7 +31,7 @@ fn timestamp_count_default() -> usize { } fn loglevel_default() -> LevelFilter { - return std::env::var("RUST_LOG").map_or(LevelFilter::Warn, |env_string| { + return std::env::var("RUST_LOG").map_or(LevelFilter::Debug, |env_string| { LevelFilter::from_str(&env_string).unwrap() }); } From 34c0d9e4f2b793f44171b7f1037cb361a19ad8eb Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Wed, 22 May 2024 14:50:46 +0200 Subject: [PATCH 091/176] Added sanity check on resource allocation --- server/src/main.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/src/main.rs b/server/src/main.rs index 7153590b..23ba2da5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -428,6 +428,12 @@ fn main() -> () { .map(resource_conversion) .collect(); + println!("core allocation:"); + println!("frontend cores {:?}", frontend_cores); + println!("dispatcher cores: {:?}", dispatcher_cores); + println!("communication cores: {:?}", io_cores); + println!("compute cores: {:?}", compute_cores); + // make multithreaded front end runtime // set up tokio runtime, need io in any case let mut runtime_builder = Builder::new_multi_thread(); From 18bbe516b55ab4c174020dc97d6a19b8534c5fc9 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 22 May 2024 16:42:23 +0200 Subject: [PATCH 092/176] fix OutOfMemory bug and add extra test --- .../src/function_driver/compute_driver/gpu.rs | 2 - server/tests/server_tests.rs | 149 ++++++++++++++++++ 2 files changed, 149 insertions(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index ecd36584..325000c6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -175,7 +175,6 @@ pub fn gpu_run( let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { let size = get_data_length(name, &context)?; - debug!("Trying to allocate {} for {}", size, name); let idx = buffer_pool.alloc_buffer(size)?; unsafe { copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; @@ -184,7 +183,6 @@ pub fn gpu_run( } for (name, sizing) in &config.blueprint.buffers { let size = get_size(sizing, &buffers, &context)?; - debug!("Trying to allocate {} for {}", size, name); let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index e0652d7e..c40c0875 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -237,4 +237,153 @@ mod server_tests { let status = status_result.unwrap(); assert_eq!(status, None, "Server exited unexpectedly"); } + + fn send_inference_request(endpoint: &str, function_name: String) { + // call into function + let mut matrix_data = Vec::new(); + matrix_data.extend_from_slice(&f32::to_le_bytes(224f32)); + matrix_data.extend_from_slice(&f32::to_le_bytes(224f32)); + for i in 0..(224 * 224) { + matrix_data.extend_from_slice(&f32::to_le_bytes(i as f32)); + } + + let mut kernel_data = Vec::new(); + kernel_data.extend_from_slice(&f32::to_le_bytes(5f32)); + kernel_data.extend_from_slice(&f32::to_le_bytes(5f32)); + for i in 0..(5 * 5) { + kernel_data.extend_from_slice(&f32::to_le_bytes(i as f32)); + } + + let mut cfg = Vec::new(); + cfg.extend_from_slice(&i64::to_le_bytes((112 * 112 + 2) * 4)); + cfg.extend_from_slice(&i64::to_le_bytes((224 + 31) / 32)); + cfg.extend_from_slice(&i64::to_le_bytes((112 + 31) / 32)); + + let sets = vec![ + InputSet { + identifier: String::from("A"), + items: vec![InputItem { + identifier: String::from(""), + key: 0, + data: &matrix_data, + }], + }, + InputSet { + identifier: String::from("B"), + items: vec![InputItem { + identifier: String::from(""), + key: 0, + data: &kernel_data, + }], + }, + InputSet { + identifier: String::from("cfg"), + items: vec![InputItem { + identifier: String::from(""), + key: 0, + data: &cfg, + }], + }, + ]; + + let mat_request = DandelionRequest { + name: function_name, + sets, + }; + + let client = reqwest::blocking::Client::new(); + let resp = client + .post(endpoint) + .body(bson::to_vec(&mat_request).unwrap()) + .send() + .unwrap(); + assert!(resp.status().is_success()); + + let body = resp.bytes().unwrap(); + let response: DandelionDeserializeResponse = bson::from_slice(&body).unwrap(); + assert_eq!(1, response.sets.len()); + assert_eq!(1, response.sets[0].items.len()); + let response_data = response.sets[0].items[0].data; + assert_eq!(response_data.len(), (112 * 112 + 2) * 4); + } + + #[cfg(feature = "gpu")] + #[test] + fn serve_inference() { + let mut cmd = Command::cargo_bin("dandelion_server").unwrap(); + let mut server = cmd + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .unwrap(); + let mut reader = BufReader::new(server.stdout.take().unwrap()); + loop { + let mut buf = String::new(); + let len = reader.read_line(&mut buf).unwrap(); + assert_ne!(len, 0, "Server exited unexpectedly"); + if buf.contains("Server start") { + break; + } + } + let _ = server.stdout.insert(reader.into_inner()); + let mut server_killer = ServerKiller { server }; + + // register function + let engine_type; + #[cfg(feature = "gpu")] + let inference_path = format!( + "{}/../machine_interface/hip_interface/inference.json", + env!("CARGO_MANIFEST_DIR"), + ); + #[cfg(feature = "gpu_thread")] + { + engine_type = String::from("GpuThread"); + } + #[cfg(feature = "gpu_process")] + { + engine_type = String::from("GpuProcess"); + } + + let register_request = RegisterFunction { + name: String::from("inference"), + context_size: 0x802_0000, + binary: std::fs::read(inference_path).unwrap(), + engine_type, + }; + let registration_client = reqwest::blocking::Client::new(); + let registration_resp = registration_client + .post("http://localhost:8080/register/function") + .body(bson::to_vec(®ister_request).unwrap()) + .send() + .unwrap(); + assert!(registration_resp.status().is_success()); + + let chain_request = RegisterChain { + composition: String::from( + r#" + (:function inference (A B cfg) -> (out)) + (:composition chain (img kern func_cfg) -> (img_out) ( + (inference ((:all A <- img) (:all B <- kern) (:all cfg <- func_cfg)) => ((img_out := out))) + )) + "#, + ), + }; + let chain_client = reqwest::blocking::Client::new(); + let chain_resp = chain_client + .post("http://localhost:8080/register/composition") + .body(bson::to_vec(&chain_request).unwrap()) + .send() + .unwrap(); + assert!(chain_resp.status().is_success()); + + send_inference_request( + "http://localhost:8080/hot/inference", + String::from("inference"), + ); + send_inference_request("http://localhost:8080/hot/inference", String::from("chain")); + + let status_result = server_killer.server.try_wait(); + let status = status_result.unwrap(); + assert_eq!(status, None, "Server exited unexpectedly"); + } } From 1d668203d26abf6b1cf3cea912a9571b01a0c7ac Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 22 May 2024 18:42:02 +0200 Subject: [PATCH 093/176] zero buffers for safety --- machine_interface/src/function_driver/compute_driver/gpu.rs | 3 +-- .../src/function_driver/compute_driver/gpu/buffer_pool.rs | 6 +++++- .../src/function_driver/compute_driver/gpu/hip.rs | 5 +++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 325000c6..dcbfa151 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -10,7 +10,6 @@ use crate::{ use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; -use log::debug; use std::{ collections::HashMap, mem::size_of, @@ -205,7 +204,7 @@ pub fn gpu_run( )?; // Mark buffers as useable again - buffer_pool.dealloc_all(); + buffer_pool.dealloc_all()?; Ok(context) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index d5f74b8e..f4efdd6f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -79,8 +79,12 @@ impl BufferPool { }) } - pub fn dealloc_all(&mut self) { + pub fn dealloc_all(&mut self) -> DandelionResult<()> { + // Unwrap okay because buffers will always have at least sentinel + let last = self.buffers.last().unwrap(); + self.allocation.zero_size(last.offset + last.length)?; self.buffers.clear(); self.buffers.push(Buffer::sentinel()); + Ok(()) } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index f5a365a5..1f8d182f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -214,6 +214,11 @@ impl DeviceAllocation { checked_call!(hipMemset(self.ptr, 0, self.size)); Ok(()) } + + pub fn zero_size(&mut self, size: usize) -> DandelionResult<()> { + checked_call!(hipMemset(self.ptr, 0, size)); + Ok(()) + } } impl Drop for DeviceAllocation { From c38cc391a6f0b1d4e888ab1a3ddc4809192cd6af Mon Sep 17 00:00:00 2001 From: Tom Kuchler Date: Fri, 24 May 2024 09:37:59 +0200 Subject: [PATCH 094/176] add endpoint for matmul with loading / storing matrix via io function --- server/src/main.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 23ba2da5..2af54e48 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -69,6 +69,7 @@ async fn serve_request( req: Request, dispatcher: mpsc::Sender, ) -> Result, Infallible> { + debug!("Starting to serve request"); let mut recorder = TRACING_ARCHIVE.get().unwrap().get_recorder().unwrap(); let _ = recorder.record(RecordPoint::Arrival); @@ -254,8 +255,12 @@ async fn service( // TODO rename to cold func and hot func, remove matmul, compute, io "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, - "/cold/matmul" | "/cold/compute" | "/cold/io" => serve_request(true, req, dispatcher).await, - "/hot/matmul" | "/hot/compute" | "/hot/io" => serve_request(false, req, dispatcher).await, + "/cold/matmul" | "/cold/matmulstore" | "/cold/compute" | "/cold/io" => { + serve_request(true, req, dispatcher).await + } + "/hot/matmul" | "/hot/matmulstore" | "/hot/compute" | "/hot/io" => { + serve_request(false, req, dispatcher).await + } "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From cfa737fdaa826426d16cec76dc3ae8ef71172de1 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 24 May 2024 10:50:03 +0200 Subject: [PATCH 095/176] merge --- server/src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 75b83ad8..879d585f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -444,7 +444,7 @@ fn main() -> () { .collect(); let first_compute_core = first_engine_core + num_io_cores; assert!(first_compute_core < config.total_cores); - let compute_cores = (first_compute_core..config.total_cores) + let compute_cores: Vec = (first_compute_core..config.total_cores) .map(resource_conversion) .collect(); @@ -517,7 +517,7 @@ fn main() -> () { let gpu_count: u8 = 4; // TODO: don't hard code this pool_map.insert( engine_type, - (num_dispatcher_cores..num_cores) + (first_compute_core..config.total_cores) .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 566b1a1a6c01f13f86c83ae7c8134c436e199552 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 24 May 2024 11:31:39 +0200 Subject: [PATCH 096/176] typechecker --- server/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main.rs b/server/src/main.rs index 879d585f..ec003986 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -439,7 +439,7 @@ fn main() -> () { let num_io_cores = config.io_cores.unwrap_or(0); assert!(first_engine_core < config.total_cores); assert!(first_engine_core + num_io_cores <= config.total_cores); - let io_cores = (first_engine_core..first_engine_core + num_io_cores) + let io_cores: Vec = (first_engine_core..first_engine_core + num_io_cores) .map(resource_conversion) .collect(); let first_compute_core = first_engine_core + num_io_cores; From 66b9e1178c3c3d648a3716a3d126e0c9abc87d82 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sat, 25 May 2024 14:36:17 +0200 Subject: [PATCH 097/176] remove unnecessary thread switch --- machine_interface/src/bin/gpu_worker.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 67 +++++++------------ .../compute_driver/gpu/gpu_utils.rs | 5 ++ server/tests/server_tests.rs | 1 + 4 files changed, 32 insertions(+), 43 deletions(-) diff --git a/machine_interface/src/bin/gpu_worker.rs b/machine_interface/src/bin/gpu_worker.rs index ac168039..dad841f3 100644 --- a/machine_interface/src/bin/gpu_worker.rs +++ b/machine_interface/src/bin/gpu_worker.rs @@ -23,7 +23,7 @@ fn main() { id: core_id as usize })); - // setup worker struct TODO: add GPU ID + // setup worker struct let mut worker = GpuLoop::init(ComputeResource::GPU(core_id, gpu_id)) .expect("Should be able to create worker"); diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index dcbfa151..7d608d8d 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -93,7 +93,7 @@ pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { fn execute( actions: &Vec, buffers: &HashMap, - buffer_pool: &MutexGuard, + buffer_pool: &BufferPool, context: &Context, config: &RuntimeGpuConfig, ) -> DandelionResult<()> { @@ -149,16 +149,13 @@ fn execute( } pub fn gpu_run( - cpu_slot: usize, + cpu_slot: usize, // TODO: potentially remove this gpu_id: u8, config: GpuConfig, - buffer_pool: Arc>, - mut context: Context, + buffer_pool: &mut BufferPool, + context: &mut Context, output_names: Arc>, -) -> DandelionResult { - if !core_affinity::set_for_current(CoreId { id: cpu_slot }) { - return Err(DandelionError::EngineResourceError); - } +) -> DandelionResult<()> { // TODO: disable device-side malloc hip::set_device(gpu_id)?; @@ -168,20 +165,18 @@ pub fn gpu_run( let base = mmu_context.storage.as_ptr(); let config = config.load(base)?; - let mut buffer_pool = buffer_pool.lock().unwrap(); - // bufname -> (index in buffer pool, local size) let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { - let size = get_data_length(name, &context)?; + let size = get_data_length(name, context)?; let idx = buffer_pool.alloc_buffer(size)?; unsafe { - copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; + copy_data_to_device(name, context, base, &buffer_pool.get(idx)?)?; } buffers.insert(name.clone(), (idx, size)); } for (name, sizing) in &config.blueprint.buffers { - let size = get_size(sizing, &buffers, &context)?; + let size = get_size(sizing, &buffers, context)?; let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } @@ -189,30 +184,30 @@ pub fn gpu_run( execute( &config.blueprint.control_flow, &buffers, - &buffer_pool, - &context, + buffer_pool, + context, &config, )?; write_gpu_outputs::( - &mut context, + context, config.system_data_struct_offset, base, &output_names, &buffers, - &buffer_pool, + buffer_pool, )?; // Mark buffers as useable again buffer_pool.dealloc_all()?; - Ok(context) + Ok(()) } pub struct GpuLoop { - cpu_slot: u8, // needed to set processes to run on that core + cpu_slot: usize, gpu_id: u8, - buffers: Arc>, + buffers: BufferPool, } impl EngineLoop for GpuLoop { @@ -222,9 +217,9 @@ impl EngineLoop for GpuLoop { }; Ok(Box::new(Self { - cpu_slot, + cpu_slot: cpu_slot as usize, gpu_id, - buffers: Arc::new(Mutex::new(BufferPool::try_new(gpu_id)?)), + buffers: BufferPool::try_new(gpu_id)?, })) } @@ -240,26 +235,14 @@ impl EngineLoop for GpuLoop { let sysdata_offset = config.system_data_struct_offset; setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; - // in thread in case the kernel crashes - let cpu_slot_clone = self.cpu_slot as usize; - let gpu_id_clone = self.gpu_id; - let config_clone = config.clone(); - let outputs = output_sets.clone(); - let buffer_pool = self.buffers.clone(); - let handle = thread::spawn(move || { - gpu_run( - cpu_slot_clone, - gpu_id_clone, - config_clone, - buffer_pool, - context, - outputs, - ) - }); - let mut context = match handle.join() { - Ok(res) => res?, - Err(_) => return Err(DandelionError::EngineError), - }; + gpu_run( + self.cpu_slot, + self.gpu_id, + config, + &mut self.buffers, + &mut context, + output_sets, + )?; read_output_structs::(&mut context, sysdata_offset)?; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 47d34bff..33126b2e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -563,6 +563,11 @@ async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { + // set core affinity + if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { + log::error!("core received core id that could not be set"); + return; + } let rt = tokio::runtime::Builder::new_current_thread() .enable_all() .build() diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index c40c0875..f67a349a 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -123,6 +123,7 @@ mod server_tests { assert_eq!(1, checksum); } + #[ignore = "different registration"] #[test] fn serve_matmul() { let mut cmd = Command::cargo_bin("dandelion_server").unwrap(); From e515bd8ace702e9502125ae05cc20dbda6502e81 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sat, 25 May 2024 18:19:39 +0200 Subject: [PATCH 098/176] let workers use more cores --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 8 ++++---- server/src/main.rs | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 33126b2e..b3e3d291 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -541,10 +541,10 @@ async fn process_inputs( } async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id, gpu_id)); + let worker1 = Arc::new(Worker::new(core_id + 1, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id + 2, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id + 3, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id + 4, gpu_id)); tokio::spawn(process_output(worker1.clone())); tokio::spawn(process_output(worker2.clone())); diff --git a/server/src/main.rs b/server/src/main.rs index ec003986..0d1907fa 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,6 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) + .step_by(5) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 476c9b8d5856a638f9bcd2d27709a20082fc974c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 27 May 2024 16:57:07 +0200 Subject: [PATCH 099/176] try two cores for gpu_process runtime --- .../compute_driver/gpu/gpu_utils.rs | 28 +++++++++++++++---- server/src/main.rs | 2 +- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index b3e3d291..c1a7b8a5 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -16,7 +16,14 @@ use dandelion_commons::{ use libc::c_void; use nix::sys::mman::ProtFlags; use serde::{Deserialize, Serialize}; -use std::{collections::HashMap, process::Stdio, sync::Arc}; +use std::{ + collections::HashMap, + process::Stdio, + sync::{ + atomic::{AtomicU8, AtomicUsize}, + Arc, + }, +}; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, process::{Child, ChildStdin, ChildStdout, Command}, @@ -366,6 +373,7 @@ async fn process_inputs( loop { // A bit clumsy but necessary to use spawn_blocking let queue = queue.clone(); + // Needed, as we are running a single-threaded runtime and new queue work might only arrive as a result of debt being fulfilled let (args, debt) = task::spawn_blocking(move || queue.get_engine_args()) .await .expect("spawn_blocking thread crashed"); @@ -541,10 +549,10 @@ async fn process_inputs( } async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id + 1, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id + 2, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id + 3, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id + 4, gpu_id)); + let worker1 = Arc::new(Worker::new(core_id + 2, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id + 3, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id + 4, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id + 5, gpu_id)); tokio::spawn(process_output(worker1.clone())); tokio::spawn(process_output(worker2.clone())); @@ -568,7 +576,15 @@ pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(5) // TODO: don't hard code this - related to number of workers + .step_by(6) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 363a2060087cb1149e96a6f220e79b36c2bdc33a Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 27 May 2024 17:39:34 +0200 Subject: [PATCH 100/176] Revert "try two cores for gpu_process runtime" This reverts commit 476c9b8d5856a638f9bcd2d27709a20082fc974c. --- .../compute_driver/gpu/gpu_utils.rs | 28 ++++--------------- server/src/main.rs | 2 +- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index c1a7b8a5..b3e3d291 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -16,14 +16,7 @@ use dandelion_commons::{ use libc::c_void; use nix::sys::mman::ProtFlags; use serde::{Deserialize, Serialize}; -use std::{ - collections::HashMap, - process::Stdio, - sync::{ - atomic::{AtomicU8, AtomicUsize}, - Arc, - }, -}; +use std::{collections::HashMap, process::Stdio, sync::Arc}; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, process::{Child, ChildStdin, ChildStdout, Command}, @@ -373,7 +366,6 @@ async fn process_inputs( loop { // A bit clumsy but necessary to use spawn_blocking let queue = queue.clone(); - // Needed, as we are running a single-threaded runtime and new queue work might only arrive as a result of debt being fulfilled let (args, debt) = task::spawn_blocking(move || queue.get_engine_args()) .await .expect("spawn_blocking thread crashed"); @@ -549,10 +541,10 @@ async fn process_inputs( } async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id + 2, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id + 3, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id + 4, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id + 5, gpu_id)); + let worker1 = Arc::new(Worker::new(core_id + 1, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id + 2, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id + 3, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id + 4, gpu_id)); tokio::spawn(process_output(worker1.clone())); tokio::spawn(process_output(worker2.clone())); @@ -576,15 +568,7 @@ pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(6) // TODO: don't hard code this - related to number of workers + .step_by(5) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 26ebe03c04365fa12836ace29c3d1d43b714163a Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Tue, 28 May 2024 15:36:11 +0200 Subject: [PATCH 101/176] measure serialisation impact --- dandelion_commons/src/records.rs | 4 ++++ .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index 37069d11..ea6fbe50 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -36,6 +36,10 @@ pub enum RecordPoint { GetEngineQueue, /// Queue to get the function executed on the engine ExecutionQueue, + /// Start serialisation before function dispatch to Worker process + SerialisationStart, + /// End serialisation before function dispatch to Worker process + SerialisationEnd, /// Start execution of the function on the engine (sync) EngineStart, /// End execution of the function on the engine (sync) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index b3e3d291..a74bbc6e 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -389,12 +389,20 @@ async fn process_inputs( continue; }; + if let Err(e) = recorder.record(RecordPoint::SerialisationStart) { + debt.fulfill(Box::new(Err(e))); + continue; + } let mut task = serde_json::to_string(&SendFunctionArgs { config, context: send_context, output_sets, }) .unwrap(); + if let Err(e) = recorder.record(RecordPoint::SerialisationEnd) { + debt.fulfill(Box::new(Err(e))); + continue; + } // Very important to add this newline, as the worker reads line by line task += "\n"; From 2b2f186cfbca600bebf9243db460eb4773888018 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Tue, 28 May 2024 17:32:45 +0200 Subject: [PATCH 102/176] move blueprint serialisation off hot path --- machine_interface/src/function_driver.rs | 14 +++-- .../src/function_driver/compute_driver/gpu.rs | 37 +++++++++---- .../compute_driver/gpu/config_parsing.rs | 53 +++++++++++-------- 3 files changed, 68 insertions(+), 36 deletions(-) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index dc2c82d0..05e03f97 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -59,10 +59,12 @@ pub struct WasmConfig { #[derive(Clone, Serialize, Deserialize)] pub struct GpuConfig { pub system_data_struct_offset: usize, - pub module_offset: usize, + pub code_object_offset: usize, + pub blueprint_offset: usize, + pub blueprint_size: usize, pub kernels: Arc>, - #[cfg(feature = "gpu")] - pub blueprint: Arc, + // #[cfg(feature = "gpu")] + // pub blueprint: Arc, } #[derive(Clone)] @@ -106,14 +108,16 @@ impl Function { cfg.system_data_struct_offset, std::mem::size_of::>(), )?; + // Transfer code object and blueprint transfer_memory( &mut ctxt, &self.context, - cfg.module_offset, + cfg.code_object_offset, 0, self.context.size, )?; - ctxt.occupy_space(cfg.module_offset, self.context.size)?; + // Mark this area as occupied + ctxt.occupy_space(cfg.code_object_offset, self.context.size)?; Ok(ctxt) } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 7d608d8d..e1e38b0a 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -7,6 +7,7 @@ use crate::{ memory_domain::{Context, ContextTrait, ContextType}, DataItem, DataRequirementList, DataSet, Position, }; +use config_parsing::SYSDATA_OFFSET; use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; @@ -163,7 +164,7 @@ pub fn gpu_run( return Err(DandelionError::ConfigMissmatch); }; let base = mmu_context.storage.as_ptr(); - let config = config.load(base)?; + let config = config.load(base, context)?; // bufname -> (index in buffer pool, local size) let mut buffers: HashMap = HashMap::new(); @@ -250,20 +251,28 @@ impl EngineLoop for GpuLoop { } } +// TODO: if deserialisation slows things noticeably, split thread/process parsing fn common_parse( function_path: String, static_domain: &'static dyn crate::memory_domain::MemoryDomain, ) -> DandelionResult { - let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; + let gpu_config_ir = config_parsing::parse_config(&function_path)?; + + let code_object = load_u8_from_file(gpu_config_ir.module_path)?; + // Guaranteed to be, else parse_config will fail, so can unwrap + let blueprint = serde_json::to_vec(&gpu_config_ir.blueprint).unwrap(); + let co_size = code_object.len() * size_of::(); + let blueprint_size = blueprint.len() * size_of::(); + let size = co_size + blueprint_size; + let code_object_offset = + SYSDATA_OFFSET + std::mem::size_of::>(); + let blueprint_offset = code_object_offset + co_size; - let code_object = load_u8_from_file(module_path)?; - let size = code_object.len() * size_of::(); let mut context = static_domain.acquire_context(size)?; - context.write(0, &code_object)?; - gpu_config.module_offset = std::mem::size_of::>(); - - let config = FunctionConfig::GpuConfig(gpu_config); - // Location of code object + // Not including the size of DandelionSystemData here it's not in the static context + context.write(SYSDATA_OFFSET, &code_object)?; + context.write(SYSDATA_OFFSET + co_size, &blueprint)?; + // Location of code object and blueprint context.content = vec![Some(DataSet { ident: String::from("static"), buffers: vec![DataItem { @@ -272,6 +281,16 @@ fn common_parse( key: 0, }], })]; + + let gpu_config = GpuConfig { + system_data_struct_offset: SYSDATA_OFFSET, + code_object_offset, + blueprint_offset, + blueprint_size, + kernels: Arc::new(gpu_config_ir.kernels), + }; + let config = FunctionConfig::GpuConfig(gpu_config); + let requirements = DataRequirementList { static_requirements: vec![], input_requirements: vec![], diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index c5e89bfe..fe6539d9 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -3,11 +3,14 @@ use std::{collections::HashMap, fs::File, io::BufReader, os::raw::c_void, sync:: use dandelion_commons::{DandelionError, DandelionResult}; use serde::{Deserialize, Serialize}; -use crate::function_driver::GpuConfig; +use crate::{ + function_driver::GpuConfig, + memory_domain::{Context, ContextTrait}, +}; use super::hip::{self, FunctionT, ModuleT}; -const SYSDATA_OFFSET: usize = 0usize; +pub const SYSDATA_OFFSET: usize = 0usize; #[derive(Deserialize, Serialize, Debug)] pub struct LaunchConfig { @@ -50,22 +53,22 @@ pub struct ExecutionBlueprint { } #[derive(Deserialize, Serialize, Debug)] -struct GpuConfigIR { - module_path: String, - kernels: Vec, - blueprint: ExecutionBlueprint, +pub struct GpuConfigIR { + pub module_path: String, + pub kernels: Vec, + pub blueprint: ExecutionBlueprint, } -impl From for GpuConfig { - fn from(value: GpuConfigIR) -> Self { - Self { - system_data_struct_offset: SYSDATA_OFFSET, - module_offset: 0, - kernels: Arc::new(value.kernels), - blueprint: Arc::new(value.blueprint), - } - } -} +// impl From for GpuConfig { +// fn from(value: GpuConfigIR) -> Self { +// Self { +// system_data_struct_offset: SYSDATA_OFFSET, +// module_offset: 0, +// kernels: Arc::new(value.kernels), +// blueprint: Arc::new(value.blueprint), +// } +// } +// } #[derive(Clone)] pub struct RuntimeGpuConfig { @@ -76,8 +79,9 @@ pub struct RuntimeGpuConfig { } impl GpuConfig { - pub fn load(self, base: *const u8) -> DandelionResult { - let module = hip::module_load_data(base.wrapping_add(self.module_offset) as *const c_void)?; + pub fn load(self, base: *const u8, context: &mut Context) -> DandelionResult { + let module = + hip::module_load_data(base.wrapping_add(self.code_object_offset) as *const c_void)?; let kernels = self .kernels .iter() @@ -85,16 +89,22 @@ impl GpuConfig { hip::module_get_function(&module, kname).map(|module| (kname.clone(), module)) }) .collect::, _>>()?; // this is kinda ugly but also pretty cool + + // Deserialise blueprint + let mut blueprint_buffer = vec![0u8; self.blueprint_size]; + context.read(self.blueprint_offset, &mut blueprint_buffer)?; + let blueprint: ExecutionBlueprint = serde_json::from_slice(&blueprint_buffer).unwrap(); + Ok(RuntimeGpuConfig { system_data_struct_offset: SYSDATA_OFFSET, module: Arc::new(module), kernels: Arc::new(kernels), - blueprint: self.blueprint, + blueprint: Arc::new(blueprint), }) } } -pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { +pub fn parse_config(path: &str) -> DandelionResult { // TODO: better erros let file = File::open(path).map_err(|_| DandelionError::ConfigMissmatch)?; let reader = BufReader::new(file); @@ -102,6 +112,5 @@ pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { eprintln!("Parsing error: {e}"); DandelionError::ConfigMissmatch })?; - let module_path: String = ir.module_path.drain(..).collect(); - Ok((ir.into(), module_path)) + Ok(ir) } From 6314429d5ce207d857894cfebebf6bae676990f1 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 29 May 2024 11:02:10 +0200 Subject: [PATCH 103/176] Revert last two commits --- dandelion_commons/src/records.rs | 4 -- machine_interface/src/function_driver.rs | 10 ++-- .../src/function_driver/compute_driver/gpu.rs | 32 ++++------- .../compute_driver/gpu/config_parsing.rs | 53 ++++++++----------- .../compute_driver/gpu/gpu_utils.rs | 8 --- 5 files changed, 36 insertions(+), 71 deletions(-) diff --git a/dandelion_commons/src/records.rs b/dandelion_commons/src/records.rs index ea6fbe50..37069d11 100644 --- a/dandelion_commons/src/records.rs +++ b/dandelion_commons/src/records.rs @@ -36,10 +36,6 @@ pub enum RecordPoint { GetEngineQueue, /// Queue to get the function executed on the engine ExecutionQueue, - /// Start serialisation before function dispatch to Worker process - SerialisationStart, - /// End serialisation before function dispatch to Worker process - SerialisationEnd, /// Start execution of the function on the engine (sync) EngineStart, /// End execution of the function on the engine (sync) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 05e03f97..6638c33b 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -60,11 +60,9 @@ pub struct WasmConfig { pub struct GpuConfig { pub system_data_struct_offset: usize, pub code_object_offset: usize, - pub blueprint_offset: usize, - pub blueprint_size: usize, pub kernels: Arc>, - // #[cfg(feature = "gpu")] - // pub blueprint: Arc, + #[cfg(feature = "gpu")] + pub blueprint: Arc, } #[derive(Clone)] @@ -108,7 +106,7 @@ impl Function { cfg.system_data_struct_offset, std::mem::size_of::>(), )?; - // Transfer code object and blueprint + // Transfer code object transfer_memory( &mut ctxt, &self.context, @@ -116,7 +114,7 @@ impl Function { 0, self.context.size, )?; - // Mark this area as occupied + // Mark code object storage as occupied ctxt.occupy_space(cfg.code_object_offset, self.context.size)?; Ok(ctxt) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index e1e38b0a..bcbcd2cd 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -164,7 +164,7 @@ pub fn gpu_run( return Err(DandelionError::ConfigMissmatch); }; let base = mmu_context.storage.as_ptr(); - let config = config.load(base, context)?; + let config = config.load(base)?; // bufname -> (index in buffer pool, local size) let mut buffers: HashMap = HashMap::new(); @@ -251,28 +251,21 @@ impl EngineLoop for GpuLoop { } } -// TODO: if deserialisation slows things noticeably, split thread/process parsing fn common_parse( function_path: String, static_domain: &'static dyn crate::memory_domain::MemoryDomain, ) -> DandelionResult { - let gpu_config_ir = config_parsing::parse_config(&function_path)?; - - let code_object = load_u8_from_file(gpu_config_ir.module_path)?; - // Guaranteed to be, else parse_config will fail, so can unwrap - let blueprint = serde_json::to_vec(&gpu_config_ir.blueprint).unwrap(); - let co_size = code_object.len() * size_of::(); - let blueprint_size = blueprint.len() * size_of::(); - let size = co_size + blueprint_size; - let code_object_offset = + let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; + + let code_object = load_u8_from_file(module_path)?; + let size = code_object.len() * size_of::(); + gpu_config.code_object_offset = SYSDATA_OFFSET + std::mem::size_of::>(); - let blueprint_offset = code_object_offset + co_size; let mut context = static_domain.acquire_context(size)?; - // Not including the size of DandelionSystemData here it's not in the static context - context.write(SYSDATA_OFFSET, &code_object)?; - context.write(SYSDATA_OFFSET + co_size, &blueprint)?; - // Location of code object and blueprint + // Not including SYSDATA_OFFSET here because SystemData is not in static context + context.write(0, &code_object)?; + // Location of code object context.content = vec![Some(DataSet { ident: String::from("static"), buffers: vec![DataItem { @@ -282,13 +275,6 @@ fn common_parse( }], })]; - let gpu_config = GpuConfig { - system_data_struct_offset: SYSDATA_OFFSET, - code_object_offset, - blueprint_offset, - blueprint_size, - kernels: Arc::new(gpu_config_ir.kernels), - }; let config = FunctionConfig::GpuConfig(gpu_config); let requirements = DataRequirementList { diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index fe6539d9..d4bbc151 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -3,10 +3,7 @@ use std::{collections::HashMap, fs::File, io::BufReader, os::raw::c_void, sync:: use dandelion_commons::{DandelionError, DandelionResult}; use serde::{Deserialize, Serialize}; -use crate::{ - function_driver::GpuConfig, - memory_domain::{Context, ContextTrait}, -}; +use crate::function_driver::GpuConfig; use super::hip::{self, FunctionT, ModuleT}; @@ -53,22 +50,22 @@ pub struct ExecutionBlueprint { } #[derive(Deserialize, Serialize, Debug)] -pub struct GpuConfigIR { - pub module_path: String, - pub kernels: Vec, - pub blueprint: ExecutionBlueprint, +struct GpuConfigIR { + module_path: String, + kernels: Vec, + blueprint: ExecutionBlueprint, } -// impl From for GpuConfig { -// fn from(value: GpuConfigIR) -> Self { -// Self { -// system_data_struct_offset: SYSDATA_OFFSET, -// module_offset: 0, -// kernels: Arc::new(value.kernels), -// blueprint: Arc::new(value.blueprint), -// } -// } -// } +impl From for GpuConfig { + fn from(value: GpuConfigIR) -> Self { + Self { + system_data_struct_offset: SYSDATA_OFFSET, + code_object_offset: 0, + kernels: Arc::new(value.kernels), + blueprint: Arc::new(value.blueprint), + } + } +} #[derive(Clone)] pub struct RuntimeGpuConfig { @@ -79,7 +76,7 @@ pub struct RuntimeGpuConfig { } impl GpuConfig { - pub fn load(self, base: *const u8, context: &mut Context) -> DandelionResult { + pub fn load(self, base: *const u8) -> DandelionResult { let module = hip::module_load_data(base.wrapping_add(self.code_object_offset) as *const c_void)?; let kernels = self @@ -89,28 +86,24 @@ impl GpuConfig { hip::module_get_function(&module, kname).map(|module| (kname.clone(), module)) }) .collect::, _>>()?; // this is kinda ugly but also pretty cool - - // Deserialise blueprint - let mut blueprint_buffer = vec![0u8; self.blueprint_size]; - context.read(self.blueprint_offset, &mut blueprint_buffer)?; - let blueprint: ExecutionBlueprint = serde_json::from_slice(&blueprint_buffer).unwrap(); - Ok(RuntimeGpuConfig { system_data_struct_offset: SYSDATA_OFFSET, module: Arc::new(module), kernels: Arc::new(kernels), - blueprint: Arc::new(blueprint), + blueprint: self.blueprint, }) } } -pub fn parse_config(path: &str) -> DandelionResult { - // TODO: better erros +pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { + // TODO: better errors let file = File::open(path).map_err(|_| DandelionError::ConfigMissmatch)?; let reader = BufReader::new(file); - let mut ir: GpuConfigIR = serde_json::from_reader(reader).map_err(|e| { + let ir: GpuConfigIR = serde_json::from_reader(reader).map_err(|e| { eprintln!("Parsing error: {e}"); DandelionError::ConfigMissmatch })?; - Ok(ir) + // Copy kind of unnecessary as ir.into() doesn't need the string, but less bug prone than .drain(..).collect() + let module_path = ir.module_path.clone(); + Ok((ir.into(), module_path)) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index a74bbc6e..b3e3d291 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -389,20 +389,12 @@ async fn process_inputs( continue; }; - if let Err(e) = recorder.record(RecordPoint::SerialisationStart) { - debt.fulfill(Box::new(Err(e))); - continue; - } let mut task = serde_json::to_string(&SendFunctionArgs { config, context: send_context, output_sets, }) .unwrap(); - if let Err(e) = recorder.record(RecordPoint::SerialisationEnd) { - debt.fulfill(Box::new(Err(e))); - continue; - } // Very important to add this newline, as the worker reads line by line task += "\n"; From 0b04b620286e2c81d81886f1232c291ef5b39501 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 29 May 2024 11:43:48 +0200 Subject: [PATCH 104/176] Refactor, add comments, improve logic --- .../src/function_driver/compute_driver/gpu.rs | 87 ++++++++++++------- .../compute_driver/gpu/gpu_utils.rs | 61 ++++++------- 2 files changed, 80 insertions(+), 68 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index bcbcd2cd..b766d193 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -12,10 +12,14 @@ use core_affinity::CoreId; use dandelion_commons::{DandelionError, DandelionResult}; use libc::c_void; use std::{ + borrow::Borrow, collections::HashMap, mem::size_of, ptr::null, - sync::{Arc, Mutex, MutexGuard}, + sync::{ + mpsc::{self, Receiver, Sender}, + Arc, Mutex, MutexGuard, + }, thread::{self, spawn}, }; @@ -101,7 +105,9 @@ fn execute( for action in actions { match action { Action::ExecKernel(name, args, launch_config) => { + // HIP expects arguments as an array of void pointers (pointers to the arguments) let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); + // Initialise them outside of the loop so they live long enough to have valid pointers let mut ptrs = vec![]; let mut constants = vec![]; for arg in args { @@ -117,7 +123,6 @@ fn execute( params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void); } Argument::Constant(constant) => { - // TODO: test this! constants.push(*constant); let addr = constants.last().unwrap(); params.push(addr as *const _ as *const c_void); @@ -150,13 +155,18 @@ fn execute( } pub fn gpu_run( - cpu_slot: usize, // TODO: potentially remove this + cpu_slot: usize, gpu_id: u8, config: GpuConfig, - buffer_pool: &mut BufferPool, - context: &mut Context, - output_names: Arc>, -) -> DandelionResult<()> { + buffer_pool: Arc>, + mut context: Context, + output_sets: Arc>, +) -> DandelionResult { + // Set affinity of worker thread + if !core_affinity::set_for_current(CoreId { id: cpu_slot }) { + return Err(DandelionError::EngineResourceError); + } + // TODO: disable device-side malloc hip::set_device(gpu_id)?; @@ -166,18 +176,20 @@ pub fn gpu_run( let base = mmu_context.storage.as_ptr(); let config = config.load(base)?; - // bufname -> (index in buffer pool, local size) + let mut buffer_pool = buffer_pool.lock().unwrap(); + + // Maps from bufname -> (index in buffer pool, size of buffer) let mut buffers: HashMap = HashMap::new(); for name in &config.blueprint.inputs { - let size = get_data_length(name, context)?; + let size = get_data_length(name, &context)?; let idx = buffer_pool.alloc_buffer(size)?; unsafe { - copy_data_to_device(name, context, base, &buffer_pool.get(idx)?)?; + copy_data_to_device(name, &context, base, &buffer_pool.get(idx)?)?; } buffers.insert(name.clone(), (idx, size)); } for (name, sizing) in &config.blueprint.buffers { - let size = get_size(sizing, &buffers, context)?; + let size = get_size(sizing, &buffers, &context)?; let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } @@ -185,30 +197,32 @@ pub fn gpu_run( execute( &config.blueprint.control_flow, &buffers, - buffer_pool, - context, + buffer_pool.borrow(), + &context, &config, )?; write_gpu_outputs::( - context, + &mut context, config.system_data_struct_offset, base, - &output_names, + &output_sets, &buffers, - buffer_pool, + buffer_pool.borrow(), )?; - // Mark buffers as useable again + // Zero out buffers used by current function buffer_pool.dealloc_all()?; - Ok(()) + Ok(context) } pub struct GpuLoop { cpu_slot: usize, gpu_id: u8, - buffers: BufferPool, + buffers: Arc>, + sender: Sender>, + receiver: Receiver>, } impl EngineLoop for GpuLoop { @@ -217,10 +231,14 @@ impl EngineLoop for GpuLoop { return Err(DandelionError::ConfigMissmatch); }; + let (sender, receiver) = mpsc::channel(); + Ok(Box::new(Self { cpu_slot: cpu_slot as usize, gpu_id, - buffers: BufferPool::try_new(gpu_id)?, + buffers: Arc::new(Mutex::new(BufferPool::try_new(gpu_id)?)), + sender, + receiver, })) } @@ -236,14 +254,23 @@ impl EngineLoop for GpuLoop { let sysdata_offset = config.system_data_struct_offset; setup_input_structs::(&mut context, sysdata_offset, &output_sets)?; - gpu_run( - self.cpu_slot, - self.gpu_id, - config, - &mut self.buffers, - &mut context, - output_sets, - )?; + // Clone for thread + let buffer_pool = self.buffers.clone(); + let sender = self.sender.clone(); + let cpu_slot = self.cpu_slot; + let gpu_id = self.gpu_id; + thread::spawn(move || { + let result = gpu_run(cpu_slot, gpu_id, config, buffer_pool, context, output_sets); + sender.send(result).unwrap(); + }); + + // Use an mpsc to receive results. If a fault occured, the handler could be registered to put an error on the channel, + // while the work thread wouldn't return. This means it would have to be shot down + let mut context = self + .receiver + .recv() + .map_err(|_| DandelionError::EngineError) + .and_then(|inner| inner)?; read_output_structs::(&mut context, sysdata_offset)?; @@ -324,9 +351,7 @@ impl Driver for GpuThreadDriver { ) -> dandelion_commons::DandelionResult<()> { let (cpu_slot, gpu_id) = common_start(resource)?; - // To switch between single executor and process pool spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); - // spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); Ok(()) } @@ -349,8 +374,6 @@ impl Driver for GpuProcessDriver { ) -> dandelion_commons::DandelionResult<()> { let (cpu_slot, gpu_id) = common_start(resource)?; - // To switch between single executor and process pool - // spawn(move || start_gpu_thread(cpu_slot, gpu_id, queue)); spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); Ok(()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index b3e3d291..ad394b1b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -20,7 +20,7 @@ use std::{collections::HashMap, process::Stdio, sync::Arc}; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, process::{Child, ChildStdin, ChildStdout, Command}, - sync::{Mutex, Semaphore}, + sync::{Mutex, Notify}, task, }; @@ -223,7 +223,7 @@ struct Worker { _process: Child, pub stdin: Mutex, pub stdout: Mutex>, - pub available: Semaphore, + pub available: Notify, pub debt: Mutex>, } @@ -255,12 +255,16 @@ impl Worker { let stdin = Mutex::new(child.stdin.take().unwrap()); let stdout = Mutex::new(BufReader::new(child.stdout.take().unwrap())); + // We use a Notify (basically a semaphore) to signal availability to work + let available = Notify::new(); + // Adds a ticket to the semaphore, as the Worker initially is free + available.notify_one(); + Self { _process: child, stdin, stdout, - // TODO write explanation since this is not trivial - available: Semaphore::new(1), + available, debt: Mutex::new(None), } } @@ -293,7 +297,7 @@ async fn process_output(worker: Arc) { panic!("Got output from GPUWorker but had no debt to fulfill"); } - worker.available.add_permits(1); + worker.available.notify_one(); line.clear(); } } @@ -366,6 +370,8 @@ async fn process_inputs( loop { // A bit clumsy but necessary to use spawn_blocking let queue = queue.clone(); + // Need to use spawn_blocking, else waiting on the queue can deadlock, + // eg. if new work being added to the queue relies on old work being submitted let (args, debt) = task::spawn_blocking(move || queue.get_engine_args()) .await .expect("spawn_blocking thread crashed"); @@ -401,7 +407,7 @@ async fn process_inputs( // Unfortunate code duplication because of how select works tokio::select! { - Ok(permit) = worker1.available.acquire() => { + _ = worker1.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); continue; @@ -412,12 +418,8 @@ async fn process_inputs( // Write task description to worker process stdin worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - - // unfortunate way to bring ticket count to 0; have to drop first else the forget_permits does nothing - drop(permit); - worker1.available.forget_permits(1); }, - Ok(permit) = worker2.available.acquire() => { + _ = worker2.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); continue; @@ -428,11 +430,8 @@ async fn process_inputs( // Write task description to worker process stdin worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - - drop(permit); - worker2.available.forget_permits(1); }, - Ok(permit) = worker3.available.acquire() => { + _ = worker3.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); continue; @@ -443,11 +442,8 @@ async fn process_inputs( // Write task description to worker process stdin worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - - drop(permit); - worker3.available.forget_permits(1); }, - Ok(permit) = worker4.available.acquire() => { + _ = worker4.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); continue; @@ -458,9 +454,6 @@ async fn process_inputs( // Write task description to worker process stdin worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - - drop(permit); - worker4.available.forget_permits(1); } } } @@ -521,20 +514,16 @@ async fn process_inputs( } WorkToDo::Shutdown() => { // wait for all pending functions to complete - if let Ok((_, _, _, _)) = tokio::try_join!( - worker1.available.acquire(), - worker2.available.acquire(), - worker3.available.acquire(), - worker4.available.acquire(), - ) { - debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ - ComputeResource::GPU(gpu_id, core_id), - ])))); - return; - } else { - // shouldn't really happen unless Workers processes die - debt.fulfill(Box::new(Err(DandelionError::EngineError))); - } + tokio::join!( + worker1.available.notified(), + worker2.available.notified(), + worker3.available.notified(), + worker4.available.notified(), + ); + debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ + ComputeResource::GPU(gpu_id, core_id), + ])))); + return; } } } From 84ba4d24e6f69d229c5face6699b3f2a4d994e08 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 29 May 2024 12:29:08 +0200 Subject: [PATCH 105/176] do transfer in spawn_blocking --- dandelion_commons/src/lib.rs | 2 + .../compute_driver/gpu/gpu_utils.rs | 49 ++++++++++++------- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 53e1ccb2..8fdaebf2 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -48,6 +48,8 @@ pub enum DandelionError { TransferInputNoSetAvailable, /// tried to transfer to a data item that was already present TransferItemAlreadyPresent, + /// transfer thread crashed (gpu_process only) + TransferThreadError, /// error converting pointers or integers UsizeTypeConversionError, /// context synchronization failed diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index ad394b1b..b629bed3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -476,26 +476,41 @@ async fn process_inputs( continue; } } - let transfer_result = memory_domain::transfer_data_item( - &mut destination, - &source, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name.as_str(), - source_set_index, - source_item_index, - ); - match recorder.record(RecordPoint::TransferEnd) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); + let transfer_result = task::spawn_blocking(move || { + memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + )?; + Ok(destination) + }) + .await + .map_err(|_| DandelionError::TransferThreadError) + .and_then(|inner| inner); + + match transfer_result { + Ok(destination) => { + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let transfer_return = Ok(WorkDone::Context(destination)); + debt.fulfill(Box::new(transfer_return)); + continue; + } + Err(e) => { + debt.fulfill(Box::new(Err(e))); continue; } } - let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); - debt.fulfill(Box::new(transfer_return)); - continue; } WorkToDo::ParsingArguments(ParsingArguments { driver, From e53c2a0ab53c9db63069e538857afdd0feb5d33a Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Thu, 30 May 2024 11:23:20 +0200 Subject: [PATCH 106/176] Revert "do transfer in spawn_blocking" This reverts commit 84ba4d24e6f69d229c5face6699b3f2a4d994e08. --- dandelion_commons/src/lib.rs | 2 - .../compute_driver/gpu/gpu_utils.rs | 49 +++++++------------ 2 files changed, 17 insertions(+), 34 deletions(-) diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index 8fdaebf2..53e1ccb2 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -48,8 +48,6 @@ pub enum DandelionError { TransferInputNoSetAvailable, /// tried to transfer to a data item that was already present TransferItemAlreadyPresent, - /// transfer thread crashed (gpu_process only) - TransferThreadError, /// error converting pointers or integers UsizeTypeConversionError, /// context synchronization failed diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index b629bed3..ad394b1b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -476,41 +476,26 @@ async fn process_inputs( continue; } } - let transfer_result = task::spawn_blocking(move || { - memory_domain::transfer_data_item( - &mut destination, - &source, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name.as_str(), - source_set_index, - source_item_index, - )?; - Ok(destination) - }) - .await - .map_err(|_| DandelionError::TransferThreadError) - .and_then(|inner| inner); - - match transfer_result { - Ok(destination) => { - match recorder.record(RecordPoint::TransferEnd) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - continue; - } - } - let transfer_return = Ok(WorkDone::Context(destination)); - debt.fulfill(Box::new(transfer_return)); - continue; - } - Err(e) => { - debt.fulfill(Box::new(Err(e))); + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); continue; } } + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); + debt.fulfill(Box::new(transfer_return)); + continue; } WorkToDo::ParsingArguments(ParsingArguments { driver, From 86075396e82ea4f8059283a75959ef3f131cc1fb Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Thu, 30 May 2024 11:52:51 +0200 Subject: [PATCH 107/176] do transfers in new task --- .../compute_driver/gpu/gpu_utils.rs | 124 +++++++++++------- server/src/main.rs | 2 +- 2 files changed, 75 insertions(+), 51 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index ad394b1b..36516743 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -16,7 +16,14 @@ use dandelion_commons::{ use libc::c_void; use nix::sys::mman::ProtFlags; use serde::{Deserialize, Serialize}; -use std::{collections::HashMap, process::Stdio, sync::Arc}; +use std::{ + collections::HashMap, + process::Stdio, + sync::{ + atomic::{AtomicU8, Ordering}, + Arc, + }, +}; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, process::{Child, ChildStdin, ChildStdout, Command}, @@ -378,6 +385,12 @@ async fn process_inputs( match args { WorkToDo::FunctionArguments(func_args) => { + // let worker1 = worker1.clone(); + // let worker2 = worker2.clone(); + // let worker3 = worker3.clone(); + // let worker4 = worker4.clone(); + // Spawn in new task to enable more concurrency + // tokio::spawn(async move { let FunctionArguments { config, context, @@ -388,11 +401,11 @@ async fn process_inputs( // transform relevant data into serialisable counterparts let FunctionConfig::GpuConfig(config) = config else { debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - continue; + return; }; let Ok(send_context) = (&context).try_into() else { debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - continue; + return; }; let mut task = serde_json::to_string(&SendFunctionArgs { @@ -410,7 +423,7 @@ async fn process_inputs( _ = worker1.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); - continue; + return; } // Give debt and recorder to worker @@ -422,7 +435,7 @@ async fn process_inputs( _ = worker2.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); - continue; + return; } // Give debt and recorder to worker @@ -434,7 +447,7 @@ async fn process_inputs( _ = worker3.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); - continue; + return; } // Give debt and recorder to worker @@ -446,7 +459,7 @@ async fn process_inputs( _ = worker4.available.notified() => { if let Err(e) = recorder.record(RecordPoint::EngineStart) { debt.fulfill(Box::new(Err(e))); - continue; + return; } // Give debt and recorder to worker @@ -456,6 +469,7 @@ async fn process_inputs( worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); } } + // }); } WorkToDo::TransferArguments(transfer_args) => { let TransferArguments { @@ -469,33 +483,35 @@ async fn process_inputs( source_item_index, mut recorder, } = transfer_args; - match recorder.record(RecordPoint::TransferStart) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - continue; + // Spawn in new task to enable more concurrency + tokio::spawn(async move { + match recorder.record(RecordPoint::TransferStart) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + return; + } } - } - let transfer_result = memory_domain::transfer_data_item( - &mut destination, - &source, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name.as_str(), - source_set_index, - source_item_index, - ); - match recorder.record(RecordPoint::TransferEnd) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - continue; + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + return; + } } - } - let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); - debt.fulfill(Box::new(transfer_return)); - continue; + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); + debt.fulfill(Box::new(transfer_return)); + }); } WorkToDo::ParsingArguments(ParsingArguments { driver, @@ -503,14 +519,16 @@ async fn process_inputs( static_domain, mut recorder, }) => { - recorder.record(RecordPoint::ParsingStart).unwrap(); - let function_result = driver.parse_function(path, static_domain); - recorder.record(RecordPoint::ParsingEnd).unwrap(); - match function_result { - Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), - Err(err) => debt.fulfill(Box::new(Err(err))), - } - continue; + // Spawn in new task to enable more concurrency + tokio::spawn(async move { + recorder.record(RecordPoint::ParsingStart).unwrap(); + let function_result = driver.parse_function(path, static_domain); + recorder.record(RecordPoint::ParsingEnd).unwrap(); + match function_result { + Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), + Err(err) => debt.fulfill(Box::new(Err(err))), + } + }); } WorkToDo::Shutdown() => { // wait for all pending functions to complete @@ -530,10 +548,10 @@ async fn process_inputs( } async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id + 1, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id + 2, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id + 3, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id + 4, gpu_id)); + let worker1 = Arc::new(Worker::new(core_id + 2, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id + 3, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id + 4, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id + 5, gpu_id)); tokio::spawn(process_output(worker1.clone())); tokio::spawn(process_output(worker2.clone())); @@ -552,12 +570,18 @@ async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - // set core affinity - if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { - log::error!("core received core id that could not be set"); - return; - } - let rt = tokio::runtime::Builder::new_current_thread() + let counter = AtomicU8::new(0); + let rt = tokio::runtime::Builder::new_multi_thread() + .worker_threads(2) + .on_thread_start(move || { + let inc = counter.fetch_add(1, Ordering::SeqCst); + // set core affinity + if !core_affinity::set_for_current(core_affinity::CoreId { + id: (core_id + inc).into(), + }) { + panic!("core received core id that could not be set"); + } + }) .enable_all() .build() .expect("Runtime building failed"); diff --git a/server/src/main.rs b/server/src/main.rs index 0d1907fa..329ea97b 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,7 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(5) // TODO: don't hard code this - related to number of workers + .step_by(6) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 1e50d574562745782d0426f7a5985723afdc900b Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sun, 2 Jun 2024 13:33:04 +0200 Subject: [PATCH 108/176] yielding? --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 36516743..af32be83 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -512,6 +512,7 @@ async fn process_inputs( let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); debt.fulfill(Box::new(transfer_return)); }); + tokio::task::yield_now().await; } WorkToDo::ParsingArguments(ParsingArguments { driver, From 20da500deb73d9b335de8fd3699c265419e02864 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sun, 2 Jun 2024 14:19:00 +0200 Subject: [PATCH 109/176] loads of tasks and loads of cores --- .../compute_driver/gpu/gpu_utils.rs | 192 +++++++++--------- server/src/main.rs | 2 +- 2 files changed, 102 insertions(+), 92 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index af32be83..199a09aa 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -14,6 +14,7 @@ use dandelion_commons::{ DandelionError, DandelionResult, }; use libc::c_void; +use log::error; use nix::sys::mman::ProtFlags; use serde::{Deserialize, Serialize}; use std::{ @@ -374,6 +375,7 @@ async fn process_inputs( worker4: Arc, ) { let queue = Arc::new(queue); + let mut handles = vec![]; loop { // A bit clumsy but necessary to use spawn_blocking let queue = queue.clone(); @@ -385,91 +387,92 @@ async fn process_inputs( match args { WorkToDo::FunctionArguments(func_args) => { - // let worker1 = worker1.clone(); - // let worker2 = worker2.clone(); - // let worker3 = worker3.clone(); - // let worker4 = worker4.clone(); + let worker1 = worker1.clone(); + let worker2 = worker2.clone(); + let worker3 = worker3.clone(); + let worker4 = worker4.clone(); // Spawn in new task to enable more concurrency - // tokio::spawn(async move { - let FunctionArguments { - config, - context, - output_sets, - mut recorder, - } = func_args; - - // transform relevant data into serialisable counterparts - let FunctionConfig::GpuConfig(config) = config else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - return; - }; - let Ok(send_context) = (&context).try_into() else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - return; - }; - - let mut task = serde_json::to_string(&SendFunctionArgs { - config, - context: send_context, - output_sets, - }) - .unwrap(); - - // Very important to add this newline, as the worker reads line by line - task += "\n"; - - // Unfortunate code duplication because of how select works - tokio::select! { - _ = worker1.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; + let handle = tokio::spawn(async move { + let FunctionArguments { + config, + context, + output_sets, + mut recorder, + } = func_args; + + // transform relevant data into serialisable counterparts + let FunctionConfig::GpuConfig(config) = config else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + return; + }; + let Ok(send_context) = (&context).try_into() else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + return; + }; + + let mut task = serde_json::to_string(&SendFunctionArgs { + config, + context: send_context, + output_sets, + }) + .unwrap(); + + // Very important to add this newline, as the worker reads line by line + task += "\n"; + + // Unfortunate code duplication because of how select works + tokio::select! { + _ = worker1.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker1.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + }, + _ = worker2.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker2.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + }, + _ = worker3.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker3.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + }, + _ = worker4.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker4.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); } - - // Give debt and recorder to worker - *worker1.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker2.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker2.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker3.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker3.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker4.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker4.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); } - } - // }); + }); + handles.push(handle); } WorkToDo::TransferArguments(transfer_args) => { let TransferArguments { @@ -484,7 +487,7 @@ async fn process_inputs( mut recorder, } = transfer_args; // Spawn in new task to enable more concurrency - tokio::spawn(async move { + let handle = tokio::spawn(async move { match recorder.record(RecordPoint::TransferStart) { Ok(()) => (), Err(err) => { @@ -512,7 +515,7 @@ async fn process_inputs( let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); debt.fulfill(Box::new(transfer_return)); }); - tokio::task::yield_now().await; + handles.push(handle); } WorkToDo::ParsingArguments(ParsingArguments { driver, @@ -521,7 +524,7 @@ async fn process_inputs( mut recorder, }) => { // Spawn in new task to enable more concurrency - tokio::spawn(async move { + let handle = tokio::spawn(async move { recorder.record(RecordPoint::ParsingStart).unwrap(); let function_result = driver.parse_function(path, static_domain); recorder.record(RecordPoint::ParsingEnd).unwrap(); @@ -530,9 +533,16 @@ async fn process_inputs( Err(err) => debt.fulfill(Box::new(Err(err))), } }); + handles.push(handle); } WorkToDo::Shutdown() => { - // wait for all pending functions to complete + // Wait for all dispatches in flight to occur + for handle in handles { + if let Err(e) = handle.await { + error!("Pending task returned {}", e); + } + } + // Wait for pending taks to complete tokio::join!( worker1.available.notified(), worker2.available.notified(), @@ -549,10 +559,10 @@ async fn process_inputs( } async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id + 2, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id + 3, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id + 4, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id + 5, gpu_id)); + let worker1 = Arc::new(Worker::new(core_id + 6, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id + 7, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id + 8, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id + 9, gpu_id)); tokio::spawn(process_output(worker1.clone())); tokio::spawn(process_output(worker2.clone())); @@ -573,7 +583,7 @@ async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { let counter = AtomicU8::new(0); let rt = tokio::runtime::Builder::new_multi_thread() - .worker_threads(2) + .worker_threads(6) .on_thread_start(move || { let inc = counter.fetch_add(1, Ordering::SeqCst); // set core affinity diff --git a/server/src/main.rs b/server/src/main.rs index 329ea97b..19655a42 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,7 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(6) // TODO: don't hard code this - related to number of workers + .step_by(10) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From ae53b137ea0a86c1f76d0e6601f238411473028a Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sun, 2 Jun 2024 14:37:37 +0200 Subject: [PATCH 110/176] spawn_blocking transfers --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 199a09aa..af21eb1f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -487,7 +487,7 @@ async fn process_inputs( mut recorder, } = transfer_args; // Spawn in new task to enable more concurrency - let handle = tokio::spawn(async move { + let handle = task::spawn_blocking(move || { match recorder.record(RecordPoint::TransferStart) { Ok(()) => (), Err(err) => { @@ -536,7 +536,7 @@ async fn process_inputs( handles.push(handle); } WorkToDo::Shutdown() => { - // Wait for all dispatches in flight to occur + // Wait for all dispatches/transfers in flight to occur for handle in handles { if let Err(e) = handle.await { error!("Pending task returned {}", e); From b40aedd1385b6f9457cbdf9e64e91d2ea3582c23 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sun, 2 Jun 2024 14:56:11 +0200 Subject: [PATCH 111/176] experiment with block_in_place --- .../compute_driver/gpu/gpu_utils.rs | 23 +++++++++---------- server/src/main.rs | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index af21eb1f..482c4ef2 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -378,12 +378,12 @@ async fn process_inputs( let mut handles = vec![]; loop { // A bit clumsy but necessary to use spawn_blocking - let queue = queue.clone(); + // let queue = queue.clone(); // Need to use spawn_blocking, else waiting on the queue can deadlock, // eg. if new work being added to the queue relies on old work being submitted - let (args, debt) = task::spawn_blocking(move || queue.get_engine_args()) - .await - .expect("spawn_blocking thread crashed"); + let (args, debt) = task::block_in_place(|| queue.get_engine_args()); + // .await + // .expect("spawn_blocking thread crashed"); match args { WorkToDo::FunctionArguments(func_args) => { @@ -487,7 +487,7 @@ async fn process_inputs( mut recorder, } = transfer_args; // Spawn in new task to enable more concurrency - let handle = task::spawn_blocking(move || { + task::block_in_place(move || { match recorder.record(RecordPoint::TransferStart) { Ok(()) => (), Err(err) => { @@ -515,7 +515,6 @@ async fn process_inputs( let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); debt.fulfill(Box::new(transfer_return)); }); - handles.push(handle); } WorkToDo::ParsingArguments(ParsingArguments { driver, @@ -536,7 +535,7 @@ async fn process_inputs( handles.push(handle); } WorkToDo::Shutdown() => { - // Wait for all dispatches/transfers in flight to occur + // Wait for all dispatches in flight to occur for handle in handles { if let Err(e) = handle.await { error!("Pending task returned {}", e); @@ -559,10 +558,10 @@ async fn process_inputs( } async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id + 6, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id + 7, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id + 8, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id + 9, gpu_id)); + let worker1 = Arc::new(Worker::new(core_id + 4, gpu_id)); + let worker2 = Arc::new(Worker::new(core_id + 5, gpu_id)); + let worker3 = Arc::new(Worker::new(core_id + 6, gpu_id)); + let worker4 = Arc::new(Worker::new(core_id + 7, gpu_id)); tokio::spawn(process_output(worker1.clone())); tokio::spawn(process_output(worker2.clone())); @@ -583,7 +582,7 @@ async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { let counter = AtomicU8::new(0); let rt = tokio::runtime::Builder::new_multi_thread() - .worker_threads(6) + .worker_threads(4) .on_thread_start(move || { let inc = counter.fetch_add(1, Ordering::SeqCst); // set core affinity diff --git a/server/src/main.rs b/server/src/main.rs index 19655a42..30bcadd7 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,7 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(10) // TODO: don't hard code this - related to number of workers + .step_by(8) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 74f02dce2b2fd0bcbafc70d2438be3aefc8e65b6 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sun, 2 Jun 2024 15:24:14 +0200 Subject: [PATCH 112/176] backpressure mitigation --- .../compute_driver/gpu/gpu_utils.rs | 260 ++++++++++-------- 1 file changed, 143 insertions(+), 117 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 482c4ef2..d547cbea 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -28,7 +28,7 @@ use std::{ use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, process::{Child, ChildStdin, ChildStdout, Command}, - sync::{Mutex, Notify}, + sync::{Mutex, Notify, Semaphore}, task, }; @@ -365,6 +365,135 @@ pub struct SendFunctionArgs { pub output_sets: Arc>, } +async fn handle_function_args( + func_args: FunctionArguments, + debt: Debt, + worker1: Arc, + worker2: Arc, + worker3: Arc, + worker4: Arc, +) { + let FunctionArguments { + config, + context, + output_sets, + mut recorder, + } = func_args; + + // transform relevant data into serialisable counterparts + let FunctionConfig::GpuConfig(config) = config else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + return; + }; + let Ok(send_context) = (&context).try_into() else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + return; + }; + + let mut task = serde_json::to_string(&SendFunctionArgs { + config, + context: send_context, + output_sets, + }) + .unwrap(); + + // Very important to add this newline, as the worker reads line by line + task += "\n"; + + // Unfortunate code duplication because of how select works + tokio::select! { + _ = worker1.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker1.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + }, + _ = worker2.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker2.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + }, + _ = worker3.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker3.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + }, + _ = worker4.available.notified() => { + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } + + // Give debt and recorder to worker + *worker4.debt.lock().await = Some((debt, recorder, context)); + + // Write task description to worker process stdin + worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); + } + } +} + +async fn handle_transfer_args(transfer_args: TransferArguments, debt: Debt) { + let TransferArguments { + source, + mut destination, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name, + source_set_index, + source_item_index, + mut recorder, + } = transfer_args; + + match recorder.record(RecordPoint::TransferStart) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + return; + } + } + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + return; + } + } + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); + debt.fulfill(Box::new(transfer_return)); +} + async fn process_inputs( core_id: u8, gpu_id: u8, @@ -376,7 +505,14 @@ async fn process_inputs( ) { let queue = Arc::new(queue); let mut handles = vec![]; + // Limit unfulfilled tasks to prevent task starvation + let semaphore = Arc::new(Semaphore::new(8)); loop { + let ticket = semaphore + .clone() + .acquire_owned() + .await + .expect("Semaphore shouldn't be closed"); // A bit clumsy but necessary to use spawn_blocking // let queue = queue.clone(); // Need to use spawn_blocking, else waiting on the queue can deadlock, @@ -393,128 +529,18 @@ async fn process_inputs( let worker4 = worker4.clone(); // Spawn in new task to enable more concurrency let handle = tokio::spawn(async move { - let FunctionArguments { - config, - context, - output_sets, - mut recorder, - } = func_args; - - // transform relevant data into serialisable counterparts - let FunctionConfig::GpuConfig(config) = config else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - return; - }; - let Ok(send_context) = (&context).try_into() else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - return; - }; - - let mut task = serde_json::to_string(&SendFunctionArgs { - config, - context: send_context, - output_sets, - }) - .unwrap(); - - // Very important to add this newline, as the worker reads line by line - task += "\n"; - - // Unfortunate code duplication because of how select works - tokio::select! { - _ = worker1.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker1.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker2.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker2.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker3.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker3.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker4.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker4.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - } - } + handle_function_args(func_args, debt, worker1, worker2, worker3, worker4).await; + drop(ticket); }); handles.push(handle); } WorkToDo::TransferArguments(transfer_args) => { - let TransferArguments { - source, - mut destination, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name, - source_set_index, - source_item_index, - mut recorder, - } = transfer_args; // Spawn in new task to enable more concurrency - task::block_in_place(move || { - match recorder.record(RecordPoint::TransferStart) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - return; - } - } - let transfer_result = memory_domain::transfer_data_item( - &mut destination, - &source, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name.as_str(), - source_set_index, - source_item_index, - ); - match recorder.record(RecordPoint::TransferEnd) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - return; - } - } - let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); - debt.fulfill(Box::new(transfer_return)); + let handle = task::spawn(async move { + handle_transfer_args(transfer_args, debt).await; + drop(ticket); }); + handles.push(handle); } WorkToDo::ParsingArguments(ParsingArguments { driver, From 6733a8114bd12a126145e095e657347036649828 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sun, 2 Jun 2024 17:21:44 +0200 Subject: [PATCH 113/176] busy looping? --- .../src/function_driver/compute_driver/gpu.rs | 2 +- .../compute_driver/gpu/gpu_utils.rs | 742 +++++++++++------- 2 files changed, 466 insertions(+), 278 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index b766d193..1feb09dc 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -374,7 +374,7 @@ impl Driver for GpuProcessDriver { ) -> dandelion_commons::DandelionResult<()> { let (cpu_slot, gpu_id) = common_start(resource)?; - spawn(move || start_gpu_process_pool(cpu_slot, gpu_id, queue)); + start_gpu_process_pool(cpu_slot, gpu_id, queue); Ok(()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index d547cbea..f6e6a866 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -14,23 +14,25 @@ use dandelion_commons::{ DandelionError, DandelionResult, }; use libc::c_void; -use log::error; +use log::{debug, error}; use nix::sys::mman::ProtFlags; use serde::{Deserialize, Serialize}; use std::{ collections::HashMap, - process::Stdio, + io::{BufRead, BufReader, Write}, + process::{Child, ChildStdin, ChildStdout, Command, Stdio}, sync::{ - atomic::{AtomicU8, Ordering}, + atomic::{AtomicBool, AtomicU8, Ordering}, Arc, }, + thread::spawn, }; -use tokio::{ - io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, - process::{Child, ChildStdin, ChildStdout, Command}, - sync::{Mutex, Notify, Semaphore}, - task, -}; +// use tokio::{ +// io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, +// process::{Child, ChildStdin, ChildStdout, Command}, +// sync::{Mutex, Notify, Semaphore}, +// task, +// }; use self::super::hip; @@ -228,11 +230,11 @@ pub fn start_gpu_thread(core_id: u8, gpu_id: u8, queue: Box) { } struct Worker { - _process: Child, - pub stdin: Mutex, - pub stdout: Mutex>, - pub available: Notify, - pub debt: Mutex>, + process: Child, + pub stdin: ChildStdin, + pub stdout: BufReader, + // pub available: Notify, + // pub debt: Mutex>, } impl Worker { @@ -255,61 +257,68 @@ impl Worker { .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::inherit()) - .kill_on_drop(true) .spawn() .expect("Spawning GPU worker failed"); // Unwrapping okay, since child is spawned with piped stdin/stdout - let stdin = Mutex::new(child.stdin.take().unwrap()); - let stdout = Mutex::new(BufReader::new(child.stdout.take().unwrap())); + let stdin = child.stdin.take().unwrap(); + let stdout = BufReader::new(child.stdout.take().unwrap()); // We use a Notify (basically a semaphore) to signal availability to work - let available = Notify::new(); - // Adds a ticket to the semaphore, as the Worker initially is free - available.notify_one(); + // let available = Notify::new(); + // // Adds a ticket to the semaphore, as the Worker initially is free + // available.notify_one(); Self { - _process: child, + process: child, stdin, stdout, - available, - debt: Mutex::new(None), + // available, + // debt: Mutex::new(None), } } } -async fn process_output(worker: Arc) { - let mut reader = worker.stdout.lock().await; - let mut line = String::new(); - - while reader.read_line(&mut line).await.unwrap() != 0 { - let mut handle = worker.debt.lock().await; - if let Some((debt, mut recorder, mut context)) = handle.take() { - if line.trim() != "__ERROR__" && line.trim() != "__OK__" { - // The line is some other output from the GPU, log it - eprintln!("GPU output: {}", line); - *handle = Some((debt, recorder, context)); - continue; - } - if let Err(e) = recorder.record(RecordPoint::EngineEnd) { - debt.fulfill(Box::new(Err(e))); - } else if line.trim().starts_with("__ERROR__") { - eprintln!("GPU error: {}", line); - debt.fulfill(Box::new(Err(DandelionError::EngineError))); - } else { - read_output_structs::(&mut context, 0).unwrap(); - let results = Box::new(Ok(WorkDone::Context(context))); - debt.fulfill(results); - } - } else { - panic!("Got output from GPUWorker but had no debt to fulfill"); +impl Drop for Worker { + fn drop(&mut self) { + if let Err(e) = self.process.kill() { + error!("Killing Worker process gave: {}", e); } - - worker.available.notify_one(); - line.clear(); } } +// async fn process_output(worker: Arc) { +// let mut reader = worker.stdout.lock().await; +// let mut line = String::new(); + +// while reader.read_line(&mut line).await.unwrap() != 0 { +// let mut handle = worker.debt.lock().await; +// if let Some((debt, mut recorder, mut context)) = handle.take() { +// if line.trim() != "__ERROR__" && line.trim() != "__OK__" { +// // The line is some other output from the GPU, log it +// eprintln!("GPU output: {}", line); +// *handle = Some((debt, recorder, context)); +// continue; +// } +// if let Err(e) = recorder.record(RecordPoint::EngineEnd) { +// debt.fulfill(Box::new(Err(e))); +// } else if line.trim().starts_with("__ERROR__") { +// eprintln!("GPU error: {}", line); +// debt.fulfill(Box::new(Err(DandelionError::EngineError))); +// } else { +// read_output_structs::(&mut context, 0).unwrap(); +// let results = Box::new(Ok(WorkDone::Context(context))); +// debt.fulfill(results); +// } +// } else { +// panic!("Got output from GPUWorker but had no debt to fulfill"); +// } + +// worker.available.notify_one(); +// line.clear(); +// } +// } + // slightly modified Context that can be exchanged between processes #[derive(Serialize, Deserialize, Debug)] pub struct SendContext { @@ -365,182 +374,385 @@ pub struct SendFunctionArgs { pub output_sets: Arc>, } -async fn handle_function_args( - func_args: FunctionArguments, - debt: Debt, - worker1: Arc, - worker2: Arc, - worker3: Arc, - worker4: Arc, +// async fn handle_function_args( +// func_args: FunctionArguments, +// debt: Debt, +// worker1: Arc, +// worker2: Arc, +// worker3: Arc, +// worker4: Arc, +// ) { +// let FunctionArguments { +// config, +// context, +// output_sets, +// mut recorder, +// } = func_args; + +// // transform relevant data into serialisable counterparts +// let FunctionConfig::GpuConfig(config) = config else { +// debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); +// return; +// }; +// let Ok(send_context) = (&context).try_into() else { +// debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); +// return; +// }; + +// let mut task = serde_json::to_string(&SendFunctionArgs { +// config, +// context: send_context, +// output_sets, +// }) +// .unwrap(); + +// // Very important to add this newline, as the worker reads line by line +// task += "\n"; + +// // Unfortunate code duplication because of how select works +// tokio::select! { +// _ = worker1.available.notified() => { +// if let Err(e) = recorder.record(RecordPoint::EngineStart) { +// debt.fulfill(Box::new(Err(e))); +// return; +// } + +// // Give debt and recorder to worker +// *worker1.debt.lock().await = Some((debt, recorder, context)); + +// // Write task description to worker process stdin +// worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); +// }, +// _ = worker2.available.notified() => { +// if let Err(e) = recorder.record(RecordPoint::EngineStart) { +// debt.fulfill(Box::new(Err(e))); +// return; +// } + +// // Give debt and recorder to worker +// *worker2.debt.lock().await = Some((debt, recorder, context)); + +// // Write task description to worker process stdin +// worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); +// }, +// _ = worker3.available.notified() => { +// if let Err(e) = recorder.record(RecordPoint::EngineStart) { +// debt.fulfill(Box::new(Err(e))); +// return; +// } + +// // Give debt and recorder to worker +// *worker3.debt.lock().await = Some((debt, recorder, context)); + +// // Write task description to worker process stdin +// worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); +// }, +// _ = worker4.available.notified() => { +// if let Err(e) = recorder.record(RecordPoint::EngineStart) { +// debt.fulfill(Box::new(Err(e))); +// return; +// } + +// // Give debt and recorder to worker +// *worker4.debt.lock().await = Some((debt, recorder, context)); + +// // Write task description to worker process stdin +// worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); +// } +// } +// } + +// async fn handle_transfer_args(transfer_args: TransferArguments, debt: Debt) { +// let TransferArguments { +// source, +// mut destination, +// destination_set_index, +// destination_allignment, +// destination_item_index, +// destination_set_name, +// source_set_index, +// source_item_index, +// mut recorder, +// } = transfer_args; + +// match recorder.record(RecordPoint::TransferStart) { +// Ok(()) => (), +// Err(err) => { +// debt.fulfill(Box::new(Err(err))); +// return; +// } +// } +// let transfer_result = memory_domain::transfer_data_item( +// &mut destination, +// &source, +// destination_set_index, +// destination_allignment, +// destination_item_index, +// destination_set_name.as_str(), +// source_set_index, +// source_item_index, +// ); +// match recorder.record(RecordPoint::TransferEnd) { +// Ok(()) => (), +// Err(err) => { +// debt.fulfill(Box::new(Err(err))); +// return; +// } +// } +// let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); +// debt.fulfill(Box::new(transfer_return)); +// } + +// async fn process_inputs( +// core_id: u8, +// gpu_id: u8, +// queue: Box, +// worker1: Arc, +// worker2: Arc, +// worker3: Arc, +// worker4: Arc, +// ) { +// let queue = Arc::new(queue); +// let mut handles = vec![]; +// // Limit unfulfilled tasks to prevent task starvation +// let semaphore = Arc::new(Semaphore::new(8)); +// loop { +// let ticket = semaphore +// .clone() +// .acquire_owned() +// .await +// .expect("Semaphore shouldn't be closed"); +// // A bit clumsy but necessary to use spawn_blocking +// // let queue = queue.clone(); +// // Need to use spawn_blocking, else waiting on the queue can deadlock, +// // eg. if new work being added to the queue relies on old work being submitted +// let (args, debt) = task::block_in_place(|| queue.get_engine_args()); +// // .await +// // .expect("spawn_blocking thread crashed"); + +// match args { +// WorkToDo::FunctionArguments(func_args) => { +// let worker1 = worker1.clone(); +// let worker2 = worker2.clone(); +// let worker3 = worker3.clone(); +// let worker4 = worker4.clone(); +// // Spawn in new task to enable more concurrency +// let handle = tokio::spawn(async move { +// handle_function_args(func_args, debt, worker1, worker2, worker3, worker4).await; +// drop(ticket); +// }); +// handles.push(handle); +// } +// WorkToDo::TransferArguments(transfer_args) => { +// // Spawn in new task to enable more concurrency +// let handle = task::spawn(async move { +// handle_transfer_args(transfer_args, debt).await; +// drop(ticket); +// }); +// handles.push(handle); +// } +// WorkToDo::ParsingArguments(ParsingArguments { +// driver, +// path, +// static_domain, +// mut recorder, +// }) => { +// // Spawn in new task to enable more concurrency +// let handle = tokio::spawn(async move { +// recorder.record(RecordPoint::ParsingStart).unwrap(); +// let function_result = driver.parse_function(path, static_domain); +// recorder.record(RecordPoint::ParsingEnd).unwrap(); +// match function_result { +// Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), +// Err(err) => debt.fulfill(Box::new(Err(err))), +// } +// }); +// handles.push(handle); +// } +// WorkToDo::Shutdown() => { +// // Wait for all dispatches in flight to occur +// for handle in handles { +// if let Err(e) = handle.await { +// error!("Pending task returned {}", e); +// } +// } +// // Wait for pending taks to complete +// tokio::join!( +// worker1.available.notified(), +// worker2.available.notified(), +// worker3.available.notified(), +// worker4.available.notified(), +// ); +// debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ +// ComputeResource::GPU(gpu_id, core_id), +// ])))); +// return; +// } +// } +// } +// } + +// async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { +// let worker1 = Arc::new(Worker::new(core_id + 4, gpu_id)); +// let worker2 = Arc::new(Worker::new(core_id + 5, gpu_id)); +// let worker3 = Arc::new(Worker::new(core_id + 6, gpu_id)); +// let worker4 = Arc::new(Worker::new(core_id + 7, gpu_id)); + +// tokio::spawn(process_output(worker1.clone())); +// tokio::spawn(process_output(worker2.clone())); +// tokio::spawn(process_output(worker3.clone())); +// tokio::spawn(process_output(worker4.clone())); + +// tokio::join!(process_inputs( +// core_id, +// gpu_id, +// queue, +// worker1.clone(), +// worker2.clone(), +// worker3.clone(), +// worker4.clone() +// )); +// } + +fn manage_worker( + core_id: u8, + gpu_id: u8, + queue: Arc, + done: Arc, ) { - let FunctionArguments { - config, - context, - output_sets, - mut recorder, - } = func_args; - - // transform relevant data into serialisable counterparts - let FunctionConfig::GpuConfig(config) = config else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); - return; - }; - let Ok(send_context) = (&context).try_into() else { - debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + // set core affinity + if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { + log::error!("core received core id that could not be set"); return; - }; - - let mut task = serde_json::to_string(&SendFunctionArgs { - config, - context: send_context, - output_sets, - }) - .unwrap(); - - // Very important to add this newline, as the worker reads line by line - task += "\n"; - - // Unfortunate code duplication because of how select works - tokio::select! { - _ = worker1.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } - - // Give debt and recorder to worker - *worker1.debt.lock().await = Some((debt, recorder, context)); - - // Write task description to worker process stdin - worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker2.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } + } + let mut worker = Worker::new(core_id + 1, gpu_id); + let mut line = String::new(); - // Give debt and recorder to worker - *worker2.debt.lock().await = Some((debt, recorder, context)); + loop { + // A different worker thread got the shutdown signal + if done.load(Ordering::SeqCst) { + return; + } - // Write task description to worker process stdin - worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker3.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } + let (args, debt) = queue.get_engine_args(); + match args { + WorkToDo::FunctionArguments(func_args) => { + let FunctionArguments { + config, + mut context, + output_sets, + mut recorder, + } = func_args; + if let Err(err) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(err))); + continue; + } - // Give debt and recorder to worker - *worker3.debt.lock().await = Some((debt, recorder, context)); + // transform relevant data into serialisable counterparts + let FunctionConfig::GpuConfig(config) = config else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + return; + }; + let Ok(send_context) = (&context).try_into() else { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + return; + }; + + let mut task = serde_json::to_string(&SendFunctionArgs { + config, + context: send_context, + output_sets, + }) + .unwrap(); - // Write task description to worker process stdin - worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - }, - _ = worker4.available.notified() => { - if let Err(e) = recorder.record(RecordPoint::EngineStart) { - debt.fulfill(Box::new(Err(e))); - return; - } + // Very important to add this newline, as the worker reads line by line + task += "\n"; - // Give debt and recorder to worker - *worker4.debt.lock().await = Some((debt, recorder, context)); + if let Err(e) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(e))); + return; + } - // Write task description to worker process stdin - worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); - } - } -} + // Write task description to worker process stdin + worker + .stdin + .write_all(task.as_bytes()) + .expect("Writing failed"); -async fn handle_transfer_args(transfer_args: TransferArguments, debt: Debt) { - let TransferArguments { - source, - mut destination, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name, - source_set_index, - source_item_index, - mut recorder, - } = transfer_args; - - match recorder.record(RecordPoint::TransferStart) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - return; - } - } - let transfer_result = memory_domain::transfer_data_item( - &mut destination, - &source, - destination_set_index, - destination_allignment, - destination_item_index, - destination_set_name.as_str(), - source_set_index, - source_item_index, - ); - match recorder.record(RecordPoint::TransferEnd) { - Ok(()) => (), - Err(err) => { - debt.fulfill(Box::new(Err(err))); - return; - } - } - let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); - debt.fulfill(Box::new(transfer_return)); -} + loop { + line.clear(); + if worker.stdout.read_line(&mut line).unwrap() == 0 { + panic!("Reading Worker output gave EOF!") + } + if !line.trim().starts_with("__ERROR__") && line.trim() != "__OK__" { + // The line is some other output from the GPU, log it + debug!("GPU output: {}", line); + continue; + } -async fn process_inputs( - core_id: u8, - gpu_id: u8, - queue: Box, - worker1: Arc, - worker2: Arc, - worker3: Arc, - worker4: Arc, -) { - let queue = Arc::new(queue); - let mut handles = vec![]; - // Limit unfulfilled tasks to prevent task starvation - let semaphore = Arc::new(Semaphore::new(8)); - loop { - let ticket = semaphore - .clone() - .acquire_owned() - .await - .expect("Semaphore shouldn't be closed"); - // A bit clumsy but necessary to use spawn_blocking - // let queue = queue.clone(); - // Need to use spawn_blocking, else waiting on the queue can deadlock, - // eg. if new work being added to the queue relies on old work being submitted - let (args, debt) = task::block_in_place(|| queue.get_engine_args()); - // .await - // .expect("spawn_blocking thread crashed"); + if let Err(e) = recorder.record(RecordPoint::EngineEnd) { + debt.fulfill(Box::new(Err(e))); + break; + } else if line.trim().starts_with("__ERROR__") { + error!("GPU error: {}", line); + debt.fulfill(Box::new(Err(DandelionError::EngineError))); + break; + } else { + read_output_structs::(&mut context, 0).unwrap(); + let results = Box::new(Ok(WorkDone::Context(context))); + debt.fulfill(results); + break; + } + } - match args { - WorkToDo::FunctionArguments(func_args) => { - let worker1 = worker1.clone(); - let worker2 = worker2.clone(); - let worker3 = worker3.clone(); - let worker4 = worker4.clone(); - // Spawn in new task to enable more concurrency - let handle = tokio::spawn(async move { - handle_function_args(func_args, debt, worker1, worker2, worker3, worker4).await; - drop(ticket); - }); - handles.push(handle); + // if result.is_ok() { + // if let Err(err) = recorder.record(RecordPoint::EngineEnd) { + // debt.fulfill(Box::new(Err(err))); + // continue; + // } + // } + // let results = Box::new(result.and_then(|context| Ok(WorkDone::Context(context)))); + // debt.fulfill(results); } WorkToDo::TransferArguments(transfer_args) => { - // Spawn in new task to enable more concurrency - let handle = task::spawn(async move { - handle_transfer_args(transfer_args, debt).await; - drop(ticket); - }); - handles.push(handle); + let TransferArguments { + source, + mut destination, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name, + source_set_index, + source_item_index, + mut recorder, + } = transfer_args; + match recorder.record(RecordPoint::TransferStart) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); + debt.fulfill(Box::new(transfer_return)); + continue; } WorkToDo::ParsingArguments(ParsingArguments { driver, @@ -548,79 +760,55 @@ async fn process_inputs( static_domain, mut recorder, }) => { - // Spawn in new task to enable more concurrency - let handle = tokio::spawn(async move { - recorder.record(RecordPoint::ParsingStart).unwrap(); - let function_result = driver.parse_function(path, static_domain); - recorder.record(RecordPoint::ParsingEnd).unwrap(); - match function_result { - Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), - Err(err) => debt.fulfill(Box::new(Err(err))), - } - }); - handles.push(handle); + recorder.record(RecordPoint::ParsingStart).unwrap(); + let function_result = driver.parse_function(path, static_domain); + recorder.record(RecordPoint::ParsingEnd).unwrap(); + match function_result { + Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), + Err(err) => debt.fulfill(Box::new(Err(err))), + } + continue; } WorkToDo::Shutdown() => { - // Wait for all dispatches in flight to occur - for handle in handles { - if let Err(e) = handle.await { - error!("Pending task returned {}", e); - } - } - // Wait for pending taks to complete - tokio::join!( - worker1.available.notified(), - worker2.available.notified(), - worker3.available.notified(), - worker4.available.notified(), - ); + // TODO: return "true" resources debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ - ComputeResource::GPU(gpu_id, core_id), + ComputeResource::GPU(core_id, gpu_id), ])))); + + // Inform other threads to shutdown as well when they are done + done.swap(true, Ordering::SeqCst); return; } } } } -async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { - let worker1 = Arc::new(Worker::new(core_id + 4, gpu_id)); - let worker2 = Arc::new(Worker::new(core_id + 5, gpu_id)); - let worker3 = Arc::new(Worker::new(core_id + 6, gpu_id)); - let worker4 = Arc::new(Worker::new(core_id + 7, gpu_id)); - - tokio::spawn(process_output(worker1.clone())); - tokio::spawn(process_output(worker2.clone())); - tokio::spawn(process_output(worker3.clone())); - tokio::spawn(process_output(worker4.clone())); - - tokio::join!(process_inputs( - core_id, - gpu_id, - queue, - worker1.clone(), - worker2.clone(), - worker3.clone(), - worker4.clone() - )); -} +const NUM_WORKERS: u8 = 4; pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { - let counter = AtomicU8::new(0); - let rt = tokio::runtime::Builder::new_multi_thread() - .worker_threads(4) - .on_thread_start(move || { - let inc = counter.fetch_add(1, Ordering::SeqCst); - // set core affinity - if !core_affinity::set_for_current(core_affinity::CoreId { - id: (core_id + inc).into(), - }) { - panic!("core received core id that could not be set"); - } - }) - .enable_all() - .build() - .expect("Runtime building failed"); - - rt.block_on(run_pool(core_id, gpu_id, queue)); + // let counter = AtomicU8::new(0); + // let rt = tokio::runtime::Builder::new_multi_thread() + // .worker_threads(4) + // .on_thread_start(move || { + // let inc = counter.fetch_add(1, Ordering::SeqCst); + // // set core affinity + // if !core_affinity::set_for_current(core_affinity::CoreId { + // id: (core_id + inc).into(), + // }) { + // panic!("core received core id that could not be set"); + // } + // }) + // .enable_all() + // .build() + // .expect("Runtime building failed"); + + // rt.block_on(run_pool(core_id, gpu_id, queue)); + + let done = Arc::new(AtomicBool::new(false)); + let queue: Arc = queue.into(); + for offset in 0..NUM_WORKERS { + let queue = queue.clone(); + let done = done.clone(); + spawn(move || manage_worker(core_id + 2 * offset, gpu_id, queue, done)); + } } From 4035561695e4fdc378e8a7d9650c6efa5bdd1a93 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:54:07 +0200 Subject: [PATCH 114/176] only use two workers --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 2 +- server/src/main.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index f6e6a866..60926cf7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -783,7 +783,7 @@ fn manage_worker( } } -const NUM_WORKERS: u8 = 4; +const NUM_WORKERS: u8 = 2; pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { // let counter = AtomicU8::new(0); diff --git a/server/src/main.rs b/server/src/main.rs index 30bcadd7..c01c518d 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,7 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(8) // TODO: don't hard code this - related to number of workers + .step_by(4) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 014034def51fcf222f2b07962747bc70e1e13886 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 3 Jun 2024 16:01:01 +0200 Subject: [PATCH 115/176] inference mmu --- .../tests/data/test_elf_mmu_x86_64_inference | Bin 0 -> 11696 bytes server/tests/server_tests.rs | 11 ++++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 machine_interface/tests/data/test_elf_mmu_x86_64_inference diff --git a/machine_interface/tests/data/test_elf_mmu_x86_64_inference b/machine_interface/tests/data/test_elf_mmu_x86_64_inference new file mode 100755 index 0000000000000000000000000000000000000000..42f30eebf124583383c40c3592a81b575699ea7c GIT binary patch literal 11696 zcmbVS4Rl+@m41@t#IUxXk~PIZx>2dp*u)qKLa}jZ{elEzkg4AtytbMKuy_l}<4LvGIMS8B zv?@x4lyjK{-endP17=D_0~#@02060xuf2@<<+MtgRAlHkps{`iRFrK~rfbqlGN8Z) znJrf+iXHczfJK07u2htEzynt)$}SpXeFkZac;;fVcK{ayo?4(ND*>PQmZJCpJM$D} zC*U5y7XSwVPXL|*JOj8SUr};k;w)-2i#O1Ar$02LaCjo&vNY5i=c%;s9I%SOJ(L<7WED z<%(&u)pSkf?2In>OZhbqp9(O5jb9Ak5K}zB9RrV|Wm}hK=Pu2*EzQnbn(ffCi(J{; zOu^Zmv%={+EI&?r*qrvFDZ5C^c5nu;f!V5MXCRgk--6E&;=Tg$AzeXp+A=eU2$}LY zJ~?1|5>U>gW!r+59Z+iiX+jU#bP%6Mz`G85XRztc>>=|sn_L-}w#f>=p0Fv(-$E7X zDko!cQ7j5T+htRf*;o&vJ#4-`YgU>$4I$%n59nRrRFq$W9H*O~CNihjgKo1c%Ey3l zdRok6$aexiwm?y?NtR#5#ku?*NuQHU_ax|pUqL@5>E+4tW)`Snw2M z`WAa$#}ReM(?~J5en``gmFXv#KJL~JYds&&cbg7t!;>z3?6VQwWzW&VcbEX}`TzrP zu&||rw9=rId3y*JX<;|<*xcdoncV8$*R){I?W2BSBc-AALv4@2 zgoMg1&w5CuN8Jl!+|J{p*Co7H=PP%IEoMH^xH`wuRu=3v!9bIzWToBV|A~5UxAqc} zR&nXapd@G1+7;|Jx$>vnrqL4k?e8JcjQpOZ;T#8yKISqF1N^VcbeegOjH}kn5c3`# z*VMny>>O8D_kekxOMgqh7~EpFrL{bd`NIJd^PVNv=ff>ibW7YXfO~*>{||V}e=+ZI zLRxl`ir}HiV6Pc53>=CzPfbm+;6Zkuwnkg4{XnZ)+t;^krH(871%@s>=<5ur|o3IPq7%=@@a5AHH?Wipgv97XU zpUGo7T2}n3+WsDrgg8o^-D;s_`vY^~4?}=hagYB^!fZO-Z`sZ>LSO?QjlPo5rOtQ3 zOnszG-P>Ku)W(5YwfVHmqYu?;YST&jij3v}oOp-6-iPK1wS5idtW}%N*QzHbA@rm3 zsko@Eek_n628;NI{r-pUEp5)R;rUfGQ1YzUm z)^;KMWyMF;j@y8bsrb6DFG0roR%)wObR1WAgyE*gdsNfkaD^?Gg*8)I&wFNUFJx?b z?uW=Eq#CWSOMl&YJfWeBdEcgFe{x){8VLUoxlcKs^Bji5;exBgFq4Ky!v(p?RP4{3 zpE2yuV4u0H_>I7el!oYXI-P;Pr%>t>bRB;9J-U|*o35}A1?I2+Rs*y&^zeH!fL`slcNT^|AiTjrEn znBH#hBIaOs2Ho$&y-SbuM4>ODp_mU}bm_6rPNGzLv~alzu-T=fdV1`uJz)#2s8Z&A z)8l=eh407if5E;R82z>2hiRIAL<_z*;n6$o-N0$#hfJt*7lZwiXc+5)kx7(sKhyp8 z%`E?PS$l(2Hjoq*JX!;oXQ@!X< z?l3czc|XS{_53y?{2)5i6c>1z1P02z-Q!DDtE&Twju74@6luZk$zYE;*f$w?IaY_v zcfRdB&h2A5Iys5}!x9#evp6*@d7SBeqRCf8UsVwl;END3oB_g1f<#$EOZ-;!IZkZn z%SsU{G7X4x0%@Uh0(c&kJd_5P;;H34+yXKu*lS5!gM=yG$&*O!SjG4M7W-ysK*)_O zp8sA_7GH}2&*FUC`0EhhH_6V;iR4n}mtyB07cNUzy9_`7gc`w*HC)FB5tL!t8-ut( z7v>u!eJ=)>o7>bRJ4LMwkyaOPP-M0QMjb*fjPBZR8d*+o7AtDbWy*i3W5^Cu`~2*rXNM_ik*o*)7XoK z)QzSM*p&5$KTwNly5i4(qgV0u77Y{K?KpHM`uBV2z7gtEA8M*~@$>jv^E^8EDj|3|6I&-inp$h4Gzro5!6J9$wEwl<#aoX-&WDY5w-CA1NTGI zNzydVH3fb|6cQTeLTU$jOhYcHw%>)dk5Q2o_QS@c8Krvvf54o-aC6Sa&5;vs`myjU z;YZT!{_PNap9_ANESO|ZJ00stMe?+UanGVxq zLLW;`NAzQ?zgg{^g>IznN8Q39|8s^CNWH>&7X7_Uf6Jx!yYyFarXzjf?_tZ+*0x$g z_^#>`1;Cp55_NFu=0y5;40^(Mqn&fs%n%V#y)w7cc@P~t*pH^&8~7EYDwZaC14G(U zeb!7pnyK4U{Dwz=UG4ZM3V-c6O8jm$zum4-MFt!LC+lyw(*pv!NSaoTIvw%Qco)Z) z+6YH{grk+DF+FgiF~_6e+SELuRL$!Ylg#nht@sgON3EKQ+R>%;5!QB)&Jall>e%n_lWs8is$}{H_$B3t_FYEvrEmEni2sh`UCfMp!xz zx$cg{uB4Qe-cH2v6R|w(L9FY8cwT`N$V)`<&pZ}ctBFA2?RO6e@$_;+h02GJ19@tY zb|n-zI5Nx0!7>LTF=Q-iXf6vi)A|gF*i170YcLo*m6B%|Lj<7$OaaM+0P?s1RVh)! ztY5PV8(0dOrh*m7hPraeJ;3@)Z368ciaR_MD?uRegVce8xN#oh`$6A|Gzvsn@U}rb zqEOThdIAE+s_<}^Yu3|W00EeCj>&q4Mr|=3;ZS9iwSB~IFB@iUJtFK`K`xNBg+Lls zsf1b8hw*F!MMCVT7(FV1%I^~gmI;eC#?sR7=EHOs7Y9~%Pk=JPO-8+w`?msuJ$MAI zZ@myIzo63+jX@nLk8&7F|4)#yR8g^1H;c(SIFiST?-+*GOL>%rxpjPKyBLWRjlD?m zs@po2$c*3dl*zh-)aY6%ri<|D`rRXP+C^g85i#vtL<6Q~b7YpvK_y(J3!aN{Tp5ll89CUL`P%0Ufv=y9Mh!wb;GkzzLth;*YW)Qufh3O$r_ zaz;{%Ee$nw-GUL%g39+}LNJq>{Z#q*h!+_Qu?xf)mJ(S5ByPS3X-u1LARfDc7#-1! zO*az9kHk)jO=l7IMv(b1tTa!Aq8FKOjTYfFk2I~|zZXTlwlaMy@?h&kbdexh*Y@%L z$MYeS{@?u3Q)w5mC|-lgaPqSH2@fPxB(e4#?=eVjkV1}jX8=W~)drN(~2 z`P+>Z%LY&v@goZQ zQcuJLE>w`MQIwAiat%9?mx5`%DU5>+7%7)Wz=WW>M?`!mm)!yrN!|#F3LkGedOy=& z`whh-dK>R`&|z%ak=QS2(^3NzQfTO_oUSj`U#V{)*T-`w;qNp94Snff zu207AP5jIB#rP!|I5R!~4y8R?}{Swu#bU}ptOL`DOnKmg35 ztfuoR1Sg879FcqkWqAZTMq>XX@)$C1QJHo3KB*YTHK};tqZz>Me}umG#Ww-*?T?R0 zI(dUg#b~KUy@LOG;EdruOop+rgr5t)flsokM6z$HKm4~0vFr=9+3Ld}SvX7G9|7$#zm3KLKU-6QJ5USkx(0W=>`!dcWi z%!-H9FcYK*yPh_&?j8(o9aL2OVBju{FmL(bqd63uA-a7eCnE%w?kO)dLq|^D#CWX>x=8IavDL7eK}OT#)I^_d{}% zqx^Pu>xW;VGi?;lG?E^!#p{KU|Kulvpr*qUguxwM+sF4ueE(EVyh49Czih@?G)jN7 zik+0`xuTvK`e;8%ofKHEm$D(Uwoh3>e&Rh0`Thm{M5K!xr%Q~!dTj8;p|`%eaf5A> zucfuFsnJ$k=qPmB@;3VY&8@fIaKnZ=|Hi=jLT^*U4fXY##MkxBElvO6^ZE-xw0WJ? zj_MnoH{EngQT5`Ri)z>Vs-4w0dvCdA{Y_4Q8n4e$R9oY?IbZSAHU7}oa;webaoL== zV482oO_=G1+_NaB<9-=Dl=d^>aehEZW-C@1Cn^zi-H6Xj{8SHS!ryfX{3_thkZ{~6 z0&l~Zu4;S;zfI!vI2P|=0L}$oSs?iN|Np@KNaBt6b?7KTR|h`CKP2Bf;_pKM_b(D} zEf9M6f91eEBk_(rf&V4ObiIfV>4``@e>VWQLlVDjk>Kb5$pd#%;%(AS{w@M=QHgg* z{&I}zqB=(U$F384_`3tZ&zJaJbS%QPPA)*c#48d{+kvjd67O&be*Pae@Ffzz>nefg z?{WZNis2lrudxsKk2~O3ar~_KzF@%7)hP8SHwZoaKYHLFmiV#4>G&rl-YWU=+mv4i zC4L_-n0VGL@$X8!BJ~*YxghcDB>z2<|7sk(C~j66Pa|$OOMFF&o(hTICGm!yCW#-C z@i*+GcO6K-L)w2)&ifOIx61tF|J8%`ti&r4&;R2GzF*=iBz}R^^NGZ-bHYJf{G9>7 zvl72euH(C$im$?!rkZMhwNmKYSXJ9n-QcU*SksaiDTRLDX1`Lnp$T7taeZs6LZzm` z*9ctegAM-b^?(~&{Vn27K&7s+*4N@|^!f_DN=u;8U)Ml)HPwwZzIxQKs_OdsCT}7C zu3BH+>Qh=DZ1wvZz*F1e^R@cHSl74#!-j@HRefD!U^DKks=(!ikTY?6BW@FFVO7h6 zN)_Z={ED}!aZ^)$z>oQoXRfKKY6|$91O8+rnUgg3ZLUiuZ}9o6>Kdnu)HP0H;pD3I zfm--o#cwG|D9hiZiTRj7wZ1Zny@m1GUH8<5Y`h6`knqOB#>z;^r!ZA*%s`n*_T7>yh zL6Ou%R1#{FNU1ZXl2WFe!4JgM+l-`0N|WaLYJY80OGDKc!W5@`Ay9G3C8lU-rWI^x z+T=5K*Ix~3_tM9x1B!gVlKxAf%Oybk+o-b!0#AXtyku95_cD$5H8VwdFxXL%reC5@ zQ_mDvMVb((z|Rc2>Qe+{8xcf&e*+(qFzS`jM~(MkKGvv3V;6-$W z43SFlF=9_+ Date: Fri, 7 Jun 2024 18:13:27 +0200 Subject: [PATCH 116/176] repetitions from input --- .../hip_interface/inference.json | 2 +- .../compute_driver/compute_driver_tests.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 3 ++- .../compute_driver/gpu/config_parsing.rs | 2 +- .../tests/data/test_elf_mmu_x86_64_inference | Bin 11696 -> 11792 bytes .../data/test_elf_mmu_x86_64_inference_static | Bin 0 -> 11696 bytes server/tests/server_tests.rs | 1 + 7 files changed, 6 insertions(+), 4 deletions(-) create mode 100755 machine_interface/tests/data/test_elf_mmu_x86_64_inference_static diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json index fdfebb38..56dc6856 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/hip_interface/inference.json @@ -6,7 +6,7 @@ "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, "outputs": ["D"], "control_flow": [ - {"Repeat": [500, [ + {"Repeat": [{"FromInput": {"bufname": "cfg", "idx": 3}}, [ {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 996d4548..9e82b946 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -1152,7 +1152,7 @@ mod compute_driver_tests { let d_grid_dim: usize = (112 + 31) / 32; let (a_matrix, b_matrix) = get_inference_inputs(); let cfg_offset = function_context - .get_free_space_and_write_slice(&[d_size, a_grid_dim, d_grid_dim]) + .get_free_space_and_write_slice(&[d_size, a_grid_dim, d_grid_dim, 500]) .expect("Should have space for cfg"); let a_offset = function_context .get_free_space_and_write_slice(&a_matrix) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 1feb09dc..a50f62c1 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -145,7 +145,8 @@ fn execute( )?; } Action::Repeat(times, actions) => { - for _ in 0..*times { + let repetitions = get_size(times, buffers, context)?; + for _ in 0..repetitions { execute(actions, buffers, buffer_pool, context, config)?; } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index d4bbc151..dee50597 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -30,7 +30,7 @@ pub enum Argument { #[derive(Deserialize, Serialize, Debug)] pub enum Action { ExecKernel(String, Vec, Box), - Repeat(u32, Vec), + Repeat(Sizing, Vec), } #[derive(Deserialize, Serialize, Debug)] diff --git a/machine_interface/tests/data/test_elf_mmu_x86_64_inference b/machine_interface/tests/data/test_elf_mmu_x86_64_inference index 42f30eebf124583383c40c3592a81b575699ea7c..7bdd7e9a78cc75c3aa2071451543ac1520c48191 100755 GIT binary patch delta 3571 zcmai1e^3M+$&oREm6!=zIhX+1PE zp&oR(q}$_^cAeHqjAQ#p#!k(M(V1$;(K`tN(l{g0CMu(n+GGwDt0g6j5wD;3cJCx@ zr`;Lu^WOLK{q?@@``#|SFZ49@6ie>XUoL&;NjhKPPYMOMH5UPy_;VFlbJt2H!F;7D ziA6acTkKh9i9PGgXT+k#|EX=!wo_p$+x(e08On#XM-qf;U?os15`^`@`@kUZRFS z&+5*MX6$nAcDyb*erMJ?z0clXCZCc*{m4s?pQ}NOWX{x5 zthgS?Zb7R8e9lZBW43q~cD=IHd?{;z1lS2sOU?aR1>#%gnXEraZqL!3u4T?pF>082 zbB-XKNaCUTl!JuB*dTv0@jjD2u%sdhZ-w+Uw1vbU7%`nDHZTG;6B55-#Qik!EcfG| zOneAAHTtwjqkBRjKA+5fRoQvs>kyQy`bl_R$~m;(hPD=Ibx+h1-*Zg!dFP3H&{L`g zNccvU9Sn*=<~CB})*>%^sIgBzh#Y9-HP0zH6B3!&Ed-@TB0lb=hALCBe|XwRki)U4 zlPyu8O;aJROO2EA0cLZ4mLN=!rTr6RE^NEx4hS)>acagP`64E3!sBGu=hzQwT%r+6 zf$A|AQ$7w}HSWc4cvbP9V*EuJo>q;-R~HdlRid>b@KqW?9xSN_xsgUI-wweBzJhX{ z))dp4t{CGKk*1h1`okm}_hM{Z)xU5USM<-Pm}C%==*yx)4v*{o4~!PMMgQvqW4+u? zjmy+HCjXpSm;56Tzb=uD$!3*o&FH?KOxBW(Lu~TcZcHXr;(p@S*OQ^765SypelS{D z6Ri%zRERnS4a@1laCOwjMJ#L#b3fA4TidT~J}MM!5<%B)f*u$?EbJS^a4))lc$* zIEcO&tyt@ijj>BYjjWejYW*WO7c{2=1oS?UiR%^dMxbhhbge{(YQ{xM4qHoO9Z{i% zP`CP8|IkgD?M#Ix4$=q~h&^|92K2b7=x0P4!Da=jE(H&fjj`jb(N*IUXsO1BH}lg0 zxgs(yxvh#*%h$`V2H#bUOC`hKiRLdQhtI0w5H{?ZDvr^nAvCpH>vqwmKZh{fr0sG| zkoq_Z)o%0|clCBT==e#m8dbzV(-hY|>59IVq)kb#eTr!h+HO?lW`xPr{oIQlf1vkC zXpFW~V?V&D@sFTN#9M>Kt8zVbS?^V_)jmz5)uFxUM*k#5rRowRgl!DUASUQukUAq8 zc8pi;5x`aL!kOVNRK%k4RWhi)x|rB zgf}8*w#}@I;RU5nHSyWe8BKf+6W+w1Vi5e1N)Gq4^T@2yTf(<^O;e07c6GG6!(OOn z^d;`_yF(4h6#?TSceERh`1#mABTmL9OppLiL_uBjShDS)wQgh3pVT7ONzf2`5V5sL zH$N!)v}@azn{sn`svn70#d7okk+oRWHPVGwlb}z3-?eSI|6@{K-LoTyc%guHt2!V2 zlu5SV9dNQkn3A^LxOw{D9UAx0(0lk+H}qEC}cQ4YMexG(_B$ zM~J)Oh?|r@*q$}uJid|%Ol4%p+#Y2XUp!pMjQGJ$nEj2Lr4-C{^YTI|7Z3Az5AQeVUg5e|ZGLPY zlcu+>xd#OeR9z(DGRVi0c=J6Z`M&DY66yX5?6df!MxTT&o?`xsPg-D(;1n9oE%K_oR-eVzSs=V)vpr@UwlyV|__odV+w7=$ z7i>qNCFb9@U=nHDMTNOiU8(s@;R1X!Zz^1ZR5}ZniH+uw!rZ*nzZ4Ye?0E%Vtb{%T zTer+|%D)}K?zh=ib8b;?p1a&)`L`(8t7%&WY^=;;*D|+w9><-*Jhz%ZF3Jt`+P3`j z7i^u)3UHoY6%vrvtW~IvGDKJ<2o_Zv;wT-6XTY(A=;dj)0 Uq-=$F+zgbhkaCL6Uz8R73$h2`yZ`_I delta 3479 zcmai1ZBSI#89sM+fvrK$f?CuV7tQ4}3$l)r5v7rfm*j49wbVLlCnS;~v!fj+YP%Ra zRTsRA?d`G#=bDbwIu8D*qa71T$q!o5uno>@Oq#Vn{-88#t5 zyVEjvt~AY^D~-iM{=ENGo3s^_tetG^5=Mhv@Sb5K+oA#nC{@CR-L27q0_eZWi){DHN=e&8|SJv&)Rx=@(r zKmg!E;4p9%!x97lR+J(DaQ1uz0CoZUffs=HfWtsn8X71gqzqVL`0Q7NI^!9~4A(`Q zmeGCjYAH%kZVL8?%)VU>S;(*+SN>H#ySQqSO-G|KW!%e)&Xyo5BOI zTr+LNMskhU)7(O<(Uj(vx(f(d@r2ly5^uybjeu95;9pAdE#PyF+lW8FOraoq#Wjje{A_3QLThj6d4ib2@f9 z=R1NkFtV}5QwTYcz^7>U?Xe)f!)Kl#^@lPnF@;=)934}ZXv}>SM!<#Ez@oMVHk4x0^qT|FESAImB z4@0Ty$HX=?=L_$caSCmdSpOs*U)IN>LvC3ZyELX>GY(Gvc5pvqe+zcGJ`|_Ly>Xg_ zwzDc7iXIYMK`L6elaMdfh8%8M-6eN25k=8e^Zx`#dfpJ|H z1BxCHw<$$;ebK+#RDGWqgOaXE_+`2&?aR*-iE6s$9IH%^p@KnkJ@X9;QbZO7xNlq* zaRjR(3s1s}EQ?euRS=>PWhFB09ROkVP7)-f+Iv~mYsE4}KOmk3p~AaHL2d(F6%wxj zk;@y3-X;D5JFibrK*NaM$&o&sp;W8%sLG<;V_xtMfaS6 zle}c3s0Meq6|IX8jh$)*P~}B%&eoyht$FWaglaLP=ev@;#yz% z!@yCxrn?iNSWg#0s_GvPO`~p^5UAy%aZLJ>RpREr`?7w$=u%Z=b}?q`6Ir+f_*51K zmHKmW>QW<4rT#pYTfET z#YL>UWlE%CzoPegN0sm@u_kt&Vpw2bgfUb0gVY#P%Vs%vBlaF=Lwsu4AT1KkLc~T3 z$|flF8?j$n8nzVvo5s&IJO!4I*5k0(V$qcE;|qy4ujadcySNPzFzDt|4sJ?w-=46R z=b^&aauEuF4H(?3EYod|R~U6y5~cpK*=eh@t;wE#j-!F~xsu2Dav;IC%k&Ecl#XdB*9U_tqpgEK1}upH?uW|A7cfZ zJJhexH+%eabGNMOz)h1s`wacSM*o|!JNvnyL|qFz@Kf92qNU?ool>8pgGHBU&t1V! zPmkIvN6!d>Y(yAdfml1gPAU-Nj-U3&n8?9I4J%nOofp^nCE7ngOUK^Yf=Jg{q&Sb% zu#+*&DbAb>&(!STcQKcP?C9jl|63zg#K0kB@OPfUXetA%jjeAppRbbUCmRgxg5ww5 zF{OAS1;IEu^{HUenI*=%Ktu21%7O1+xbLl`VDMMm%=R({)K`9=HkZIMn7}=hoCm8X zm}47lNylX(b>a{r)i}^`ps};xJBq#Q({IRnpRAwvb_aRaBj3aJW!u!{2;+BMueq6B znJ40O-C1l(PW=XzXyj$Vl4gb(iL)qk7j73p>$PcpHeY#9!}|(5lkDbMuVDSL<5m)) zlF+S||5??q(B_}9k@r7LB!W1wXi-Qc?1Tl5K&teGL>J4OmEq1-9lN`jhSl4+y)u{C zn2y=lEV8=Os&hNe&snZ|>MT9qXsJO`b%402W{8%8u-3=Lmw!@QUk%GGnipGqZ7l$rW-1-nqbRf}6pJ ziZ9J{c}%v(1ajD7%Z#~sIWq?eP4m|ld)i_fjqiia%`?sX{Rt+P@@>k?v5gcPzs{S3 zckLhY3Xsa}y!iq#vhs6gCZGKZc%ho#**)C8w4cgPx@r!J?9-c<*k&?^@$%$x_?z3yeD@`TqidjMPE^ diff --git a/machine_interface/tests/data/test_elf_mmu_x86_64_inference_static b/machine_interface/tests/data/test_elf_mmu_x86_64_inference_static new file mode 100755 index 0000000000000000000000000000000000000000..42f30eebf124583383c40c3592a81b575699ea7c GIT binary patch literal 11696 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 Date: Wed, 12 Jun 2024 10:08:24 +0200 Subject: [PATCH 117/176] different hardcode --- server/src/main.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index c01c518d..4d2b7781 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -192,18 +192,18 @@ async fn register_function( path: path_buff.to_str().unwrap().to_string(), metadata: Metadata { // Comment to switch between matmul and inference workloads. TODO: stop hard coding - input_sets: Arc::new(vec![ - (String::from("A"), None), - (String::from("B"), None), - (String::from("cfg"), None), - ]), - // #[cfg(feature = "gpu")] - // input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), - // #[cfg(not(feature = "gpu"))] - // input_sets: Arc::new(vec![(String::from("A"), None)]), - - // output_sets: Arc::new(vec![String::from("B")]), - output_sets: Arc::new(vec![String::from("D")]), + // input_sets: Arc::new(vec![ + // (String::from("A"), None), + // (String::from("B"), None), + // (String::from("cfg"), None), + // ]), + #[cfg(feature = "gpu")] + input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), + #[cfg(not(feature = "gpu"))] + input_sets: Arc::new(vec![(String::from("A"), None)]), + + output_sets: Arc::new(vec![String::from("B")]), + // output_sets: Arc::new(vec![String::from("D")]), }, callback, }) From a488e8b9123d446b81371b52221b2939bd88e8ca Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:18:55 +0200 Subject: [PATCH 118/176] 4 workers --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 2 +- server/src/main.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 60926cf7..f6e6a866 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -783,7 +783,7 @@ fn manage_worker( } } -const NUM_WORKERS: u8 = 2; +const NUM_WORKERS: u8 = 4; pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { // let counter = AtomicU8::new(0); diff --git a/server/src/main.rs b/server/src/main.rs index 4d2b7781..5ee84fc3 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,7 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(4) // TODO: don't hard code this - related to number of workers + .step_by(8) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From b9725f3be68886f3750bd9b5aeb6a3b1e16bf4d6 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:20:28 +0200 Subject: [PATCH 119/176] ...with inference inputs --- server/src/main.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 5ee84fc3..30bcadd7 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -192,18 +192,18 @@ async fn register_function( path: path_buff.to_str().unwrap().to_string(), metadata: Metadata { // Comment to switch between matmul and inference workloads. TODO: stop hard coding - // input_sets: Arc::new(vec![ - // (String::from("A"), None), - // (String::from("B"), None), - // (String::from("cfg"), None), - // ]), - #[cfg(feature = "gpu")] - input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), - #[cfg(not(feature = "gpu"))] - input_sets: Arc::new(vec![(String::from("A"), None)]), - - output_sets: Arc::new(vec![String::from("B")]), - // output_sets: Arc::new(vec![String::from("D")]), + input_sets: Arc::new(vec![ + (String::from("A"), None), + (String::from("B"), None), + (String::from("cfg"), None), + ]), + // #[cfg(feature = "gpu")] + // input_sets: Arc::new(vec![(String::from("A"), None), (String::from("cfg"), None)]), + // #[cfg(not(feature = "gpu"))] + // input_sets: Arc::new(vec![(String::from("A"), None)]), + + // output_sets: Arc::new(vec![String::from("B")]), + output_sets: Arc::new(vec![String::from("D")]), }, callback, }) From 4798009b4691c46a634398ff919b332f3f169d62 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:58:16 +0200 Subject: [PATCH 120/176] 16x grid --- machine_interface/hip_interface/inference.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json index 56dc6856..76c68532 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/hip_interface/inference.json @@ -11,8 +11,8 @@ "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 16}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, @@ -20,8 +20,8 @@ "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 16}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, @@ -29,8 +29,8 @@ "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 32}, - "block_dim_y": {"Absolute": 32}, + "block_dim_x": {"Absolute": 16}, + "block_dim_y": {"Absolute": 16}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}] From 71bcadd277a5866cebfab9b76fa69fd4bf50d5ab Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Fri, 21 Jun 2024 15:27:28 +0200 Subject: [PATCH 121/176] 2 workers 16x grid --- .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 2 +- server/src/main.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index f6e6a866..60926cf7 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -783,7 +783,7 @@ fn manage_worker( } } -const NUM_WORKERS: u8 = 4; +const NUM_WORKERS: u8 = 2; pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { // let counter = AtomicU8::new(0); diff --git a/server/src/main.rs b/server/src/main.rs index 30bcadd7..c01c518d 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -518,7 +518,7 @@ fn main() -> () { pool_map.insert( engine_type, (first_compute_core..config.total_cores) - .step_by(8) // TODO: don't hard code this - related to number of workers + .step_by(4) // TODO: don't hard code this - related to number of workers .zip(0..gpu_count) .map(|(cpu_id, gpu_id)| ComputeResource::GPU(cpu_id as u8, gpu_id)) .collect(), From 244858d23e128908a5765337ba5b55391abdcd2c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Tue, 25 Jun 2024 17:02:01 +0200 Subject: [PATCH 122/176] Undo 16x grid and add batched inference workload --- .../hip_interface/inference.json | 12 +++--- .../hip_interface/inference_batched.json | 40 ++++++++++++++++++ machine_interface/hip_interface/mlops.hsaco | Bin 44992 -> 52312 bytes .../src/function_driver/compute_driver/gpu.rs | 1 + server/src/main.rs | 18 +++++--- 5 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 machine_interface/hip_interface/inference_batched.json diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/hip_interface/inference.json index 76c68532..56dc6856 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/hip_interface/inference.json @@ -11,8 +11,8 @@ "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 16}, - "block_dim_y": {"Absolute": 16}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, @@ -20,8 +20,8 @@ "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 16}, - "block_dim_y": {"Absolute": 16}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, @@ -29,8 +29,8 @@ "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 16}, - "block_dim_y": {"Absolute": 16}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}] diff --git a/machine_interface/hip_interface/inference_batched.json b/machine_interface/hip_interface/inference_batched.json new file mode 100644 index 00000000..c583a28d --- /dev/null +++ b/machine_interface/hip_interface/inference_batched.json @@ -0,0 +1,40 @@ +{ + "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", + "kernels": ["convolution_f_batched", "relu_2d_f_batched", "maxpool_f_batched"], + "blueprint": { + "inputs": ["cfg", "A", "B"], + "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, + "outputs": ["D"], + "control_flow": [ + {"Repeat": [{"FromInput": {"bufname": "cfg", "idx": 3}}, [ + {"ExecKernel": ["convolution_f_batched", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}, {"Constant": 10}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 10}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["relu_2d_f_batched", [{"Ptr": "C"}, {"Constant": 10}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 10}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["maxpool_f_batched", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}, {"Constant": 10}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_z": {"Absolute": 10}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}] + ]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/hip_interface/mlops.hsaco b/machine_interface/hip_interface/mlops.hsaco index 42578f3351007b9174690407e5a1ad2e70aeb885..28f67ef187bdaa3aa73010c5c00bc08dcbabee57 100644 GIT binary patch delta 6044 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 a_&opYiS^4Le?DUFiI0=0_5lEr`u_nr%mT*% delta 2040 zcmZuyU2GIp6uvXNc7NJRXQ*_GbscL}TCwPc+E^2q3bosfU>CuFh|-#1qE>5(5lwIh z;)4=Uh9lX65HXE!B`t2$w5ep%2gvT)C_bnUCYop(;0#I{|HVFXx_X6;c$6x?pc0+(e&k!CrJ}IK+E}i|nfC zD9`6#T#LiJWrPOHvai>LF6-{*>*>H&xezhfZ|zDtPCzRRbA$+DwF6al(#XTd4<_L8 zhaV~A?1OgUO6z^$!hzK3D1_W6a-FDWhfw=yVE8s&9mU0Eg{nmH9@+(a!h^Vo_g2vE ze?E$KcOd^PXO!KD0pw*Y?1!N{@_4}4}<-l0K_rHp9qM5WS)iS-~cVRwKn4}=Y7%rI!?Z$^V@Sql$)MSRVz)vwR7W={Y z;zeAt1jq3MWjp}!BO;~r87;tT$jh58c7)s{>+jI?sgWt&bkF6ugxHC7ON8T1gI=y* z)I5L}bzI@0#yh5$j!I?9ZXDMVTuX6vRT5jiJMiw@$kLITOZn`^z1x3{v|l1CSh>^1R1QJK2WHBA^9alj4_JHRgsL%d>tdf&Axv-#40t7>IOt&f6IBUMy!E- zrFuBI{smZjz6svwX)SzvK5qC&QtT{{{ zs_!RZIGu3Gcyq*UHCHFd9T?s181`hh1$J; ztQ<2=8wF$HYGiE1*)X`XQPXLL%xp6C^j$$1DgntfhrRso)mLbrXrbSrri9}yzP}76 zXNx(()$br0h0lJmkgl2 zIHSnRLDuv?QTp0TG(q|~9N3~}FoOp)$ogPjWL_WedMwS2-qLR7^`~x#d3s})p-(x$ zgva<`uoc?Q%`fWrY9q3K+s5tXf9()lDYwTL`Z5ox o${KSx4 register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, - "/cold/matmul" | "/cold/matmulstore" | "/cold/compute" | "/cold/io" | "/cold/inference" => { - serve_request(true, req, dispatcher).await - } - "/hot/matmul" | "/hot/matmulstore" | "/hot/compute" | "/hot/io" | "/hot/inference" => { - serve_request(false, req, dispatcher).await - } + "/cold/matmul" + | "/cold/matmulstore" + | "/cold/compute" + | "/cold/io" + | "/cold/inference" + | "/cold/inference-batched" => serve_request(true, req, dispatcher).await, + "/hot/matmul" + | "/hot/matmulstore" + | "/hot/compute" + | "/hot/io" + | "/hot/inference" + | "/hot/inference-batched" => serve_request(false, req, dispatcher).await, "/stats" => serve_stats(req).await, _ => Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( format!("Hello, Wor\n").into_bytes(), From 90db6d3a00f465cde8b5ccd83786821aca154b88 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Wed, 26 Jun 2024 10:58:22 +0200 Subject: [PATCH 123/176] batching size as input --- .../hip_interface/inference_batched.json | 12 ++++++------ machine_interface/hip_interface/mlops.hsaco | Bin 52312 -> 52568 bytes 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/machine_interface/hip_interface/inference_batched.json b/machine_interface/hip_interface/inference_batched.json index c583a28d..250f9e84 100644 --- a/machine_interface/hip_interface/inference_batched.json +++ b/machine_interface/hip_interface/inference_batched.json @@ -7,28 +7,28 @@ "outputs": ["D"], "control_flow": [ {"Repeat": [{"FromInput": {"bufname": "cfg", "idx": 3}}, [ - {"ExecKernel": ["convolution_f_batched", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}, {"Constant": 10}], { + {"ExecKernel": ["convolution_f_batched", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}, {"Ptr": "cfg"}], { "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_z": {"Absolute": 10}, + "grid_dim_z": {"FromInput": {"bufname": "cfg", "idx": 4}}, "block_dim_x": {"Absolute": 32}, "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["relu_2d_f_batched", [{"Ptr": "C"}, {"Constant": 10}], { + {"ExecKernel": ["relu_2d_f_batched", [{"Ptr": "C"}, {"Ptr": "cfg"}], { "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, - "grid_dim_z": {"Absolute": 10}, + "grid_dim_z": {"FromInput": {"bufname": "cfg", "idx": 4}}, "block_dim_x": {"Absolute": 32}, "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 0} }]}, - {"ExecKernel": ["maxpool_f_batched", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}, {"Constant": 10}], { + {"ExecKernel": ["maxpool_f_batched", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}, {"Ptr": "cfg"}], { "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, - "grid_dim_z": {"Absolute": 10}, + "grid_dim_z": {"FromInput": {"bufname": "cfg", "idx": 4}}, "block_dim_x": {"Absolute": 32}, "block_dim_y": {"Absolute": 32}, "block_dim_z": {"Absolute": 1}, diff --git a/machine_interface/hip_interface/mlops.hsaco b/machine_interface/hip_interface/mlops.hsaco index 28f67ef187bdaa3aa73010c5c00bc08dcbabee57..0ff58e51ba54a22ace74cdd0240452bb30b78020 100644 GIT binary patch delta 2429 zcmZuzZ)_Ar6n`_jw|9F}>fV*~_U@{*p;)K^&Qd6}#2z)+qQ*d?2^di-N{&kSV@yO7 zu5+8VDrmUd!3)6;rHL2=C~eO~0_E=bXKW#n;ujK)e({4bjYdAHnADk_U1L^WviJ7= z-kUcwZ)Sh*?i^R{oKW&Fpi2|mZ$5x7uvTMl+bf;mh^N7jHsUHEUc00XPkEZn7%h>K zw9?;tn&HU((9TFp)Bj@SnEh_TY7Mg@yY&1DY3JGRkvjBtDGXm>yE`r zE$a=XWGvejaM1CtHa6bcRI096te{%9d0CRpKf0OCE$=EFZriJ~Q_=s9OsRucdHRT= z0j!hrq@{x2xQ;48fC&lw%|nFzz$?(ie>{3JJESw;97;@piVi8CBVAZ#UxpzHXFeg}!9r zq{{a9H6mcMea&ojUjx@pz$Ts`>m=B8tZt2h@T;S2>vJ3{HJ$kpv0J0+kxOS;Hu39l`_F2n3|YjYH)q-;Dypw?i5RMZp=sKhL57R$2Po{>gKHgj?Ukno~<` z(03@%GSIpTMnjdzXf$s`fkyczB2i>PlqD`aF(~F%0`*zYO&ds}h)CQ{m}bt5n>ip! zo0#z;F%vdPk|IeEO5<@$Pc{_wB=;o=)y+gP-axDb<+y3`coAb-MAO;^_|&?oTS_3s z^Aj6*t~en%WFng&k^>V~**e6FIwWk9G}tCU(Im+tGytVZ(}Dz0ouHx_2MbYT>4YaC ztoCARF)1c=C=!Gy1+bDzLoul+Hc}8x>O>^42A#1P1%nHH7%ooW~-z&i%CtEAK1h53P32VR^$oM zVTGRz4A2qa_mARm7Q|`syBE+(wU?p@yoh zukC_*m~l-Xybp)nkBzo^v-r4emphA}rQY=7ef<4_8&6$UW5=&W3}3StcR2nQU!0GY zzi|iqyVpAF22J@)W5j6zwg%bOCa*Q-K>t^6e*9pj-8#Q)~}vX_}zPJdZnIE zNpGG_Om~F6JD6ItL@UMwzIaGHTs-u&aneC9Xb_FjtgZIGi!DCYC#vf%YEM8 qof2!i(Tz&%b^iMWo4nB-`ce++XMfE+#9}uSx(gh{?B2|S2>t=OD6q5u delta 2464 zcmZuzU2GIp6h8OP?Cj3amf0mn^}h+Rq|EgBV~2`WDDAXzbh7!vWJ zv$GRG{7buYaYGtRA<>u!Lc5C+L)l%dMbg$tNsK%wRN=uGBf^u4Nj>wkgp8brIrpBw zd(XLNzq3~cxhsdcfh}Zo zyjT?pRMcjnisHK&CKvNG5N3;iros=lBI<}WU7{>BO<#Q39{(?YS!N# zDePS%bA{zgpAVpBF+02L5q5Nqly6ZvGLJpo7GtXt&k%u4H+L4wiJc-l+%Dha+RCS4 z3=au&0vM~k)4WUEL>}RS0K=}}U%};9u?~%B|Fc&nyDT=fQ&)c7Cm%$e6X!F>3{JQV zY`+M%4iE6^IQpEci8~6EA9eT7@-Bb1BLCFgZ@~j?`iLFtjxuAd*mK4eG^4LgE4-Wj z88mZme!e@ZmVGbz_g(F+ z?x=RnclEqirJ0UG)4DcZv=eoRW!HDnaw?nE*zfC`sj1PXjU7bWbc`I~#1Ir-5zkb!>Xkrq7Addno_JXpmeioZHmCoQ{vO;-+Y!TCZJ^ z4h@L|>GFG}AP8mj2Rgv@2f3gXp|V~}Bf704GSxv2>2wwj%+3NF1fh(k5R~|o0K7%! z)am@3c{*PMsgV3tAHexbRHU#Sj03=#eFhbD*p6#s&ySo`1<>$LaTgpcVQgBW?8D>H zg`8Za!w~7m*33YL4hVr}Ju(FS5rB+A521`>KOA4w$hGb-Qdv%Mfw~OO@tM#ZDP;gF z($)`(bs3Zu>Q7uF`ICgCImx-C3AAjtHGzxMFn=lL0E=fifJ)*u6cZbO{vZS`0R+c~ z&Qd4Qxm41Fl%@nKSau;m7IY%>I`(NQ6mks9R7sTcFZe@RVLHr_J8D1uR2;>o^Jct{$MB`_p-w-}a) z2@-2M`*@lQwCW(L7AUbCQ8X*2su@*NGoZvRMb&bO8ncwRl2c-eVQ88u#_Mxp9CdNU z5Y<>tt5?jJfpS$vd)r1e6+uXB$74lRG`T{2s zV`&MGKepbn1>^{OWo$uYCIJq4fC#5oX0vr{c&xnD@P5>*Tm!JNn&9_yPj2IiO}j8J zpdqMCDMyGO8~Pml@?kMnxB`h^E6P#aAyokRQCxeFIIbk`gM9ZO)?L8bj84u;K1AGR z16ku66|E2B-}jC}&>2@`-y|7!2Ee6pG3~?b?>sO6XuDB4#fQFsc=mn(y;HIGjY1pk z9N6`$%r;*LD`(IcsWOC`J)0!UT!^Oqqv&PS+QZa8PqLoe57tFbKI5H;TZex0GVohd3q&F zOty(f?B_>1!gf!#i{K3`U?Y>OMX!sXlifyLtdIJ9e?c&8e From e066681d597bb9084f85161183dd5606d356dbee Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Sat, 6 Jul 2024 14:41:23 +0200 Subject: [PATCH 124/176] save before merge --- machine_interface/build.rs | 7 +- .../hip_interface/CMakeLists.txt | 45 -- machine_interface/hip_interface/bigger.hsaco | Bin 123680 -> 0 bytes .../hip_interface/combined.hsaco | Bin 88352 -> 0 bytes .../hip_interface/gpu_function.json | 15 - .../hip_interface/gpu_function_2.json | 38 -- .../hip_interface/hip_interface.hip.cpp | 14 - machine_interface/hip_interface/matmul.hsaco | Bin 34264 -> 0 bytes machine_interface/src/bin/gpu_worker.rs | 2 +- .../compute_driver/compute_driver_tests.rs | 571 +----------------- .../src/function_driver/compute_driver/gpu.rs | 157 ++--- .../compute_driver/gpu/buffer_pool.rs | 10 +- .../compute_driver/gpu/config_parsing.rs | 8 +- .../compute_driver/gpu/gpu_tests.rs | 492 +++++++++++++++ .../compute_driver/gpu/gpu_utils.rs | 348 +---------- .../function_driver/compute_driver/gpu/hip.rs | 54 +- machine_interface/src/interface.rs | 4 +- .../data}/basic_io.json | 2 +- .../data}/inference.json | 2 +- .../data}/inference_batched.json | 2 +- .../data}/matmul_loop.json | 2 +- .../data}/matmul_para.json | 2 +- .../data}/minimal.json | 2 +- .../{hip_interface => tests/libs}/mlops.hsaco | Bin .../libs}/module.hsaco | Bin server/src/main.rs | 32 + 26 files changed, 663 insertions(+), 1146 deletions(-) delete mode 100644 machine_interface/hip_interface/CMakeLists.txt delete mode 100644 machine_interface/hip_interface/bigger.hsaco delete mode 100644 machine_interface/hip_interface/combined.hsaco delete mode 100644 machine_interface/hip_interface/gpu_function.json delete mode 100644 machine_interface/hip_interface/gpu_function_2.json delete mode 100644 machine_interface/hip_interface/hip_interface.hip.cpp delete mode 100644 machine_interface/hip_interface/matmul.hsaco create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs rename machine_interface/{hip_interface => tests/data}/basic_io.json (86%) rename machine_interface/{hip_interface => tests/data}/inference.json (95%) rename machine_interface/{hip_interface => tests/data}/inference_batched.json (96%) rename machine_interface/{hip_interface => tests/data}/matmul_loop.json (87%) rename machine_interface/{hip_interface => tests/data}/matmul_para.json (88%) rename machine_interface/{hip_interface => tests/data}/minimal.json (87%) rename machine_interface/{hip_interface => tests/libs}/mlops.hsaco (100%) rename machine_interface/{hip_interface => tests/libs}/module.hsaco (100%) diff --git a/machine_interface/build.rs b/machine_interface/build.rs index 76143f13..0730f12e 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -18,12 +18,7 @@ fn cmake_libraries() -> () { } fn libraries_gpu() { - // TODO: cleanup/remove the CMake files/C++ code - // let install = Config::new("hip_interface").build(); - // println!("cargo:rustc-link-search=native={}/build", install.display()); - // println!("cargo:rustc-link-lib=static=hip_interface_lib"); - // link with hip runtime - // TODO: make less hard coded to current version -> there is some environment variable + // Link with HIP Runtime 5.7.1 println!("cargo:rustc-link-search=/opt/rocm-5.7.1/lib"); println!("cargo:rustc-link-lib=amdhip64"); } diff --git a/machine_interface/hip_interface/CMakeLists.txt b/machine_interface/hip_interface/CMakeLists.txt deleted file mode 100644 index d12db1e9..00000000 --- a/machine_interface/hip_interface/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -project(HipInterface) - -cmake_minimum_required(VERSION 3.3) - -# Taken from https://github.com/ROCm/hip-tests/blob/rocm-5.5.x/samples/2_Cookbook/15_static_library/host_functions/CMakeLists.txt - -if (NOT DEFINED ROCM_PATH ) - set ( ROCM_PATH "/opt/rocm" CACHE STRING "Default ROCM installation directory." ) -endif () - -# Search for rocm in common locations -list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH}/hip ${ROCM_PATH}) - -# Find hip -find_package(hip REQUIRED) - -# For windows, AR is MS Librarian and that is pickedby Visual Studio's command prompt. -if (WIN32) - find_program(libpath NAMES lib.exe) - set (CMAKE_AR ${libpath}) -endif() - -# Set compiler and linker -set(CMAKE_CXX_COMPILER ${HIP_HIPCC_EXECUTABLE}) -set(CMAKE_CXX_LINKER ${HIP_HIPCC_EXECUTABLE}) -set(CMAKE_BUILD_TYPE Release) - -# Turn static library generation ON -option(BUILD_SHARED_LIBS "Build as a shared library" OFF) - -set(CPP_SOURCES hip_interface.hip.cpp) - -# For windows, We need to tell cmake how to create static library. -if (WIN32) - set (CMAKE_CXX_CREATE_STATIC_LIBRARY " /out: ") -endif() - -# Generate static lib hip_interface_lib.a. -add_library(hip_interface_lib STATIC ${CPP_SOURCES}) - -# Set-up the correct flags to generate the static library. -target_link_libraries(hip_interface_lib PRIVATE --emit-static-lib) -target_include_directories(hip_interface_lib PRIVATE /opt/rocm/hsa/include) - -install(TARGETS ${LIBRARY} DESTINATION ${CMAKE_INSTALL_PREFIX}) \ No newline at end of file diff --git a/machine_interface/hip_interface/bigger.hsaco b/machine_interface/hip_interface/bigger.hsaco deleted file mode 100644 index 15a2b267ec819cf67c8f5e0712ae5a9945aaa24e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123680 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 ZiO=f3>NLqOao680_t~F}5Es4v{|6QqsFVNz diff --git a/machine_interface/hip_interface/combined.hsaco b/machine_interface/hip_interface/combined.hsaco deleted file mode 100644 index 5e578dc26f2623ccca9afd2e150cad61ce398b0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88352 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 __l1norm(B)", [ - ["ExecKernel", "check_mem", ["C", "B", "__sizeof(D)"], "[[LAUNCH_CFG]]"] - ]] - ] - } -} \ No newline at end of file diff --git a/machine_interface/hip_interface/gpu_function_2.json b/machine_interface/hip_interface/gpu_function_2.json deleted file mode 100644 index afd25555..00000000 --- a/machine_interface/hip_interface/gpu_function_2.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "module_path": "/[PATH]/nearest_neigbours.hsaco", - "kernels": ["SUB", "ADD", "MUL"], - "blueprint": { - "inputs": ["X", "A"], - "buffers": {"V": {"Sizeof": "X"}, "X_tmp": {"Sizeof": "X"}}, - "outputs": ["V"], - "control_flow": [ - {"Repeat": [25, [ - {"ExecKernel": ["SUB", - [{"Ptr": "X"}, {"Ptr": "V"}, {"Ptr": "X_tmp"}, {"Sizeof": "X"}], - { - "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, - "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, - "shared_mem_bytes": 0 - }] - }, - {"ExecKernel": ["ADD", - [{"Ptr": "X"}, {"Ptr": "V"}, {"Ptr": "V"}, {"Sizeof": "X"}], - { - "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, - "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, - "shared_mem_bytes": 0 - }] - }, - {"ExecKernel": ["MUL", - [{"Ptr": "A"}, {"Ptr": "X_tmp"}, {"Ptr": "X"}, {"Sizeof": "A"}, {"Sizeof": "X"}], - { - "grid_dim_x": 1, "grid_dim_y": 1, "grid_dim_z": 1, - "block_dim_x": 1, "block_dim_y": 1, "block_dim_z": 1, - "shared_mem_bytes": 0 - } - ] - }]] - } - ] - } -} \ No newline at end of file diff --git a/machine_interface/hip_interface/hip_interface.hip.cpp b/machine_interface/hip_interface/hip_interface.hip.cpp deleted file mode 100644 index 739df4f5..00000000 --- a/machine_interface/hip_interface/hip_interface.hip.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -__global__ void toy_kernel() { - printf("Kernel launched!\n"); -} - -extern "C" void gpu_toy_launch(uint8_t gpu_id) { - hipSetDevice(gpu_id); - - toy_kernel<<>>(); - - hipDeviceSynchronize(); -} \ No newline at end of file diff --git a/machine_interface/hip_interface/matmul.hsaco b/machine_interface/hip_interface/matmul.hsaco deleted file mode 100644 index f822c27f56d8d3e7da47370e9c42c5be06656bc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34264 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 DandelionResult<()> { } = serde_json::from_str(&inp).expect("Parsing function args failed"); let config = FunctionConfig::GpuConfig(config); - let context: Context = context.into(); + let context: Context = context.try_into()?; worker.run(config, context, output_sets).map(|_| ()) } diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index 9e82b946..d97428b2 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -3,7 +3,7 @@ any(feature = "cheri", feature = "mmu", feature = "wasm", feature = "gpu") ))] #[allow(clippy::module_inception)] -mod compute_driver_tests { +pub(crate) mod compute_driver_tests { use crate::{ function_driver::{ test_queue::TestQueue, ComputeResource, Driver, FunctionArguments, FunctionConfig, @@ -49,7 +49,7 @@ mod compute_driver_tests { } } - fn prepare_engine_and_function( + pub fn prepare_engine_and_function( filename: &str, dom_init: MemoryResource, driver: &Box, @@ -69,7 +69,7 @@ mod compute_driver_tests { return (function_context, function.config, queue); } - fn engine_minimal( + pub fn engine_minimal( filename: &str, dom_init: MemoryResource, driver: Box, @@ -160,7 +160,7 @@ mod compute_driver_tests { assert_eq!(4, read_buffer[1]); } - fn get_expected_mat(size: usize) -> Vec { + pub fn get_expected_mat(size: usize) -> Vec { let mut in_mat_vec = Vec::::new(); for i in 0..(size * size) { in_mat_vec.push(i as i64); @@ -680,567 +680,4 @@ mod compute_driver_tests { ComputeResource::GPU(0), ]); } - - #[cfg(feature = "gpu")] - mod gpu { - - use std::{ - cmp::max, - os::raw::c_void, - ptr::null, - sync::{Arc, Mutex}, - }; - - use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint, Recorder}; - use futures::SinkExt; - - use crate::{ - function_driver::{ - compute_driver::{ - compute_driver_tests::compute_driver_tests::{ - get_expected_mat, prepare_engine_and_function, - }, - gpu::{ - dummy_run, - hip::{self, DEFAULT_STREAM}, - GpuLoop, GpuProcessDriver, GpuThreadDriver, - }, - }, - load_utils::load_u8_from_file, - thread_utils::EngineLoop, - ComputeResource, Driver, FunctionArguments, WorkToDo, - }, - memory_domain::{mmu::MmuMemoryDomain, ContextTrait, MemoryResource}, - DataItem, DataSet, Position, - }; - - use super::engine_minimal; - - // To force tests to run sequentially as we might otherwise run out of GPU memory - lazy_static::lazy_static! { - static ref GPU_LOCK: Mutex<()> = Mutex::new(()); - } - - fn get_driver() -> Box { - #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] - panic!("gpu_process and gpu_thread enabled simultaneously"); - - #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] - panic!("Neither gpu_process nor gpu_thread enabled"); - - #[cfg(feature = "gpu_process")] - return Box::new(GpuProcessDriver {}); - - #[cfg(feature = "gpu_thread")] - return Box::new(GpuThreadDriver {}); - } - - #[ignore = "pollutes stdout"] - #[test] - fn module_load_data_test() { - let _lock = GPU_LOCK.lock().unwrap(); - let file = load_u8_from_file( - "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco".into(), - ) - .unwrap(); - - let image = file.as_ptr() as *const c_void; - - let module = hip::module_load_data(image).unwrap(); - - let func = hip::module_get_function(&module, "hello_world").unwrap(); - - let args: [*const c_void; 0] = []; - - assert!(hip::module_launch_kernel( - &func, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - DEFAULT_STREAM, - args.as_ptr(), - null() - ) - .is_ok()) - } - - #[ignore = "pollutes stdout"] - #[test] - fn run_dummy_gpu_payload() { - let _lock = GPU_LOCK.lock().unwrap(); - let mut runner = GpuLoop::init(ComputeResource::GPU(7, 0)).unwrap(); - assert!(dummy_run(&mut runner).is_ok()); - } - - #[test] - fn minimal() { - let _lock = GPU_LOCK.lock().unwrap(); - let driver: Box = get_driver(); - engine_minimal::( - "/home/smithj/dandelion/machine_interface/hip_interface/minimal.json", - MemoryResource::None, - driver, - vec![ComputeResource::GPU(7, 0)], - ); - } - - #[test] - fn basic_input_output() { - let _lock = GPU_LOCK.lock().unwrap(); - let driver: Box = get_driver(); - let (mut function_context, config, queue) = - prepare_engine_and_function::( - "/home/smithj/dandelion/machine_interface/hip_interface/basic_io.json", - MemoryResource::None, - &driver, - vec![ComputeResource::GPU(7, 0)], - ); - // add inputs - let in_size_offset = function_context - .get_free_space_and_write_slice(&[12345i64]) - .expect("Should have space for single i64"); - function_context.content.push(Some(DataSet { - ident: "A".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { - offset: in_size_offset as usize, - size: 8, - }, - key: 0, - }], - })); - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec!["A".into()]), - recorder: recorder.get_sub_recorder().unwrap(), - })); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - assert_eq!(1, result_context.content.len()); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - eprintln!("{:?}", output_item); - assert_eq!(1, output_item.buffers.len()); - let position = output_item.buffers[0].data; - assert_eq!(8, position.size, "Checking for size of output"); - let mut read_buffer = vec![0i64; position.size / 8]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - assert_eq!(98765, read_buffer[0]); - } - - #[test] - fn engine_matmul_3x3_loop() { - let _lock = GPU_LOCK.lock().unwrap(); - let filename = - "/home/smithj/dandelion/machine_interface/hip_interface/matmul_loop.json"; - let dom_init = MemoryResource::None; - let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0)]; - let (mut function_context, config, queue) = - prepare_engine_and_function::( - filename, dom_init, &driver, drv_init, - ); - // add inputs, split over two buffers to test concatenating them in GPU memory - let in_size_offset = function_context - .get_free_space_and_write_slice(&[3i64]) - .expect("Should have space"); - let offset2 = function_context - .get_free_space_and_write_slice(&[ - 0i64, 1i64, 2i64, 3i64, 4i64, 5i64, 6i64, 7i64, 8i64, - ]) - .expect("Should have space"); - function_context.content.push(Some(DataSet { - ident: "A".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: in_size_offset as usize, - size: 8, - }, - key: 0, - }, - DataItem { - ident: "".to_string(), - data: Position { - offset: offset2 as usize, - size: 72, - }, - key: 0, - }, - ], - })); - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from("B")]), - recorder: recorder.get_sub_recorder().unwrap(), - })); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - assert_eq!(1, result_context.content.len()); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - assert_eq!(1, output_item.buffers.len()); - let position = output_item.buffers[0].data; - assert_eq!(80, position.size, "Checking for size of output"); - let mut read_buffer = vec![0i64; position.size / 8]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - assert_eq!(3, read_buffer[0]); - let expected = self::get_expected_mat(3); - assert_eq!(3i64, read_buffer[0]); - for (should, is) in expected.iter().zip(read_buffer[1..].iter()) { - assert_eq!(should, is); - } - } - - #[test] - fn engine_matmul_size_sweep_parallel() { - let _lock = GPU_LOCK.lock().unwrap(); - let filename = - "/home/smithj/dandelion/machine_interface/hip_interface/matmul_para.json"; - let dom_init = MemoryResource::None; - let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0)]; - const LOWER_SIZE_BOUND: usize = 2; - const UPPER_SIZE_BOUND: usize = 16; - for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { - let (mut function_context, config, queue) = - prepare_engine_and_function::( - filename, - dom_init, - &driver, - drv_init.clone(), - ); - // add inputs, split over two buffers to test concatenating them in GPU memory - let in_size_offset = function_context - .get_free_space_and_write_slice(&[mat_size as i64]) - .expect("Should have space"); - - let mut mat_vec = Vec::::new(); - for i in 0..(mat_size * mat_size) { - mat_vec.push(i as i64); - } - let in_mat_offset = function_context - .get_free_space_and_write_slice(&mat_vec) - .expect("Should have space") as usize; - function_context.content.push(Some(DataSet { - ident: "A".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: in_size_offset as usize, - size: 8, - }, - key: 0, - }, - DataItem { - ident: "".to_string(), - data: Position { - offset: in_mat_offset as usize, - size: mat_vec.len() * 8, - }, - key: 0, - }, - ], - })); - let cfg_offset = function_context - .get_free_space_and_write_slice(&[(mat_size + 31) / 32]) - .expect("Should be able to write cfg"); - function_context.content.push(Some(DataSet { - ident: "cfg".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { - offset: cfg_offset as usize, - size: 8, - }, - key: 0, - }], - })); - - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from("B")]), - recorder: recorder.get_sub_recorder().unwrap(), - })); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - assert_eq!(1, result_context.content.len()); - let output_item = &result_context.content[0] - .as_ref() - .expect("Set should be present"); - assert_eq!(1, output_item.buffers.len()); - let position = output_item.buffers[0].data; - assert_eq!( - (mat_size * mat_size + 1) * 8, - position.size, - "Checking for size of output" - ); - let mut output = vec![0i64; position.size / 8]; - result_context - .context - .read(position.offset, &mut output) - .expect("Should succeed in reading"); - let expected = self::get_expected_mat(mat_size); - assert_eq!(mat_size as i64, output[0]); - for (should, is) in expected.iter().zip(output[1..].iter()) { - assert_eq!(should, is); - } - } - } - - fn get_inference_inputs() -> (Vec, Vec) { - let mut a: Vec = Vec::with_capacity(224 * 224 + 2); - let mut b: Vec = Vec::with_capacity(5 * 5 + 2); - - a.push(224.0); - a.push(224.0); - for i in 0..224 * 224 { - a.push(i as f32); - } - - b.push(5.0); - b.push(5.0); - for i in 0..5 * 5 { - b.push(i as f32); - } - - (a, b) - } - - fn get_expected_inference_output() -> Vec { - let (a, b) = get_inference_inputs(); - let mut c = vec![0f32; a.len()]; - let mut d = vec![0f32; c.len() / 2 + 1]; - - // convolution - c[0] = 224f32; - c[1] = 224f32; - for i in 0..224 { - for j in 0..224 { - let mut sum = 0f32; - for k in -2..=2i32 { - for l in -2..=2i32 { - let cur_row = i - k; - let cur_col = j - l; - - let filter_row = 2 + k; - let filter_col = 2 + l; - - if (0..224).contains(&cur_row) && (0..224).contains(&cur_col) { - let cur_row = cur_row as usize; // There has to be a better way to do this... - let cur_col = cur_col as usize; - let filter_row = filter_row as usize; - let filter_col = filter_col as usize; - sum += a[2 + cur_row * 224 + cur_col] - * b[2 + filter_row * 5 + filter_col]; - } - } - } - let i = i as usize; - let j = j as usize; - c[2 + i * 224 + j] = sum; - } - } - - // relu - for i in 0..224 * 224 { - c[2 + i] = c[2 + i].max(0f32); - } - - // max pooling - d[0] = 112f32; - d[1] = 112f32; - for i in 0..112 { - for j in 0..112 { - let mut max = f32::NEG_INFINITY; - let base_row = i * 2; - let base_col = j * 2; - for k in 0..2 { - for l in 0..2 { - max = max.max(c[2 + (base_row + k) * 224 + (base_col + l)]); - } - } - d[2 + i * 112 + j] = max; - } - } - - d - } - - #[test] - fn inference_benchmark_function() { - let _lock = GPU_LOCK.lock().unwrap(); - let filename = "/home/smithj/dandelion/machine_interface/hip_interface/inference.json"; - let dom_init = MemoryResource::None; - let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0)]; - let (mut function_context, config, queue) = - prepare_engine_and_function::( - filename, dom_init, &driver, drv_init, - ); - let d_size: usize = 112 * 112 * 4 + 8; //side_len * side_len * sizeof(float) + [[size convention at start]] - let a_grid_dim: usize = (224 + 31) / 32; - let d_grid_dim: usize = (112 + 31) / 32; - let (a_matrix, b_matrix) = get_inference_inputs(); - let cfg_offset = function_context - .get_free_space_and_write_slice(&[d_size, a_grid_dim, d_grid_dim, 500]) - .expect("Should have space for cfg"); - let a_offset = function_context - .get_free_space_and_write_slice(&a_matrix) - .expect("Should have space for A"); - let b_offset = function_context - .get_free_space_and_write_slice(&b_matrix) - .expect("Should have space for B"); - - function_context.content.append(&mut vec![ - Some(DataSet { - ident: "cfg".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { - offset: cfg_offset as usize, - size: 3 * 8, - }, - key: 0, - }], - }), - Some(DataSet { - ident: "A".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { - offset: a_offset as usize, - size: a_matrix.len() * 4, - }, - key: 0, - }], - }), - Some(DataSet { - ident: "B".to_string(), - buffers: vec![DataItem { - ident: "".to_string(), - data: Position { - offset: b_offset as usize, - size: b_matrix.len() * 4, - }, - key: 0, - }], - }), - ]); - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from("D")]), - recorder: recorder.get_sub_recorder().unwrap(), - })); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - assert_eq!(1, result_context.content.len()); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - assert_eq!(1, output_item.buffers.len()); - let position = output_item.buffers[0].data; - assert_eq!( - 112 * 112 * 4 + 8, - position.size, - "Checking for size of output" - ); - let mut read_buffer = vec![0f32; position.size / 4]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - let expected = get_expected_inference_output(); - for (idx, (should, is)) in expected.iter().zip(read_buffer[..].iter()).enumerate() { - assert_eq!(should, is, "Comparing args at {}", idx); - } - } - } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index cf3a4348..e86847ff 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -18,7 +18,7 @@ use std::{ ptr::null, sync::{ mpsc::{self, Receiver, Sender}, - Arc, Mutex, MutexGuard, + Arc, Mutex, }, thread::{self, spawn}, }; @@ -37,63 +37,8 @@ pub(crate) mod config_parsing; pub mod gpu_utils; pub mod hip; -pub fn dummy_run(gpu_loop: &mut GpuLoop) -> DandelionResult<()> { - // set gpu - hip::set_device(gpu_loop.gpu_id)?; - - // load module - let module = - hip::module_load("/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco")?; - - // load kernels - let kernel_set = hip::module_get_function(&module, "set_mem")?; - let kernel_check = hip::module_get_function(&module, "check_mem")?; - - // allocate device memory, prepare args - let arr_elem: usize = 256; - let elem_size: usize = std::mem::size_of::(); - let arr_size: usize = arr_elem * elem_size; - let array = hip::DeviceAllocation::try_new(arr_size)?; - - let args: [*const c_void; 2] = [ - &array.ptr as *const _ as *const c_void, - &arr_elem as *const _ as *const c_void, - ]; - - // launch them - let block_width: usize = 1024; - hip::module_launch_kernel( - &kernel_set, - ((arr_elem + block_width - 1) / block_width) as u32, - 1, - 1, - block_width as u32, - 1, - 1, - 0, - DEFAULT_STREAM, - args.as_ptr(), - null(), - )?; - - hip::module_launch_kernel( - &kernel_check, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - DEFAULT_STREAM, - args.as_ptr(), - null(), - )?; - - hip::device_synchronize()?; - - Ok(()) -} +#[cfg(test)] +mod gpu_tests; fn execute( actions: &Vec, @@ -105,45 +50,59 @@ fn execute( for action in actions { match action { Action::ExecKernel(name, args, launch_config) => { - // HIP expects arguments as an array of void pointers (pointers to the arguments) + // Explanation: + // HIP expects arguments as an array of void pointers (pointers to the arguments). + // BufferPool.get() returns a stack allocated struct, so we need to allocate it outside of the loop, + // otherwise the pointer becomes invalid. In our case we allocate it on the heap using Box. If we + // just used a Vec instead, pointers to its element would become invalid when the Vec + // resizes. Additionally, Box provides the convenient into_raw function to make sure the data lives + // long enough, although this means we must manually deallocate at the end. + let mut params: Vec<*const c_void> = Vec::with_capacity(args.len()); - // Initialise them outside of the loop so they live long enough to have valid pointers - let mut ptrs = vec![]; - let mut constants = vec![]; + let mut dev_ptrs = Vec::with_capacity(args.len()); for arg in args { match arg { Argument::Ptr(id) => { let idx = buffers.get(id).unwrap().0; let dev_ptr = buffer_pool.get(idx)?; - ptrs.push(dev_ptr); - let addr = &ptrs.last().unwrap().ptr; - params.push(addr as *const _ as *const c_void); + dev_ptrs.push(Box::into_raw(Box::new(dev_ptr))); + params.push(*dev_ptrs.last().unwrap() as *const c_void); } Argument::Sizeof(id) => { params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void); } Argument::Constant(constant) => { - constants.push(*constant); - let addr = constants.last().unwrap(); - params.push(addr as *const _ as *const c_void); + params.push(constant as *const _ as *const c_void); } }; } - hip::module_launch_kernel( - // TODO: throw error here! - config.kernels.get(name).unwrap(), - get_size(&launch_config.grid_dim_x, buffers, context)? as u32, - get_size(&launch_config.grid_dim_y, buffers, context)? as u32, - get_size(&launch_config.grid_dim_z, buffers, context)? as u32, - get_size(&launch_config.block_dim_x, buffers, context)? as u32, - get_size(&launch_config.block_dim_y, buffers, context)? as u32, - get_size(&launch_config.block_dim_z, buffers, context)? as u32, - get_size(&launch_config.shared_mem_bytes, buffers, context)?, - DEFAULT_STREAM, - params.as_ptr(), - null(), - )?; + unsafe { + hip::module_launch_kernel( + config + .kernels + .get(name) + .ok_or(DandelionError::ConfigMissmatch)?, + get_size(&launch_config.grid_dim_x, buffers, context)? as u32, + get_size(&launch_config.grid_dim_y, buffers, context)? as u32, + get_size(&launch_config.grid_dim_z, buffers, context)? as u32, + get_size(&launch_config.block_dim_x, buffers, context)? as u32, + get_size(&launch_config.block_dim_y, buffers, context)? as u32, + get_size(&launch_config.block_dim_z, buffers, context)? as u32, + get_size(&launch_config.shared_mem_bytes, buffers, context)?, + DEFAULT_STREAM, + params.as_ptr(), + null(), + )? + }; + + // Manually deallocate heap memory we performed into_raw on + for ptr in dev_ptrs { + unsafe { + let allocation = Box::from_raw(ptr); + drop(allocation); // Not necessary, just do it's very explicit we're dropping the data here + } + } } Action::Repeat(times, actions) => { let repetitions = get_size(times, buffers, context)?; @@ -169,8 +128,8 @@ pub fn gpu_run( return Err(DandelionError::EngineResourceError); } - // TODO: disable device-side malloc hip::set_device(gpu_id)?; + hip::limit_heap_size(0)?; let ContextType::Mmu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); @@ -191,7 +150,7 @@ pub fn gpu_run( buffers.insert(name.clone(), (idx, size)); } for (name, sizing) in &config.blueprint.buffers { - let size = get_size(sizing, &buffers, &context)?; + let size = get_size(sizing, &buffers, &context)? as usize; let idx = buffer_pool.alloc_buffer(size)?; buffers.insert(name.clone(), (idx, size)); } @@ -204,14 +163,16 @@ pub fn gpu_run( &config, )?; - write_gpu_outputs::( - &mut context, - config.system_data_struct_offset, - base, - &output_sets, - &buffers, - buffer_pool.borrow(), - )?; + unsafe { + write_gpu_outputs::( + &mut context, + config.system_data_struct_offset, + base, + &output_sets, + &buffers, + buffer_pool.borrow(), + )? + }; // Zero out buffers used by current function buffer_pool.dealloc_all()?; @@ -284,9 +245,17 @@ fn common_parse( function_path: String, static_domain: &'static dyn crate::memory_domain::MemoryDomain, ) -> DandelionResult { - let (mut gpu_config, module_path) = config_parsing::parse_config(&function_path)?; + eprintln!("{function_path}"); + let (mut gpu_config, module_suffix) = config_parsing::parse_config(&function_path)?; + + let mut path = std::env::var("DANDELION_LIBRARY_PATH") + .unwrap_or(format!("{}/tests/libs/", env!("CARGO_MANIFEST_DIR"))); + + path += &module_suffix; + + eprintln!("{path}"); - let code_object = load_u8_from_file(module_path)?; + let code_object = load_u8_from_file(path)?; let size = code_object.len() * size_of::(); gpu_config.code_object_offset = SYSDATA_OFFSET + std::mem::size_of::>(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index f4efdd6f..4d951e66 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -44,20 +44,20 @@ impl BufferPool { } pub fn alloc_buffer(&mut self, size: usize) -> DandelionResult { - macro_rules! round_to_eight { + macro_rules! align { ($e: expr) => { - ($e + 7) / 8 * 8 + ($e + 255) / 256 * 256 }; } - // round size to 8 byte alignment; TODO: verfiy if different should be used - let length = round_to_eight!(size); + // Round size to 256 bytes, which is the minimum that GPU allocators typically use. This might need to be changed + let length = align!(size); let last = self .buffers .last() .expect("buffers should always hold sentinel"); - let offset = round_to_eight!(last.offset + last.length); + let offset = align!(last.offset + last.length); if offset + length > self.allocation.size { debug!( diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index dee50597..0a236df4 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -36,7 +36,7 @@ pub enum Action { #[derive(Deserialize, Serialize, Debug)] pub enum Sizing { Sizeof(String), - Absolute(usize), + Absolute(u64), FromInput { bufname: String, idx: usize }, } @@ -77,8 +77,9 @@ pub struct RuntimeGpuConfig { impl GpuConfig { pub fn load(self, base: *const u8) -> DandelionResult { - let module = - hip::module_load_data(base.wrapping_add(self.code_object_offset) as *const c_void)?; + let module = unsafe { + hip::module_load_data(base.wrapping_add(self.code_object_offset) as *const c_void)? + }; let kernels = self .kernels .iter() @@ -96,7 +97,6 @@ impl GpuConfig { } pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { - // TODO: better errors let file = File::open(path).map_err(|_| DandelionError::ConfigMissmatch)?; let reader = BufReader::new(file); let ir: GpuConfigIR = serde_json::from_reader(reader).map_err(|e| { diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs new file mode 100644 index 00000000..a53650d4 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -0,0 +1,492 @@ +use std::sync::{Arc, Mutex}; + +use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; + +use crate::{ + function_driver::{ + compute_driver::{ + compute_driver_tests::compute_driver_tests::{ + engine_minimal, get_expected_mat, prepare_engine_and_function, + }, + gpu::{GpuProcessDriver, GpuThreadDriver}, + }, + ComputeResource, Driver, FunctionArguments, WorkToDo, + }, + memory_domain::{mmu::MmuMemoryDomain, ContextTrait, MemoryResource}, + DataItem, DataSet, Position, +}; + +// To force tests to run sequentially as we might otherwise run out of GPU memory +lazy_static::lazy_static! { + static ref GPU_LOCK: Mutex<()> = Mutex::new(()); +} + +fn get_driver() -> Box { + #[cfg(all(feature = "gpu_process", feature = "gpu_thread"))] + panic!("gpu_process and gpu_thread enabled simultaneously"); + + #[cfg(not(any(feature = "gpu_process", feature = "gpu_thread")))] + panic!("Neither gpu_process nor gpu_thread enabled"); + + #[cfg(feature = "gpu_process")] + return Box::new(GpuProcessDriver {}); + + #[cfg(feature = "gpu_thread")] + return Box::new(GpuThreadDriver {}); +} + +#[test] +fn minimal() { + let _lock = GPU_LOCK.lock().unwrap(); + let driver: Box = get_driver(); + engine_minimal::( + &format!("{}/tests/data/minimal.json", env!("CARGO_MANIFEST_DIR")), + MemoryResource::None, + driver, + vec![ComputeResource::GPU(7, 1)], + ); +} + +#[test] +fn basic_input_output() { + let _lock = GPU_LOCK.lock().unwrap(); + let driver: Box = get_driver(); + let (mut function_context, config, queue) = prepare_engine_and_function::( + &format!("{}/tests/data/basic_io.json", env!("CARGO_MANIFEST_DIR")), + MemoryResource::None, + &driver, + vec![ComputeResource::GPU(7, 0)], + ); + // add inputs + let in_size_offset = function_context + .get_free_space_and_write_slice(&[12345i64]) + .expect("Should have space for single i64"); + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, + }], + })); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec!["A".into()]), + recorder: recorder.get_sub_recorder().unwrap(), + })); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + eprintln!("{:?}", output_item); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!(8, position.size, "Checking for size of output"); + let mut read_buffer = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + assert_eq!(98765, read_buffer[0]); +} + +#[test] +fn engine_matmul_3x3_loop() { + let _lock = GPU_LOCK.lock().unwrap(); + let filename = &format!("{}/tests/data/matmul_loop.json", env!("CARGO_MANIFEST_DIR")); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + // add inputs, split over two buffers to test concatenating them in GPU memory + let in_size_offset = function_context + .get_free_space_and_write_slice(&[3i64]) + .expect("Should have space"); + let offset2 = function_context + .get_free_space_and_write_slice(&[0i64, 1i64, 2i64, 3i64, 4i64, 5i64, 6i64, 7i64, 8i64]) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, + }, + DataItem { + ident: "".to_string(), + data: Position { + offset: offset2 as usize, + size: 72, + }, + key: 0, + }, + ], + })); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("B")]), + recorder: recorder.get_sub_recorder().unwrap(), + })); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!(80, position.size, "Checking for size of output"); + let mut read_buffer = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + assert_eq!(3, read_buffer[0]); + let expected = self::get_expected_mat(3); + assert_eq!(3i64, read_buffer[0]); + for (should, is) in expected.iter().zip(read_buffer[1..].iter()) { + assert_eq!(should, is); + } +} + +#[test] +fn engine_matmul_size_sweep_parallel() { + let _lock = GPU_LOCK.lock().unwrap(); + let filename = &format!("{}/tests/data/matmul_para.json", env!("CARGO_MANIFEST_DIR")); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0)]; + const LOWER_SIZE_BOUND: usize = 2; + const UPPER_SIZE_BOUND: usize = 16; + for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { + let (mut function_context, config, queue) = prepare_engine_and_function::( + filename, + dom_init, + &driver, + drv_init.clone(), + ); + // add inputs, split over two buffers to test concatenating them in GPU memory + let in_size_offset = function_context + .get_free_space_and_write_slice(&[mat_size as i64]) + .expect("Should have space"); + + let mut mat_vec = Vec::::new(); + for i in 0..(mat_size * mat_size) { + mat_vec.push(i as i64); + } + let in_mat_offset = function_context + .get_free_space_and_write_slice(&mat_vec) + .expect("Should have space") as usize; + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: in_size_offset as usize, + size: 8, + }, + key: 0, + }, + DataItem { + ident: "".to_string(), + data: Position { + offset: in_mat_offset, + size: mat_vec.len() * 8, + }, + key: 0, + }, + ], + })); + let cfg_offset = function_context + .get_free_space_and_write_slice(&[(mat_size + 31) / 32]) + .expect("Should be able to write cfg"); + function_context.content.push(Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: cfg_offset as usize, + size: 8, + }, + key: 0, + }], + })); + + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("B")]), + recorder: recorder.get_sub_recorder().unwrap(), + })); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = &result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!( + (mat_size * mat_size + 1) * 8, + position.size, + "Checking for size of output" + ); + let mut output = vec![0i64; position.size / 8]; + result_context + .context + .read(position.offset, &mut output) + .expect("Should succeed in reading"); + let expected = self::get_expected_mat(mat_size); + assert_eq!(mat_size as i64, output[0]); + for (should, is) in expected.iter().zip(output[1..].iter()) { + assert_eq!(should, is); + } + } +} + +fn get_inference_inputs() -> (Vec, Vec) { + let mut a: Vec = Vec::with_capacity(224 * 224 + 2); + let mut b: Vec = Vec::with_capacity(5 * 5 + 2); + + a.push(224.0); + a.push(224.0); + for i in 0..224 * 224 { + a.push(i as f32); + } + + b.push(5.0); + b.push(5.0); + for i in 0..5 * 5 { + b.push(i as f32); + } + + (a, b) +} + +fn get_expected_inference_output() -> Vec { + let (a, b) = get_inference_inputs(); + let mut c = vec![0f32; a.len()]; + let mut d = vec![0f32; c.len() / 2 + 1]; + + // convolution + c[0] = 224f32; + c[1] = 224f32; + for i in 0..224 { + for j in 0..224 { + let mut sum = 0f32; + for k in -2..=2i32 { + for l in -2..=2i32 { + let cur_row = i - k; + let cur_col = j - l; + + let filter_row = 2 + k; + let filter_col = 2 + l; + + if (0..224).contains(&cur_row) && (0..224).contains(&cur_col) { + let cur_row = cur_row as usize; // There has to be a better way to do this... + let cur_col = cur_col as usize; + let filter_row = filter_row as usize; + let filter_col = filter_col as usize; + sum += a[2 + cur_row * 224 + cur_col] * b[2 + filter_row * 5 + filter_col]; + } + } + } + let i = i as usize; + let j = j as usize; + c[2 + i * 224 + j] = sum; + } + } + + // relu + for i in 0..224 * 224 { + c[2 + i] = c[2 + i].max(0f32); + } + + // max pooling + d[0] = 112f32; + d[1] = 112f32; + for i in 0..112 { + for j in 0..112 { + let mut max = f32::NEG_INFINITY; + let base_row = i * 2; + let base_col = j * 2; + for k in 0..2 { + for l in 0..2 { + max = max.max(c[2 + (base_row + k) * 224 + (base_col + l)]); + } + } + d[2 + i * 112 + j] = max; + } + } + + d +} + +#[test] +fn inference_benchmark_function() { + let _lock = GPU_LOCK.lock().unwrap(); + let filename = &format!("{}/tests/data/inference.json", env!("CARGO_MANIFEST_DIR")); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + let d_size: usize = 112 * 112 * 4 + 8; //side_len * side_len * sizeof(float) + [[size convention at start]] + let a_grid_dim: usize = (224 + 31) / 32; + let d_grid_dim: usize = (112 + 31) / 32; + let (a_matrix, b_matrix) = get_inference_inputs(); + let cfg_offset = function_context + .get_free_space_and_write_slice(&[d_size, a_grid_dim, d_grid_dim, 500]) + .expect("Should have space for cfg"); + let a_offset = function_context + .get_free_space_and_write_slice(&a_matrix) + .expect("Should have space for A"); + let b_offset = function_context + .get_free_space_and_write_slice(&b_matrix) + .expect("Should have space for B"); + + function_context.content.append(&mut vec![ + Some(DataSet { + ident: "cfg".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: cfg_offset as usize, + size: 3 * 8, + }, + key: 0, + }], + }), + Some(DataSet { + ident: "A".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_matrix.len() * 4, + }, + key: 0, + }], + }), + Some(DataSet { + ident: "B".to_string(), + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: b_offset as usize, + size: b_matrix.len() * 4, + }, + key: 0, + }], + }), + ]); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments(FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("D")]), + recorder: recorder.get_sub_recorder().unwrap(), + })); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!( + 112 * 112 * 4 + 8, + position.size, + "Checking for size of output" + ); + let mut read_buffer = vec![0f32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + let expected = get_expected_inference_output(); + for (idx, (should, is)) in expected.iter().zip(read_buffer[..].iter()).enumerate() { + assert_eq!(should, is, "Comparing args at {}", idx); + } +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 60926cf7..ef13913c 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -5,14 +5,10 @@ use crate::{ }, interface::read_output_structs, memory_domain::{self, mmu::MmuContext, Context, ContextState, ContextTrait, ContextType}, - promise::Debt, util::mmapmem::MmapMem, DataSet, Position, }; -use dandelion_commons::{ - records::{RecordPoint, Recorder}, - DandelionError, DandelionResult, -}; +use dandelion_commons::{records::RecordPoint, DandelionError, DandelionResult}; use libc::c_void; use log::{debug, error}; use nix::sys::mman::ProtFlags; @@ -22,7 +18,7 @@ use std::{ io::{BufRead, BufReader, Write}, process::{Child, ChildStdin, ChildStdout, Command, Stdio}, sync::{ - atomic::{AtomicBool, AtomicU8, Ordering}, + atomic::{AtomicBool, Ordering}, Arc, }, thread::spawn, @@ -81,7 +77,7 @@ pub unsafe fn copy_data_to_device( for item in &dataset.buffers { let length = item.data.size; let offset = item.data.offset; - let src = unsafe { base.byte_offset((offset) as isize) } as *const c_void; + let src = base.byte_offset((offset) as isize) as *const c_void; hip::memcpy_h_to_d(dev_ptr, total, src, length)?; total += length as isize; } @@ -92,7 +88,7 @@ pub fn get_size( sizing: &Sizing, buffers: &HashMap, context: &Context, -) -> DandelionResult { +) -> DandelionResult { match sizing { Sizing::Absolute(size) => Ok(*size), Sizing::FromInput { bufname, idx } => { @@ -117,8 +113,7 @@ pub fn get_size( return Err(DandelionError::ConfigMissmatch); } - // TODO: make this more portable (not usize) - let mut buf: [usize; 1] = [0]; + let mut buf: [u64; 1] = [0]; context.read(data_item.data.offset + relative_offset, &mut buf)?; Ok(buf[0]) @@ -126,7 +121,7 @@ pub fn get_size( Sizing::Sizeof(bufname) => Ok(buffers .get(bufname) .ok_or(DandelionError::ConfigMissmatch)? - .1), + .1 as u64), } } @@ -161,7 +156,7 @@ pub fn start_gpu_thread(core_id: u8, gpu_id: u8, queue: Box) { continue; } } - let results = Box::new(result.and_then(|context| Ok(WorkDone::Context(context)))); + let results = Box::new(result.map(WorkDone::Context)); debt.fulfill(results); } WorkToDo::TransferArguments(transfer_args) => { @@ -264,17 +259,10 @@ impl Worker { let stdin = child.stdin.take().unwrap(); let stdout = BufReader::new(child.stdout.take().unwrap()); - // We use a Notify (basically a semaphore) to signal availability to work - // let available = Notify::new(); - // // Adds a ticket to the semaphore, as the Worker initially is free - // available.notify_one(); - Self { process: child, stdin, stdout, - // available, - // debt: Mutex::new(None), } } } @@ -287,38 +275,6 @@ impl Drop for Worker { } } -// async fn process_output(worker: Arc) { -// let mut reader = worker.stdout.lock().await; -// let mut line = String::new(); - -// while reader.read_line(&mut line).await.unwrap() != 0 { -// let mut handle = worker.debt.lock().await; -// if let Some((debt, mut recorder, mut context)) = handle.take() { -// if line.trim() != "__ERROR__" && line.trim() != "__OK__" { -// // The line is some other output from the GPU, log it -// eprintln!("GPU output: {}", line); -// *handle = Some((debt, recorder, context)); -// continue; -// } -// if let Err(e) = recorder.record(RecordPoint::EngineEnd) { -// debt.fulfill(Box::new(Err(e))); -// } else if line.trim().starts_with("__ERROR__") { -// eprintln!("GPU error: {}", line); -// debt.fulfill(Box::new(Err(DandelionError::EngineError))); -// } else { -// read_output_structs::(&mut context, 0).unwrap(); -// let results = Box::new(Ok(WorkDone::Context(context))); -// debt.fulfill(results); -// } -// } else { -// panic!("Got output from GPUWorker but had no debt to fulfill"); -// } - -// worker.available.notify_one(); -// line.clear(); -// } -// } - // slightly modified Context that can be exchanged between processes #[derive(Serialize, Deserialize, Debug)] pub struct SendContext { @@ -329,22 +285,22 @@ pub struct SendContext { pub occupation: Vec, } -impl From for Context { - fn from(value: SendContext) -> Self { - Self { +impl TryFrom for Context { + type Error = DandelionError; + + fn try_from(value: SendContext) -> Result { + Ok(Self { context: ContextType::Mmu(Box::new(MmuContext { storage: MmapMem::alt_open( &value.context_filename, ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, - ) - // TODO: actually handle error - .unwrap(), + )?, })), content: value.content, size: value.size, state: value.state, occupation: value.occupation, - } + }) } } @@ -355,7 +311,7 @@ impl TryFrom<&Context> for SendContext { return Err(DandelionError::ConfigMissmatch); }; - // TODO: this is kinda inefficient + // Cloning so much on the hot path is not optimal; a custom serialisation function would be quicker Ok(SendContext { // unwrap okay, as Mmu memory is always created as shared so a filename exists context_filename: ctxt.storage.filename().unwrap().to_string(), @@ -374,247 +330,8 @@ pub struct SendFunctionArgs { pub output_sets: Arc>, } -// async fn handle_function_args( -// func_args: FunctionArguments, -// debt: Debt, -// worker1: Arc, -// worker2: Arc, -// worker3: Arc, -// worker4: Arc, -// ) { -// let FunctionArguments { -// config, -// context, -// output_sets, -// mut recorder, -// } = func_args; - -// // transform relevant data into serialisable counterparts -// let FunctionConfig::GpuConfig(config) = config else { -// debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); -// return; -// }; -// let Ok(send_context) = (&context).try_into() else { -// debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); -// return; -// }; - -// let mut task = serde_json::to_string(&SendFunctionArgs { -// config, -// context: send_context, -// output_sets, -// }) -// .unwrap(); - -// // Very important to add this newline, as the worker reads line by line -// task += "\n"; - -// // Unfortunate code duplication because of how select works -// tokio::select! { -// _ = worker1.available.notified() => { -// if let Err(e) = recorder.record(RecordPoint::EngineStart) { -// debt.fulfill(Box::new(Err(e))); -// return; -// } - -// // Give debt and recorder to worker -// *worker1.debt.lock().await = Some((debt, recorder, context)); - -// // Write task description to worker process stdin -// worker1.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); -// }, -// _ = worker2.available.notified() => { -// if let Err(e) = recorder.record(RecordPoint::EngineStart) { -// debt.fulfill(Box::new(Err(e))); -// return; -// } - -// // Give debt and recorder to worker -// *worker2.debt.lock().await = Some((debt, recorder, context)); - -// // Write task description to worker process stdin -// worker2.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); -// }, -// _ = worker3.available.notified() => { -// if let Err(e) = recorder.record(RecordPoint::EngineStart) { -// debt.fulfill(Box::new(Err(e))); -// return; -// } - -// // Give debt and recorder to worker -// *worker3.debt.lock().await = Some((debt, recorder, context)); - -// // Write task description to worker process stdin -// worker3.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); -// }, -// _ = worker4.available.notified() => { -// if let Err(e) = recorder.record(RecordPoint::EngineStart) { -// debt.fulfill(Box::new(Err(e))); -// return; -// } - -// // Give debt and recorder to worker -// *worker4.debt.lock().await = Some((debt, recorder, context)); - -// // Write task description to worker process stdin -// worker4.stdin.lock().await.write_all(task.as_bytes()).await.expect("Writing failed"); -// } -// } -// } - -// async fn handle_transfer_args(transfer_args: TransferArguments, debt: Debt) { -// let TransferArguments { -// source, -// mut destination, -// destination_set_index, -// destination_allignment, -// destination_item_index, -// destination_set_name, -// source_set_index, -// source_item_index, -// mut recorder, -// } = transfer_args; - -// match recorder.record(RecordPoint::TransferStart) { -// Ok(()) => (), -// Err(err) => { -// debt.fulfill(Box::new(Err(err))); -// return; -// } -// } -// let transfer_result = memory_domain::transfer_data_item( -// &mut destination, -// &source, -// destination_set_index, -// destination_allignment, -// destination_item_index, -// destination_set_name.as_str(), -// source_set_index, -// source_item_index, -// ); -// match recorder.record(RecordPoint::TransferEnd) { -// Ok(()) => (), -// Err(err) => { -// debt.fulfill(Box::new(Err(err))); -// return; -// } -// } -// let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); -// debt.fulfill(Box::new(transfer_return)); -// } - -// async fn process_inputs( -// core_id: u8, -// gpu_id: u8, -// queue: Box, -// worker1: Arc, -// worker2: Arc, -// worker3: Arc, -// worker4: Arc, -// ) { -// let queue = Arc::new(queue); -// let mut handles = vec![]; -// // Limit unfulfilled tasks to prevent task starvation -// let semaphore = Arc::new(Semaphore::new(8)); -// loop { -// let ticket = semaphore -// .clone() -// .acquire_owned() -// .await -// .expect("Semaphore shouldn't be closed"); -// // A bit clumsy but necessary to use spawn_blocking -// // let queue = queue.clone(); -// // Need to use spawn_blocking, else waiting on the queue can deadlock, -// // eg. if new work being added to the queue relies on old work being submitted -// let (args, debt) = task::block_in_place(|| queue.get_engine_args()); -// // .await -// // .expect("spawn_blocking thread crashed"); - -// match args { -// WorkToDo::FunctionArguments(func_args) => { -// let worker1 = worker1.clone(); -// let worker2 = worker2.clone(); -// let worker3 = worker3.clone(); -// let worker4 = worker4.clone(); -// // Spawn in new task to enable more concurrency -// let handle = tokio::spawn(async move { -// handle_function_args(func_args, debt, worker1, worker2, worker3, worker4).await; -// drop(ticket); -// }); -// handles.push(handle); -// } -// WorkToDo::TransferArguments(transfer_args) => { -// // Spawn in new task to enable more concurrency -// let handle = task::spawn(async move { -// handle_transfer_args(transfer_args, debt).await; -// drop(ticket); -// }); -// handles.push(handle); -// } -// WorkToDo::ParsingArguments(ParsingArguments { -// driver, -// path, -// static_domain, -// mut recorder, -// }) => { -// // Spawn in new task to enable more concurrency -// let handle = tokio::spawn(async move { -// recorder.record(RecordPoint::ParsingStart).unwrap(); -// let function_result = driver.parse_function(path, static_domain); -// recorder.record(RecordPoint::ParsingEnd).unwrap(); -// match function_result { -// Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), -// Err(err) => debt.fulfill(Box::new(Err(err))), -// } -// }); -// handles.push(handle); -// } -// WorkToDo::Shutdown() => { -// // Wait for all dispatches in flight to occur -// for handle in handles { -// if let Err(e) = handle.await { -// error!("Pending task returned {}", e); -// } -// } -// // Wait for pending taks to complete -// tokio::join!( -// worker1.available.notified(), -// worker2.available.notified(), -// worker3.available.notified(), -// worker4.available.notified(), -// ); -// debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ -// ComputeResource::GPU(gpu_id, core_id), -// ])))); -// return; -// } -// } -// } -// } - -// async fn run_pool(core_id: u8, gpu_id: u8, queue: Box) { -// let worker1 = Arc::new(Worker::new(core_id + 4, gpu_id)); -// let worker2 = Arc::new(Worker::new(core_id + 5, gpu_id)); -// let worker3 = Arc::new(Worker::new(core_id + 6, gpu_id)); -// let worker4 = Arc::new(Worker::new(core_id + 7, gpu_id)); - -// tokio::spawn(process_output(worker1.clone())); -// tokio::spawn(process_output(worker2.clone())); -// tokio::spawn(process_output(worker3.clone())); -// tokio::spawn(process_output(worker4.clone())); - -// tokio::join!(process_inputs( -// core_id, -// gpu_id, -// queue, -// worker1.clone(), -// worker2.clone(), -// worker3.clone(), -// worker4.clone() -// )); -// } - fn manage_worker( + resources: (u8, u8), core_id: u8, gpu_id: u8, queue: Arc, @@ -704,15 +421,6 @@ fn manage_worker( break; } } - - // if result.is_ok() { - // if let Err(err) = recorder.record(RecordPoint::EngineEnd) { - // debt.fulfill(Box::new(Err(err))); - // continue; - // } - // } - // let results = Box::new(result.and_then(|context| Ok(WorkDone::Context(context)))); - // debt.fulfill(results); } WorkToDo::TransferArguments(transfer_args) => { let TransferArguments { @@ -770,9 +478,9 @@ fn manage_worker( continue; } WorkToDo::Shutdown() => { - // TODO: return "true" resources + // Return original resources that were given to Engine debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ - ComputeResource::GPU(core_id, gpu_id), + ComputeResource::GPU(resources.0, resources.1), ])))); // Inform other threads to shutdown as well when they are done @@ -786,29 +494,11 @@ fn manage_worker( const NUM_WORKERS: u8 = 2; pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { - // let counter = AtomicU8::new(0); - // let rt = tokio::runtime::Builder::new_multi_thread() - // .worker_threads(4) - // .on_thread_start(move || { - // let inc = counter.fetch_add(1, Ordering::SeqCst); - // // set core affinity - // if !core_affinity::set_for_current(core_affinity::CoreId { - // id: (core_id + inc).into(), - // }) { - // panic!("core received core id that could not be set"); - // } - // }) - // .enable_all() - // .build() - // .expect("Runtime building failed"); - - // rt.block_on(run_pool(core_id, gpu_id, queue)); - let done = Arc::new(AtomicBool::new(false)); let queue: Arc = queue.into(); for offset in 0..NUM_WORKERS { let queue = queue.clone(); let done = done.clone(); - spawn(move || manage_worker(core_id + 2 * offset, gpu_id, queue, done)); + spawn(move || manage_worker((core_id, gpu_id), core_id + 2 * offset, gpu_id, queue, done)); } } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs index 1f8d182f..4116bf11 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/hip.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/hip.rs @@ -37,7 +37,8 @@ pub struct DeviceAllocation { unsafe impl Send for DeviceAllocation {} unsafe impl Sync for DeviceAllocation {} -// Should be associated with a DeviceAllocation; maybe use lifetimes but they are annoying +// Should be associated with a DeviceAllocation; maybe use lifetimes for this in the future +#[repr(C)] // We take a raw pointers, so make sure the layout is as expected pub struct DevicePointer { pub ptr: *const c_void, } @@ -48,6 +49,7 @@ extern "C" { fn hipSetDevice(gpu_id: i32) -> ErrorT; fn hipGetDevice(deviceId: *const i32) -> ErrorT; fn hipDeviceSynchronize() -> ErrorT; + fn hipDeviceSetLimit(limit: u32, value: size_t) -> ErrorT; fn hipModuleLoad(module: *mut _ModuleT, fname: *const i8) -> ErrorT; fn hipModuleLoadData(module: *mut _ModuleT, image: *const c_void) -> ErrorT; fn hipModuleUnload(module: _ModuleT) -> ErrorT; @@ -77,6 +79,15 @@ extern "C" { fn hipMemset(dst: *const c_void, value: i32, sizeBytes: size_t) -> ErrorT; } +fn get_error_string(hip_error: ErrorT) -> String { + unsafe { + CStr::from_ptr(hipGetErrorString(hip_error) as *mut i8) + .to_str() + .expect("Invalid ROCm error string (shouldn't happen)") + .to_string() + } +} + macro_rules! checked_call { ($fcall: expr) => { unsafe { @@ -114,26 +125,23 @@ pub fn device_synchronize() -> DandelionResult<()> { Ok(()) } -fn get_error_string(hip_error: ErrorT) -> String { - unsafe { - CStr::from_ptr(hipGetErrorString(hip_error) as *mut i8) - .to_str() - .expect("Invalid ROCm error string (shouldn't happen)") - .to_string() - } +pub fn limit_heap_size(size: usize) -> DandelionResult<()> { + // hipLimitMallocHeapSize = 2 + checked_call!(hipDeviceSetLimit(2, size)); + Ok(()) } pub fn module_load(path: &str) -> DandelionResult { let mut ret: _ModuleT = null(); - // TODO: ask Tom about errors here - let fname = CString::new(path).or(Err(DandelionError::HipError("Invalid Path".into())))?; + let fname = + CString::new(path).or(Err(DandelionError::HipError("Invalid Module Path".into())))?; checked_call!(hipModuleLoad(&mut ret as *mut _ModuleT, fname.as_ptr())); Ok(ModuleT(ret)) } -// TODO: mark these functions as unsafe -#[allow(clippy::not_unsafe_ptr_arg_deref)] -pub fn module_load_data(image: *const c_void) -> DandelionResult { +/// # Safety +/// Requires *image* to point to a valid hsaco code object +pub unsafe fn module_load_data(image: *const c_void) -> DandelionResult { let mut ret: _ModuleT = null(); checked_call!(hipModuleLoadData(&mut ret as *mut _ModuleT, image)); @@ -151,8 +159,10 @@ pub fn module_get_function(module: &ModuleT, name: &str) -> DandelionResult { #[cfg(feature = "gpu")] /// Only really used for GPU, but defined here so we can access private fields of DandelionSystemData -pub fn write_gpu_outputs( +/// # Safety +/// Requires *base* to point to the stat of *context* +pub unsafe fn write_gpu_outputs( context: &mut Context, system_data_offset: usize, base: *mut u8, diff --git a/machine_interface/hip_interface/basic_io.json b/machine_interface/tests/data/basic_io.json similarity index 86% rename from machine_interface/hip_interface/basic_io.json rename to machine_interface/tests/data/basic_io.json index f2bebfe6..a633f342 100644 --- a/machine_interface/hip_interface/basic_io.json +++ b/machine_interface/tests/data/basic_io.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + "module_path": "module.hsaco", "kernels": ["check_then_write"], "blueprint": { "inputs": ["A"], diff --git a/machine_interface/hip_interface/inference.json b/machine_interface/tests/data/inference.json similarity index 95% rename from machine_interface/hip_interface/inference.json rename to machine_interface/tests/data/inference.json index 56dc6856..ee6e8d46 100644 --- a/machine_interface/hip_interface/inference.json +++ b/machine_interface/tests/data/inference.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", + "module_path": "mlops.hsaco", "kernels": ["matmul_f", "convolution_f", "relu_2d_f", "maxpool_f"], "blueprint": { "inputs": ["cfg", "A", "B"], diff --git a/machine_interface/hip_interface/inference_batched.json b/machine_interface/tests/data/inference_batched.json similarity index 96% rename from machine_interface/hip_interface/inference_batched.json rename to machine_interface/tests/data/inference_batched.json index 250f9e84..3ae4a3ef 100644 --- a/machine_interface/hip_interface/inference_batched.json +++ b/machine_interface/tests/data/inference_batched.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", + "module_path": "mlops.hsaco", "kernels": ["convolution_f_batched", "relu_2d_f_batched", "maxpool_f_batched"], "blueprint": { "inputs": ["cfg", "A", "B"], diff --git a/machine_interface/hip_interface/matmul_loop.json b/machine_interface/tests/data/matmul_loop.json similarity index 87% rename from machine_interface/hip_interface/matmul_loop.json rename to machine_interface/tests/data/matmul_loop.json index 389ddaf3..f2d83c8e 100644 --- a/machine_interface/hip_interface/matmul_loop.json +++ b/machine_interface/tests/data/matmul_loop.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", + "module_path": "mlops.hsaco", "kernels": ["matmul_loop"], "blueprint": { "inputs": ["A"], diff --git a/machine_interface/hip_interface/matmul_para.json b/machine_interface/tests/data/matmul_para.json similarity index 88% rename from machine_interface/hip_interface/matmul_para.json rename to machine_interface/tests/data/matmul_para.json index bf828982..732a5505 100644 --- a/machine_interface/hip_interface/matmul_para.json +++ b/machine_interface/tests/data/matmul_para.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/mlops.hsaco", + "module_path": "mlops.hsaco", "kernels": ["matmul_para"], "blueprint": { "inputs": ["cfg", "A"], diff --git a/machine_interface/hip_interface/minimal.json b/machine_interface/tests/data/minimal.json similarity index 87% rename from machine_interface/hip_interface/minimal.json rename to machine_interface/tests/data/minimal.json index db9c2962..73e2a75c 100644 --- a/machine_interface/hip_interface/minimal.json +++ b/machine_interface/tests/data/minimal.json @@ -1,5 +1,5 @@ { - "module_path": "/home/smithj/dandelion/machine_interface/hip_interface/module.hsaco", + "module_path": "module.hsaco", "kernels": ["set_mem", "check_mem"], "blueprint": { "inputs": [], diff --git a/machine_interface/hip_interface/mlops.hsaco b/machine_interface/tests/libs/mlops.hsaco similarity index 100% rename from machine_interface/hip_interface/mlops.hsaco rename to machine_interface/tests/libs/mlops.hsaco diff --git a/machine_interface/hip_interface/module.hsaco b/machine_interface/tests/libs/module.hsaco similarity index 100% rename from machine_interface/hip_interface/module.hsaco rename to machine_interface/tests/libs/module.hsaco diff --git a/server/src/main.rs b/server/src/main.rs index 8b9ebe90..dfc630d5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -141,6 +141,37 @@ async fn serve_request( return response; } +#[derive(Debug, Deserialize)] +struct RegisterLibrary { + name: String, + library: Vec, +} + +async fn register_library(req: Request) -> Result, Infallible> { + let bytes = req + .collect() + .await + .expect("Failed to extract bytes from library registration") + .to_bytes(); + + let request_map: RegisterLibrary = + bson::from_slice(&bytes).expect("Should be able to deserialise request"); + + // write library to file + std::fs::create_dir_all(FUNCTION_FOLDER_PATH.to_owned() + "/libs").unwrap(); + let mut path_buff = PathBuf::from(FUNCTION_FOLDER_PATH); + path_buff.push(request_map.name.clone()); + let mut function_file = std::fs::File::create(path_buff.clone()) + .expect("Failed to create file for registering library"); + function_file + .write_all(&request_map.library) + .expect("Failed to write file with content for registering"); + + return Ok::<_, Infallible>(Response::new(DandelionBody::from_vec( + "Library registered".as_bytes().to_vec(), + ))); +} + #[derive(Debug, Deserialize)] struct RegisterFunction { name: String, @@ -270,6 +301,7 @@ async fn service( // TODO rename to cold func and hot func, remove matmul, compute, io "/register/function" => register_function(req, dispatcher).await, "/register/composition" => register_composition(req, dispatcher).await, + "/register/library" => register_library(req).await, "/cold/matmul" | "/cold/matmulstore" | "/cold/compute" From ad832ed2ec6a4cb82a3762518cf2c6660411b9b0 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 8 Jul 2024 11:43:30 +0200 Subject: [PATCH 125/176] fix reqwest, QOL changes: update readme, add more discriptive errors, more comments, update test structure --- README.md | 19 + dandelion_commons/src/lib.rs | 11 +- .../src/function_driver/compute_driver/gpu.rs | 21 +- .../compute_driver/gpu/config_parsing.rs | 8 +- .../compute_driver/gpu/gpu_tests.rs | 25 +- .../compute_driver/gpu/gpu_utils.rs | 12 +- .../src/function_driver/compute_driver/mmu.rs | 2 +- .../function_driver/system_driver/reqwest.rs | 540 +++++++++++------- .../{basic_io.json => test_gpu_basic_io.json} | 0 ...inference.json => test_gpu_inference.json} | 0 ...d.json => test_gpu_inference_batched.json} | 0 ...ul_loop.json => test_gpu_matmul_loop.json} | 0 ...ul_para.json => test_gpu_matmul_para.json} | 0 .../{minimal.json => test_gpu_minimal.json} | 0 server/src/main.rs | 5 +- server/tests/server_tests.rs | 62 +- 16 files changed, 479 insertions(+), 226 deletions(-) rename machine_interface/tests/data/{basic_io.json => test_gpu_basic_io.json} (100%) rename machine_interface/tests/data/{inference.json => test_gpu_inference.json} (100%) rename machine_interface/tests/data/{inference_batched.json => test_gpu_inference_batched.json} (100%) rename machine_interface/tests/data/{matmul_loop.json => test_gpu_matmul_loop.json} (100%) rename machine_interface/tests/data/{matmul_para.json => test_gpu_matmul_para.json} (100%) rename machine_interface/tests/data/{minimal.json => test_gpu_minimal.json} (100%) diff --git a/README.md b/README.md index 58678dde..e4ada6e3 100644 --- a/README.md +++ b/README.md @@ -111,3 +111,22 @@ sudo mount -o remount,exec /dev/shm ### MMU worker path To use a `mmu_worker` that is not at the original location it was built in, set the `PROCESS_WORKER_PATH` environment variable to point to the desired binary + +## GPU worker build + +The `gpu_worker` binary required by the `gpu_process` is assumed to be present in corresponding `target` directory: +``` +cargo build --bin gpu_worker --features gpu_process --target $(arch)-unknown-linux-gnu [--release] +``` + +Also make sure that shared memory objects are executable: +``` +sudo mount -o remount,exec /dev/shm +``` + +### GPU worker path + +To use a `gpu_worker` that is not at the original location it was built in, set the `GPU_WORKER_PATH` environment variable to point to the desired binary + +## GPU engine library path +`DANDELION_LIBRARY_PATH` overwrites the directory where the GPU engines will look for kernel libraries. If the variable is unset the engines will look in `machine_interface/tests/libs/`. \ No newline at end of file diff --git a/dandelion_commons/src/lib.rs b/dandelion_commons/src/lib.rs index d1488766..8fb24095 100644 --- a/dandelion_commons/src/lib.rs +++ b/dandelion_commons/src/lib.rs @@ -109,8 +109,6 @@ pub enum DandelionError { // Gerneral util errors /// error while performing IO on a file FileError, - /// error from HIP Runtime - HipError(String), // protection errors /// the function issued a system call outside the authorized list UnauthorizedSyscall, @@ -126,6 +124,15 @@ pub enum DandelionError { // Frontend errors /// Error in the frontend receiveing requests RequestError(FrontendError), + // GPU engine specfific errors + /// error from HIP Runtime + HipError(String), + /// identifier used in config file was not declared before + UndeclaredIdentifier(String), + /// argument given to the FromInput sizing was out of bounds + FromInputOutOfBounds, + /// could not deserialise JSON for config + ParsingJSONError(String), } // Implement display to be compliant with core::error::Error diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index e86847ff..c46c0ee0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -63,13 +63,21 @@ fn execute( for arg in args { match arg { Argument::Ptr(id) => { - let idx = buffers.get(id).unwrap().0; + let idx = buffers + .get(id) + .ok_or(DandelionError::UndeclaredIdentifier(id.to_owned()))? + .0; let dev_ptr = buffer_pool.get(idx)?; dev_ptrs.push(Box::into_raw(Box::new(dev_ptr))); params.push(*dev_ptrs.last().unwrap() as *const c_void); } Argument::Sizeof(id) => { - params.push(&buffers.get(id).unwrap().1 as *const _ as *const c_void); + params.push( + &buffers + .get(id) + .ok_or(DandelionError::UndeclaredIdentifier(id.to_owned()))? + .1 as *const _ as *const c_void, + ); } Argument::Constant(constant) => { params.push(constant as *const _ as *const c_void); @@ -82,7 +90,7 @@ fn execute( config .kernels .get(name) - .ok_or(DandelionError::ConfigMissmatch)?, + .ok_or(DandelionError::UndeclaredIdentifier(name.to_owned()))?, get_size(&launch_config.grid_dim_x, buffers, context)? as u32, get_size(&launch_config.grid_dim_y, buffers, context)? as u32, get_size(&launch_config.grid_dim_z, buffers, context)? as u32, @@ -163,6 +171,7 @@ pub fn gpu_run( &config, )?; + // Copy results back into host memory from device memory unsafe { write_gpu_outputs::( &mut context, @@ -191,7 +200,7 @@ pub struct GpuLoop { impl EngineLoop for GpuLoop { fn init(resource: ComputeResource) -> DandelionResult> { let ComputeResource::GPU(cpu_slot, gpu_id) = resource else { - return Err(DandelionError::ConfigMissmatch); + return Err(DandelionError::EngineResourceError); }; let (sender, receiver) = mpsc::channel(); @@ -245,7 +254,7 @@ fn common_parse( function_path: String, static_domain: &'static dyn crate::memory_domain::MemoryDomain, ) -> DandelionResult { - eprintln!("{function_path}"); + // Deserialise user provided config JSON, extract module suffix let (mut gpu_config, module_suffix) = config_parsing::parse_config(&function_path)?; let mut path = std::env::var("DANDELION_LIBRARY_PATH") @@ -253,8 +262,6 @@ fn common_parse( path += &module_suffix; - eprintln!("{path}"); - let code_object = load_u8_from_file(path)?; let size = code_object.len() * size_of::(); gpu_config.code_object_offset = diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 0a236df4..5253f538 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -97,12 +97,10 @@ impl GpuConfig { } pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { - let file = File::open(path).map_err(|_| DandelionError::ConfigMissmatch)?; + let file = File::open(path).map_err(|_| DandelionError::FileError)?; let reader = BufReader::new(file); - let ir: GpuConfigIR = serde_json::from_reader(reader).map_err(|e| { - eprintln!("Parsing error: {e}"); - DandelionError::ConfigMissmatch - })?; + let ir: GpuConfigIR = serde_json::from_reader(reader) + .map_err(|e| DandelionError::ParsingJSONError(format!("{e}")))?; // Copy kind of unnecessary as ir.into() doesn't need the string, but less bug prone than .drain(..).collect() let module_path = ir.module_path.clone(); Ok((ir.into(), module_path)) diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs index 095335a2..1d342cd3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -40,7 +40,10 @@ fn minimal() { let lock = GPU_LOCK.lock().unwrap(); let driver: Box = get_driver(); engine_minimal::( - &format!("{}/tests/data/minimal.json", env!("CARGO_MANIFEST_DIR")), + &format!( + "{}/tests/data/test_gpu_minimal.json", + env!("CARGO_MANIFEST_DIR") + ), MemoryResource::None, driver, vec![ComputeResource::GPU(7, 1)], @@ -53,7 +56,10 @@ fn basic_input_output() { let lock = GPU_LOCK.lock().unwrap(); let driver: Box = get_driver(); let (mut function_context, config, queue) = prepare_engine_and_function::( - &format!("{}/tests/data/basic_io.json", env!("CARGO_MANIFEST_DIR")), + &format!( + "{}/tests/data/test_gpu_basic_io.json", + env!("CARGO_MANIFEST_DIR") + ), MemoryResource::None, &driver, vec![ComputeResource::GPU(7, 0)], @@ -118,7 +124,10 @@ fn basic_input_output() { #[test] fn engine_matmul_3x3_loop() { let lock = GPU_LOCK.lock().unwrap(); - let filename = &format!("{}/tests/data/matmul_loop.json", env!("CARGO_MANIFEST_DIR")); + let filename = &format!( + "{}/tests/data/test_gpu_matmul_loop.json", + env!("CARGO_MANIFEST_DIR") + ); let dom_init = MemoryResource::None; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; @@ -201,7 +210,10 @@ fn engine_matmul_3x3_loop() { #[test] fn engine_matmul_size_sweep_parallel() { let lock = GPU_LOCK.lock().unwrap(); - let filename = &format!("{}/tests/data/matmul_para.json", env!("CARGO_MANIFEST_DIR")); + let filename = &format!( + "{}/tests/data/test_gpu_matmul_para.json", + env!("CARGO_MANIFEST_DIR") + ); let dom_init = MemoryResource::None; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; @@ -393,7 +405,10 @@ fn get_expected_inference_output() -> Vec { #[test] fn inference_benchmark_function() { let lock = GPU_LOCK.lock().unwrap(); - let filename = &format!("{}/tests/data/inference.json", env!("CARGO_MANIFEST_DIR")); + let filename = &format!( + "{}/tests/data/test_gpu_inference.json", + env!("CARGO_MANIFEST_DIR") + ); let dom_init = MemoryResource::None; let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index bb80a12f..4ad8b97b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -42,7 +42,7 @@ pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult Some(set) => set.ident == ident, _ => false, }) - .ok_or(DandelionError::ConfigMissmatch)? + .ok_or(DandelionError::UndeclaredIdentifier(ident.to_owned()))? .as_ref() .unwrap(); // okay, as we matched successfully @@ -69,7 +69,7 @@ pub unsafe fn copy_data_to_device( Some(set) => set.ident == ident, _ => false, }) - .ok_or(DandelionError::ConfigMissmatch)? + .ok_or(DandelionError::UndeclaredIdentifier(ident.to_owned()))? .as_ref() .unwrap(); // okay, as we matched successfully @@ -99,18 +99,18 @@ pub fn get_size( Some(set) => &set.ident == bufname, _ => false, }) - .ok_or(DandelionError::ConfigMissmatch)? + .ok_or(DandelionError::UndeclaredIdentifier(bufname.to_owned()))? .as_ref() .unwrap(); // okay, as we matched successfully let data_item = dataset .buffers .first() - .ok_or(DandelionError::ConfigMissmatch)?; + .ok_or(DandelionError::FromInputOutOfBounds)?; let relative_offset = *idx * std::mem::size_of::(); if relative_offset > data_item.data.size { - return Err(DandelionError::ConfigMissmatch); + return Err(DandelionError::FromInputOutOfBounds); } let mut buf: [u64; 1] = [0]; @@ -120,7 +120,7 @@ pub fn get_size( } Sizing::Sizeof(bufname) => Ok(buffers .get(bufname) - .ok_or(DandelionError::ConfigMissmatch)? + .ok_or(DandelionError::UndeclaredIdentifier(bufname.to_owned()))? .1 as u64), } } diff --git a/machine_interface/src/function_driver/compute_driver/mmu.rs b/machine_interface/src/function_driver/compute_driver/mmu.rs index 0a0b973e..d7084165 100644 --- a/machine_interface/src/function_driver/compute_driver/mmu.rs +++ b/machine_interface/src/function_driver/compute_driver/mmu.rs @@ -174,7 +174,7 @@ struct MmuLoop { impl EngineLoop for MmuLoop { fn init(resource: ComputeResource) -> DandelionResult> { let ComputeResource::CPU(core_id) = resource else { - return Err(DandelionError::ConfigMissmatch); + return Err(DandelionError::EngineResourceError); }; return Ok(Box::new(MmuLoop { cpu_slot: core_id })); } diff --git a/machine_interface/src/function_driver/system_driver/reqwest.rs b/machine_interface/src/function_driver/system_driver/reqwest.rs index 9bcb8c55..5c35e145 100644 --- a/machine_interface/src/function_driver/system_driver/reqwest.rs +++ b/machine_interface/src/function_driver/system_driver/reqwest.rs @@ -1,20 +1,30 @@ use crate::{ function_driver::{ - thread_utils::{start_thread, EngineLoop}, - ComputeResource, Driver, Function, FunctionConfig, SystemFunction, WorkQueue, + ComputeResource, Driver, Function, FunctionConfig, SystemFunction, WorkDone, WorkQueue, + WorkToDo, }, - memory_domain::{Context, ContextTrait}, + memory_domain::{self, Context, ContextTrait}, + promise::Debt, DataItem, DataSet, Position, }; +use bytes::Buf; use core_affinity::set_for_current; -use dandelion_commons::{DandelionError, DandelionResult}; +use dandelion_commons::{ + records::{RecordPoint, Recorder}, + DandelionError, DandelionResult, +}; +use futures::StreamExt; use http::{version::Version, HeaderName, HeaderValue, Method}; use log::error; use reqwest::{header::HeaderMap, Client}; use std::sync::Arc; -use tokio::runtime::{Builder, Runtime}; +use tokio::runtime::Builder; struct RequestInformation { + /// name of the request item + item_name: String, + /// key of the request item + item_key: u32, method: Method, uri: String, version: Version, @@ -22,36 +32,26 @@ struct RequestInformation { body: Vec, } struct ResponseInformation { - status: String, - headermap: HeaderMap, + /// name of the original request data item + item_name: String, + // key of the original request data item + item_key: u32, + /// contains both the status line as well as all headers + preamble: String, body: bytes::Bytes, } -fn http_setup(context: &Context) -> DandelionResult { - let request_set = match context.content.iter().find(|set_option| { - if let Some(set) = set_option { - return set.ident == "request"; - } else { - return false; - } - }) { - Some(Some(set)) => set, - _ => { - return Err(DandelionError::MalformedSystemFuncArg(String::from( - "No request set", - ))) - } - }; - if request_set.buffers.len() != 1 { - return Err(DandelionError::MalformedSystemFuncArg(String::from( - "More than one request item in set", - ))); - } - let request_item = &request_set.buffers[0]; - let mut request_buffer = Vec::::with_capacity(request_item.data.size); - request_buffer.resize(request_item.data.size, 0); - context.read(request_item.data.offset, &mut request_buffer)?; - let request_line = match String::from_utf8(request_buffer) { +fn convert_to_request( + mut raw_request: Vec, + item_name: String, + item_key: u32, +) -> DandelionResult { + // read first line to get request line + let request_index = raw_request + .iter() + .position(|character| *character == b'\n') + .unwrap_or(raw_request.len()); + let request_line = match std::str::from_utf8(&raw_request[0..request_index]) { Ok(line) => line, Err(_) => { return Err(DandelionError::InvalidSystemFuncArg(String::from( @@ -93,7 +93,8 @@ fn http_setup(context: &Context) -> DandelionResult { Some(version_string) if version_string == "HTTP/2.0" => Version::HTTP_2, Some(version_string) if version_string == "HTTP/3.0" => Version::HTTP_3, Some(version_string) => { - return Err(DandelionError::InvalidSystemFuncArg(String::from( + return Err(DandelionError::InvalidSystemFuncArg(format!( + "unkown http version: {}", version_string, ))) } @@ -104,53 +105,55 @@ fn http_setup(context: &Context) -> DandelionResult { } }; - let headermap = if let Some(Some(header_set)) = context.content.iter().find(|&set_option| { - set_option - .as_ref() - .and_then(|set| Some(set.ident == "headers")) - .unwrap_or(false) - }) { - let mut headermap = HeaderMap::with_capacity(header_set.buffers.len()); - for header_item in &header_set.buffers { - let mut header_value = Vec::::with_capacity(header_item.data.size); - context.read(header_item.data.offset, &mut header_value)?; - let value = HeaderValue::from_bytes(&header_value).or(Err( - DandelionError::MalformedSystemFuncArg(String::from( - "header value not utf8 conformant", - )), - ))?; - let header_name = HeaderName::from_bytes(header_item.ident.as_bytes()).unwrap(); - if !headermap.append(header_name.clone(), value.clone()) { - let _ = headermap.insert(header_name, value); - } + // read new lines until end of header map + let mut header_index = request_index + 1; + let mut headermap = HeaderMap::new(); + while header_index < raw_request.len() { + let header_line = raw_request[header_index..] + .iter() + .position(|character| *character == b'\n') + .and_then(|header_end| Some(&raw_request[header_index..header_index + header_end])) + .unwrap_or(&raw_request[header_index..]); + // skip the \n at the index itself + header_index += header_line.len() + 1; + // if the header line is empty there are two consequtive new lines which means the headers are finished + // or the request is at the end which also means there are not more lines to read + if header_line.len() == 0 { + break; } - headermap - } else { - HeaderMap::with_capacity(0) - }; - - let body = if let Some(Some(body_set)) = context.content.iter().find(|&set_option| { - set_option - .as_ref() - .and_then(|set| Some(set.ident == "body")) - .unwrap_or(false) - }) { - if body_set.buffers.len() < 1 { - Vec::new() - } else { - let body_item = &body_set.buffers[0]; - let mut body_buffer = Vec::::with_capacity(body_item.data.size); - body_buffer.resize(body_item.data.size, 0); - context.read(body_item.data.offset, &mut body_buffer)?; - body_buffer - // Body::from(body_buffer) + let split_index = header_line + .iter() + .position(|character| *character == b':') + .ok_or(DandelionError::MalformedSystemFuncArg(String::from( + "Header line does not contain \':\'", + )))?; + let (key, value) = header_line.split_at(split_index); + let header_key = HeaderName::from_bytes(key).or(Err( + DandelionError::MalformedSystemFuncArg(String::from("Header key not utf-8")), + ))?; + let header_value = HeaderValue::from_bytes(&value[1..]).or(Err( + DandelionError::MalformedSystemFuncArg(String::from( + "Header value not utf-8 conformant", + )), + ))?; + match headermap.entry(header_key) { + http::header::Entry::Occupied(mut occupied) => occupied.append(header_value), + http::header::Entry::Vacant(vacant) => { + vacant.insert(header_value); + } } + } + let body = if header_index < raw_request.len() { + raw_request.drain(..header_index); + raw_request } else { - // Body::empty() - Vec::new() + vec![] }; + log::trace!("Reqwest body: {:?}", body); return Ok(RequestInformation { + item_name, + item_key, method, uri, version, @@ -159,11 +162,41 @@ fn http_setup(context: &Context) -> DandelionResult { }); } +fn http_setup(context: &Context) -> DandelionResult> { + let request_set = match context.content.iter().find(|set_option| { + if let Some(set) = set_option { + return set.ident == "request"; + } else { + return false; + } + }) { + Some(Some(set)) => set, + _ => { + return Err(DandelionError::MalformedSystemFuncArg(String::from( + "No request set", + ))) + } + }; + let request_info: DandelionResult> = request_set + .buffers + .iter() + .map(|set_item| { + let mut request_buffer = Vec::with_capacity(set_item.data.size); + request_buffer.resize(set_item.data.size, 0); + context.read(set_item.data.offset, &mut request_buffer)?; + convert_to_request(request_buffer, set_item.ident.clone(), set_item.key) + }) + .collect(); + return request_info; +} + async fn http_request( client: Client, request_info: RequestInformation, ) -> DandelionResult { let RequestInformation { + item_name, + item_key, method, uri, version, @@ -203,8 +236,8 @@ async fn http_request( }; // write the status line - let status = format!( - "{:?} {} {}", + let mut preamble = format!( + "{:?} {} {}\n", response.version(), response.status().as_str(), response.status().canonical_reason().unwrap_or("") @@ -219,7 +252,11 @@ async fn http_request( .and_then(|len_str| len_str.parse::().ok()) .ok_or(DandelionError::SystemFuncResponseError)?; - let headers = response.headers().to_owned(); + for (key, value) in response.headers() { + preamble.push_str(&format!("{}:{}\n", key, value.to_str().unwrap())); + } + + preamble.push('\n'); let body = match response.bytes().await { Ok(bytes) => bytes, @@ -228,8 +265,9 @@ async fn http_request( if content_length == body.len() { let response_info = ResponseInformation { - status, - headermap: headers, + item_name, + item_key, + preamble, body, }; return Ok(response_info); @@ -238,140 +276,252 @@ async fn http_request( } } -fn http_context_write( - context: &mut Context, - output_set_names: Arc>, - response: ResponseInformation, -) -> DandelionResult<()> { - context.clear_metadata(); - let mut content = Vec::>::new(); - if content.try_reserve(output_set_names.len()).is_err() { - return Err(DandelionError::OutOfMemory); - } +fn http_context_write(context: &mut Context, response: ResponseInformation) -> DandelionResult<()> { let ResponseInformation { - status, - headermap, - body, + item_name, + item_key, + preamble, + mut body, } = response; - if output_set_names.iter().any(|elem| elem == "status") { - let status_offset = context.get_free_space_and_write_slice(status.as_bytes())? as usize; - content.push(Some(DataSet { - ident: String::from("status"), - buffers: vec![DataItem { - ident: String::from("status"), - data: Position { - offset: status_offset, - size: status.len(), - }, - key: 0, - }], - })); - } - if output_set_names.iter().any(|elem| elem == "headers") { - let mut header_dataset = DataSet { - ident: String::from("headers"), - buffers: vec![], - }; - if header_dataset.buffers.try_reserve(headermap.len()).is_err() { - return Err(DandelionError::OutOfMemory); - } - for (key_opt, header_value) in headermap.into_iter() { - if let Some(key) = key_opt { - let value = header_value.as_bytes(); - let value_offset = context.get_free_space_and_write_slice(value)? as usize; - let item = DataItem { - ident: key.to_string(), - data: Position { - offset: value_offset, - size: value.len(), - }, - key: 0, - }; - header_dataset.buffers.push(item); - } - } - content.push(Some(header_dataset)); + // allocate space in the context for the entire response + let preable_len = preamble.len(); + let body_len = body.len(); + let response_len = preable_len + body_len; + let response_start = context.get_free_space(response_len, 128)?; + context.write(response_start, preamble.as_bytes())?; + let mut bytes_read = 0; + while bytes_read < body_len { + let chunk = body.chunk(); + let reading = chunk.len(); + context.write(response_start + preable_len + bytes_read, chunk)?; + body.advance(reading); + bytes_read += reading; } - - if output_set_names.iter().any(|elem| elem == "body") { - let body_length = body.len(); - let body_offset = context.get_free_space_and_write_slice(&body)? as usize; - let body_set = DataSet { - ident: String::from("body"), - buffers: vec![DataItem { - ident: String::from("body"), - data: Position { - offset: body_offset, - size: body_length, - }, - key: 0, - }], - }; - content.push(Some(body_set)); + assert_eq!( + 0, + body.remaining(), + "Body should have non remaining as we have read the amount given as len in the beginning" + ); + if let Some(response_set) = &mut context.content[0] { + response_set.buffers.push(DataItem { + ident: item_name.clone(), + key: item_key, + data: Position { + offset: response_start, + size: response_len, + }, + }) } - context.content = content; + if let Some(body_set) = &mut context.content[1] { + body_set.buffers.push(DataItem { + ident: item_name, + key: item_key, + data: Position { + offset: response_start + preable_len, + size: response_len - preable_len, + }, + }) + } + return Ok(()); } -fn http_run( +async fn http_run( mut context: Context, - runtime: &Runtime, - client: &Client, + client: Client, output_set_names: Arc>, -) -> DandelionResult { - let response = { - let _guard = runtime.enter(); - let request = http_setup(&context)?; - runtime.block_on(http_request(client.clone(), request))? + debt: Debt, + mut recorder: Recorder, +) -> () { + let request_vec = match http_setup(&context) { + Ok(request) => request, + Err(err) => { + debt.fulfill(Box::new(Err(err))); + return; + } + }; + let response_vec = match futures::future::try_join_all( + request_vec + .into_iter() + .map(|request| http_request(client.clone(), request)), + ) + .await + { + Ok(resp) => resp, + Err(err) => { + debt.fulfill(Box::new(Err(err))); + return; + } }; - http_context_write(&mut context, output_set_names, response)?; - return Ok(context); -} - -struct ReqwestLoop { - runtime: Runtime, - client: Client, + // only clear once for all requests + context.clear_metadata(); + if !output_set_names.is_empty() { + context.content = vec![None, None]; + if output_set_names.iter().any(|elem| elem == "response") { + context.content[0] = Some(DataSet { + ident: String::from("response"), + buffers: vec![], + }) + } + if output_set_names.iter().any(|elem| elem == "body") { + context.content[1] = Some(DataSet { + ident: String::from("body"), + buffers: vec![], + }) + } + let write_results: DandelionResult> = response_vec + .into_iter() + .map(|response| http_context_write(&mut context, response)) + .collect(); + if let Err(err) = write_results { + debt.fulfill(Box::new(Err(err))); + return; + } + } + if let Err(err) = recorder.record(RecordPoint::EngineEnd) { + debt.fulfill(Box::new(Err(err))); + return; + } + let results = Box::new(Ok(WorkDone::Context(context))); + debt.fulfill(results); + return; } -impl EngineLoop for ReqwestLoop { - fn init(resource: ComputeResource) -> DandelionResult> { - let ComputeResource::CPU(core_id) = resource else { - return Err(DandelionError::ConfigMissmatch); +async fn engine_loop(queue: Box) -> Debt { + log::debug!("Reqwest engine Init"); + let client = Client::new(); + // TODO FIX! This should not be necessary! + let mut queue_ref = Box::leak(queue); + let mut tuple; + loop { + (tuple, queue_ref) = queue_ref.into_future().await; + let (args, debt) = if let Some((tuple_args, tuple_debt)) = tuple { + (tuple_args, tuple_debt) + } else { + panic!("Workqueue poll next returned none") }; - log::debug!("Hyper engine Init"); - let runtime = Builder::new_multi_thread() - .on_thread_start(move || { - if !set_for_current(core_affinity::CoreId { id: core_id.into() }) { - return; + match args { + WorkToDo::FunctionArguments { + config, + context, + output_sets, + mut recorder, + } => { + if let Err(err) = recorder.record(RecordPoint::EngineStart) { + debt.fulfill(Box::new(Err(err))); + continue; } - }) - .worker_threads(1) - .enable_all() - .build() - .or(Err(DandelionError::EngineError))?; - let client = Client::new(); - return Ok(Box::new(ReqwestLoop { runtime, client })); + // let result = engine_state.run(config, context, output_sets); + log::debug!("Reqwest engine running function"); + let function = match config { + FunctionConfig::SysConfig(sys_func) => sys_func, + _ => { + debt.fulfill(Box::new(Err(DandelionError::ConfigMissmatch))); + continue; + } + }; + match function { + SystemFunction::HTTP => { + tokio::spawn(http_run( + context, + client.clone(), + output_sets, + debt, + recorder, + )); + } + #[allow(unreachable_patterns)] + _ => { + debt.fulfill(Box::new(Err(DandelionError::MalformedConfig))); + } + }; + continue; + } + WorkToDo::TransferArguments { + source, + mut destination, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name, + source_set_index, + source_item_index, + mut recorder, + } => { + match recorder.record(RecordPoint::TransferStart) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let transfer_result = memory_domain::transfer_data_item( + &mut destination, + &source, + destination_set_index, + destination_allignment, + destination_item_index, + destination_set_name.as_str(), + source_set_index, + source_item_index, + ); + match recorder.record(RecordPoint::TransferEnd) { + Ok(()) => (), + Err(err) => { + debt.fulfill(Box::new(Err(err))); + continue; + } + } + let transfer_return = transfer_result.and(Ok(WorkDone::Context(destination))); + debt.fulfill(Box::new(transfer_return)); + continue; + } + WorkToDo::ParsingArguments { + driver, + path, + static_domain, + mut recorder, + } => { + recorder.record(RecordPoint::ParsingStart).unwrap(); + let function_result = driver.parse_function(path, static_domain); + recorder.record(RecordPoint::ParsingEnd).unwrap(); + match function_result { + Ok(function) => debt.fulfill(Box::new(Ok(WorkDone::Function(function)))), + Err(err) => debt.fulfill(Box::new(Err(err))), + } + continue; + } + WorkToDo::Shutdown() => { + return debt; + } + } } - fn run( - &mut self, - config: FunctionConfig, - context: Context, - output_sets: Arc>, - ) -> DandelionResult { - log::debug!("Reqwest engine running function"); - let function = match config { - FunctionConfig::SysConfig(sys_func) => sys_func, - _ => return Err(DandelionError::ConfigMissmatch), - }; +} - return match function { - SystemFunction::HTTP => http_run(context, &self.runtime, &self.client, output_sets), - #[allow(unreachable_patterns)] - _ => Err(DandelionError::MalformedConfig), - }; +fn outer_engine(core_id: u8, queue: Box) { + // set core affinity + if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { + log::error!("core received core id that could not be set"); + return; } + let runtime = Builder::new_multi_thread() + .on_thread_start(move || { + if !set_for_current(core_affinity::CoreId { id: core_id.into() }) { + return; + } + }) + .worker_threads(1) + .enable_all() + .build() + .or(Err(DandelionError::EngineError)) + .unwrap(); + let debt = runtime.block_on(engine_loop(queue)); + drop(runtime); + debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ + ComputeResource::CPU(core_id), + ])))); } pub struct ReqwestDriver {} @@ -399,7 +549,7 @@ impl Driver for ReqwestDriver { { return Err(DandelionError::EngineResourceError); } - start_thread::(core_id, queue); + std::thread::spawn(move || outer_engine(core_id, queue)); return Ok(()); } diff --git a/machine_interface/tests/data/basic_io.json b/machine_interface/tests/data/test_gpu_basic_io.json similarity index 100% rename from machine_interface/tests/data/basic_io.json rename to machine_interface/tests/data/test_gpu_basic_io.json diff --git a/machine_interface/tests/data/inference.json b/machine_interface/tests/data/test_gpu_inference.json similarity index 100% rename from machine_interface/tests/data/inference.json rename to machine_interface/tests/data/test_gpu_inference.json diff --git a/machine_interface/tests/data/inference_batched.json b/machine_interface/tests/data/test_gpu_inference_batched.json similarity index 100% rename from machine_interface/tests/data/inference_batched.json rename to machine_interface/tests/data/test_gpu_inference_batched.json diff --git a/machine_interface/tests/data/matmul_loop.json b/machine_interface/tests/data/test_gpu_matmul_loop.json similarity index 100% rename from machine_interface/tests/data/matmul_loop.json rename to machine_interface/tests/data/test_gpu_matmul_loop.json diff --git a/machine_interface/tests/data/matmul_para.json b/machine_interface/tests/data/test_gpu_matmul_para.json similarity index 100% rename from machine_interface/tests/data/matmul_para.json rename to machine_interface/tests/data/test_gpu_matmul_para.json diff --git a/machine_interface/tests/data/minimal.json b/machine_interface/tests/data/test_gpu_minimal.json similarity index 100% rename from machine_interface/tests/data/minimal.json rename to machine_interface/tests/data/test_gpu_minimal.json diff --git a/server/src/main.rs b/server/src/main.rs index 160a7bfc..e8742896 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -164,8 +164,9 @@ async fn register_library(req: Request) -> Result, + } + #[derive(Serialize)] struct RegisterFunction { name: String, @@ -139,6 +151,7 @@ mod server_tests { let server = cmd .stdout(Stdio::piped()) .stderr(Stdio::piped()) + .env("DANDELION_LIBRARY_PATH", "/tmp/dandelion_server/libs/") .spawn() .unwrap(); let mut server_killer = ServerKiller { server }; @@ -186,7 +199,7 @@ mod server_tests { #[cfg(feature = "gpu")] { matmul_path = format!( - "{}/../machine_interface/tests/data/matmul_para.json", + "{}/../machine_interface/tests/data/test_gpu_matmul_para.json", env!("CARGO_MANIFEST_DIR"), ); #[cfg(feature = "gpu_thread")] @@ -199,6 +212,27 @@ mod server_tests { } } + // Register GPU kernel library + #[cfg(feature = "gpu")] + { + let register_library = RegisterLibrary { + name: String::from("mlops.hsaco"), + library: std::fs::read(format!( + "{}/../machine_interface/tests/libs/mlops.hsaco", + env!("CARGO_MANIFEST_DIR") + )) + .unwrap(), + }; + + let library_client = reqwest::blocking::Client::new(); + let library_resp = library_client + .post("http://localhost:8080/register/library") + .body(bson::to_vec(®ister_library).unwrap()) + .send() + .unwrap(); + assert!(library_resp.status().is_success()); + } + let register_request = RegisterFunction { name: String::from("matmul"), context_size: 0x802_0000, @@ -333,6 +367,7 @@ mod server_tests { let mut server = cmd .stdout(Stdio::piped()) .stderr(Stdio::piped()) + .env("DANDELION_LIBRARY_PATH", "/tmp/dandelion_server/libs/") .spawn() .unwrap(); let mut reader = BufReader::new(server.stdout.take().unwrap()); @@ -352,7 +387,7 @@ mod server_tests { let engine_type; #[cfg(feature = "gpu")] let inference_path = format!( - "{}/../machine_interface/tests/data/inference.json", + "{}/../machine_interface/tests/data/test_gpu_inference.json", env!("CARGO_MANIFEST_DIR"), ); #[cfg(feature = "mmu")] @@ -373,6 +408,27 @@ mod server_tests { engine_type = String::from("Process"); } + // Register GPU kernel library + #[cfg(feature = "gpu")] + { + let register_library = RegisterLibrary { + name: String::from("mlops.hsaco"), + library: std::fs::read(format!( + "{}/../machine_interface/tests/libs/mlops.hsaco", + env!("CARGO_MANIFEST_DIR") + )) + .unwrap(), + }; + + let library_client = reqwest::blocking::Client::new(); + let library_resp = library_client + .post("http://localhost:8080/register/library") + .body(bson::to_vec(®ister_library).unwrap()) + .send() + .unwrap(); + assert!(library_resp.status().is_success()); + } + let register_request = RegisterFunction { name: String::from("inference"), context_size: 0x802_0000, From d7074478719aad9577e80e3723c95a9b21d3a047 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:13:19 +0200 Subject: [PATCH 126/176] update required feature --- machine_interface/Cargo.toml | 2 +- server/tests/server_tests.rs | 27 --------------------------- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/machine_interface/Cargo.toml b/machine_interface/Cargo.toml index 8c9a75d6..c20ce1bb 100644 --- a/machine_interface/Cargo.toml +++ b/machine_interface/Cargo.toml @@ -53,7 +53,7 @@ required-features = ["mmu"] [[bin]] name = "gpu_worker" -required-features = ["gpu"] +required-features = ["gpu_process"] [[bench]] name = "cheri_benchmark" diff --git a/server/tests/server_tests.rs b/server/tests/server_tests.rs index 130e5909..b0ee00a1 100644 --- a/server/tests/server_tests.rs +++ b/server/tests/server_tests.rs @@ -151,34 +151,7 @@ mod server_tests { assert_eq!(1, checksum); } - // <<<<<<< HEAD - // #[test] - // fn serve_matmul() { - // let lock = TEST_LOCK.lock().unwrap(); - // let mut cmd = Command::cargo_bin("dandelion_server").unwrap(); - // let server = cmd - // .stdout(Stdio::piped()) - // .stderr(Stdio::piped()) - // .env("DANDELION_LIBRARY_PATH", "/tmp/dandelion_server/libs/") - // .spawn() - // .unwrap(); - // let mut server_killer = ServerKiller { server }; - // let mut reader = BufReader::new(server_killer.server.stdout.take().unwrap()); - // loop { - // let mut buf = String::new(); - // let len = reader.read_line(&mut buf).unwrap(); - // assert_ne!(len, 0, "Server exited unexpectedly"); - // if buf.contains("Server start") { - // break; - // } else { - // print!("{}", buf); - // } - // } - // let _ = server_killer.server.stdout.insert(reader.into_inner()); - - // ======= fn register_and_request(http_version: reqwest::Version, client: Client) { - // register function let version: String; let mut engine_type; #[cfg(feature = "wasm")] From f2267cbbc321a6241137cb3b0196854062b4b22b Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:47:23 +0200 Subject: [PATCH 127/176] Small changes based on comments --- README.md | 5 ++++- machine_interface/src/function_driver.rs | 8 ++++---- .../src/function_driver/compute_driver/gpu.rs | 3 +++ .../src/function_driver/compute_driver/gpu/gpu_utils.rs | 6 ------ machine_interface/src/util/mmapmem.rs | 1 - 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e4ada6e3..7e42d626 100644 --- a/README.md +++ b/README.md @@ -129,4 +129,7 @@ sudo mount -o remount,exec /dev/shm To use a `gpu_worker` that is not at the original location it was built in, set the `GPU_WORKER_PATH` environment variable to point to the desired binary ## GPU engine library path -`DANDELION_LIBRARY_PATH` overwrites the directory where the GPU engines will look for kernel libraries. If the variable is unset the engines will look in `machine_interface/tests/libs/`. \ No newline at end of file +`DANDELION_LIBRARY_PATH` overwrites the directory where the GPU engines will look for kernel libraries. If the variable is unset the engines will look in `machine_interface/tests/libs/`. + +## GPU Allocations +To prevent memory leakage, GPU kernels are disallowed from calling `malloc()`. All the memory a kernel requires should be specified in the respective config file. \ No newline at end of file diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 3322471d..1738c337 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -1,5 +1,3 @@ -use std::{collections::HashMap, sync::Mutex}; - use crate::{ interface::DandelionSystemData, memory_domain::{transfer_memory, Context, MemoryDomain}, @@ -11,10 +9,12 @@ use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; #[cfg(feature = "wasm")] use libloading::Library; -use serde::{Deserialize, Serialize}; #[cfg(feature = "gpu")] -use self::compute_driver::gpu::{config_parsing::ExecutionBlueprint, hip::FunctionT}; +use { + self::compute_driver::gpu::config_parsing::ExecutionBlueprint, + serde::{Deserialize, Serialize}, +}; pub mod compute_driver; mod load_utils; diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 4ee373f2..ebf55633 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -235,6 +235,7 @@ impl EngineLoop for GpuLoop { sender.send(result).unwrap(); }); + // TODO: add proper error handling mechanisms // Use an mpsc to receive results. If a fault occured, the handler could be registered to put an error on the channel, // while the work thread wouldn't return. This means it would have to be shot down let mut context = self @@ -249,6 +250,7 @@ impl EngineLoop for GpuLoop { } } +// Function parsing logic that can be shared between gpu_thread and gpu_process variants fn common_parse( function_path: String, static_domain: &'static dyn crate::memory_domain::MemoryDomain, @@ -293,6 +295,7 @@ fn common_parse( }) } +// Engine start-up logic that can be shared between gpu_thread and gpu_process variants fn common_start(resource: ComputeResource) -> DandelionResult<(u8, u8)> { // extract resources let (cpu_slot, gpu_id) = match resource { diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 8b3a3296..60d88fc6 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -23,12 +23,6 @@ use std::{ }, thread::spawn, }; -// use tokio::{ -// io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, -// process::{Child, ChildStdin, ChildStdout, Command}, -// sync::{Mutex, Notify, Semaphore}, -// task, -// }; use self::super::hip; diff --git a/machine_interface/src/util/mmapmem.rs b/machine_interface/src/util/mmapmem.rs index d2c06759..52fc3d48 100644 --- a/machine_interface/src/util/mmapmem.rs +++ b/machine_interface/src/util/mmapmem.rs @@ -161,7 +161,6 @@ impl MmapMem { } // Memory-maps a file and protection flags, at the given address. - // TODO good name; replace eprintln with error again pub fn alt_open(filename: &str, prot: ProtFlags) -> Result { let shmem_fd = match shm_open(filename, OFlag::O_RDWR, Mode::S_IRUSR) { Err(err) => { From 6b56c3a2e00f72f5bd2c578868dd827181aaa16d Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:57:59 +0200 Subject: [PATCH 128/176] Add import to right place --- machine_interface/src/function_driver.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 1738c337..d6d7f8a4 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -6,15 +6,13 @@ use crate::{ extern crate alloc; use alloc::sync::Arc; use dandelion_commons::{records::Recorder, DandelionError, DandelionResult}; +use serde::{Deserialize, Serialize}; #[cfg(feature = "wasm")] use libloading::Library; #[cfg(feature = "gpu")] -use { - self::compute_driver::gpu::config_parsing::ExecutionBlueprint, - serde::{Deserialize, Serialize}, -}; +use self::compute_driver::gpu::config_parsing::ExecutionBlueprint; pub mod compute_driver; mod load_utils; From 9c66f1ba899b9e11120c154ebe075781ddca169d Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 12:21:47 +0200 Subject: [PATCH 129/176] Move write_gpu_outputs out of interface --- .../src/function_driver/compute_driver/gpu.rs | 6 +- .../compute_driver/gpu/gpu_utils.rs | 85 +++++++++++- machine_interface/src/interface.rs | 121 ++++-------------- 3 files changed, 108 insertions(+), 104 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index ebf55633..ab71b975 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -4,7 +4,7 @@ use crate::{ thread_utils::{run_thread, EngineLoop}, ComputeResource, Driver, Function, FunctionConfig, GpuConfig, WorkQueue, }, - interface::{read_output_structs, setup_input_structs, write_gpu_outputs, DandelionSystemData}, + interface::{read_output_structs, setup_input_structs, DandelionSystemData}, memory_domain::{Context, ContextTrait, ContextType}, DataItem, DataRequirementList, DataSet, Position, }; @@ -27,7 +27,9 @@ use std::{ use self::{ buffer_pool::BufferPool, config_parsing::{Action, Argument, RuntimeGpuConfig}, - gpu_utils::{copy_data_to_device, get_data_length, get_size, start_gpu_process_pool}, + gpu_utils::{ + copy_data_to_device, get_data_length, get_size, start_gpu_process_pool, write_gpu_outputs, + }, hip::DEFAULT_STREAM, }; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 60d88fc6..63b4e4b4 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -1,8 +1,6 @@ +use crate::interface::{DandelionSystemData, SizedIntTrait}; use crate::{ - function_driver::{ - thread_utils::EngineLoop, ComputeResource, FunctionConfig, GpuConfig, WorkDone, WorkQueue, - WorkToDo, - }, + function_driver::{ComputeResource, FunctionConfig, GpuConfig, WorkDone, WorkQueue, WorkToDo}, interface::read_output_structs, memory_domain::{self, mmu::MmuContext, Context, ContextState, ContextTrait, ContextType}, util::mmapmem::MmapMem, @@ -25,8 +23,9 @@ use std::{ }; use self::super::hip; +use super::buffer_pool::BufferPool; -use super::{config_parsing::Sizing, hip::DevicePointer, GpuLoop}; +use super::{config_parsing::Sizing, hip::DevicePointer}; pub fn get_data_length(ident: &str, context: &Context) -> DandelionResult { let dataset = context @@ -78,6 +77,82 @@ pub unsafe fn copy_data_to_device( Ok(()) } +#[cfg(feature = "gpu")] +/// # Safety +/// Requires *base* to point to the stat of *context* +pub unsafe fn write_gpu_outputs( + context: &mut Context, + system_data_offset: usize, + base: *mut u8, + output_set_names: &[String], + device_buffers: &HashMap, + buffer_pool: &BufferPool, +) -> DandelionResult<()> { + // read the system buffer + + use crate::{ + interface::{IoBufferDescriptor, IoSetInfo}, + ptr_t, size_t, usize, usize_ptr, + }; + let mut system_struct = DandelionSystemData::::default(); + context.read( + system_data_offset, + core::slice::from_mut(&mut system_struct), + )?; + + let output_set_number = usize!(system_struct.output_sets_len); + let mut output_set_info = vec![]; + if output_set_info.try_reserve(output_set_number + 1).is_err() { + return Err(DandelionError::OutOfMemory); + } + let empty_output_set = IoSetInfo:: { + ident: ptr_t!(0), + ident_len: size_t!(0), + offset: size_t!(0), + }; + output_set_info.resize_with(output_set_number + 1, || empty_output_set.clone()); + context.read(usize_ptr!(system_struct.output_sets), &mut output_set_info)?; + + let mut output_buffers: Vec> = Vec::new(); + if output_buffers + .try_reserve_exact(output_set_names.len()) + .is_err() + { + return Err(DandelionError::OutOfMemory); + } + for (i, output_name) in output_set_names.iter().enumerate() { + // alignment shouldn't really make a huge difference + let (dev_ptr_idx, size) = device_buffers + .get(output_name) + .ok_or(DandelionError::ConfigMissmatch)?; + let buf_offset = context.get_free_space(*size, 8)?; + + let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; + let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; + hip::memcpy_d_to_h(dst, &dev_ptr, *size)?; + + output_buffers.push(IoBufferDescriptor { + ident: ptr_t!(0), + ident_len: size_t!(0), + data: ptr_t!(buf_offset), + data_len: size_t!(*size), + key: size_t!(0), + }); + output_set_info[i].offset = size_t!(i); + } + output_set_info[output_set_number].offset = size_t!(output_set_number); + + context.write(usize_ptr!(system_struct.output_sets), &output_set_info)?; + + let output_buffers_offset: PtrT = + ptr_t!(context.get_free_space_and_write_slice(&output_buffers[..])? as usize); + + system_struct.output_bufs = output_buffers_offset; + + context.write(system_data_offset, core::slice::from_ref(&system_struct))?; + Ok(()) +} + pub fn get_size( sizing: &Sizing, buffers: &HashMap, diff --git a/machine_interface/src/interface.rs b/machine_interface/src/interface.rs index c5b6e150..85d52095 100644 --- a/machine_interface/src/interface.rs +++ b/machine_interface/src/interface.rs @@ -1,14 +1,9 @@ -use std::collections::HashMap; - -#[cfg(feature = "gpu")] -use crate::function_driver::compute_driver::gpu::{buffer_pool::BufferPool, hip}; - use crate::{ memory_domain::{Context, ContextState, ContextTrait}, DataItem, DataSet, Position, }; use dandelion_commons::{DandelionError, DandelionResult}; -use libc::{c_int, c_void, size_t, uintptr_t}; +use libc::{c_int, size_t, uintptr_t}; extern crate alloc; use std::fmt::Debug; @@ -20,24 +15,28 @@ where fn to_native(self) -> DandelionResult; } +#[macro_export] /// macro to convert usize to SizeT macro_rules! size_t { ($val:expr) => { SizeT::from_native($val)? }; } +#[macro_export] /// macro to convert SizeT to usize macro_rules! usize { ($val:expr) => { SizeT::to_native($val)? }; } +#[macro_export] /// macro to convert usize to PtrT macro_rules! ptr_t { ($val:expr) => { PtrT::from_native($val)? }; } +#[macro_export] /// macro to convert PtrT to usize macro_rules! usize_ptr { ($val:expr) => { @@ -96,105 +95,33 @@ pub mod _native { #[derive(Debug, Clone, Default)] #[repr(C)] pub struct DandelionSystemData { - exit_code: c_int, - heap_begin: PtrT, // uintptr_t, - heap_end: PtrT, // uintptr_t, - input_sets_len: SizeT, // size_t, - input_sets: PtrT, // *const IoSetInfo, - output_sets_len: SizeT, // size_t, - output_sets: PtrT, // *const IoSetInfo, - input_bufs: PtrT, // *const IoBufferDescriptor, - output_bufs: PtrT, // *const IoBufferDescriptor, + pub exit_code: c_int, + pub heap_begin: PtrT, // uintptr_t, + pub heap_end: PtrT, // uintptr_t, + pub input_sets_len: SizeT, // size_t, + pub input_sets: PtrT, // *const IoSetInfo, + pub output_sets_len: SizeT, // size_t, + pub output_sets: PtrT, // *const IoSetInfo, + pub input_bufs: PtrT, // *const IoBufferDescriptor, + pub output_bufs: PtrT, // *const IoBufferDescriptor, } #[derive(Clone, Debug)] #[repr(C)] -struct IoSetInfo { - ident: PtrT, // uintptr_t, - ident_len: SizeT, // size_t, - offset: SizeT, // size_t, +pub struct IoSetInfo { + pub ident: PtrT, // uintptr_t, + pub ident_len: SizeT, // size_t, + pub offset: SizeT, // size_t, } #[derive(Clone)] #[repr(C)] -struct IoBufferDescriptor { - ident: PtrT, // uintptr_t, - ident_len: SizeT, // size_t, - data: PtrT, // uintptr_t, - data_len: SizeT, // size_t, - key: SizeT, // size_t, -} - -#[cfg(feature = "gpu")] -/// Only really used for GPU, but defined here so we can access private fields of DandelionSystemData -/// # Safety -/// Requires *base* to point to the stat of *context* -pub unsafe fn write_gpu_outputs( - context: &mut Context, - system_data_offset: usize, - base: *mut u8, - output_set_names: &[String], - device_buffers: &HashMap, - buffer_pool: &BufferPool, -) -> DandelionResult<()> { - // read the system buffer - let mut system_struct = DandelionSystemData::::default(); - context.read( - system_data_offset, - core::slice::from_mut(&mut system_struct), - )?; - - let output_set_number = usize!(system_struct.output_sets_len); - let mut output_set_info = vec![]; - if output_set_info.try_reserve(output_set_number + 1).is_err() { - return Err(DandelionError::OutOfMemory); - } - let empty_output_set = IoSetInfo:: { - ident: ptr_t!(0), - ident_len: size_t!(0), - offset: size_t!(0), - }; - output_set_info.resize_with(output_set_number + 1, || empty_output_set.clone()); - context.read(usize_ptr!(system_struct.output_sets), &mut output_set_info)?; - - let mut output_buffers: Vec> = Vec::new(); - if output_buffers - .try_reserve_exact(output_set_names.len()) - .is_err() - { - return Err(DandelionError::OutOfMemory); - } - for (i, output_name) in output_set_names.iter().enumerate() { - // alignment shouldn't really make a huge difference - let (dev_ptr_idx, size) = device_buffers - .get(output_name) - .ok_or(DandelionError::ConfigMissmatch)?; - let buf_offset = context.get_free_space(*size, 8)?; - - let dst = unsafe { base.byte_offset(buf_offset as isize) } as *const c_void; - let dev_ptr = buffer_pool.get(*dev_ptr_idx)?; - hip::memcpy_d_to_h(dst, &dev_ptr, *size)?; - - output_buffers.push(IoBufferDescriptor { - ident: ptr_t!(0), - ident_len: size_t!(0), - data: ptr_t!(buf_offset), - data_len: size_t!(*size), - key: size_t!(0), - }); - output_set_info[i].offset = size_t!(i); - } - output_set_info[output_set_number].offset = size_t!(output_set_number); - - context.write(usize_ptr!(system_struct.output_sets), &output_set_info)?; - - let output_buffers_offset: PtrT = - ptr_t!(context.get_free_space_and_write_slice(&output_buffers[..])? as usize); - - system_struct.output_bufs = output_buffers_offset; - - context.write(system_data_offset, core::slice::from_ref(&system_struct))?; - Ok(()) +pub struct IoBufferDescriptor { + pub ident: PtrT, // uintptr_t, + pub ident_len: SizeT, // size_t, + pub data: PtrT, // uintptr_t, + pub data_len: SizeT, // size_t, + pub key: SizeT, // size_t, } pub fn setup_input_structs( From 4df5cb5f28d548e9fa08cc9d58b7f5197cb95955 Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 14:32:19 +0200 Subject: [PATCH 130/176] Give GPU its own mmap based context --- .../src/function_driver/compute_driver/gpu.rs | 2 +- .../compute_driver/gpu/gpu_tests.rs | 12 +-- .../compute_driver/gpu/gpu_utils.rs | 6 +- machine_interface/src/machine_config.rs | 2 +- machine_interface/src/memory_domain.rs | 40 ++++++-- machine_interface/src/memory_domain/gpu.rs | 91 +++++++++++++++++++ machine_interface/src/memory_domain/mmu.rs | 7 +- 7 files changed, 138 insertions(+), 22 deletions(-) create mode 100644 machine_interface/src/memory_domain/gpu.rs diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index ab71b975..9c6b79bc 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -140,7 +140,7 @@ pub fn gpu_run( hip::set_device(gpu_id)?; hip::limit_heap_size(0)?; - let ContextType::Mmu(ref mmu_context) = context.context else { + let ContextType::Gpu(ref mmu_context) = context.context else { return Err(DandelionError::ConfigMissmatch); }; let base = mmu_context.storage.as_ptr(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs index 1d342cd3..b6396b39 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -12,7 +12,7 @@ use crate::{ }, ComputeResource, Driver, WorkToDo, }, - memory_domain::{mmu::MmuMemoryDomain, ContextTrait, MemoryResource}, + memory_domain::{gpu::GpuMemoryDomain, ContextTrait, MemoryResource}, DataItem, DataSet, Position, }; @@ -39,7 +39,7 @@ fn get_driver() -> Box { fn minimal() { let lock = GPU_LOCK.lock().unwrap(); let driver: Box = get_driver(); - engine_minimal::( + engine_minimal::( &format!( "{}/tests/data/test_gpu_minimal.json", env!("CARGO_MANIFEST_DIR") @@ -55,7 +55,7 @@ fn minimal() { fn basic_input_output() { let lock = GPU_LOCK.lock().unwrap(); let driver: Box = get_driver(); - let (mut function_context, config, queue) = prepare_engine_and_function::( + let (mut function_context, config, queue) = prepare_engine_and_function::( &format!( "{}/tests/data/test_gpu_basic_io.json", env!("CARGO_MANIFEST_DIR") @@ -132,7 +132,7 @@ fn engine_matmul_3x3_loop() { let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; let (mut function_context, config, queue) = - prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); // add inputs, split over two buffers to test concatenating them in GPU memory let in_size_offset = function_context .get_free_space_and_write_slice(&[3i64]) @@ -220,7 +220,7 @@ fn engine_matmul_size_sweep_parallel() { const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { - let (mut function_context, config, queue) = prepare_engine_and_function::( + let (mut function_context, config, queue) = prepare_engine_and_function::( filename, dom_init, &driver, @@ -413,7 +413,7 @@ fn inference_benchmark_function() { let driver: Box = get_driver(); let drv_init = vec![ComputeResource::GPU(7, 0)]; let (mut function_context, config, queue) = - prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let d_size: usize = 112 * 112 * 4 + 8; //side_len * side_len * sizeof(float) + [[size convention at start]] let a_grid_dim: usize = (224 + 31) / 32; let d_grid_dim: usize = (112 + 31) / 32; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 63b4e4b4..0edd204b 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -2,7 +2,7 @@ use crate::interface::{DandelionSystemData, SizedIntTrait}; use crate::{ function_driver::{ComputeResource, FunctionConfig, GpuConfig, WorkDone, WorkQueue, WorkToDo}, interface::read_output_structs, - memory_domain::{self, mmu::MmuContext, Context, ContextState, ContextTrait, ContextType}, + memory_domain::{self, gpu::GpuContext, Context, ContextState, ContextTrait, ContextType}, util::mmapmem::MmapMem, DataSet, Position, }; @@ -260,7 +260,7 @@ impl TryFrom for Context { fn try_from(value: SendContext) -> Result { Ok(Self { - context: ContextType::Mmu(Box::new(MmuContext { + context: ContextType::Gpu(Box::new(GpuContext { storage: MmapMem::alt_open( &value.context_filename, ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, @@ -277,7 +277,7 @@ impl TryFrom for Context { impl TryFrom<&Context> for SendContext { type Error = DandelionError; fn try_from(value: &Context) -> DandelionResult { - let ContextType::Mmu(ref ctxt) = value.context else { + let ContextType::Gpu(ref ctxt) = value.context else { return Err(DandelionError::ConfigMissmatch); }; diff --git a/machine_interface/src/machine_config.rs b/machine_interface/src/machine_config.rs index 1c1c25de..876103cc 100644 --- a/machine_interface/src/machine_config.rs +++ b/machine_interface/src/machine_config.rs @@ -99,7 +99,7 @@ pub fn get_available_domains() -> BTreeMap), #[cfg(feature = "cheri")] Cheri(Box), - #[cfg(any(feature = "mmu", feature = "gpu"))] + #[cfg(feature = "mmu")] Mmu(Box), #[cfg(feature = "wasm")] Wasm(Box), + #[cfg(feature = "gpu")] + Gpu(Box), } impl ContextTrait for ContextType { @@ -54,10 +58,12 @@ impl ContextTrait for ContextType { ContextType::ReadOnly(context) => context.write(offset, data), #[cfg(feature = "cheri")] ContextType::Cheri(context) => context.write(offset, data), - #[cfg(any(feature = "mmu", feature = "gpu"))] + #[cfg(feature = "mmu")] ContextType::Mmu(context) => context.write(offset, data), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.write(offset, data), + #[cfg(feature = "gpu")] + ContextType::Gpu(context) => context.write(offset, data), #[cfg(feature = "bytes_context")] ContextType::Bytes(context) => context.write(offset, data), } @@ -69,10 +75,12 @@ impl ContextTrait for ContextType { ContextType::ReadOnly(context) => context.read(offset, read_buffer), #[cfg(feature = "cheri")] ContextType::Cheri(context) => context.read(offset, read_buffer), - #[cfg(any(feature = "mmu", feature = "gpu"))] + #[cfg(feature = "mmu")] ContextType::Mmu(context) => context.read(offset, read_buffer), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.read(offset, read_buffer), + #[cfg(feature = "gpu")] + ContextType::Gpu(context) => context.read(offset, read_buffer), #[cfg(feature = "bytes_context")] ContextType::Bytes(context) => context.read(offset, read_buffer), } @@ -84,10 +92,12 @@ impl ContextTrait for ContextType { ContextType::ReadOnly(context) => context.get_chunk_ref(offset, length), #[cfg(feature = "cheri")] ContextType::Cheri(context) => context.get_chunk_ref(offset, length), - #[cfg(any(feature = "mmu", feature = "gpu"))] + #[cfg(feature = "mmu")] ContextType::Mmu(context) => context.get_chunk_ref(offset, length), #[cfg(feature = "wasm")] ContextType::Wasm(context) => context.get_chunk_ref(offset, length), + #[cfg(feature = "gpu")] + ContextType::Gpu(context) => context.get_chunk_ref(offset, length), #[cfg(feature = "bytes_context")] ContextType::Bytes(context) => context.get_chunk_ref(offset, length), } @@ -283,7 +293,7 @@ pub fn transfer_memory( size, ) } - #[cfg(any(feature = "mmu", feature = "gpu"))] + #[cfg(feature = "mmu")] (ContextType::Mmu(destination_ctxt), ContextType::Mmu(source_ctxt)) => mmu::mmu_transfer( destination_ctxt, source_ctxt, @@ -321,6 +331,24 @@ pub fn transfer_memory( size, ) } + #[cfg(feature = "gpu")] + (ContextType::Gpu(destination_ctxt), ContextType::Gpu(source_ctxt)) => gpu::gpu_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + ), + #[cfg(all(feature = "gpu", feature = "bytes_context"))] + (ContextType::Gpu(destination_ctxt), ContextType::Bytes(source_ctxt)) => { + gpu::bytest_to_gpu_transfer( + destination_ctxt, + source_ctxt, + destination_offset, + source_offset, + size, + ) + } // default implementation using reads and writes (destination, source) => { let mut read_buffer: Vec = vec![0; size]; diff --git a/machine_interface/src/memory_domain/gpu.rs b/machine_interface/src/memory_domain/gpu.rs new file mode 100644 index 00000000..adfab65a --- /dev/null +++ b/machine_interface/src/memory_domain/gpu.rs @@ -0,0 +1,91 @@ +use crate::{ + memory_domain::{Context, ContextTrait, ContextType, MemoryDomain, MemoryResource}, + util::mmapmem::MmapMem, +}; +use dandelion_commons::{DandelionError, DandelionResult}; +use log::error; +use nix::sys::mman::ProtFlags; + +#[derive(Debug)] +pub struct GpuContext { + pub storage: MmapMem, +} + +impl ContextTrait for GpuContext { + fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { + self.storage.write(offset, data) + } + + fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { + self.storage.read(offset, read_buffer) + } + + fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { + self.storage.get_chunk_ref(offset, length) + } +} + +#[derive(Debug)] +pub struct GpuMemoryDomain {} + +impl MemoryDomain for GpuMemoryDomain { + fn init(_config: MemoryResource) -> DandelionResult> { + Ok(Box::new(GpuMemoryDomain {})) + } + + fn acquire_context(&self, size: usize) -> DandelionResult { + // create and map a shared memory region + let mem_space = + match MmapMem::create(size, ProtFlags::PROT_READ | ProtFlags::PROT_WRITE, true) { + Ok(v) => v, + Err(_e) => return Err(DandelionError::MemoryAllocationError), + }; + + let new_context = Box::new(GpuContext { storage: mem_space }); + Ok(Context::new(ContextType::Gpu(new_context), size)) + } +} + +pub fn gpu_transfer( + destination: &mut GpuContext, + source: &GpuContext, + destination_offset: usize, + source_offset: usize, + size: usize, +) -> DandelionResult<()> { + // check if there is space in both contexts + if source.storage.size() < source_offset + size { + error!( + "Out of bounds: storage_size {}, source_offset {}, size {}", + source.storage.size(), + source_offset, + size + ); + return Err(DandelionError::InvalidRead); + } + if destination.storage.size() < destination_offset + size { + return Err(DandelionError::InvalidWrite); + } + unsafe { + destination.storage.as_slice_mut()[destination_offset..destination_offset + size] + .copy_from_slice(&source.storage.as_slice()[source_offset..source_offset + size]); + } + Ok(()) +} + +#[cfg(feature = "bytes_context")] +pub fn bytest_to_gpu_transfer( + destination: &mut GpuContext, + source: &crate::memory_domain::bytes_context::BytesContext, + destination_offset: usize, + source_offset: usize, + size: usize, +) -> DandelionResult<()> { + // check if bounds for gpu context + if destination.storage.size() < destination_offset + size { + return Err(DandelionError::InvalidWrite); + } + let mmu_slice = &mut destination.storage[destination_offset..destination_offset + size]; + source.read(source_offset, mmu_slice)?; + Ok(()) +} diff --git a/machine_interface/src/memory_domain/mmu.rs b/machine_interface/src/memory_domain/mmu.rs index 6922da9a..81106589 100644 --- a/machine_interface/src/memory_domain/mmu.rs +++ b/machine_interface/src/memory_domain/mmu.rs @@ -3,7 +3,7 @@ use crate::{ util::mmapmem::MmapMem, }; use dandelion_commons::{DandelionError, DandelionResult}; -use log::warn; +use log::{error, warn}; use nix::sys::mman::ProtFlags; // TODO: decide this value in a system dependent way @@ -16,7 +16,6 @@ pub struct MmuContext { impl ContextTrait for MmuContext { fn write(&mut self, offset: usize, data: &[T]) -> DandelionResult<()> { - #[cfg(feature = "mmu")] if offset < MMAP_BASE_ADDR { warn!("write offset smaller than MMAP_BASE_ADDR") // TODO: could be an issue if the context will be used by mmu_worker (function context) @@ -25,7 +24,6 @@ impl ContextTrait for MmuContext { } fn read(&self, offset: usize, read_buffer: &mut [T]) -> DandelionResult<()> { - #[cfg(feature = "mmu")] if offset < MMAP_BASE_ADDR { warn!("read offset smaller than MMAP_BASE_ADDR") // TODO: could be an issue if the context will be used by mmu_worker (function context) @@ -34,7 +32,6 @@ impl ContextTrait for MmuContext { } fn get_chunk_ref(&self, offset: usize, length: usize) -> DandelionResult<&[u8]> { - #[cfg(feature = "mmu")] if offset < MMAP_BASE_ADDR { warn!("read offset smaller than MMAP_BASE_ADDR") // TODO: could be an issue if the context will be used by mmu_worker (function context) @@ -73,7 +70,7 @@ pub fn mmu_transfer( ) -> DandelionResult<()> { // check if there is space in both contexts if source.storage.size() < source_offset + size { - eprintln!( + error!( "Out of bounds: storage_size {}, source_offset {}, size {}", source.storage.size(), source_offset, From fb79a66362cf43ba4b2a1cd978740fe0d303798c Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 15:41:38 +0200 Subject: [PATCH 131/176] Add GPU count and worker count to config --- machine_interface/src/bin/gpu_worker.rs | 5 ++-- machine_interface/src/function_driver.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 30 ++++++++++++------- .../compute_driver/gpu/buffer_pool.rs | 10 ++----- .../compute_driver/gpu/gpu_tests.rs | 10 +++---- .../compute_driver/gpu/gpu_utils.rs | 30 +++++++++++++------ .../src/function_driver/thread_utils.rs | 4 +-- server/src/config.rs | 14 +++++++++ server/src/main.rs | 11 +++++-- 9 files changed, 76 insertions(+), 40 deletions(-) diff --git a/machine_interface/src/bin/gpu_worker.rs b/machine_interface/src/bin/gpu_worker.rs index 58669877..8c092048 100644 --- a/machine_interface/src/bin/gpu_worker.rs +++ b/machine_interface/src/bin/gpu_worker.rs @@ -14,9 +14,10 @@ use machine_interface::{ fn main() { // parse args let args: Vec = std::env::args().collect(); - assert_eq!(args.len(), 3); + assert_eq!(args.len(), 4); let core_id: u8 = args[1].parse().expect("Invalid core ID"); let gpu_id: u8 = args[2].parse().expect("Invalid GPU ID"); + let worker_count: u8 = args[3].parse().expect("Invalid worker count"); // set cpu affinity assert!(core_affinity::set_for_current(CoreId { @@ -24,7 +25,7 @@ fn main() { })); // setup worker struct - let mut worker = GpuLoop::init(ComputeResource::GPU(core_id, gpu_id)) + let mut worker = GpuLoop::init(ComputeResource::GPU(core_id, gpu_id, worker_count)) .expect("Should be able to create worker"); // unwrap okay, as all lines are valid Strings diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index d6d7f8a4..3d132412 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -124,7 +124,7 @@ impl Function { #[derive(Debug, Clone, Copy)] pub enum ComputeResource { CPU(u8), - GPU(u8, u8), // TODO change back to GPU(u8) once Driver.start_engine() takes a vec of ComputeResources + GPU(u8, u8, u8), // CPU core, GPU id, number of workers per GPU (only relevant for gpu_process). Eventually the CPU and GPU parts should be split } pub enum WorkToDo { diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 9c6b79bc..b0985eaf 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -198,9 +198,15 @@ pub struct GpuLoop { receiver: Receiver>, } +#[allow(non_upper_case_globals)] +const Gi: usize = 1 << 30; + +// TODO: add adaptive amount of other GPUs are used, MI210 has 64GiB +const VRAM_SIZE: usize = 60 * Gi; + impl EngineLoop for GpuLoop { fn init(resource: ComputeResource) -> DandelionResult> { - let ComputeResource::GPU(cpu_slot, gpu_id) = resource else { + let ComputeResource::GPU(cpu_slot, gpu_id, worker_count) = resource else { return Err(DandelionError::EngineResourceError); }; @@ -209,7 +215,10 @@ impl EngineLoop for GpuLoop { Ok(Box::new(Self { cpu_slot: cpu_slot as usize, gpu_id, - buffers: Arc::new(Mutex::new(BufferPool::try_new(gpu_id)?)), + buffers: Arc::new(Mutex::new(BufferPool::try_new( + gpu_id, + VRAM_SIZE / worker_count as usize, + )?)), sender, receiver, })) @@ -298,10 +307,10 @@ fn common_parse( } // Engine start-up logic that can be shared between gpu_thread and gpu_process variants -fn common_start(resource: ComputeResource) -> DandelionResult<(u8, u8)> { +fn common_start(resource: ComputeResource) -> DandelionResult<(u8, u8, u8)> { // extract resources - let (cpu_slot, gpu_id) = match resource { - ComputeResource::GPU(cpu, gpu) => (cpu, gpu), + let (cpu_slot, gpu_id, worker_count) = match resource { + ComputeResource::GPU(cpu, gpu, worker_count) => (cpu, gpu, worker_count), _ => return Err(DandelionError::EngineResourceError), }; // check that core is available @@ -320,7 +329,7 @@ fn common_start(resource: ComputeResource) -> DandelionResult<(u8, u8)> { return Err(DandelionError::EngineResourceError); } - Ok((cpu_slot, gpu_id)) + Ok((cpu_slot, gpu_id, worker_count)) } pub struct GpuThreadDriver {} @@ -331,9 +340,10 @@ impl Driver for GpuThreadDriver { resource: ComputeResource, queue: Box, ) -> dandelion_commons::DandelionResult<()> { - let (cpu_slot, gpu_id) = common_start(resource)?; + let (cpu_slot, gpu_id, _) = common_start(resource)?; - spawn(move || run_thread::(ComputeResource::GPU(cpu_slot, gpu_id), queue)); + // Pass worker_count as 1 to make sure gpu_thread takes full memory region + spawn(move || run_thread::(ComputeResource::GPU(cpu_slot, gpu_id, 1), queue)); Ok(()) } @@ -354,9 +364,9 @@ impl Driver for GpuProcessDriver { resource: ComputeResource, queue: Box, ) -> dandelion_commons::DandelionResult<()> { - let (cpu_slot, gpu_id) = common_start(resource)?; + let (cpu_slot, gpu_id, worker_count) = common_start(resource)?; - start_gpu_process_pool(cpu_slot, gpu_id, queue); + start_gpu_process_pool(cpu_slot, gpu_id, worker_count, queue); Ok(()) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs index 4d951e66..5ff97bf3 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/buffer_pool.rs @@ -3,12 +3,6 @@ use log::debug; use super::hip::{self, DeviceAllocation, DevicePointer}; -#[allow(non_upper_case_globals)] -const Gi: usize = 1 << 30; - -// REGION_SIZE * #engines_on_device should never exceed total VRAM capacity (64GiB for MI210) -const REGION_SIZE: usize = 15 * Gi; - #[derive(Debug)] struct Buffer { offset: usize, @@ -30,10 +24,10 @@ pub struct BufferPool { } impl BufferPool { - pub fn try_new(gpu_id: u8) -> DandelionResult { + pub fn try_new(gpu_id: u8, region_size: usize) -> DandelionResult { hip::set_device(gpu_id)?; - let mut allocation = hip::DeviceAllocation::try_new(REGION_SIZE)?; + let mut allocation = hip::DeviceAllocation::try_new(region_size)?; allocation.zero_out()?; // sentinel buffer to simplify logic let buffers = vec![Buffer::sentinel()]; diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs index b6396b39..ebd66f4f 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -46,7 +46,7 @@ fn minimal() { ), MemoryResource::None, driver, - vec![ComputeResource::GPU(7, 1)], + vec![ComputeResource::GPU(7, 1, 2)], ); drop(lock); } @@ -62,7 +62,7 @@ fn basic_input_output() { ), MemoryResource::None, &driver, - vec![ComputeResource::GPU(7, 0)], + vec![ComputeResource::GPU(7, 0, 2)], ); // add inputs let in_size_offset = function_context @@ -130,7 +130,7 @@ fn engine_matmul_3x3_loop() { ); let dom_init = MemoryResource::None; let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0)]; + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; let (mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); // add inputs, split over two buffers to test concatenating them in GPU memory @@ -216,7 +216,7 @@ fn engine_matmul_size_sweep_parallel() { ); let dom_init = MemoryResource::None; let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0)]; + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; const LOWER_SIZE_BOUND: usize = 2; const UPPER_SIZE_BOUND: usize = 16; for mat_size in LOWER_SIZE_BOUND..UPPER_SIZE_BOUND { @@ -411,7 +411,7 @@ fn inference_benchmark_function() { ); let dom_init = MemoryResource::None; let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0)]; + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; let (mut function_context, config, queue) = prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let d_size: usize = 112 * 112 * 4 + 8; //side_len * side_len * sizeof(float) + [[size convention at start]] diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs index 0edd204b..9fcf4a46 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_utils.rs @@ -203,7 +203,7 @@ struct Worker { } impl Worker { - fn new(core_id: u8, gpu_id: u8) -> Self { + fn new(core_id: u8, gpu_id: u8, worker_count: u8) -> Self { // this trick gives the desired path of mmu_worker for packages within the workspace let path = std::env::var("PROCESS_WORKER_PATH").unwrap_or(format!( "{}/../target/{}-unknown-linux-gnu/{}/gpu_worker", @@ -219,6 +219,7 @@ impl Worker { let mut child = Command::new(path) .arg(core_id.to_string()) .arg(gpu_id.to_string()) + .arg(worker_count.to_string()) .stdin(Stdio::piped()) .stdout(Stdio::piped()) .stderr(Stdio::inherit()) @@ -301,7 +302,7 @@ pub struct SendFunctionArgs { } fn manage_worker( - resources: (u8, u8), + resources: (u8, u8, u8), core_id: u8, gpu_id: u8, queue: Arc, @@ -312,7 +313,7 @@ fn manage_worker( log::error!("core received core id that could not be set"); return; } - let mut worker = Worker::new(core_id + 1, gpu_id); + let mut worker = Worker::new(core_id + 1, gpu_id, resources.2); let mut line = String::new(); loop { @@ -463,7 +464,7 @@ fn manage_worker( WorkToDo::Shutdown() => { // Return original resources that were given to Engine debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ - ComputeResource::GPU(resources.0, resources.1), + ComputeResource::GPU(resources.0, resources.1, resources.2), ])))); // Inform other threads to shutdown as well when they are done @@ -474,14 +475,25 @@ fn manage_worker( } } -const NUM_WORKERS: u8 = 2; - -pub fn start_gpu_process_pool(core_id: u8, gpu_id: u8, queue: Box) { +pub fn start_gpu_process_pool( + core_id: u8, + gpu_id: u8, + worker_count: u8, + queue: Box, +) { let done = Arc::new(AtomicBool::new(false)); let queue: Arc = queue.into(); - for offset in 0..NUM_WORKERS { + for offset in 0..worker_count { let queue = queue.clone(); let done = done.clone(); - spawn(move || manage_worker((core_id, gpu_id), core_id + 2 * offset, gpu_id, queue, done)); + spawn(move || { + manage_worker( + (core_id, gpu_id, worker_count), + core_id + 2 * offset, + gpu_id, + queue, + done, + ) + }); } } diff --git a/machine_interface/src/function_driver/thread_utils.rs b/machine_interface/src/function_driver/thread_utils.rs index aec62604..c3877585 100644 --- a/machine_interface/src/function_driver/thread_utils.rs +++ b/machine_interface/src/function_driver/thread_utils.rs @@ -25,7 +25,7 @@ pub fn run_thread( // get CPU from resource let core_id = match initialisation_resource { ComputeResource::CPU(id) => id, - ComputeResource::GPU(id, _) => id, + ComputeResource::GPU(id, _, _) => id, }; // set core affinity if !core_affinity::set_for_current(core_affinity::CoreId { id: core_id.into() }) { @@ -129,7 +129,7 @@ pub fn run_thread( } WorkToDo::Shutdown() => { debt.fulfill(Box::new(Ok(WorkDone::Resources(vec![ - ComputeResource::CPU(core_id), + initialisation_resource, ])))); return; } diff --git a/server/src/config.rs b/server/src/config.rs index 84f6b596..e3aa15a3 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -6,6 +6,8 @@ const DEFAULT_CONFIG_PATH: &str = "./dandelion.config"; const DEFAULT_PORT: u16 = 8080; const DEFAULT_SINGLE_CORE: bool = false; const DEFAULT_TIMESTAMP_COUNT: usize = 1000; +const DEFAULT_GPU_COUNT: usize = 4; +const DEFAULT_GPU_WORKER_COUNT: usize = 2; #[derive(serde::Deserialize, Parser, Debug)] pub struct DandelionConfig { @@ -26,6 +28,10 @@ pub struct DandelionConfig { pub frontend_cores: Option, #[arg(long, env)] pub io_cores: Option, + #[arg(long, env, default_value_t = DEFAULT_GPU_COUNT)] + pub gpu_count: usize, + #[arg(long, env, default_value_t = DEFAULT_GPU_WORKER_COUNT)] + pub gpu_worker_count: usize, #[arg(long, env, default_value_t = DEFAULT_TIMESTAMP_COUNT)] #[serde(default)] pub timestamp_count: usize, @@ -61,6 +67,14 @@ impl DandelionConfig { if let Some(other_val) = other.io_cores { self.io_cores.get_or_insert(other_val); } + if self.gpu_count != DEFAULT_GPU_COUNT && other.gpu_count != default.gpu_count { + self.gpu_count = other.gpu_count; + } + if self.gpu_worker_count != DEFAULT_GPU_WORKER_COUNT + && other.gpu_worker_count != default.gpu_worker_count + { + self.gpu_worker_count = other.gpu_worker_count; + } // timestamp count if other.timestamp_count != DEFAULT_TIMESTAMP_COUNT && self.timestamp_count != default.timestamp_count diff --git a/server/src/main.rs b/server/src/main.rs index f41239f3..93079c8a 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -581,15 +581,20 @@ fn main() -> () { pool_map.insert(engine_type, compute_cores); #[cfg(any(feature = "gpu_thread", feature = "gpu_process"))] { - let gpu_count: u8 = 4; // TODO: don't hard code this + let gpu_count: u8 = config.gpu_count as u8; pool_map.insert( engine_type, config .get_computation_cores() .iter() - .step_by(4) // TODO: don't hard code this - related to number of workers + // The gpu_process engine relies on having such a contiguous region of CPU cores available -- one core + // goes to the Dandelion process thread of each worker and then another to the actual worker process. + // Once the system moves to giving Vecs of ComputeResources this needs to be changed + .step_by(config.gpu_worker_count * 2) .zip(0..gpu_count) - .map(|(cpu_id, gpu_id)| ComputeResource::GPU(*cpu_id, gpu_id)) + .map(|(cpu_id, gpu_id)| { + ComputeResource::GPU(*cpu_id, gpu_id, config.gpu_worker_count as u8) + }) .collect(), ); } From 9fc0938437b5b9010ac5413734acf1f59ee33ded Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 15:48:51 +0200 Subject: [PATCH 132/176] fix small error in tests --- .../compute_driver/compute_driver_tests.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index c11d8281..b0518fc0 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -609,7 +609,7 @@ pub(crate) mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0) + ComputeResource::GPU(0, 0, 0) ]); } @@ -641,7 +641,7 @@ pub(crate) mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0), + ComputeResource::GPU(0, 0, 0), ]); } @@ -661,7 +661,7 @@ pub(crate) mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0, 0), + ComputeResource::GPU(0, 0, 0), ]); #[cfg(target_arch = "aarch64")] @@ -675,7 +675,7 @@ pub(crate) mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0), + ComputeResource::GPU(0, 0, 0), ]); } } From 0128878e128d05a1371d90852f016d00e5d5bfce Mon Sep 17 00:00:00 2001 From: jonathanplsmith <92918075+jonathanplsmith@users.noreply.github.com> Date: Mon, 26 Aug 2024 15:54:07 +0200 Subject: [PATCH 133/176] another small mistake --- .../src/function_driver/compute_driver/compute_driver_tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index b0518fc0..c32f444a 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -628,7 +628,7 @@ pub(crate) mod compute_driver_tests { .collect())).expect("Should have at least one core"); vec![ ComputeResource::CPU(255), - ComputeResource::GPU(0, 0) + ComputeResource::GPU(0, 0, 0) ]); #[cfg(target_arch = "aarch64")] driverTests!(elf_mmu_aarch64; MmuMemoryDomain; MemoryResource::None; MmuDriver {}; From 95f8dbfd973ed5828f6a3d97a0df005e50416647 Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Wed, 6 Nov 2024 14:08:40 +0100 Subject: [PATCH 134/176] New JSON format for GPU jobs: multiple .hsaco files supported. double_mamtul tests added. ROCm version updated to 6.2.2 --- machine_interface/build.rs | 4 +- machine_interface/src/function_driver.rs | 4 +- .../src/function_driver/compute_driver/gpu.rs | 62 +++-- .../compute_driver/gpu/config_parsing.rs | 54 ++-- .../compute_driver/gpu/gpu_tests.rs | 246 ++++++++++++++++++ .../tests/data/test_gpu_basic_io.json | 4 +- .../tests/data/test_gpu_basic_io.json.old | 20 ++ .../data/test_gpu_first_double_matmul.json | 24 ++ .../data/test_gpu_full_double_matmul.json | 35 +++ .../tests/data/test_gpu_hello_world.json | 20 ++ .../tests/data/test_gpu_inference.json | 19 +- .../tests/data/test_gpu_inference.json.old | 40 +++ .../tests/data/test_gpu_minimal.json | 8 +- .../double_matmul/tem_fused_linear_0.hsaco | Bin 0 -> 6160 bytes .../double_matmul/tem_fused_linear_1.hsaco | Bin 0 -> 6080 bytes 15 files changed, 495 insertions(+), 45 deletions(-) create mode 100644 machine_interface/tests/data/test_gpu_basic_io.json.old create mode 100644 machine_interface/tests/data/test_gpu_first_double_matmul.json create mode 100644 machine_interface/tests/data/test_gpu_full_double_matmul.json create mode 100644 machine_interface/tests/data/test_gpu_hello_world.json create mode 100644 machine_interface/tests/data/test_gpu_inference.json.old create mode 100644 machine_interface/tests/libs/double_matmul/tem_fused_linear_0.hsaco create mode 100644 machine_interface/tests/libs/double_matmul/tem_fused_linear_1.hsaco diff --git a/machine_interface/build.rs b/machine_interface/build.rs index bb3337d1..20daec1a 100644 --- a/machine_interface/build.rs +++ b/machine_interface/build.rs @@ -18,8 +18,8 @@ fn cmake_libraries() -> () { } fn libraries_gpu() { - // Link with HIP Runtime 6.1.2 - println!("cargo:rustc-link-search=/opt/rocm-6.1.2/lib"); + // Link with HIP Runtime 6.2.2 + println!("cargo:rustc-link-search=/opt/rocm-6.2.2/lib"); println!("cargo:rustc-link-lib=amdhip64"); } diff --git a/machine_interface/src/function_driver.rs b/machine_interface/src/function_driver.rs index 3d132412..f649a2b0 100644 --- a/machine_interface/src/function_driver.rs +++ b/machine_interface/src/function_driver.rs @@ -1,3 +1,4 @@ +use std::collections::HashMap; use crate::{ interface::DandelionSystemData, memory_domain::{transfer_memory, Context, MemoryDomain}, @@ -59,7 +60,8 @@ pub struct WasmConfig { pub struct GpuConfig { pub system_data_struct_offset: usize, pub code_object_offset: usize, - pub kernels: Arc>, + pub modules_offsets: Arc>, + pub kernels: Arc>>, #[cfg(feature = "gpu")] pub blueprint: Arc, } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index b0985eaf..0de82541 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -267,30 +267,54 @@ fn common_parse( static_domain: &'static dyn crate::memory_domain::MemoryDomain, ) -> DandelionResult { // Deserialise user provided config JSON, extract module suffix - let (mut gpu_config, module_suffix) = config_parsing::parse_config(&function_path)?; + let (mut gpu_config, modules_info) = config_parsing::parse_config(&function_path)?; + + gpu_config.code_object_offset = + SYSDATA_OFFSET + std::mem::size_of::>(); let mut path = std::env::var("DANDELION_LIBRARY_PATH") .unwrap_or(format!("{}/tests/libs/", env!("CARGO_MANIFEST_DIR"))); - path += &module_suffix; + let mut code_objects = Vec::new(); + let mut sizes = Vec::new(); + let mut cumulative_size: usize = 0; + let mut modules_offsets = HashMap::new(); - let code_object = load_u8_from_file(path)?; - let size = code_object.len() * size_of::(); - gpu_config.code_object_offset = - SYSDATA_OFFSET + std::mem::size_of::>(); - - let mut context = static_domain.acquire_context(size)?; - // Not including SYSDATA_OFFSET here because SystemData is not in static context - context.write(0, &code_object)?; - // Location of code object - context.content = vec![Some(DataSet { - ident: String::from("static"), - buffers: vec![DataItem { - ident: String::from(""), - data: Position { offset: 0, size }, - key: 0, - }], - })]; + for module_info in modules_info.iter() { + let module_name = module_info.get("module_name").ok_or(DandelionError::UnknownSymbol)?; + let module_path = module_info.get("path").ok_or(DandelionError::UnknownSymbol)?; + let full_path = format!("{path}{module_path}"); + + let code_object = load_u8_from_file(full_path)?; + let size = code_object.len() * size_of::(); + + code_objects.push(code_object); + sizes.push(size); + modules_offsets.insert(module_name.clone(), cumulative_size); + + cumulative_size += size; + } + + let mut context = static_domain.acquire_context(cumulative_size)?; + + let mut offset: usize = 0; + for i in 0..code_objects.len() { + // Not including SYSDATA_OFFSET here because SystemData is not in static context + context.write(offset, &code_objects[i])?; + // Location of code object + context.content = vec![Some(DataSet { + ident: String::from("static"), + buffers: vec![DataItem { + ident: String::from(""), + data: Position { offset: offset, size: sizes[i] }, + key: 0, + }], + })]; + + offset += sizes[i]; + } + + gpu_config.modules_offsets = Arc::new(modules_offsets); let config = FunctionConfig::GpuConfig(gpu_config); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs index 5253f538..bb3e79b9 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/config_parsing.rs @@ -51,8 +51,8 @@ pub struct ExecutionBlueprint { #[derive(Deserialize, Serialize, Debug)] struct GpuConfigIR { - module_path: String, - kernels: Vec, + modules: Vec>, + kernels: Vec>, blueprint: ExecutionBlueprint, } @@ -61,6 +61,7 @@ impl From for GpuConfig { Self { system_data_struct_offset: SYSDATA_OFFSET, code_object_offset: 0, + modules_offsets: Arc::new(HashMap::new()), kernels: Arc::new(value.kernels), blueprint: Arc::new(value.blueprint), } @@ -70,38 +71,57 @@ impl From for GpuConfig { #[derive(Clone)] pub struct RuntimeGpuConfig { pub system_data_struct_offset: usize, - pub module: Arc, + pub modules: Arc>, pub kernels: Arc>, pub blueprint: Arc, } impl GpuConfig { pub fn load(self, base: *const u8) -> DandelionResult { - let module = unsafe { - hip::module_load_data(base.wrapping_add(self.code_object_offset) as *const c_void)? - }; - let kernels = self - .kernels - .iter() - .map(|kname| { - hip::module_get_function(&module, kname).map(|module| (kname.clone(), module)) - }) - .collect::, _>>()?; // this is kinda ugly but also pretty cool + let base = base.wrapping_add(self.code_object_offset); + + let mut to_load: HashMap> = HashMap::new(); + for kernel in self.kernels.iter() { + let module_name = kernel.get("module_name").ok_or(DandelionError::UnknownSymbol)?; + let kernel_name = kernel.get("kernel_name").ok_or(DandelionError::UnknownSymbol)?; + + to_load + .entry(module_name.clone()) + .or_insert_with(Vec::new) + .push(kernel_name.clone()); + } + + let mut modules = Vec::new(); + let mut kernels = HashMap::new(); + for (module_name, kernels_names) in &to_load { + let offset = self.modules_offsets.get(module_name).ok_or(DandelionError::UnknownSymbol)?; + let base_module = base.wrapping_add(offset.clone()); + + let module = unsafe { hip::module_load_data(base_module as *const c_void)? }; + + for kernel_name in kernels_names.iter() { + let kernel = hip::module_get_function(&module, kernel_name)?; + let _ = kernels.insert(kernel_name.to_string(), kernel).ok_or(DandelionError::UnknownSymbol); + } + + modules.push(module); + } + Ok(RuntimeGpuConfig { system_data_struct_offset: SYSDATA_OFFSET, - module: Arc::new(module), + modules: Arc::new(modules), kernels: Arc::new(kernels), blueprint: self.blueprint, }) } } -pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, String)> { +pub fn parse_config(path: &str) -> DandelionResult<(GpuConfig, Vec>)> { let file = File::open(path).map_err(|_| DandelionError::FileError)?; let reader = BufReader::new(file); let ir: GpuConfigIR = serde_json::from_reader(reader) .map_err(|e| DandelionError::ParsingJSONError(format!("{e}")))?; // Copy kind of unnecessary as ir.into() doesn't need the string, but less bug prone than .drain(..).collect() - let module_path = ir.module_path.clone(); - Ok((ir.into(), module_path)) + let modules_info = ir.modules.clone(); + Ok((ir.into(), modules_info)) } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs index ebd66f4f..7d9b55e9 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -510,3 +510,249 @@ fn inference_benchmark_function() { } drop(lock); } + +#[test] +fn hello_world() { + let lock = GPU_LOCK.lock().unwrap(); + let driver: Box = get_driver(); + let (mut function_context, config, queue) = prepare_engine_and_function::( + &format!( + "{}/tests/data/test_gpu_hello_world.json", + env!("CARGO_MANIFEST_DIR") + ), + MemoryResource::None, + &driver, + vec![ComputeResource::GPU(7, 0, 2)], + ); + + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec!["A".into()]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + drop(lock); +} + +#[test] +fn engine_first_double_matmul() { + use std::env; + env::set_var("RUST_BACKTRACE", "1"); + + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_first_double_matmul.json", + env!("CARGO_MANIFEST_DIR") + ); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + + let a_size: usize = 4 * 2 * (32 / 8); + let weights_size = 2 * 5 * (32 / 8); + let b_size = 4 * 5 * (32 / 8); + + let a_offset = function_context + .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) + .expect("Should have space"); + let weights_offset = function_context + .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32]) + .expect("Should have space"); + + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_size, + }, + key: 0, + }, + ], + })); + function_context.content.push(Some(DataSet { + ident: "W".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: weights_offset as usize, + size: weights_size, + }, + key: 0, + }, + ], + })); + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("B")]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + //assert_eq!(1, result_context.content.len()); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + //assert_eq!(1, output_item.buffers.len()); + let position = output_item.buffers[0].data; + assert_eq!(b_size, position.size, "Checking for size of output"); + let mut read_buffer = vec![0f32; position.size / 8]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + //assert_eq!(3, read_buffer[0]); + let expected = vec![13f32, 16f32, 19f32, 22f32, 25f32, 27f32, 34f32, 41f32, 48f32, 55f32, 41f32, 52f32, 63f32, 74f32, 85f32, 55f32, 70f32, 85f32, 100f32, 115f32]; + //assert_eq!(3i64, read_buffer[0]); + for (should, is) in expected.iter().zip(read_buffer.iter()) { + assert_eq!(should, is, "Checking final result"); + } + drop(lock); +} + +#[test] +fn full_double_matmul() { + use std::env; + env::set_var("RUST_BACKTRACE", "1"); + + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_full_double_matmul.json", + env!("CARGO_MANIFEST_DIR") + ); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + + let a_size = 4 * 2 * (32 / 8); + let w1_size = 2 * 5 * 4; + let b_size = 4 * 5 * 4; + let w2_size = 5 * 3 * 4; + let c_size = 4 * 3 * 4; + + let a_offset = function_context + .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) + .expect("Should have space"); + let w1_offset = function_context + .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32]) + .expect("Should have space"); + let w2_offset = function_context + .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32, 11.0f32, 12.0f32, 13.0f32, 14.0f32, 15.0f32]) + .expect("Should have space"); + + function_context.content.push(Some(DataSet { + ident: "A".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_size, + }, + key: 0, + }, + ], + })); + function_context.content.push(Some(DataSet { + ident: "W1".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: w1_offset as usize, + size: w1_size, + }, + key: 0, + }, + ], + })); + function_context.content.push(Some(DataSet { + ident: "W2".to_string(), + buffers: vec![ + DataItem { + ident: "".to_string(), + data: Position { + offset: w2_offset as usize, + size: w2_size, + }, + key: 0, + }, + ], + })); + + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from("C")]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + assert_eq!(c_size, position.size, "Checking for size of output"); + let mut read_buffer = vec![0f32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + let expected: Vec = vec![755.0, 850.0, 945.0, 1645.0, 1850.0, 2055.0, 2535.0, 2850.0, 3165.0, 3425.0, 3850.0, 4275.0]; + for (should, is) in expected.iter().zip(read_buffer.iter()) { + assert_eq!(should, is, "Checking final result"); + } + println!("Correct result!"); + drop(lock); +} diff --git a/machine_interface/tests/data/test_gpu_basic_io.json b/machine_interface/tests/data/test_gpu_basic_io.json index a633f342..c326ed39 100644 --- a/machine_interface/tests/data/test_gpu_basic_io.json +++ b/machine_interface/tests/data/test_gpu_basic_io.json @@ -1,6 +1,6 @@ { - "module_path": "module.hsaco", - "kernels": ["check_then_write"], + "modules": [ { "module_name": "module.hsaco", "path": "module.hsaco" } ], + "kernels": [ { "module_name": "module.hsaco", "kernel_name": "check_then_write" } ], "blueprint": { "inputs": ["A"], "buffers": {}, diff --git a/machine_interface/tests/data/test_gpu_basic_io.json.old b/machine_interface/tests/data/test_gpu_basic_io.json.old new file mode 100644 index 00000000..a633f342 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_basic_io.json.old @@ -0,0 +1,20 @@ +{ + "module_path": "module.hsaco", + "kernels": ["check_then_write"], + "blueprint": { + "inputs": ["A"], + "buffers": {}, + "outputs": ["A"], + "control_flow": [ + {"ExecKernel": ["check_then_write", [{"Ptr": "A"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_first_double_matmul.json b/machine_interface/tests/data/test_gpu_first_double_matmul.json new file mode 100644 index 00000000..fa6d3cd8 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_first_double_matmul.json @@ -0,0 +1,24 @@ +{ + "modules": [ + { "module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco" } + ], + "kernels": [ + { "module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000" } + ], + "blueprint": { + "inputs": ["A", "W"], + "buffers": {"B": {"Absolute": 80}}, + "outputs": ["B"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "A"}, {"Ptr": "W"}, {"Ptr": "B"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 1024} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_full_double_matmul.json b/machine_interface/tests/data/test_gpu_full_double_matmul.json new file mode 100644 index 00000000..65b173c0 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_full_double_matmul.json @@ -0,0 +1,35 @@ +{ + "modules": [ + { "module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco" }, + { "module_name": "tem_fused_linear_1.hsaco", "path": "double_matmul/tem_fused_linear_1.hsaco" } + ], + "kernels": [ + { "module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000" }, + { "module_name": "tem_fused_linear_1.hsaco", "kernel_name": "kern001" } + ], + "blueprint": { + "inputs": ["A", "W1", "W2"], + "buffers": {"B": {"Absolute": 80}, "C": {"Absolute": 48}}, + "outputs": ["C"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "A"}, {"Ptr": "W1"}, {"Ptr": "B"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 1024} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "B"}, {"Ptr": "W2"}, {"Ptr": "C"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 1024} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_hello_world.json b/machine_interface/tests/data/test_gpu_hello_world.json new file mode 100644 index 00000000..17f551ae --- /dev/null +++ b/machine_interface/tests/data/test_gpu_hello_world.json @@ -0,0 +1,20 @@ +{ + "modules": [ { "module_name": "module.hsaco", "path": "module.hsaco" } ], + "kernels": [ { "module_name": "module.hsaco", "kernel_name": "hello_world" } ], + "blueprint": { + "inputs": [], + "buffers": {}, + "outputs": [], + "control_flow": [ + {"ExecKernel": ["hello_world", [], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_inference.json b/machine_interface/tests/data/test_gpu_inference.json index ee6e8d46..1feea9aa 100644 --- a/machine_interface/tests/data/test_gpu_inference.json +++ b/machine_interface/tests/data/test_gpu_inference.json @@ -1,12 +1,27 @@ { - "module_path": "mlops.hsaco", - "kernels": ["matmul_f", "convolution_f", "relu_2d_f", "maxpool_f"], + "modules": [ { "module_name": "mlops.hsaco", "path": "mlops.hsaco" }, { "module_name": "module.hsaco", "path": "module.hsaco" } ], + "kernels": [ + { "module_name": "mlops.hsaco", "kernel_name": "matmul_f" }, + { "module_name": "mlops.hsaco", "kernel_name": "convolution_f" }, + { "module_name": "mlops.hsaco", "kernel_name": "relu_2d_f" }, + { "module_name": "mlops.hsaco", "kernel_name": "maxpool_f" }, + { "module_name": "module.hsaco", "kernel_name": "hello_world" } + ], "blueprint": { "inputs": ["cfg", "A", "B"], "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, "outputs": ["D"], "control_flow": [ {"Repeat": [{"FromInput": {"bufname": "cfg", "idx": 3}}, [ + {"ExecKernel": ["hello_world", [], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 1}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, diff --git a/machine_interface/tests/data/test_gpu_inference.json.old b/machine_interface/tests/data/test_gpu_inference.json.old new file mode 100644 index 00000000..ee6e8d46 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_inference.json.old @@ -0,0 +1,40 @@ +{ + "module_path": "mlops.hsaco", + "kernels": ["matmul_f", "convolution_f", "relu_2d_f", "maxpool_f"], + "blueprint": { + "inputs": ["cfg", "A", "B"], + "buffers": {"C": {"Sizeof": "A"}, "D": {"FromInput": {"bufname": "cfg", "idx": 0}}}, + "outputs": ["D"], + "control_flow": [ + {"Repeat": [{"FromInput": {"bufname": "cfg", "idx": 3}}, [ + {"ExecKernel": ["convolution_f", [{"Ptr": "C"}, {"Ptr": "A"}, {"Ptr": "B"}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["relu_2d_f", [{"Ptr": "C"}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 1}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["maxpool_f", [{"Ptr": "D"}, {"Ptr": "C"}, {"Constant": 2}], { + "grid_dim_x": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_y": {"FromInput": {"bufname": "cfg", "idx": 2}}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 32}, + "block_dim_y": {"Absolute": 32}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}] + ]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_minimal.json b/machine_interface/tests/data/test_gpu_minimal.json index 73e2a75c..57253320 100644 --- a/machine_interface/tests/data/test_gpu_minimal.json +++ b/machine_interface/tests/data/test_gpu_minimal.json @@ -1,6 +1,10 @@ { - "module_path": "module.hsaco", - "kernels": ["set_mem", "check_mem"], + "modules": [ { "module_name": "module.hsaco", "path": "module.hsaco" } ], + "kernels": [ + { "module_name": "module.hsaco", "kernel_name": "set_mem" }, + { "module_name": "module.hsaco", "kernel_name": "check_mem" }, + { "module_name": "module.hsaco", "kernel_name": "hello_world" } + ], "blueprint": { "inputs": [], "buffers": {"A": {"Absolute": 1024}}, diff --git a/machine_interface/tests/libs/double_matmul/tem_fused_linear_0.hsaco b/machine_interface/tests/libs/double_matmul/tem_fused_linear_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..f183f5af591aad89024bbe44ace392e036c36a86 GIT binary patch literal 6160 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/double_matmul/tem_fused_linear_1.hsaco b/machine_interface/tests/libs/double_matmul/tem_fused_linear_1.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..cf6fc64c26aef57425f6af8198af3ddc0af8f3ce GIT binary patch literal 6080 zcmeHL-)|g89slm^%--JJ?)hw=+_OW|O=^;>h1X8VFHl2WIZ!|egi1jmgsy9Q?}u}~ zyY8JG8!6{I|7a{>)ge?74+TFZk%*eA50n;4Yzjz7@DQgjMns4gME?Q$0*(33?u>i6 zG)+R^P`Dte0O$sXJ@~B{3}FJh6n_t!rws=eGWsi-x+kCVVrjabo}pxcF>Sb zu?+>{yKr4Nlc)C^e**lU4GdSo(_alQLE&_At% z_-LW)J8{YIMj}zS%I)!|;sQ=V<&>f1QVju!h7c*ASn z-=ED)e__y(OJK_ND*00Jf+80vu9J@=F78lqHHrIiNi481^8H;x-p|6A>&w=IeZD;7 zb+9<$ujfRE~NhxlOzNvYf}J9i_`We#44Wkf!&{|C}m zqvxYPg%#X$8t_N+rG{B=z!J>EYUDgbkQWIpg$z<75LxH*B}7~2TVp-6*wCW1p*%-w zG)k9Nz}T~B{N(HwA(7i#v)@$ONUcsH*kUz>C2P!J7YxQOVrx)lTr@()1!^obXlNN* zc+H@6vAM5dD%`KOYMiIhg@$Hm4Qf(EbID}Ui*!MIc>#zuZY^BzfTcBUHFjPjG!^?< zY$Zmu+?J;8`OnrCkPsaw@a_hQcGFd=?Iy5tbB+?2U0+^Ph+YFq_tTJe1nMVmAvaW` zx6g4|G^AWGl}5vez*4k<^Thcom?!46$P{IfHkdzVR9RF&SyG_hz$JeZ^lrKZ_3Ph0 zb?Ov>b2lk2T8wL99ytOZZV)w0DdRc)ZUg=KIq4!Nm1s2*kMCDIJN$ffm{sfKm9yhk z{dySZxJ=`@I_aqS`f&m(p}s!(NT1c<_PGVD!xD+7mPtpdK@wKPO!PHqm(_?Ttwu+W zHJ3>AM$N81!%X&>W=~%P^H$8K=v-G#8_UUc$KFldaOq$Zo zcq-f$>kFAiDunfkFopPaLez1rBl7FPn}%Zz#{h**bc?rOVG{?Keqj@zyZ9??;yT8( zKimM+t7Cn*T^TS(W#=ZS42X(|5u{I0%A5YOR(;fFe~Y^HKfD)agv{$pXL&yoB9!a% zzHSnVF>WfX8_j-yW5K`-#_KO}S+tGN5Y*QQHW=D`4>zo&f{1%(k{}X96;VY5Ywo&% z*Hnl1H?&YYU5$6_me)0m_l*wS8#-R&Fnnf%bz+Qq`4+ARsFB;}8V02N*nC&S*p$4# z0qBGK#O1oSsz(A}I@%Ms!xu@2pA2(SqCrlS z1b*fX66A!n_3MGT@HIORkXuDRuGJ{#*~YApWP zj##_W!Q=127O3m~D=Gp1;fLI3xLMO1an;LLOGOwRalO&P;jA}4l|7iBnLIRF7%d(2 zys`Yu$asF*c`=tCJ3Q|0KYeJXTFK;W`GVFu{{ilz+!eP>^thP5ETY|2ZMYHek($s^>Hm6=j4?BDhsAu_lUD}gu zcmUOHHhgb|U7w&Zto8aKc43GNqc&L~c)75e_^t(8NEBaZD2;<$r?S5CTy;EO#8b}~ zEj+VZ$B!Sg_8qYY?LjoY2l;;RjY@v^kZL^U!<^f|E|#h;*kdzAJdA>!El%1wr;-El z&-qmkY_BxtR2{IZ?sV1Hb|&(p$aV`}DP6`72l-+a`R>SMHtmdzc0{sh#5$it z-|hI;6Oil(l;2yVxOH3MwtUZ$W^x~s_*G%Z_c0y|-<^Dt`&%21KG@nSNqf1EN$eH+ zQZDTU8~9r+_buge-;-zwMJbp0OMC+5{9G*Ma-WsBy?%usK8I%7iv!M+_QA(JWVC!Q zkTyfIBX9tb+so&GyiX)!y>-GZ2^qSjbhlyP3`)=?Dp-*2+zU1=}T zYvMJl{z=%sD;0&XWeBx<*q;~QVN%Ubu`lZ{**_Hat@*zt>>rbg0%d%OuONSW?KSD% x5cV$!UWd?=@#X#ZD)QyE7pguCas#Am0c`)vxRP-hJ0EBNH(~#{R20~1|6e|hLDm2O literal 0 HcmV?d00001 From 119645567e92b162586b0caec79a6d4568e2064b Mon Sep 17 00:00:00 2001 From: Alessio Russo Date: Sun, 17 Nov 2024 19:19:29 +0100 Subject: [PATCH 135/176] addition of full model tests --- .../compute_driver/compute_driver_tests.rs | 2 +- .../src/function_driver/compute_driver/gpu.rs | 2 +- .../compute_driver/gpu/gpu_tests.rs | 176 ++--------- .../gpu/gpu_tests/compiled_tests.rs | 185 +++++++++++ .../gpu/gpu_tests/load_models.rs | 208 +++++++++++++ .../gpu/gpu_tests/load_utils.rs | 75 +++++ .../gpu/gpu_tests/tests_utils.rs | 76 +++++ .../tests/data/test_gpu_alexnet.json | 134 ++++++++ .../data/test_gpu_full_double_matmul.json | 34 +-- .../tests/data/test_gpu_lenet5.json | 101 ++++++ .../tests/data/test_gpu_resnet18.json | 289 ++++++++++++++++++ .../tests/data/test_gpu_simple_conv.json | 35 +++ ..._avg_pool2d_conv2d_max_pool2d_relu_7.hsaco | Bin 0 -> 5600 bytes .../poi_fused_conv2d_max_pool2d_relu_1.hsaco | Bin 0 -> 5592 bytes .../poi_fused_conv2d_max_pool2d_relu_3.hsaco | Bin 0 -> 5592 bytes .../alexnet/tem_fused_conv2d_relu_0.hsaco | Bin 0 -> 7904 bytes .../alexnet/tem_fused_conv2d_relu_2.hsaco | Bin 0 -> 11936 bytes .../alexnet/tem_fused_conv2d_relu_4.hsaco | Bin 0 -> 8472 bytes .../alexnet/tem_fused_conv2d_relu_5.hsaco | Bin 0 -> 8472 bytes .../alexnet/tem_fused_conv2d_relu_6.hsaco | Bin 0 -> 8472 bytes .../alexnet/tem_fused_linear_relu_10.hsaco | Bin 0 -> 10576 bytes .../tests/libs/alexnet/tem_fused_relu_8.hsaco | Bin 0 -> 8704 bytes .../tests/libs/alexnet/tem_fused_relu_9.hsaco | Bin 0 -> 8680 bytes .../double_matmul/tem_fused_linear_0.hsaco | Bin 6160 -> 6160 bytes .../libs/lenet5/poi_fused_conv2d_0.hsaco | Bin 0 -> 4560 bytes .../poi_fused_conv2d_max_pool2d_relu_2.hsaco | Bin 0 -> 4952 bytes .../poi_fused_conv2d_max_pool2d_relu_4.hsaco | Bin 0 -> 4952 bytes .../tem_fused_conv2d_max_pool2d_relu_3.hsaco | Bin 0 -> 7408 bytes .../libs/lenet5/tem_fused_conv2d_relu_1.hsaco | Bin 0 -> 7576 bytes .../libs/lenet5/tem_fused_linear_relu_7.hsaco | Bin 0 -> 9064 bytes .../tests/libs/lenet5/tem_fused_relu_5.hsaco | Bin 0 -> 12192 bytes .../tests/libs/lenet5/tem_fused_relu_6.hsaco | Bin 0 -> 9576 bytes ...pool2d_add_miopen_batch_norm_relu_19.hsaco | Bin 0 -> 6336 bytes ..._fused_add_miopen_batch_norm_relu_13.hsaco | Bin 0 -> 5360 bytes ..._fused_add_miopen_batch_norm_relu_17.hsaco | Bin 0 -> 5920 bytes ...sed_conv2d_miopen_batch_norm_relu_12.hsaco | Bin 0 -> 5488 bytes ..._max_pool2d_miopen_batch_norm_relu_1.hsaco | Bin 0 -> 7504 bytes ...add_conv2d_miopen_batch_norm_relu_11.hsaco | Bin 0 -> 20952 bytes ..._add_conv2d_miopen_batch_norm_relu_3.hsaco | Bin 0 -> 11592 bytes ..._add_conv2d_miopen_batch_norm_relu_6.hsaco | Bin 0 -> 20632 bytes ..._add_conv2d_miopen_batch_norm_relu_8.hsaco | Bin 0 -> 17320 bytes .../libs/resnet18/tem_fused_conv2d_16.hsaco | Bin 0 -> 9304 bytes ...used_conv2d_miopen_batch_norm_relu_0.hsaco | Bin 0 -> 14384 bytes ...sed_conv2d_miopen_batch_norm_relu_10.hsaco | Bin 0 -> 10088 bytes ...sed_conv2d_miopen_batch_norm_relu_14.hsaco | Bin 0 -> 10672 bytes ...sed_conv2d_miopen_batch_norm_relu_15.hsaco | Bin 0 -> 6368 bytes ...sed_conv2d_miopen_batch_norm_relu_18.hsaco | Bin 0 -> 8624 bytes ...used_conv2d_miopen_batch_norm_relu_2.hsaco | Bin 0 -> 10680 bytes ...used_conv2d_miopen_batch_norm_relu_4.hsaco | Bin 0 -> 16072 bytes ...used_conv2d_miopen_batch_norm_relu_5.hsaco | Bin 0 -> 9592 bytes ...used_conv2d_miopen_batch_norm_relu_7.hsaco | Bin 0 -> 15776 bytes ...used_conv2d_miopen_batch_norm_relu_9.hsaco | Bin 0 -> 16656 bytes .../libs/resnet18/tem_fused_linear_20.hsaco | Bin 0 -> 11128 bytes .../poi_fused_miopen_batch_norm_0.hsaco | Bin 0 -> 4368 bytes .../tem_fused_miopen_batch_norm_1.hsaco | Bin 0 -> 6464 bytes 55 files changed, 1155 insertions(+), 162 deletions(-) create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs create mode 100644 machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs create mode 100644 machine_interface/tests/data/test_gpu_alexnet.json create mode 100644 machine_interface/tests/data/test_gpu_lenet5.json create mode 100644 machine_interface/tests/data/test_gpu_resnet18.json create mode 100644 machine_interface/tests/data/test_gpu_simple_conv.json create mode 100644 machine_interface/tests/libs/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco create mode 100644 machine_interface/tests/libs/alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco create mode 100644 machine_interface/tests/libs/alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_0.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_2.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_4.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_5.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_6.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_linear_relu_10.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_relu_8.hsaco create mode 100644 machine_interface/tests/libs/alexnet/tem_fused_relu_9.hsaco create mode 100644 machine_interface/tests/libs/lenet5/poi_fused_conv2d_0.hsaco create mode 100644 machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco create mode 100644 machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco create mode 100644 machine_interface/tests/libs/lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco create mode 100644 machine_interface/tests/libs/lenet5/tem_fused_conv2d_relu_1.hsaco create mode 100644 machine_interface/tests/libs/lenet5/tem_fused_linear_relu_7.hsaco create mode 100644 machine_interface/tests/libs/lenet5/tem_fused_relu_5.hsaco create mode 100644 machine_interface/tests/libs/lenet5/tem_fused_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco create mode 100644 machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco create mode 100644 machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco create mode 100644 machine_interface/tests/libs/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco create mode 100644 machine_interface/tests/libs/resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_16.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco create mode 100644 machine_interface/tests/libs/resnet18/tem_fused_linear_20.hsaco create mode 100644 machine_interface/tests/libs/simple_conv/poi_fused_miopen_batch_norm_0.hsaco create mode 100644 machine_interface/tests/libs/simple_conv/tem_fused_miopen_batch_norm_1.hsaco diff --git a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs index c32f444a..4f26732f 100644 --- a/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/compute_driver_tests.rs @@ -63,7 +63,7 @@ pub(crate) mod compute_driver_tests { .start_engine(drv_init[0], queue.clone()) .expect("Should be able to start engine"); let function_context = function - .load(domain, 0x802_0000) + .load(domain, 0x1002_0000) .expect("Should be able to load function"); return (function_context, function.config, queue); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu.rs b/machine_interface/src/function_driver/compute_driver/gpu.rs index 0de82541..9c036ef0 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu.rs @@ -272,7 +272,7 @@ fn common_parse( gpu_config.code_object_offset = SYSDATA_OFFSET + std::mem::size_of::>(); - let mut path = std::env::var("DANDELION_LIBRARY_PATH") + let path = std::env::var("DANDELION_LIBRARY_PATH") .unwrap_or(format!("{}/tests/libs/", env!("CARGO_MANIFEST_DIR"))); let mut code_objects = Vec::new(); diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs index 7d9b55e9..f4933f50 100644 --- a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests.rs @@ -1,3 +1,8 @@ +mod compiled_tests; +mod load_models; +mod load_utils; +mod tests_utils; + use std::sync::{Arc, Mutex}; use dandelion_commons::records::{Archive, ArchiveInit, RecordPoint}; @@ -524,7 +529,7 @@ fn hello_world() { &driver, vec![ComputeResource::GPU(7, 0, 2)], ); - + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { #[cfg(feature = "timestamp")] timestamp_count: 1000, @@ -561,41 +566,41 @@ fn engine_first_double_matmul() { prepare_engine_and_function::(filename, dom_init, &driver, drv_init); let a_size: usize = 4 * 2 * (32 / 8); - let weights_size = 2 * 5 * (32 / 8); - let b_size = 4 * 5 * (32 / 8); + let weights_size = 2 * 5 * (32 / 8); + let b_size = 4 * 5 * (32 / 8); let a_offset = function_context - .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) + .get_free_space_and_write_slice(&[ + 1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, + ]) .expect("Should have space"); let weights_offset = function_context - .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32]) + .get_free_space_and_write_slice(&[ + 1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32, + ]) .expect("Should have space"); - + function_context.content.push(Some(DataSet { ident: "A".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: a_offset as usize, - size: a_size, - }, - key: 0, + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: a_offset as usize, + size: a_size, }, - ], + key: 0, + }], })); function_context.content.push(Some(DataSet { ident: "W".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: weights_offset as usize, - size: weights_size, - }, - key: 0, + buffers: vec![DataItem { + ident: "".to_string(), + data: Position { + offset: weights_offset as usize, + size: weights_size, }, - ], + key: 0, + }], })); let archive = Box::leak(Box::new(Archive::init(ArchiveInit { #[cfg(feature = "timestamp")] @@ -622,11 +627,9 @@ fn engine_first_double_matmul() { recorder .record(RecordPoint::FutureReturn) .expect("Should have properly advanced recorder state"); - //assert_eq!(1, result_context.content.len()); let output_item = result_context.content[0] .as_ref() .expect("Set should be present"); - //assert_eq!(1, output_item.buffers.len()); let position = output_item.buffers[0].data; assert_eq!(b_size, position.size, "Checking for size of output"); let mut read_buffer = vec![0f32; position.size / 8]; @@ -634,125 +637,12 @@ fn engine_first_double_matmul() { .context .read(position.offset, &mut read_buffer) .expect("Should succeed in reading"); - //assert_eq!(3, read_buffer[0]); - let expected = vec![13f32, 16f32, 19f32, 22f32, 25f32, 27f32, 34f32, 41f32, 48f32, 55f32, 41f32, 52f32, 63f32, 74f32, 85f32, 55f32, 70f32, 85f32, 100f32, 115f32]; - //assert_eq!(3i64, read_buffer[0]); - for (should, is) in expected.iter().zip(read_buffer.iter()) { - assert_eq!(should, is, "Checking final result"); - } - drop(lock); -} - -#[test] -fn full_double_matmul() { - use std::env; - env::set_var("RUST_BACKTRACE", "1"); - - let lock = GPU_LOCK.lock().unwrap(); - let filename = &format!( - "{}/tests/data/test_gpu_full_double_matmul.json", - env!("CARGO_MANIFEST_DIR") - ); - let dom_init = MemoryResource::None; - let driver: Box = get_driver(); - let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; - let (mut function_context, config, queue) = - prepare_engine_and_function::(filename, dom_init, &driver, drv_init); - - let a_size = 4 * 2 * (32 / 8); - let w1_size = 2 * 5 * 4; - let b_size = 4 * 5 * 4; - let w2_size = 5 * 3 * 4; - let c_size = 4 * 3 * 4; - - let a_offset = function_context - .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) - .expect("Should have space"); - let w1_offset = function_context - .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32]) - .expect("Should have space"); - let w2_offset = function_context - .get_free_space_and_write_slice(&[1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32, 11.0f32, 12.0f32, 13.0f32, 14.0f32, 15.0f32]) - .expect("Should have space"); - - function_context.content.push(Some(DataSet { - ident: "A".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: a_offset as usize, - size: a_size, - }, - key: 0, - }, - ], - })); - function_context.content.push(Some(DataSet { - ident: "W1".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: w1_offset as usize, - size: w1_size, - }, - key: 0, - }, - ], - })); - function_context.content.push(Some(DataSet { - ident: "W2".to_string(), - buffers: vec![ - DataItem { - ident: "".to_string(), - data: Position { - offset: w2_offset as usize, - size: w2_size, - }, - key: 0, - }, - ], - })); - - let archive = Box::leak(Box::new(Archive::init(ArchiveInit { - #[cfg(feature = "timestamp")] - timestamp_count: 1000, - }))); - let mut recorder = archive.get_recorder().unwrap(); - recorder - .record(RecordPoint::TransferEnd) - .expect("Should have properly initialized recorder state"); - let promise = queue.enqueu(WorkToDo::FunctionArguments { - config, - context: function_context, - output_sets: Arc::new(vec![String::from("C")]), - recorder: recorder.get_sub_recorder().unwrap(), - }); - queue.enqueu(WorkToDo::Shutdown()); - let result_context = tokio::runtime::Builder::new_current_thread() - .build() - .unwrap() - .block_on(promise) - .expect("Engine should run ok with basic function") - .get_context(); - recorder - .record(RecordPoint::FutureReturn) - .expect("Should have properly advanced recorder state"); - let output_item = result_context.content[0] - .as_ref() - .expect("Set should be present"); - let position = output_item.buffers[0].data; - assert_eq!(c_size, position.size, "Checking for size of output"); - let mut read_buffer = vec![0f32; position.size / 4]; - result_context - .context - .read(position.offset, &mut read_buffer) - .expect("Should succeed in reading"); - let expected: Vec = vec![755.0, 850.0, 945.0, 1645.0, 1850.0, 2055.0, 2535.0, 2850.0, 3165.0, 3425.0, 3850.0, 4275.0]; + let expected = vec![ + 13f32, 16f32, 19f32, 22f32, 25f32, 27f32, 34f32, 41f32, 48f32, 55f32, 41f32, 52f32, 63f32, + 74f32, 85f32, 55f32, 70f32, 85f32, 100f32, 115f32, + ]; for (should, is) in expected.iter().zip(read_buffer.iter()) { assert_eq!(should, is, "Checking final result"); } - println!("Correct result!"); drop(lock); } diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs new file mode 100644 index 00000000..9ba9d298 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/compiled_tests.rs @@ -0,0 +1,185 @@ +use crate::{ + function_driver::{ + compute_driver::{ + compute_driver_tests::compute_driver_tests::prepare_engine_and_function, + gpu::gpu_tests::{ + get_driver, + load_models::*, + tests_utils::{compare_result, execute_test, get_result, setup_test}, + Archive, ArchiveInit, RecordPoint, GPU_LOCK, + }, + }, + Arc, ComputeResource, Driver, WorkToDo, + }, + memory_domain::{gpu::GpuMemoryDomain, ContextTrait, MemoryResource}, +}; + +#[test] +fn test_all() { + full_double_matmul(); + alexnet(); + lenet5(); +} + +#[test] +fn full_double_matmul() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_full_double_matmul.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = + load_double_matmul(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size); + compare_result(expected, read_buffer); + drop(lock); +} + +#[test] +fn alexnet() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_alexnet.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_alexnet(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size); + compare_result(expected, read_buffer); + drop(lock); +} + +#[test] +fn lenet5() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_lenet5.json", + env!("CARGO_MANIFEST_DIR") + ); + let (mut function_context, config, queue) = setup_test(&filename); + let (output_size, output_name, expected, function_context) = load_lenet5(function_context); + let result_context = execute_test(function_context, config, queue, &output_name); + let read_buffer = get_result(result_context, output_size); + compare_result(expected, read_buffer); + drop(lock); +} + +#[test] +fn simple_conv() { + use std::env; + env::set_var("RUST_BACKTRACE", "1"); + + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_simple_conv.json", + env!("CARGO_MANIFEST_DIR") + ); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + + let (output_size, output_name, expected, function_context) = load_simple_conv(function_context); + + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from(&output_name)]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + assert_eq!(output_size, position.size, "Checking for size of output"); + let mut read_buffer = vec![0f32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + for (should, is) in expected.iter().zip(read_buffer.iter()) { + //assert_eq!(should, is, "Checking final result"); + println!("{should}\t\t{is}"); + } + println!("Correct result!"); + drop(lock); +} + +#[test] +fn resnet18() { + let lock = GPU_LOCK.lock().unwrap(); + let filename = &format!( + "{}/tests/data/test_gpu_resnet18.json", + env!("CARGO_MANIFEST_DIR") + ); + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + let (mut function_context, config, queue) = + prepare_engine_and_function::(filename, dom_init, &driver, drv_init); + + let (output_size, output_name, expected, function_context) = load_resnet18(function_context); + + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from(&output_name)]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + assert_eq!(output_size, position.size, "Checking for size of output"); + let mut read_buffer = vec![0f32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + for (should, is) in expected.iter().zip(read_buffer.iter()) { + //assert_eq!(should, is, "Checking final result"); + println!("{should}\t\t{is}"); + } + println!("Correct result!"); + drop(lock); +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs new file mode 100644 index 00000000..2790330f --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_models.rs @@ -0,0 +1,208 @@ +use crate::{ + function_driver::compute_driver::gpu::gpu_tests::load_utils::{ + add_buffer, add_empty_buffer, add_number, read_tensor_from_file, + }, + memory_domain::Context, +}; + +pub fn load_double_matmul(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/double_matmul/constants"; + + add_buffer("arg2_1", 32, constants_path, &mut function_context); + add_buffer("linear1_weight", 40, constants_path, &mut function_context); + add_buffer("linear2_weight", 60, constants_path, &mut function_context); + + let output_name: &str = "buf1"; + let output_size: usize = 48; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_resnet18(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/resnet18/constants"; + + add_buffer("arg122_1", 602112, constants_path, &mut function_context); + add_buffer("conv1_weight", 37632, constants_path, &mut function_context); + add_empty_buffer("bn1_running_mean", 256, &mut function_context); + add_empty_buffer("bn1_running_var", 256, &mut function_context); + add_buffer("bn1_weight", 256, constants_path, &mut function_context); + add_buffer("bn1_bias", 256, constants_path, &mut function_context); + add_number("var_9", 200704, &mut function_context); + add_buffer("layer1_0_conv1_weight", 147456, constants_path, &mut function_context); + add_empty_buffer("layer1_0_bn1_running_mean", 256, &mut function_context); + add_empty_buffer("layer1_0_bn1_running_var", 256, &mut function_context); + add_buffer("layer1_0_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_0_conv2_weight", 147456, constants_path, &mut function_context); + add_empty_buffer("layer1_0_bn2_running_mean", 256, &mut function_context); + add_empty_buffer("layer1_0_bn2_running_var", 256, &mut function_context); + add_buffer("layer1_0_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_0_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv1_weight", 147456, constants_path, &mut function_context); + add_empty_buffer("layer1_1_bn1_running_mean", 256, &mut function_context); + add_empty_buffer("layer1_1_bn1_running_var", 256, &mut function_context); + add_buffer("layer1_1_bn1_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn1_bias", 256, constants_path, &mut function_context); + add_buffer("layer1_1_conv2_weight", 147456, constants_path, &mut function_context); + add_empty_buffer("layer1_1_bn2_running_mean", 256, &mut function_context); + add_empty_buffer("layer1_1_bn2_running_var", 256, &mut function_context); + add_buffer("layer1_1_bn2_weight", 256, constants_path, &mut function_context); + add_buffer("layer1_1_bn2_bias", 256, constants_path, &mut function_context); + add_buffer("layer2_0_conv1_weight", 294912, constants_path, &mut function_context); + add_empty_buffer("layer2_0_bn1_running_mean", 512, &mut function_context); + add_empty_buffer("layer2_0_bn1_running_var", 512, &mut function_context); + add_buffer("layer2_0_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_0_conv2_weight", 589824, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_0_weight", 32768, constants_path, &mut function_context); + add_empty_buffer("layer2_0_bn2_running_mean", 512, &mut function_context); + add_empty_buffer("layer2_0_bn2_running_var", 512, &mut function_context); + add_buffer("layer2_0_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_bn2_bias", 512, constants_path, &mut function_context); + add_empty_buffer("layer2_0_downsample_1_running_mean", 512, &mut function_context); + add_empty_buffer("layer2_0_downsample_1_running_var", 512, &mut function_context); + add_buffer("layer2_0_downsample_1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_0_downsample_1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv1_weight", 589824, constants_path, &mut function_context); + add_empty_buffer("layer2_1_bn1_running_mean", 512, &mut function_context); + add_empty_buffer("layer2_1_bn1_running_var", 512, &mut function_context); + add_buffer("layer2_1_bn1_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn1_bias", 512, constants_path, &mut function_context); + add_buffer("layer2_1_conv2_weight", 589824, constants_path, &mut function_context); + add_empty_buffer("layer2_1_bn2_running_mean", 512, &mut function_context); + add_empty_buffer("layer2_1_bn2_running_var", 512, &mut function_context); + add_buffer("layer2_1_bn2_weight", 512, constants_path, &mut function_context); + add_buffer("layer2_1_bn2_bias", 512, constants_path, &mut function_context); + add_buffer("layer3_0_conv1_weight", 1179648, constants_path, &mut function_context); + add_empty_buffer("layer3_0_bn1_running_mean", 1024, &mut function_context); + add_empty_buffer("layer3_0_bn1_running_var", 1024, &mut function_context); + add_buffer("layer3_0_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_conv2_weight", 2359296, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_0_weight", 131072, constants_path, &mut function_context); + add_empty_buffer("layer3_0_bn2_running_mean", 1024, &mut function_context); + add_empty_buffer("layer3_0_bn2_running_var", 1024, &mut function_context); + add_buffer("layer3_0_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_bn2_bias", 1024, constants_path, &mut function_context); + add_empty_buffer("layer3_0_downsample_1_running_mean", 1024, &mut function_context); + add_empty_buffer("layer3_0_downsample_1_running_var", 1024, &mut function_context); + add_buffer("layer3_0_downsample_1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_0_downsample_1_bias", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_conv1_weight", 2359296, constants_path, &mut function_context); + add_empty_buffer("layer3_1_bn1_running_mean", 1024, &mut function_context); + add_empty_buffer("layer3_1_bn1_running_var", 1024, &mut function_context); + add_buffer("layer3_1_bn1_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn1_bias", 1024, constants_path, &mut function_context); + add_number("var_107", 50176, &mut function_context); + add_buffer("layer3_1_conv2_weight", 2359296, constants_path, &mut function_context); + add_empty_buffer("layer3_1_bn2_running_mean", 1024, &mut function_context); + add_empty_buffer("layer3_1_bn2_running_var", 1024, &mut function_context); + add_buffer("layer3_1_bn2_weight", 1024, constants_path, &mut function_context); + add_buffer("layer3_1_bn2_bias", 1024, constants_path, &mut function_context); + add_number("var_117", 50176, &mut function_context); + add_buffer("layer4_0_conv1_weight", 4718592, constants_path, &mut function_context); + add_empty_buffer("layer4_0_bn1_running_mean", 2048, &mut function_context); + add_empty_buffer("layer4_0_bn1_running_var", 2048, &mut function_context); + add_buffer("layer4_0_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_conv2_weight", 9437184, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_0_weight", 524288, constants_path, &mut function_context); + add_empty_buffer("layer4_0_bn2_running_mean", 2048, &mut function_context); + add_empty_buffer("layer4_0_bn2_running_var", 2048, &mut function_context); + add_buffer("layer4_0_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_bn2_bias", 2048, constants_path, &mut function_context); + add_empty_buffer("layer4_0_downsample_1_running_mean", 2048, &mut function_context); + add_empty_buffer("layer4_0_downsample_1_running_var", 2048, &mut function_context); + add_buffer("layer4_0_downsample_1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_0_downsample_1_bias", 2048, constants_path, &mut function_context); + add_number("var_141", 25088, &mut function_context); + add_buffer("layer4_1_conv1_weight", 9437184, constants_path, &mut function_context); + add_empty_buffer("layer4_1_bn1_running_mean", 2048, &mut function_context); + add_empty_buffer("layer4_1_bn1_running_var", 2048, &mut function_context); + add_buffer("layer4_1_bn1_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn1_bias", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_conv2_weight", 9437184, constants_path, &mut function_context); + add_empty_buffer("layer4_1_bn2_running_mean", 2048, &mut function_context); + add_empty_buffer("layer4_1_bn2_running_var", 2048, &mut function_context); + add_buffer("layer4_1_bn2_weight", 2048, constants_path, &mut function_context); + add_buffer("layer4_1_bn2_bias", 2048, constants_path, &mut function_context); + add_number("var_159", 512, &mut function_context); + add_number("var_160", 49, &mut function_context); + add_buffer("fc_bias", 4000, constants_path, &mut function_context); + add_buffer("fc_weight", 2048000, constants_path, &mut function_context); + + let output_name: &str = "buf42"; + let output_size: usize = 4000; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_simple_conv(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/simple_conv/constants"; + + add_buffer("arg7_1", 100, constants_path, &mut function_context); + add_buffer("conv_weight", 36, constants_path, &mut function_context); + + let output_name: &str = "buf2"; + let output_size: usize = 36; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_alexnet(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/alexnet/constants"; + + add_buffer("arg16_1", 618348, constants_path, &mut function_context); + add_buffer("features_0_weight", 92928, constants_path, &mut function_context); + add_buffer("features_0_bias", 256, constants_path, &mut function_context); + add_number("var_6", 46656, &mut function_context); + add_buffer("features_3_weight", 1228800, constants_path, &mut function_context); + add_buffer("features_3_bias", 768, constants_path, &mut function_context); + add_number("var_13", 32448, &mut function_context); + add_buffer("features_6_weight", 2654208, constants_path, &mut function_context); + add_buffer("features_6_bias", 1536, constants_path, &mut function_context); + add_buffer("features_8_weight", 3538944, constants_path, &mut function_context); + add_buffer("features_8_bias", 1024, constants_path, &mut function_context); + add_buffer("features_10_weight", 2359296, constants_path, &mut function_context); + add_buffer("features_10_bias", 1024, constants_path, &mut function_context); + add_number("var_28", 9216, &mut function_context); + add_buffer("classifier_1_weight", 150994944, constants_path, &mut function_context); + add_buffer("classifier_1_bias", 16384, constants_path, &mut function_context); + add_buffer("classifier_4_weight", 67108864, constants_path, &mut function_context); + add_buffer("classifier_4_bias", 16384, constants_path, &mut function_context); + add_buffer("classifier_6_bias", 40, constants_path, &mut function_context); + add_buffer("classifier_6_weight", 163840, constants_path, &mut function_context); + + let output_name: &str = "buf18"; + let output_size: usize = 40; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} + +pub fn load_lenet5(mut function_context: Context) -> (usize, String, Vec, Context) { + let constants_path = "/home/alrusso/pytorch-aot/processed/lenet5/constants"; + + add_number("var_1", 6, &mut function_context); + add_buffer("arg10_1", 3136, constants_path, &mut function_context); + add_buffer("conv1_weight", 600, constants_path, &mut function_context); + add_number("var_8", 1176, &mut function_context); + add_buffer("conv2_weight", 9600, constants_path, &mut function_context); + add_buffer("conv2_bias", 64, constants_path, &mut function_context); + add_number("var_15", 400, &mut function_context); + add_buffer("fc1_weight", 192000, constants_path, &mut function_context); + add_buffer("fc1_bias", 480, constants_path, &mut function_context); + add_buffer("fc2_weight", 40320, constants_path, &mut function_context); + add_buffer("fc2_bias", 336, constants_path, &mut function_context); + add_buffer("fc3_bias", 40, constants_path, &mut function_context); + add_buffer("fc3_weight", 3360, constants_path, &mut function_context); + + let output_name: &str = "buf11"; + let output_size: usize = 40; + let expected: Vec = read_tensor_from_file(output_name, constants_path).unwrap(); + + (output_size, output_name.to_string(), expected, function_context) +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs new file mode 100644 index 00000000..e05881e5 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/load_utils.rs @@ -0,0 +1,75 @@ +use std::{ + fs::File, + io::{self, Read}, + mem, +}; + +use crate::{memory_domain::Context, DataItem, DataSet, Position}; + +pub fn read_tensor_from_file(file_path: &str, file_folder: &str) -> io::Result> { + let full_path = format!("{file_folder}/{file_path}.bin"); + + let mut file = File::open(&full_path)?; + let mut buffer = Vec::new(); + file.read_to_end(&mut buffer)?; + + let floats: &[f32] = unsafe { + std::slice::from_raw_parts( + buffer.as_ptr() as *const f32, + buffer.len() / mem::size_of::(), + ) + }; + + Ok(floats.to_vec()) +} + +pub fn add_number(name: &str, value: i64, mut function_context: &mut Context) { + let offset = function_context + .get_free_space_and_write_slice(&vec![value as i64]) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: name.to_string(), + buffers: vec![DataItem { + ident: name.to_string(), + data: Position { + offset: offset as usize, + size: 8, + }, + key: 0, + }], + })); +} + +pub fn add_empty_buffer(name: &str, size: usize, mut function_context: &mut Context) { + let offset = function_context + .get_free_space_and_write_slice(&vec![0f32; size / 4]) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: name.to_string(), + buffers: vec![DataItem { + ident: name.to_string(), + data: Position { + offset: offset as usize, + size: size, + }, + key: 0, + }], + })); +} + +pub fn add_buffer(name: &str, size: usize, path: &str, mut function_context: &mut Context) { + let offset = function_context + .get_free_space_and_write_slice(&read_tensor_from_file(&name, &path).unwrap()) + .expect("Should have space"); + function_context.content.push(Some(DataSet { + ident: name.to_string(), + buffers: vec![DataItem { + ident: name.to_string(), + data: Position { + offset: offset as usize, + size: size, + }, + key: 0, + }], + })); +} diff --git a/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs new file mode 100644 index 00000000..6ec72a14 --- /dev/null +++ b/machine_interface/src/function_driver/compute_driver/gpu/gpu_tests/tests_utils.rs @@ -0,0 +1,76 @@ +use crate::{ + function_driver::{ + compute_driver::{ + compute_driver_tests::compute_driver_tests::prepare_engine_and_function, + gpu::gpu_tests::{get_driver, Archive, ArchiveInit, RecordPoint}, + }, + test_queue::TestQueue, + Arc, ComputeResource, Driver, FunctionConfig, WorkToDo, + }, + memory_domain::{gpu::GpuMemoryDomain, Context, ContextTrait, MemoryResource}, +}; + +pub fn setup_test(filename: &str) -> (Context, FunctionConfig, Box) { + let dom_init = MemoryResource::None; + let driver: Box = get_driver(); + let drv_init = vec![ComputeResource::GPU(7, 0, 2)]; + + prepare_engine_and_function::(filename, dom_init, &driver, drv_init) +} + +pub fn execute_test( + function_context: Context, + config: FunctionConfig, + queue: Box, + output_name: &str, +) -> Context { + let archive = Box::leak(Box::new(Archive::init(ArchiveInit { + #[cfg(feature = "timestamp")] + timestamp_count: 1000, + }))); + let mut recorder = archive.get_recorder().unwrap(); + recorder + .record(RecordPoint::TransferEnd) + .expect("Should have properly initialized recorder state"); + let promise = queue.enqueu(WorkToDo::FunctionArguments { + config, + context: function_context, + output_sets: Arc::new(vec![String::from(output_name)]), + recorder: recorder.get_sub_recorder().unwrap(), + }); + queue.enqueu(WorkToDo::Shutdown()); + let result_context = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap() + .block_on(promise) + .expect("Engine should run ok with basic function") + .get_context(); + recorder + .record(RecordPoint::FutureReturn) + .expect("Should have properly advanced recorder state"); + result_context +} + +pub fn get_result(result_context: Context, output_size: usize) -> Vec { + let output_item = result_context.content[0] + .as_ref() + .expect("Set should be present"); + let position = output_item.buffers[0].data; + assert_eq!(output_size, position.size, "Checking for size of output"); + let mut read_buffer = vec![0f32; position.size / 4]; + result_context + .context + .read(position.offset, &mut read_buffer) + .expect("Should succeed in reading"); + read_buffer +} + +pub fn compare_result(expected: Vec, read_buffer: Vec) { + const DELTA: f32 = 0.00001; + for (should, is) in expected.iter().zip(read_buffer.iter()) { + let diff = should - is; + let abs_diff = diff.abs(); + assert!(abs_diff <= DELTA, "Checking final result"); + } + println!("Correct result!"); +} diff --git a/machine_interface/tests/data/test_gpu_alexnet.json b/machine_interface/tests/data/test_gpu_alexnet.json new file mode 100644 index 00000000..b09083b9 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_alexnet.json @@ -0,0 +1,134 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_relu_0.hsaco", "path": "alexnet/tem_fused_conv2d_relu_0.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "path": "alexnet/poi_fused_conv2d_max_pool2d_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_2.hsaco", "path": "alexnet/tem_fused_conv2d_relu_2.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_3.hsaco", "path": "alexnet/poi_fused_conv2d_max_pool2d_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_4.hsaco", "path": "alexnet/tem_fused_conv2d_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_5.hsaco", "path": "alexnet/tem_fused_conv2d_relu_5.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_6.hsaco", "path": "alexnet/tem_fused_conv2d_relu_6.hsaco"}, + {"module_name": "poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco", "path": "alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco"}, + {"module_name": "tem_fused_relu_8.hsaco", "path": "alexnet/tem_fused_relu_8.hsaco"}, + {"module_name": "tem_fused_relu_9.hsaco", "path": "alexnet/tem_fused_relu_9.hsaco"}, + {"module_name": "tem_fused_linear_relu_10.hsaco", "path": "alexnet/tem_fused_linear_relu_10.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "tem_fused_conv2d_relu_5.hsaco", "kernel_name": "kern005"}, + {"module_name": "tem_fused_conv2d_relu_6.hsaco", "kernel_name": "kern006"}, + {"module_name": "poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco", "kernel_name": "kern007"}, + {"module_name": "tem_fused_relu_8.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_relu_9.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_linear_relu_10.hsaco", "kernel_name": "kern010"} + ], + "blueprint": { + "inputs": ["arg16_1", "features_0_weight", "features_0_bias", "var_6", "features_3_weight", "features_3_bias", "var_13", "features_6_weight", "features_6_bias", "features_8_weight", "features_8_bias", "features_10_weight", "features_10_bias", "var_28", "classifier_1_weight", "classifier_1_bias", "classifier_4_weight", "classifier_4_bias", "classifier_6_bias", "classifier_6_weight"], + "buffers": {"buf1": {"Absolute": 802816}, "buf2": {"Absolute": 186624}, "buf4": {"Absolute": 559872}, "buf5": {"Absolute": 129792}, "buf7": {"Absolute": 259584}, "buf9": {"Absolute": 173056}, "buf11": {"Absolute": 173056}, "buf12": {"Absolute": 36864}, "buf15": {"Absolute": 16384}, "buf17": {"Absolute": 16384}, "buf18": {"Absolute": 40}}, + "outputs": ["buf18"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg16_1"}, {"Ptr": "features_0_weight"}, {"Ptr": "features_0_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_6"}], { + "grid_dim_x": {"Absolute": 183}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "features_3_weight"}, {"Ptr": "features_3_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 12}, + "grid_dim_y": {"Absolute": 3}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "buf5"}, {"Ptr": "var_13"}], { + "grid_dim_x": {"Absolute": 254}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "features_6_weight"}, {"Ptr": "features_6_bias"}, {"Ptr": "buf7"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 24}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf7"}, {"Ptr": "features_8_weight"}, {"Ptr": "features_8_bias"}, {"Ptr": "buf9"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf9"}, {"Ptr": "features_10_weight"}, {"Ptr": "features_10_bias"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 16}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "buf12"}, {"Ptr": "buf11"}, {"Ptr": "var_28"}], { + "grid_dim_x": {"Absolute": 72}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf12"}, {"Ptr": "classifier_1_weight"}, {"Ptr": "classifier_1_bias"}, {"Ptr": "buf15"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 20480} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf15"}, {"Ptr": "classifier_4_weight"}, {"Ptr": "classifier_4_bias"}, {"Ptr": "buf17"}], { + "grid_dim_x": {"Absolute": 64}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 20480} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "classifier_6_bias"}, {"Ptr": "buf17"}, {"Ptr": "classifier_6_weight"}, {"Ptr": "buf18"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_full_double_matmul.json b/machine_interface/tests/data/test_gpu_full_double_matmul.json index 65b173c0..dc10417a 100644 --- a/machine_interface/tests/data/test_gpu_full_double_matmul.json +++ b/machine_interface/tests/data/test_gpu_full_double_matmul.json @@ -1,32 +1,32 @@ { "modules": [ - { "module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco" }, - { "module_name": "tem_fused_linear_1.hsaco", "path": "double_matmul/tem_fused_linear_1.hsaco" } + {"module_name": "tem_fused_linear_0.hsaco", "path": "double_matmul/tem_fused_linear_0.hsaco"}, + {"module_name": "tem_fused_linear_1.hsaco", "path": "double_matmul/tem_fused_linear_1.hsaco"} ], "kernels": [ - { "module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000" }, - { "module_name": "tem_fused_linear_1.hsaco", "kernel_name": "kern001" } + {"module_name": "tem_fused_linear_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "tem_fused_linear_1.hsaco", "kernel_name": "kern001"} ], "blueprint": { - "inputs": ["A", "W1", "W2"], - "buffers": {"B": {"Absolute": 80}, "C": {"Absolute": 48}}, - "outputs": ["C"], + "inputs": ["arg2_1", "linear1_weight", "linear2_weight"], + "buffers": {"buf0": {"Absolute": 80}, "buf1": {"Absolute": 48}}, + "outputs": ["buf1"], "control_flow": [ - {"ExecKernel": ["kern000", [{"Ptr": "A"}, {"Ptr": "W1"}, {"Ptr": "B"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, + {"ExecKernel": ["kern000", [{"Ptr": "arg2_1"}, {"Ptr": "linear1_weight"}, {"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 1024} }]}, - {"ExecKernel": ["kern001", [{"Ptr": "B"}, {"Ptr": "W2"}, {"Ptr": "C"}], { - "grid_dim_x": {"Absolute": 1}, - "grid_dim_y": {"Absolute": 1}, + {"ExecKernel": ["kern001", [{"Ptr": "buf0"}, {"Ptr": "linear2_weight"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, "grid_dim_z": {"Absolute": 1}, - "block_dim_x": {"Absolute": 64}, - "block_dim_y": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, "block_dim_z": {"Absolute": 1}, "shared_mem_bytes": {"Absolute": 1024} }]} diff --git a/machine_interface/tests/data/test_gpu_lenet5.json b/machine_interface/tests/data/test_gpu_lenet5.json new file mode 100644 index 00000000..5f8e5782 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_lenet5.json @@ -0,0 +1,101 @@ +{ + "modules": [ + {"module_name": "poi_fused_conv2d_0.hsaco", "path": "lenet5/poi_fused_conv2d_0.hsaco"}, + {"module_name": "tem_fused_conv2d_relu_1.hsaco", "path": "lenet5/tem_fused_conv2d_relu_1.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_2.hsaco", "path": "lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco"}, + {"module_name": "tem_fused_conv2d_max_pool2d_relu_3.hsaco", "path": "lenet5/tem_fused_conv2d_max_pool2d_relu_3.hsaco"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_4.hsaco", "path": "lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco"}, + {"module_name": "tem_fused_relu_5.hsaco", "path": "lenet5/tem_fused_relu_5.hsaco"}, + {"module_name": "tem_fused_relu_6.hsaco", "path": "lenet5/tem_fused_relu_6.hsaco"}, + {"module_name": "tem_fused_linear_relu_7.hsaco", "path": "lenet5/tem_fused_linear_relu_7.hsaco"} + ], + "kernels": [ + {"module_name": "poi_fused_conv2d_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "tem_fused_conv2d_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_conv2d_max_pool2d_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "poi_fused_conv2d_max_pool2d_relu_4.hsaco", "kernel_name": "kern004"}, + {"module_name": "tem_fused_relu_5.hsaco", "kernel_name": "kern005"}, + {"module_name": "tem_fused_relu_6.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_linear_relu_7.hsaco", "kernel_name": "kern007"} + ], + "blueprint": { + "inputs": ["var_1", "arg10_1", "conv1_weight", "var_8", "conv2_weight", "conv2_bias", "var_15", "fc1_weight", "fc1_bias", "fc2_weight", "fc2_bias", "fc3_bias", "fc3_weight"], + "buffers": {"buf0": {"Absolute": 24}, "buf2": {"Absolute": 18816}, "buf3": {"Absolute": 4704}, "buf5": {"Absolute": 6400}, "buf6": {"Absolute": 1600}, "buf8": {"Absolute": 480}, "buf10": {"Absolute": 336}, "buf11": {"Absolute": 40}}, + "outputs": ["buf11"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "buf0"}, {"Ptr": "var_1"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "arg10_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "buf0"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "buf3"}, {"Ptr": "var_8"}], { + "grid_dim_x": {"Absolute": 10}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf3"}, {"Ptr": "conv2_weight"}, {"Ptr": "conv2_bias"}, {"Ptr": "buf5"}], { + "grid_dim_x": {"Absolute": 2}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern004", [{"Ptr": "buf5"}, {"Ptr": "buf6"}, {"Ptr": "var_15"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern005", [{"Ptr": "buf6"}, {"Ptr": "fc1_weight"}, {"Ptr": "fc1_bias"}, {"Ptr": "buf8"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf8"}, {"Ptr": "fc2_weight"}, {"Ptr": "fc2_bias"}, {"Ptr": "buf10"}], { + "grid_dim_x": {"Absolute": 3}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "fc3_bias"}, {"Ptr": "buf10"}, {"Ptr": "fc3_weight"}, {"Ptr": "buf11"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_resnet18.json b/machine_interface/tests/data/test_gpu_resnet18.json new file mode 100644 index 00000000..4d010250 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_resnet18.json @@ -0,0 +1,289 @@ +{ + "modules": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "path": "resnet18/poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "path": "resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "path": "resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "path": "resnet18/tem_fused_conv2d_16.hsaco"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "path": "resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "path": "resnet18/tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "path": "resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco"}, + {"module_name": "tem_fused_linear_20.hsaco", "path": "resnet18/tem_fused_linear_20.hsaco"} + ], + "kernels": [ + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "poi_fused_max_pool2d_miopen_batch_norm_relu_1.hsaco", "kernel_name": "kern001"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_2.hsaco", "kernel_name": "kern002"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_3.hsaco", "kernel_name": "kern003"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_4.hsaco", "kernel_name": "kern006"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_5.hsaco", "kernel_name": "kern007"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco", "kernel_name": "kern008"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_7.hsaco", "kernel_name": "kern009"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_8.hsaco", "kernel_name": "kern010"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_9.hsaco", "kernel_name": "kern011"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_10.hsaco", "kernel_name": "kern012"}, + {"module_name": "tem_fused_add_conv2d_miopen_batch_norm_relu_11.hsaco", "kernel_name": "kern013"}, + {"module_name": "poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco", "kernel_name": "kern015"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_13.hsaco", "kernel_name": "kern017"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_14.hsaco", "kernel_name": "kern018"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_15.hsaco", "kernel_name": "kern019"}, + {"module_name": "tem_fused_conv2d_16.hsaco", "kernel_name": "kern020"}, + {"module_name": "poi_fused_add_miopen_batch_norm_relu_17.hsaco", "kernel_name": "kern021"}, + {"module_name": "tem_fused_conv2d_miopen_batch_norm_relu_18.hsaco", "kernel_name": "kern022"}, + {"module_name": "per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco", "kernel_name": "kern024"}, + {"module_name": "tem_fused_linear_20.hsaco", "kernel_name": "kern025"} + ], + "blueprint": { + "inputs": ["arg122_1", "conv1_weight", "bn1_running_mean", "bn1_running_var", "bn1_weight", "bn1_bias", "var_9", "layer1_0_conv1_weight", "layer1_0_bn1_running_mean", "layer1_0_bn1_running_var", "layer1_0_bn1_weight", "layer1_0_bn1_bias", "layer1_0_conv2_weight", "layer1_0_bn2_running_mean", "layer1_0_bn2_running_var", "layer1_0_bn2_weight", "layer1_0_bn2_bias", "layer1_1_conv1_weight", "layer1_1_bn1_running_mean", "layer1_1_bn1_running_var", "layer1_1_bn1_weight", "layer1_1_bn1_bias", "layer1_1_conv2_weight", "layer1_1_bn2_running_mean", "layer1_1_bn2_running_var", "layer1_1_bn2_weight", "layer1_1_bn2_bias", "layer2_0_conv1_weight", "layer2_0_bn1_running_mean", "layer2_0_bn1_running_var", "layer2_0_bn1_weight", "layer2_0_bn1_bias", "layer2_0_conv2_weight", "layer2_0_downsample_0_weight", "layer2_0_bn2_running_mean", "layer2_0_bn2_running_var", "layer2_0_bn2_weight", "layer2_0_bn2_bias", "layer2_0_downsample_1_running_mean", "layer2_0_downsample_1_running_var", "layer2_0_downsample_1_weight", "layer2_0_downsample_1_bias", "layer2_1_conv1_weight", "layer2_1_bn1_running_mean", "layer2_1_bn1_running_var", "layer2_1_bn1_weight", "layer2_1_bn1_bias", "layer2_1_conv2_weight", "layer2_1_bn2_running_mean", "layer2_1_bn2_running_var", "layer2_1_bn2_weight", "layer2_1_bn2_bias", "layer3_0_conv1_weight", "layer3_0_bn1_running_mean", "layer3_0_bn1_running_var", "layer3_0_bn1_weight", "layer3_0_bn1_bias", "layer3_0_conv2_weight", "layer3_0_downsample_0_weight", "layer3_0_bn2_running_mean", "layer3_0_bn2_running_var", "layer3_0_bn2_weight", "layer3_0_bn2_bias", "layer3_0_downsample_1_running_mean", "layer3_0_downsample_1_running_var", "layer3_0_downsample_1_weight", "layer3_0_downsample_1_bias", "layer3_1_conv1_weight", "layer3_1_bn1_running_mean", "layer3_1_bn1_running_var", "layer3_1_bn1_weight", "layer3_1_bn1_bias", "var_107", "layer3_1_conv2_weight", "layer3_1_bn2_running_mean", "layer3_1_bn2_running_var", "layer3_1_bn2_weight", "layer3_1_bn2_bias", "var_117", "layer4_0_conv1_weight", "layer4_0_bn1_running_mean", "layer4_0_bn1_running_var", "layer4_0_bn1_weight", "layer4_0_bn1_bias", "layer4_0_conv2_weight", "layer4_0_downsample_0_weight", "layer4_0_bn2_running_mean", "layer4_0_bn2_running_var", "layer4_0_bn2_weight", "layer4_0_bn2_bias", "layer4_0_downsample_1_running_mean", "layer4_0_downsample_1_running_var", "layer4_0_downsample_1_weight", "layer4_0_downsample_1_bias", "var_141", "layer4_1_conv1_weight", "layer4_1_bn1_running_mean", "layer4_1_bn1_running_var", "layer4_1_bn1_weight", "layer4_1_bn1_bias", "layer4_1_conv2_weight", "layer4_1_bn2_running_mean", "layer4_1_bn2_running_var", "layer4_1_bn2_weight", "layer4_1_bn2_bias", "var_159", "var_160", "fc_bias", "fc_weight"], + "buffers": {"buf1": {"Absolute": 3211264}, "buf2": {"Absolute": 802816}, "buf4": {"Absolute": 802816}, "buf6": {"Absolute": 802816}, "buf12": {"Absolute": 401408}, "buf13": {"Absolute": 401408}, "buf20": {"Absolute": 401408}, "buf22": {"Absolute": 200704}, "buf23": {"Absolute": 200704}, "buf29": {"Absolute": 200704}, "buf32": {"Absolute": 100352}, "buf33": {"Absolute": 100352}, "buf39": {"Absolute": 100352}, "buf40": {"Absolute": 2048}, "buf42": {"Absolute": 4000}}, + "outputs": ["buf42"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "arg122_1"}, {"Ptr": "conv1_weight"}, {"Ptr": "bn1_running_mean"}, {"Ptr": "bn1_running_var"}, {"Ptr": "bn1_weight"}, {"Ptr": "bn1_bias"}, {"Ptr": "buf1"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "buf1"}, {"Ptr": "buf2"}, {"Ptr": "var_9"}], { + "grid_dim_x": {"Absolute": 392}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf2"}, {"Ptr": "layer1_0_conv1_weight"}, {"Ptr": "layer1_0_bn1_running_mean"}, {"Ptr": "layer1_0_bn1_running_var"}, {"Ptr": "layer1_0_bn1_weight"}, {"Ptr": "layer1_0_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_0_conv2_weight"}, {"Ptr": "layer1_0_bn2_running_mean"}, {"Ptr": "layer1_0_bn2_running_var"}, {"Ptr": "layer1_0_bn2_weight"}, {"Ptr": "layer1_0_bn2_bias"}, {"Ptr": "buf2"}, {"Ptr": "buf6"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern002", [{"Ptr": "buf6"}, {"Ptr": "layer1_1_conv1_weight"}, {"Ptr": "layer1_1_bn1_running_mean"}, {"Ptr": "layer1_1_bn1_running_var"}, {"Ptr": "layer1_1_bn1_weight"}, {"Ptr": "layer1_1_bn1_bias"}, {"Ptr": "buf4"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8704} + }]}, + {"ExecKernel": ["kern003", [{"Ptr": "buf4"}, {"Ptr": "layer1_1_conv2_weight"}, {"Ptr": "layer1_1_bn2_running_mean"}, {"Ptr": "layer1_1_bn2_running_var"}, {"Ptr": "layer1_1_bn2_weight"}, {"Ptr": "layer1_1_bn2_bias"}, {"Ptr": "buf6"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 49}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16640} + }]}, + {"ExecKernel": ["kern006", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_conv1_weight"}, {"Ptr": "layer2_0_bn1_running_mean"}, {"Ptr": "layer2_0_bn1_running_var"}, {"Ptr": "layer2_0_bn1_weight"}, {"Ptr": "layer2_0_bn1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern007", [{"Ptr": "buf12"}, {"Ptr": "layer2_0_conv2_weight"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern008", [{"Ptr": "buf2"}, {"Ptr": "layer2_0_downsample_0_weight"}, {"Ptr": "buf13"}, {"Ptr": "layer2_0_bn2_running_mean"}, {"Ptr": "layer2_0_bn2_running_var"}, {"Ptr": "layer2_0_bn2_weight"}, {"Ptr": "layer2_0_bn2_bias"}, {"Ptr": "layer2_0_downsample_1_running_mean"}, {"Ptr": "layer2_0_downsample_1_running_var"}, {"Ptr": "layer2_0_downsample_1_weight"}, {"Ptr": "layer2_0_downsample_1_bias"}, {"Ptr": "buf12"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern009", [{"Ptr": "buf12"}, {"Ptr": "layer2_1_conv1_weight"}, {"Ptr": "layer2_1_bn1_running_mean"}, {"Ptr": "layer2_1_bn1_running_var"}, {"Ptr": "layer2_1_bn1_weight"}, {"Ptr": "layer2_1_bn1_bias"}, {"Ptr": "buf13"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern010", [{"Ptr": "buf13"}, {"Ptr": "layer2_1_conv2_weight"}, {"Ptr": "layer2_1_bn2_running_mean"}, {"Ptr": "layer2_1_bn2_running_var"}, {"Ptr": "layer2_1_bn2_weight"}, {"Ptr": "layer2_1_bn2_bias"}, {"Ptr": "buf12"}, {"Ptr": "buf20"}], { + "grid_dim_x": {"Absolute": 13}, + "grid_dim_y": {"Absolute": 2}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern011", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_conv1_weight"}, {"Ptr": "layer3_0_bn1_running_mean"}, {"Ptr": "layer3_0_bn1_running_var"}, {"Ptr": "layer3_0_bn1_weight"}, {"Ptr": "layer3_0_bn1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_0_conv2_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern013", [{"Ptr": "buf20"}, {"Ptr": "layer3_0_downsample_0_weight"}, {"Ptr": "buf23"}, {"Ptr": "layer3_0_bn2_running_mean"}, {"Ptr": "layer3_0_bn2_running_var"}, {"Ptr": "layer3_0_bn2_weight"}, {"Ptr": "layer3_0_bn2_bias"}, {"Ptr": "layer3_0_downsample_1_running_mean"}, {"Ptr": "layer3_0_downsample_1_running_var"}, {"Ptr": "layer3_0_downsample_1_weight"}, {"Ptr": "layer3_0_downsample_1_bias"}, {"Ptr": "buf22"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 17408} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf22"}, {"Ptr": "layer3_1_conv1_weight"}, {"Ptr": "buf23"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern015", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_bn1_running_mean"}, {"Ptr": "layer3_1_bn1_running_var"}, {"Ptr": "layer3_1_bn1_weight"}, {"Ptr": "layer3_1_bn1_bias"}, {"Ptr": "var_107"}], { + "grid_dim_x": {"Absolute": 98}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern012", [{"Ptr": "buf23"}, {"Ptr": "layer3_1_conv2_weight"}, {"Ptr": "buf29"}], { + "grid_dim_x": {"Absolute": 4}, + "grid_dim_y": {"Absolute": 4}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern017", [{"Ptr": "buf22"}, {"Ptr": "buf29"}, {"Ptr": "layer3_1_bn2_running_mean"}, {"Ptr": "layer3_1_bn2_running_var"}, {"Ptr": "layer3_1_bn2_weight"}, {"Ptr": "layer3_1_bn2_bias"}, {"Ptr": "var_117"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern018", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_conv1_weight"}, {"Ptr": "layer4_0_bn1_running_mean"}, {"Ptr": "layer4_0_bn1_running_var"}, {"Ptr": "layer4_0_bn1_weight"}, {"Ptr": "layer4_0_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 512}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 16384} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_0_conv2_weight"}, {"Ptr": "buf33"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern020", [{"Ptr": "buf22"}, {"Ptr": "layer4_0_downsample_0_weight"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 8}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 8192} + }]}, + {"ExecKernel": ["kern021", [{"Ptr": "buf33"}, {"Ptr": "layer4_0_bn2_running_mean"}, {"Ptr": "layer4_0_bn2_running_var"}, {"Ptr": "layer4_0_bn2_weight"}, {"Ptr": "layer4_0_bn2_bias"}, {"Ptr": "buf32"}, {"Ptr": "layer4_0_downsample_1_running_mean"}, {"Ptr": "layer4_0_downsample_1_running_var"}, {"Ptr": "layer4_0_downsample_1_weight"}, {"Ptr": "layer4_0_downsample_1_bias"}, {"Ptr": "var_141"}], { + "grid_dim_x": {"Absolute": 196}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern022", [{"Ptr": "buf33"}, {"Ptr": "layer4_1_conv1_weight"}, {"Ptr": "layer4_1_bn1_running_mean"}, {"Ptr": "layer4_1_bn1_running_var"}, {"Ptr": "layer4_1_bn1_weight"}, {"Ptr": "layer4_1_bn1_bias"}, {"Ptr": "buf32"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 5120} + }]}, + {"ExecKernel": ["kern019", [{"Ptr": "buf32"}, {"Ptr": "layer4_1_conv2_weight"}, {"Ptr": "buf39"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 32}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 256}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4096} + }]}, + {"ExecKernel": ["kern024", [{"Ptr": "buf40"}, {"Ptr": "buf39"}, {"Ptr": "layer4_1_bn2_running_mean"}, {"Ptr": "layer4_1_bn2_running_var"}, {"Ptr": "layer4_1_bn2_weight"}, {"Ptr": "layer4_1_bn2_bias"}, {"Ptr": "buf33"}, {"Ptr": "var_159"}, {"Ptr": "var_160"}], { + "grid_dim_x": {"Absolute": 512}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 4} + }]}, + {"ExecKernel": ["kern025", [{"Ptr": "fc_bias"}, {"Ptr": "buf40"}, {"Ptr": "fc_weight"}, {"Ptr": "buf42"}], { + "grid_dim_x": {"Absolute": 32}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 24576} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/data/test_gpu_simple_conv.json b/machine_interface/tests/data/test_gpu_simple_conv.json new file mode 100644 index 00000000..f86ce135 --- /dev/null +++ b/machine_interface/tests/data/test_gpu_simple_conv.json @@ -0,0 +1,35 @@ +{ + "modules": [ + {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "path": "simple_conv/poi_fused_miopen_batch_norm_0.hsaco"}, + {"module_name": "tem_fused_miopen_batch_norm_1.hsaco", "path": "simple_conv/tem_fused_miopen_batch_norm_1.hsaco"} + ], + "kernels": [ + {"module_name": "poi_fused_miopen_batch_norm_0.hsaco", "kernel_name": "kern000"}, + {"module_name": "tem_fused_miopen_batch_norm_1.hsaco", "kernel_name": "kern001"} + ], + "blueprint": { + "inputs": ["arg7_1", "conv_weight"], + "buffers": {"buf0": {"Absolute": 4}, "buf2": {"Absolute": 36}}, + "outputs": ["buf2"], + "control_flow": [ + {"ExecKernel": ["kern000", [{"Ptr": "buf0"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 64}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 0} + }]}, + {"ExecKernel": ["kern001", [{"Ptr": "arg7_1"}, {"Ptr": "conv_weight"}, {"Ptr": "buf0"}, {"Ptr": "buf2"}], { + "grid_dim_x": {"Absolute": 1}, + "grid_dim_y": {"Absolute": 1}, + "grid_dim_z": {"Absolute": 1}, + "block_dim_x": {"Absolute": 128}, + "block_dim_y": {"Absolute": 1}, + "block_dim_z": {"Absolute": 1}, + "shared_mem_bytes": {"Absolute": 2048} + }]} + ] + } +} \ No newline at end of file diff --git a/machine_interface/tests/libs/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco b/machine_interface/tests/libs/alexnet/poi_fused_adaptive_avg_pool2d_conv2d_max_pool2d_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..0ebb25065e120661db7fe339b1ebb4c2249b85ba GIT binary patch literal 5600 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 y{9f9>A;~Br>2d%3{e2I)u22y@QNJ=^sL z(*WWvSDyXu{m%LBz30xI`{Tvur@kl@Wl}(xRQL@jGEXom^F#e%=JPsn8HnKTAoPQQ zw1&@QXnq8jWo3*J=|?o_)=k(>kQifOk#qsY{Kk+6iObX>OpMT`BhzwEV20&=Yq1^{ zVUjx~bprXv(XpQ6`||Jn0#)_6?eUm@33W0A*`vn;YAfhEb(m5I#$=h1!`y(bf5*lX zh(}HyJO1)l0A9aoRSQnTGG}bBW>*^D{^kwSD%HJg-fh-=xMo^jsqx)6Zkkr1;Mt8v zwo$k8_S>b3o3kp{O}AKV*yPqIFW8YA=B!m|+S!?Mt?+K>lFc=XMcey?3L>9a!Ry>s zEOgb{+j=KApAA}m-z<4<( zr6Py-y4jeo=G@8;Wo70}0pn^(Hr@#f?UGyOS!>oVdM<`XJ)L}4zCa&iv;Ft6RLa*T z5a_`-J26oz&OMv5_(jj!UZd>RzN7Fo#M!Vmkzqi^*&@HQ+j2g2Ay2EovYb$pQbzv# zY{fje$Ie57xSjWZ`tZW9CVr-3o*qhMC)=7NM*uz^i8bc-LR=Om<#*d|<2)@HN8uJ+ zL8N}mv|>aRZTTGB2Dtq7>BRXDuEFJd0=k#Uz6x)A@Q1Jc`LqIWu8?R+Xo+tKF{bFk z`K8cqD{yH=L7x0x`s2@E6zr!NiHn*xCN^k}iku*=5lLJ$jD*@{Aa`j+-KK!pU`z|l z3(SMAP2V+)-V2(xQ^4vkRJB`M(u^?;zO`~u6L3N6brzSe+*5=&2a!m6sW&>N^mJzo zviAzOsKp%U?M*Mm2F8@WXeL5De(>Md;ts@O>81FlF=cQd(@lI_z*TL?fp|Qe8Xit7BRev1{^bufSX2lNSd0-yV6mUD z8x{u$dtq^qFba$DyIRCqigbr@Lmv-${#YLgCq}PCST>3Ydo9zo{V3BHu6h{!d{n)5s$> zkspx!z_{cQedGrvKe$Wshz;c9l8^6^JfequMDme-$s?XYzDx35gOW$ABQGQ`bjj-) zEP)sUiV?pEWYelDFuwYSAQo{pUbqKv{>k%X44%w^CvzZ}1AJDD$^BOzZ()cwFHC$) zzAEkAAq~7={`DWLE>WkXT>`wu8R^fU^ef}hL0yf;HgAjeD+AcRFhPwbuwm6i>wvL; z5RanUVgDc%PW8On^9pt9*Z72WMuL4_K%cDhIAPndLeQC1QQN7#$Y}KQU=#jeqVSZR zy94f{c5Xc6U~}LW`aKAPqA`J!c=@$$Z#D_B)$;m|XOX6xx`XV$FG zL(;F-lfLWa9Xv8O(Z|bL6|dQ7xXIca{0T=-gZmhsrYL`lJ_QOU8V&sW_sXQ>R_!EL zWmeq0RY_LLxnzCbcih?mbAKw?DEsyVp5|w)lHCY9k<4;8k{%xa%T*ix>(H>1@+{}r zl{y|eDPG*>K;PUAU4mb^8dvmjbFpZat{-y*V)_s`WsLlW6ybos0^=&W<^EJG_ zfLW?FO~-0DAb*MXJup4DVEGo9zCGs$-d44oN7}AZwqGo4}gHdPWbe zoNsr$BlUmjFm@E-+&cPq%)E`6f2DsY_1oD|VyFI};9=(e literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_0.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_0.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..9c169f65d131b9819e52d96ff27b8d05b34856bb GIT binary patch literal 7904 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_2.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..208d070423f56aafcf2aabf9c968bd5d9a93dba1 GIT binary patch literal 11936 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_4.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..2c41917931d1a85559764d0817359bc8b787a1b3 GIT binary patch literal 8472 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_6.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_conv2d_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..e9af7c7e4e37bd0e4c6e0ed05bf545fef740c3e8 GIT binary patch literal 8472 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 ZL@cXu75N8PxSsr9r2J~dC~>9yzX5I2l`sGR literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_linear_relu_10.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_linear_relu_10.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..b4584e0520fb700a7bda0d10010f3fc538328a09 GIT binary patch literal 10576 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_relu_8.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_relu_8.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..4037e1c4a9e9463f54928ff5525064983d80cd0a GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/alexnet/tem_fused_relu_9.hsaco b/machine_interface/tests/libs/alexnet/tem_fused_relu_9.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..d5a3ffce82b7f0e44ce2ec2013d559954cfad1c8 GIT binary patch literal 8680 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 WoXjO)VPR6pz(9`ao2vw-u>$~LG&>Oh delta 150 zcmbPWFu`EMG=5H11_)rEJfB}|@>_mstD-W7O*CrO+1=Ucw7WCgnb~bi zLRnft5{X9QBZ!C!?5D5)%`B;Ke7SZ}MVdJ!j{fby+}BUwf08bM86c zcg~$V_ue_P@6qAMR7FXt5H$@hgTgwA6zd%;BjsV8Y}=s??_IDO;%JWHm5SWg$QlO| z*~U0B6YoZ?#!ivY5h00(L*N_Awba4JQt%?1c{JAA(mEPycV8__Q5RAKqQ?1DRBwhS ze0jcSe+qN-2sfKg=KLAt$q;B5H`^#zeadLS)LP^`ClJZg3ri6CG5QiHckUkA_4M-q zv!~2rZX_^`G0S(YLh$yRbB1Y`{B+hUyCEDiOy3TUymrbkb2;A%f^<+av(|CD;APCh z3B$|h1B+mRv&U+iGb(1GY^BE>H+M3Eq%-Aw-tuP!+7>}$&CvHVQ|UVKykYxZxs(np zyJ)##I`2$cxip1_kLm-&!8Dv^!Li-8v)9-OzT%uwG$+&ff*GbKJb#SCq9=9CaLuB1 zf*v=SOnzdNe5YcDRwHav&N(A!%*66DQ70%lg#u5`2_u*)X1u}&9LyNY;bS!@u`^Mp znR42gFe_Hx_weaxpsABQ{UJV@6`seQopt+A(1q`%ug}g;K9Dr!HB~G>a6I>jB8v#$ zWosi>r-pBv_sNG0pzT1rxXKG6#dgBWbqngWoI0wIAls&kpI+JjL*Hi_>U2>fKl!d| zJO}XCTwLXD?yTTWmG@nM-b@S^0n~{7e9#>)q;m}@yujZ>N zKGA6PAS7l!-w1~;EU4=A+KXof7u4AF7vIkf&LB?FRiOSu-<1ZdFtb;Mcn#x#szvsm zgJ%&RpZ?|SbAtyEuP%upK0f{P*wMjR#A|vCX34I_;9XF=0p7YagEP6WcKCvVI1IH_ z)70%yE&T}UKJ4zl08m}L7Uy7b4J@vK`Wld0VV)1-<#YgHTOWz2Rzm${KHrzIeGSXs z{#fuxUC(~03wDUYI1$Qf=xy)Pwf2s6x3;fVIw?OLo)NrFxdU|-dIe6h>5J1J7EAr1 z=VwQ-8YpK`OPdA190Xp!Z$juhq31%@H!}m)w(OpPY}Pi%?;p*L`2Kilv@%+8?sLY1 zoV{(UZB3O%#wH3AB=N>H$24=?5K6aVLw6kgx743?_$ zl-e3aUl%v@wefzvS6iRZ6I$?s-nmOp^yuB)`fb|y4!v7jW#~Oy^sZfcPfxersku+0 ztt+8#*r@l$Lp^4w2UHwA1_$~sE?|pc#T|=vfV?-!C*Sd5$HlMgg9)tR62rqoiF>yj zNh3)SuHWi$)V4+)EGSC)Z|VdvTraf1$W6Ie_<&)%Wn;t)Mu6{R4}CCvFK31(7@;*8 z*3o9s$)edR_+Gk%g{0%!Xty$DJ8fn%zEzQ)!Bi0!Eq^Vosjpjd;=rv6{$o7 zD#1cCgK`83krqj*L_}hB2I-*}pW3>`Rp|826nmefX<3)Tq7iFKwL0FT43a@1V1I(4W zw(+0H1!swQ^?y**W&WgW9b}vEllMe~Bp0vk8TWtgt{y)v%OE=&Taef{S zg{-&MTsB(C)_Qcf%zq`KHSWR}=`+6pVC8G(f7{{^o|viVZMBi_J^rxWB|w%k|6+av z72>y!|4Zht6Cg{;CGs7#%i3#(US|HQZ0uy5@n{M!Y{vX%cQzfc&Z literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco b/machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_2.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ddcfe39a85a76455609696a5bdba8970153e7b0a GIT binary patch literal 4952 zcmeHLO^g&p6t1rBo*i~!clZmS?lNwcxKX!eb^!w#b%>}y7J~*O#KYJ#(=*+>J>9e2 zJ^O>mE~0@%A_^WjkZ=NwgujDEqQV|IV1iubz{P{y<>Jr!UU$7^7+e9p@{*qS>b>{9 zS5;kI^=c+x9ej-|N{+LbRCbdoQbv}O^3nEKcv(l?I+ldr#cUx&m_-DJ#p56!@lNPWB=UKck`MIGfikdy?QMl zn3byOhWWBRZkF=cH}*|5LKw}g(QxdFoBaA7J-RRXR#c7geAzL={Fvtt%dlX%I(0(0 zM%6rp6PC>md?#wYJ!*vJY}|&Vr$sP3m-8>gji6>bj-1|8BABQaJm)JJObnM`T(gjt z3vr_na!!mHqh{InV0hTm+!^@-Ll~PGUW8Vq==K4_2i|O7U!^?0K5Nj69yR^I_T0k? zEkjrhcM}>Gsjyn)cb1f%^FWWgz_eUYISE5EJ&%Em%P%#>(x~gX`u**_KllBhf{YIm z+GWV79sS4|V0UKXj;%>rBHKCn-8Pw{CdSXPbL=2+?6;)riFQRhsVW2X-^I>6+fg*$}(6Uu#RU8tA$H*>27@UgPsX&q1%_OWAZy zZQ)GS0W)-KKX1`+KO0D>9CFldFg^)BdoMFK_2_vt2andkqc!kQYk+E%l-&Q@a8m?Y z9<#Vs1NoS=%W{a(e*N2DGakC`kao$~ZW3f1V#-2gRr_LHZBH$GynUgv2=a5m)b=za zRs~oWCHfabDb&gO7h_{b+s?Lkuv72D6UR&{T_AJTM=_B%9BX_Pv=y~cg~g(VKj)<% z4o~UojdWKUbt_}tO{v3SD(POvGGVor2|d4PK^;^tf|NHLza9i$CNx;++o9*uIme2j z;Y^I!#a&h~QgYYq8gfV02IYyd@uENGy1_uLxNF3+2S&$g19pAX7%5r)h^S4l?Qs5R z>?-8c6y^8!1#oIbCpw;A|K5R&s?gm*?^cCu0TJHfjP4Gh;CJ{O@AD$T?4Q@V~mYQ9^)Gexq25lEc z@q8L;>Ga^>#&rKWkri10&q2|5z~MH9tE+)9=fl)nOt@ZXGEtgvp?qYb;?{*_1QwIO zs1JQ6e6M7{f)k-R9!B0q)h>eCbbK#ggM!|6E1)+E^-A6-6nt}(TDDvENRC3qPLAzj z+6Ykgp$KN8=vA@OW?0CEMgh15fLMw-y=mf5$j##tryK~@wmH8(LD0wr!BJs^zhb0eKa}GSk@g=^=jr}O`JIGNwG&R|tIq%g9l3%1`_Y(9_y$bhRY@J*iwI{U|?uf5$*i?_Rn_?25#n ZZB&9xc}aZ|gnz=1%KyPS$x-rV{NK%va6JG3 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco b/machine_interface/tests/libs/lenet5/poi_fused_conv2d_max_pool2d_relu_4.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..41f5b19e50e9b8d264eaa09f38bc0f7433c78d97 GIT binary patch literal 4952 zcmeHLO>7)h60UyTZ#=PsGx<{p5NEK0*8KR*I3^(=!4BF00XZm(vf7|M3_UYFJ#Ei) zPr7>?8$#^BqC_l$@N?jRlv4;Ik9M{2??OPD7i=DD;>xJ1SJ^{E~-FKIn<=)%!hOZ};T>5d=swhptvaWzh$ z{@36b&+~iYo4A&&%dgDGYyM}%QNC*>%9X4q4Vb8h=X9SruYDi7evirX$RFIj^N~G& z0eJq5-KsSrTTMBk?=+)VUp}R5w;h(NLC25bgt9|7dj0QblwGTZP85}+wq14JcAG)P zZk|*@y&gH_7I{xQ*;8uTZg!mVl;_t@r!M76r(So$UkH%>#Q@K9u3YMBb?17gGFwhE zf27F4w&or&gx1!9SB3;%t_TcGGkH><3rr$$j02s%6iV>rFc@9|*!J z9TqJY=1(Z!ZaF7u!HUJZ|E1cYH*LqxQrxbjr&P4GmMh;+J5k$fHudtJRMBj!5;Wh{ z!PHa@=d}dsdq3@TL(ZxL_Ow$E1Dqa>v~*fOz!>M|#2;bLt@@+LsNs_x9d+w7_ZDq_ z(9=#Bd4d0$!P^jb!;gs!YfRiN`aQF>=L*!*DX^e7R7u0g%rT1!~EV$7R;eX>StNjR--So zgY<|J$3YAO*)UU|Sb1pwDvYz@=s|#8U&;Xilkn{kYak14)C+m+pn#oUiWR6AsK?=u zpV=qCl!%%9_K4`S=q%fsF$LymUji|QK8Mc(%wKQU*WmgdxV{Ijc@J={lGEq^03D1- zH>NDD)lhy*+jThvd|v{d~+XwlDm z+K;AZ42>kZ&$@M+Q{5%4qiGuX5r8=K;=t!G8C1vH)oQi&^h_{29qn&y^&_u(U_9;w zVRhU7{r0x$>OEC^vh8l~+;hNntF6X%&r$7JD8#LHAx5tTmQ$T7N@cqlcA_XKjJIJg z&dh=fnA0+h?*?xG1Bpg}e?N~bG=i2>;83a=RPAP==~W8t*|-t-<7%u}h`iVt#Y%6= zcAY34M4`;XD1=xVdMyWj^VD#V`a9onnr$pdXueby$PN8~Up2j=<~l>Jzh91R$(VH| z*JaEbmAqxIyz_23lG!JRlpM`8Mofp%1ul1Fv^x8H<}Z9xdq)UC5{PPL>$CQY>P-1-h3=8x3qtGSX>WHcs|bJ zzC6~_`H6|0`LP|UsEP<)hLZO{;BAU_R~J#vYpJ(D`9bV}s?GXXK7w-nj%wIZ1N1NH z;}BFB)a=*>6+1I=;%&FQDyp4k7?j&s(0jg%dZ*HH%XXy_I@8?q{CdE05-N3SdOoF1 z0QC@yU{KYdMU^&CAsgEjh7Riz(#ofKJa_O zAA}O$vl&OuU9=5l!t(uq-w(dO^L?Ac@cME2{{Ui1$M|#l{W{l=N~ApuOuJXje>duT zhLm_R{$7n^*6aJXW$^#e`R5p@c`x48_}-(Vp+B(BGI)*?YJ86ye4+9C*ik$5bm7o4 z_>mh@z(`MEUVm2qL*skLzenRYu%qUjpZOc8=e^hM+R*r?v~rF1N+S0p|T%To5YY{Kw%pK#+np5X+Mh8q!J2Rf9%ILP1=5-Nkf{pCHp?#d(t%N zc#J>$(IZ`d=X~$;o$s9Q-s7=v?EWToxgwOaS-SCMeV7W-wSeTYK|vg2%xQMJkeon%V5qKE2v`c z2G;#RGXd_{v-8fq_Y?BOYtiAsWFcxDh~+b}bm8eIU$LTzT)uB0JCZ5#7p-VMQFwOZ zH7hzen2!|-eT7_fAokNlI@=#jzhq_O@j|RfUbG6S$70$m)@U?666-sV$_&10v-I_k z#N)C2=P1y=ssjI4RS^1I1@Bmie0C()SBNEsW0_)KJasTO*oX5bZ&jlQky<21)2T#8 z`{fEevYT&P!_k9%@pQD<_h>eMz)=g74_y$+OmsN*60SyP=hk0YxqNCgT8u3!USjnX ztFX9GtKYB(gq}qyxv>=0QboTQ} zOiXAVcml8kBhGmcK_oQfS5Fi4F}?j|Vj^zC`S(5@|J{~fGw9=k4e3a`qB%hzmxFNy z`O6GUhk4pLH?Ag&XTt<}og4>8a9;lpZJfvra?=0g8L4gZYkGKrl+PsM@wg;MW(D|p z%4e7rpRY~U`jX?i47^K`26P5=w6pf`U+$IewkjXmqSTnin4FS6^DyvF5^fsgw==}!p{zzGCHB37p5)~8 z1g9I|oSdbskwdD?QgI8Xs2lXSCjw8N;<7DZ_`{SuHCqA7bA+58n?63}p}~^IH*_Pf z2D~2kre5S#d^!(zSAYTXWmX0}{3#OJROX$@$ri-XS=uOhBl-6X6)rk%aFaIjb}#6x zaK6FgZtoogJ1Fa}@o=IaeZ0(jk`paFe6&S|kGE)HfpcIrbisFn|6DZz&R>}HQDS&~ z?Gqtm1NHKD=9TT-tF==Cv=D`J{oI8Ueo9~s!nBr$A&y~QtA(dX)28P`mY?#8$!73L zf=?}uZ)*TD7`FoC0MC+RXUf!9Vv&z8mI(<_2f7?c9Jq;8rb=@D2*!$#V^g_WgiUiz zYY9;}Leg{15N3oega9Qyw}ucCVJji)P#1NP5bB2YsM_KH(Kf7eNI$7hjeP)m%fGp( z*HS+AzTNlU2K}>kU)uqF^Z|H0cToNynV8bY_3;I2ls<&G{lhTs(`8v6GmHn^VpYj| z*!zs`t&G!!;N$|(1GWBSur-*Z(YLq|F}*n)SB*dfTS0YkR2-`9jS}TVF$c@>Kn*HXZc=pN{$(DDk4c)wVvJjCpWP zBr{5jYr~~<8CrPXDgYB{F{`M~+X?$eR~w4Gop$bKfV>hsA`xBxU~G_sg71IXK+TaXGa^U57o_gdE(ml)Q0&pC0I;@kfo1#Wf3Xl;?&REbh zgnS-2?~w1XuD2l{o>j**!-qET{EbL*+T-zooj=bAm&SRG59}|@aCa*QpX^v_l+;pL z;-qoLfW9CtGYl6U_CCxX%58cMUco(3H`*k|9?rH}x~e3RANp?K_d*WZdpmbYdd6VS z~%Vm3dJgiDH%0qFHb z)A^A?A=}XtCj&k48?z(B$wONYJ{pe|27CJRxx!8H;dG)Wd8l~PWAWj_*6v4!)7hH` zlRXLegim!3TDe2S55ms`hzlBw;BkGn#g1flIM$(Du+rIqXu2bv>hH)M zDkig;tyWiOM=ZGn521JOjRU_0N@r`+$z!$nPMI7a?w=fO$mt2h};=imz-XM|;5 z^yu(@q?U*ExWpQ1iXKyJHichq7n>gt_4kOn2@yOcLhT~hEqdTLB6`<}o|{GQMse$X zVjVkZi9lFf&kmXhzn&C<8-%Y-^s>>S@G<>_Xkg88(fG(sV&nJ3ozfCLlI@C%)eH>v zw22@~ydc?YV=sti$^J@AK*awb8pedlT1}Ace^&(8i@?*Ot#h4dV(?mIfQ}~FR)s;y za)4o;3iDW^xf8mhmhiQTX67qO_MwhL1 zU>Z!fgw94yaXa(u60Ipy%3Ww z&>S&A&otR4HiyN|t$_GBD5>ud{wGA;eq69dc81(Y?iExW`{ zSz+^~eQ5V@1bpfeJ6Vk>0cVNLlHK?bE`9LFVm+uiA-cd(&;e5K3cip2fWihKK1iVj zXdG^kIrqaIveT9v0f^b1%0T{o&4fEibNB9@W>>G(X>}^*m9VOZYGm5E*Hs+2;l9kh z60tJbVvJaWhca+eMyy0;#7agBN#gt>zL+OgK06pKMu}C79V}M4qr<5IK*!SgY+nv8 zMpKyt;A8zGiN0ume?B&tg!^zGdLtsQ&rzC*?1t3r$?p3ry{RGaEJFsH^2d3hN@Su6;O zP1P+0?{ehuAV*u8GgkEs%f+V)3t1(v>Xw2V9DYSt@(!B7H*&QmD!Qt33YyF0mH!H^ z1v=g-DtT2`6VJxyjb40jQ1SCS`0W4@r{p`kZ9-?zh8OT7cu8Akp6mhIavZWN`J0!> zVs|<3Ls!8eU&68fZ5%9V%jFY5TaH8aw;cHh4wkg#ydywE-14L7Q%4?3?iEeRD_91q z>Mvz{2ws}7)vLhT!xg-6_p$vsdFWit|C5fq^EaPjU$mus{s~Z2 z?k+Mx=d>gLu!F?uAfK|Y_V3GpTQ9>d|Mk(2Urf4BarG+Oh^r(93^{A(yDwi9$A!DL!`ec`KgE7luZ16WNmbj1@1WijU8} zXvIfI3yETJsF;tBBz~I8A5<~mb+0hpqmZ9N^ zWHM3s1O@u%RS@{R3c{bL;8iPC$W7#jiiy;CB3l|trVl1YhiKpMtD5)FQ*~lIlTKyz zUw&ks*v(h0@%X`^WF}r3I*=>u7iy96t_wYxjgKdurPJu^+w!`VFQg~qr9@rvidCPt ziuHq9^RhE2=F^#sb9V5oRXj94oXb2Xlv(>n@qp?g(U+aUN|BeW1M$g3vXI05k*Tp4 zM0AvJbBWTcI7*FVHzUvo!)Ej5RPx|eeQ_B@lZiqxoy#6`$r#5_`$!{NP{C*v&vRHj zNFJPT!Y42$@#S@%b5Qp`CUP}8|m(r(Ad1;H|Go^qBRpDv=;kg~?eX`xft_)8U$1tExtUhK>F)M#!n}XR&D&LvTN{Jm+yiA}n?2iO zMCW?^(IY*9sE78dG_d7XD}Z)l``zhsD}z&^K0DYP+B9pn_Grz)clinQI#E5P( ztP5|Su7(+)kD^+e5p}ouqk3B)x&Yn{Ontc8g?4z+wl#df=n@D5H$Y`!NX?d(@%xae_GfcV~uuL;KD~VA?wsJa@QtaVB==T3N0hkw^@dw%!zk(!>}s7Die zG}43F($V9a($5`M1G807XRE4Nb!0ok_I$V_Vvr5ES3^bFb_NY9%68(*49XfXZA@wB z4zoa|3aoxrkFYF=-9DpeJ0jtw7yra-$1c)K2A=&-;N|1JD}#5&{9J;YUuT% zZhLudp)K4t(^g?eP1MOS!n;vt`Ep063Dey}%aw&je2#*Ak6Q6Evx4Q|@wIB8Nnz0= z02^4h8f8#k@QE{P0V8T)oHLAb25&7kUb+Kcjow;xUFuT3;ymem={)It={y?*zaJ4$ zF2wYx6Wbk21}6DXv}>us^EQns_zNTy^nzplw&Ag;MqTb72$Lh^NK3+3yf8& z4a`5~h4w{5XPCdb7TrFym<7niQ2yE`^2-#qJ0$u>a~Pn{-pxUT&g{&B*r@1dL@B49dYs8>2el#`lwZgH$_C zEizYF#d%z3c~SF3&})e92-YA(UqoG5D;k+L;<^Y^ zsMG!>=$N2tEhO;o=azHSeMQg(z**T5d=gwuuJ!(AuJ{9Oo&F|Q5Z7lGD1H+cRxG3j zwJpt9KGwjN<~!Q%^4;zGI+=7cejJVXGKme7A_2A==xfD~PDVE(E@kD^CY({}i<)Z& z>ugwTyGvk?z}p3$Bqi9E1UjSh-=#vjl*`KBoiH+x94j5V^5E8V{}m&J{l$^uSZ=aZ zN~b3eCi;gba)kq9=>xfeLy6(U*2(+!7qSCe2dw-d=q-)sdrP^(h>e#k6C>Cgif0NF z#bT~^APL*BJmKpmuBy6R|MWM23mcB`CL2vd-I1%b}oB` zwWY7Om@XwYDq9{F{fd6@GXr%a6ZYMH%yg{J-;_EW-0WZFj z$m3B4TzrjY@&S`?G`$=glcTa0hR`jt^YLo7eHdK7P$M9#)DL z5A^ZoUVe?@HF>vkFv**u{4(XBNqFryc+=(Fi12_?)GgkkL`~j)-!{Jf+x!O2;scs; zQ&QPx@}QD>T2o$}ewue`%3pydl7Hka)7(_nnkY8>8V|1HO^@+NA8+mEe#K|DSrSH4MY~+`6c9-M2@w@ zQCi8-%{wC>N4$un@@Fu$pYUCmaRXi1solc|lpDA6!5z4T7WA!>H2L6qXHeVOpt5&+ zeVC+;CizAsc@y?JOukm>eT_FMCG@~L9C$45RSsCxGx<*KE~PSE;+JX4)#RaTOzuUG z?$nS?L&{Bjqo!;%`DN=-!yvjI-KTg-!{m0A@iof5rs~3}O=fL$r-h^4%I4Q_`Jbbc zLf49uccQ>K|KJO}U3nYsLe)3%b=&zCi??fsYVx<~q@Z2doaDQ;Bv&70-(mQeV3^T0 z@-j9RZ@N`AfOp-Ztw$5h1^gc zFL2Y@6wW7xCsIT4;o(AJQjXHuWKQ-A@hm>&a#U07h-A`PGNLA)EZ{9ASR=V{x(fxm zX)MKu5p5K3dJf7bTOwXU!qD!!zp`WRjk}~jJ};6#Dfv>$s5RLUDDS}~d3CuVSt=Y- zOx8DvUlxK?-)JpejAh-U^77&Ga!$(2`X;eQ@JqUs7t_#=9nvl7vK~q_1*4=(`z2n2 zbh;vvbXk8T*5g^|p*^f@8*xB$Qa&aMc^y|WV?VZP+>2w97X`6iV&z2r{~0N_%7Cpx zmi9nRJ}>hB8~J~WFstr=dHwn&lp&u=`QzewJ1+i@*(d+!A?4UsEf0GyGDmz;{z@9G zXshM#LE7p$V*iU+|Enuxsk@ptb&)yZ+lDVU)MB;o^IxmwCy+#Qt5eaWkWZW!t@Wh5 z#4^sx{z}#lg#6Xgv4Xgo7w=jwDj#lh1fnaIVt;k~e_zP2wm&B11=O|3^(FooDKd8J zOxU?g2;M6uX* CX_tin literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/lenet5/tem_fused_linear_relu_7.hsaco b/machine_interface/tests/libs/lenet5/tem_fused_linear_relu_7.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..31cdbfaa9424e1a13ab0f2fb32dea53f49f6dfb4 GIT binary patch literal 9064 zcmeI1e{d8>cE{h&?u-OBAi&3A!O3e_pl>X#!~#P6SP-BE76b?oAbx4Jzjvk8uDrVv zLT77NLLk}4VIYL_5zbI9j47MLoXerGLx6DDAuh^gxcfs%{73#t{!U$0oKz)2`F2l_ zvi!K%XZ}d4;;wr8>F(FB=S}yUH#0jqPyK4eVyRWgC|3FhvdB6|t*l=tGb+nf-d97# z_?=7>Nkg{{QfsIm<4rl4$znN3$Bw-3^hZ0=zF?{|nYF#+^rxel z69bo={!l0#&SZR<4u3FwKAK1c{E2s+sYoOf&eA*1OuQ#t{JyixpXdzx+TzL3uZ$tS zKxZTpPJhD$#ZNmy$2W3-~dWCg$lQBzS7jdU-n@|!`_6;5a3spN5s8RCev#|u|ZvLYJg z_55!Wj4@*Xo@HufKBzUiMULV&T=*r%!@DF;cHVZ}z4mqA-&g#l6?HDWa6Q*OROB+y ze=o;F>OZDomxFK0yzwO48R$GlAJActpV$9|qMcEWD!-&RkaPOzj`dKVHQz@=bb!uS zj$*<3$Wk;^^sLgWDb%MZ<8KO|72A+y4f-%PUv#jK&S*zR6lLs#k=!QB1f>_-)dv~U zES4dQYVTD`)Z-7x?uq^(3fsTGwR$AU;Bw4WdDcA!8xWLdHW%Ad?`^L8d^aLP{YH$ZQCM=#V=JUGDt0C zC1gIN8d3vU3@L{=Ayp6;WICh_Vu#G=ZMEmGzePhgv}PL{p<~yhkx0Z!gZGu0grzLD z_iLKnI!23G>EM0q4=kh<*;*C4bx(QmrtOSPo1xGf_xo)Ma=+Z)bj_pq|N0Up7@Huup#T*?jEym|aKgAqbm)6SX=z5Adx?Ng=&(ZS~ zbG+ixl6;Qd?=(k$%SMN>H+h$>sK18td%l`OV`p&IQf?CGGRl>4E~VU9&c&1~<*cEc z##v6eDV#dx6i!CD@xAn5P%ToA+f-cZMSbGhLvB3yP+dV5Q1X3;6=gP(XkS0=v1>{r zn?rP;ia)lUY1}@eZ{yIbM7O_uy-^{?V-jqo{zE)2$0!?n%jx-h#SIEo(DZwAw&L*U zQxN-@`Ud42xo@+%Fa3>;%$$c>^M~?EBd(L}y<{H{V~dTkdav!lU|&lUJJ8a>`dfCf z!DQM|p6b$TQa$=&Qtnr!{>io^)5R90x|utZW`l_yM|t}zdPRG$Uelh?7t+YRh5oN? z?pI%7?p!Z(w9*^L(Kit*O@yWV}p?%$2|XGy*zqEuZSMiYoZa|{jT$UI$My2?3B4kGQm+YzboZYeXYM~e!Q4MT$=u-(8w~U~=K9~%%Y&!% zir{IzCK%9{`nzM5{uaI5*Q8hYcIh>~4t=n>+2Q`ho6P-ZrL(HcQ&!g z-Md)j%gwBY{`1~q)uJp0mw-#arQjlP5x5Xs2rdPefo^a)SPfQ#%fMQ2Ik*C>1y_O# zzy;t6a22=`tOHkp9&kQ5AFKmcgC1}VxEfpw&I9LxYd|l!7F-83s z0jvi%f^)&SU=>&emV@PB1y})Af|X$Rgu^%RbTC}QZ@l1Q()93XdN4(Q|vIEW=H8Qc7o2bH|cG5 zn$EGabe^4~3+w{D$1c)Ec9|}*kLWVHN*}Uo^bxyBS8%_&%IdHxBlHPdD|n673tndp zf;U;C;4Ri9c$@7J{EW2--eDoZ&sj|HE=vf0!T3AW2z|-2g7;as;O`i}-_P`}X0tr& z^bMX<`bN)beUs-cy}@%<-|Tr?-{Lu^Z}ptl8$B2FZJzh^?VgMJ4$mdM$#YrX>G@FK z<@re8?YW}w@m$sSdOp#cJ=b)f=epkFxvBd-xAcJLwjT6+riVOt^swi1J>t2mM?GKY zG0&HJ+;d-V_54ns-~f^d#^E{_d09w-ei97Ef(~Eabhz z!rsqW#Cw-TyN?Fbqb(2p9#UU<{0baWD=#KnF;a7)FSm$&YeUE z!^H3|qWzq^iF!B@(?8+dON8)D3^xSDVOJ6W_Zo9$i7jd#OH!d4%^eunJVC}O87mUNg$T2I#e;B31E2kN{Rnra5{}C2Z zj;RxWT9giZ@CwKMT3u{#9$s|Pa?Bd>ZdW?I_J@YfJJq1;d2Egxvktq=?bllk*4qru zRk4wBOx1X!uUxz%mJU~x80|{DJeb!AUo*sth#ABRW)rc3*+i^hHW4fETEq&x7O?`a zMXZd;{WaD(|LJdARYe)Wt0m%z$b-im#3CUUbDtUdwj#xr`_!l>#-M)NsJB0Z`frSS zavbWnjCyJU>VIX_J0_xzJ>|!Fd9osWLwpLK5ud_m#HZ*-dn-pvSKwd1z`s7}Ur_oNlKzFIe-Y_lRQeZ_{^9x( z{yDgR*b8$%`r#wrmjm#Ra{#`LZzy*0`a$?M0q>FO*0Fdd|Ma(q;2-B8eB&H~U!1SO zry|PVP#}ouzvCg)z-b{m%ZZizXHKjn(QocKf2?9HWqg^w(1X9_S_RL-HhS#_e+DLd z|MfAbBc%v`=UDNOj@LxWXTP!`?U-Z!b!15Bb(NHtiWH?->bV`#()aTH8hjrE|IcFp z$y$^SWFB6`V*n^_%^;GxDE}e#;&A~z;&B7~mj@$w&LX-h^%8_c^u%JBNVCRIR;}Yp zemHIXM9U<8{Mis=crh{~PvGJq0=4D5DV`dL_&>tgbUd3%Qm`E#BIfOn1-d(9^Y(Xk zyW-vH@V;c%ymV_g8Q7n#j&>y%#uM3Ae=rzrombtl-_`Bx*iV(&_KwPIDjkgBV?<{V zHJ?9`?#yITmF+2-gLG`;PmyG^SpI$dII^Ii1+o0kmfzVSKD|0+ER9jjv$R%P)E~Rm zGR>~K>?+e8LWlPNZiz@p-E&GwmW~wh)$J*72)~=ys%HHgvMV>Nlhsw$Ny=^u)+1T`32*#fRI`s&pV#`;Rd)4xr@G2% zJ(nxKX#I-pstry2-cb%HhzlbAm^^}F!{dX^Rx)}$nEPmczo?HV@pWOb9pBdM_4Rf3 zxi!uzXBCY9KoQrKf=80Y4-epx^2dB1A!jm`4U;ppKZ$QXthr7&HJQ+!ubupDOC=pNc z!wQ2)8egu+8BDeFuVci&K4tv@Fa`soX3+csV-g>x$XB;>mQ zxKYfCr1@RcR6m-&xGm3(rkR;9O|F%OJYVu-VFyJq^C*8+`Fdm|W!jth(xgL?XV-iCk>z&HQT8{)oNlzsVP%=Z~4Dy_wHVn)zH#BhJCBbIyVA^D^yg<&9yKd{9BD zEvWNqC4}3X_Z#y%8SVH62NpKB4bi_0!uw474tafb zNc*GajSgdY;l36Y{Lk=MAJ?1q-{3ysz3GYe1M>JfpRAxfdi*GKyzkM}aY@?aJ?x=k z+MC3m9#1^}Gvb||=p}Pw}e4KfF^ZGlDK6CHoP=R4-f2pt&b@RAp_jy#FWPeEf N$3i5hF^4~9|6dkiyo~?= literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/lenet5/tem_fused_relu_5.hsaco b/machine_interface/tests/libs/lenet5/tem_fused_relu_5.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..93c0e4f0e813fc31b7520e66bea8736bfc205043 GIT binary patch literal 12192 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 Prvh#Zygs}wP1gTEZ;b<- literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco b/machine_interface/tests/libs/resnet18/per_fused_adaptive_avg_pool2d_add_miopen_batch_norm_relu_19.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..596c3389b332d768d8f2297d975fc95ad4060168 GIT binary patch literal 6336 zcmeHMTZ|jk89p;}j(67Hc)i}urD-mPY{M$Bvu8 zIx{vK6r9NdNra-5Rw#lB38@kdA_R!qqN38x=Ajiz`@r@oQW1(OwW_K?-T_utQd&Ya7fvxjy~KddTBN@YRO*d?Y&8X+a=h2emBNT6&R)8RS7 z;w%JW4!=~Oz6KX$FhX70p&0%CTk$b46hamYc=Ur580!mow(@FBNjYJ+ABIdt1N)S5 zHP&Pp%9H$5kl%_Q`BVG8^%pPK?w4DvkNW(Z;3u0dGrBdvy4wAT31jKOgIXXaq`t@Q z%7ZQexMT0m-TNM6?Af=?a<1r_#*F1uEZhCjiPMHzs5$9uwO;Yq>xStR+*h7^+c0xE z$8z1YTQjrP&kA-mW7?;TYCi8;Xy%rlw)E3R!?f#GdZtv#oe50RnR-5NIX4NQFEv1H zsR33kH9%si0mhaZVB)3$o~0MIEimQXFYJxXfpq)zb*#4E$m)Hg;8g3iv}+a0R>e!_ zOS4ukjl+Pw*B(qTa5_rUE)^>JFRziKdFoe2*_=)1ZPQCXRdr@$Sk%03RLrt<3Ww&z z<}JTAYEG$PdR8ZFSDmK~w=-%JX9LEqm26uMdhv* za;%>nJNFt7-O1Sx|2W507E#q^Sl2fzk?=O=@B5guLwrT^fqdadup(A*0r2EqgWvdFTz-zn+>rWpl(5cpU)>JLQ*=i=e8KOBk7 zg|tBLL(JWhhF$dB^OEL?7v^=DpDOcP4z?qlZ&vz3?fg`BNNI+z9L4rVA-@60tq<~A z26@#6kDudO6x(^U731n#zrAa!#r%1wV-R&M=mVf1W&GH|%ev0gejZjI)ti0G1~|q$ zug8jq^>{JNe!r;qhesoT{eX-;{E-|rRcEGqOp}ZpYGzmvlzLrf6BlDfeO;UQTDNEuNH{*$d;uO%Fp@I4NuUgivIV}u zMrF(~iT6m{E^(*Cmn6O_@hyo#sL!6+`*OBzPu*)~XC2RivzBM)%XV$+)U2D|Ix{n6 zmbYv+^R=San6jqo=9awcOc}KU%yUX!wL%|tEa{bNNw4Z;i*O>VXMswawo`ZAYVy7u zyBjL!Y%OdBTv7fVUB(nB*dqA5v1hVaEn7(nW!TlMX(#PcCRsb+6|0qdjme3mTk@=N zI4sVX1JXZ-&)ZkfO!@I!wCoyut78X3m$;r; z$(c?LS^R_+Yr?Ewr7@u`SH$w^Nin)XYz-M=e2pZb8loT66 zd)l}@3G_W;^ns)>9uVun#mH;lGekV3ZG2Iz{>b} zTor4zjR~%ZyS48pV3Qx!E-C^0MzfnA)6O*afPPT>P%*$NVgOmc6$)abvq8?lk7(~T z_lPwQijn)pn!k!M$d?=HaTUe}8-UJeLE&&C#CZ(vgkof7_i)%i)(LO-0XkyQ|doDrauV2C?o%O<$QZr-dpbLsjr7+ zd%?F?1|mlOk08@kdTpNoU9Swy|0V0scKIUNYg@RE4DFu4fdyq>0G(&Ae;qU^>s^XY zOMlo)t}5hD=!2H%Zo`=D;3N$UsqD4IyO3TPnx^7`!&m^FC%r!syaELJ_vT-e{&YP~ z_EZ<)PeIX>V%yZ0{!dCry#7Z!s-NcXn;@gHBTd_IN&0`#Ed-kCCGjtSxSs#3^8XEM K$xvdi|9=4IgT_Mu literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_13.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..4dce764ee5df5b8087ced42a6af14406f11678fe GIT binary patch literal 5360 zcmeHLU2GiH6~6Q9&Fp&Zc$dV4{H$yvB8X>gC*V*)Yt+y}oA4`s`>>hao!uSp?#y&% zc4J4z-UQS}YD5dF$_pqjEoqw)!~+P#PmI*Qgz%8Of~p7!!E+>dL1H;)=AQ9-!%rZu zIr83f?>Xl?_uM=8o;l-{yZ8S}6ofgEMI^C{OyGTFbG$z_9Cd!7plmNoK$~G3nF?YV zeshufGQP^45l?VC6eI3C2^}L5=kp^DLRgb;!T}I*vM1hy3q`5Oob6iAT|SJ1;y4lH zSAruvt?!{vgL1gOE1Zw^{6WA`=oHeGaGWcg4+BQ(yH=yY&)7-bUu+hg#=p5Uy%&mzUg4)WfW?`? zTQI7Y>`7qwgX29pS*_upG)J&b{;Hk&h%7PQi;`nc&F4Dr)!DH#D0}JX3lEE8dKEPS`{M;%%n4D> z{XrDR1Vyf$kkv7f{rSRCS!64#$IlFj;&NI}%m@S8Uef#*3#Z`Xc_n#P zQtuvF_QC(aM%a=0i{~$CXC)2rYUb>?mKkX$GFdH&3 zlATeuKY6DzuKq^ZuI^H{8p`-?WqTe3cPKm5DP;l_JJdYzJ3y9Kb^_m`-lvS1%9cBo zk;K^SZYA@Xk{!#-qOwi8MVAF-r}Vh4$f_Tb)<)ARf!J(#PQir_Ez7Qg+$^@L1*2H>%r=cIyW&tkbQKvj zEE}f{0TmDGa;BG@CRYCpYwN%$0P4KMG;t`qSz+H3_uX~i-e0cYho3sa{lg23 z2Ph=!a8BQ+q^5jAW5i-QAQ;`eYvOg}gmUUVeNXG75cvfFhCPkD>@L}{&%43m!bK;`23IcV6oe8TjjFLQpaEfG$R(bgeUHCd~CowCdWTX zhFsn^WbpBFSxjiUnvMWFBNn&)=l4&bL7)Bcf6npz{TSnEe&T-x4V}H%2s?POfDVQ& ss1`AgNHUIzs literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_add_miopen_batch_norm_relu_17.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..93ba5671be580da0d78f5dd5574183e935ed4083 GIT binary patch literal 5920 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 literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco b/machine_interface/tests/libs/resnet18/poi_fused_conv2d_miopen_batch_norm_relu_12.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..5e902ee15d8f938aac853d5dc5f92cc1755ec60f GIT binary patch literal 5488 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 E0!+l$X8-^I literal 0 HcmV?d00001 diff --git a/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco b/machine_interface/tests/libs/resnet18/tem_fused_add_conv2d_miopen_batch_norm_relu_6.hsaco new file mode 100644 index 0000000000000000000000000000000000000000..ced034dc62bd29e5313d0306ebf2f4c5ba9fa27c GIT binary patch literal 20632 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