diff --git a/benchmark_cgdrag/benchmarker_cgdrag_forpy.f90 b/benchmark_cgdrag/benchmarker_cgdrag_forpy.f90 index fd15206..0f030fe 100644 --- a/benchmark_cgdrag/benchmarker_cgdrag_forpy.f90 +++ b/benchmark_cgdrag/benchmarker_cgdrag_forpy.f90 @@ -24,8 +24,8 @@ subroutine main() integer :: i, j, n real(dp) :: start_time, end_time, start_loop_time, end_loop_time - real(dp), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations, inference_durations - real(dp), dimension(:), allocatable :: allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), dimension(:), allocatable :: loop_durations, inference_durations, allocation_durations + real(dp), dimension(:), allocatable :: deallocation_durations, tensor_creation_durations, tensor_deletion_durations real(dp), dimension(:,:), allocatable :: all_durations character(len=20), dimension(:), allocatable :: messages @@ -47,6 +47,8 @@ subroutine main() character(len=:), allocatable :: model_dir, model_name character(len=128) :: msg1, msg2, msg3, msg4, msg5, msg6 integer :: ntimes + character(len=10) :: input_device + logical :: use_cuda = .false. type(ndarray) :: uuu_nd, vvv_nd, gwfcng_x_nd, gwfcng_y_nd, lat_nd, psfc_nd @@ -56,16 +58,22 @@ subroutine main() print *, "====== FORPY ======" - call setup(model_dir, model_name, ntimes, n, alloc_in_loop) + call setup(model_dir, model_name, ntimes, n, alloc_in_loop, use_cuda=use_cuda) if (ntimes .lt. 2) then write(*,*) "Error: ntimes must be at least 2" return end if + if (use_cuda) then + input_device = "cuda" + else + input_device = "cpu" + end if + ! Allocate arrays shared with FTorch implementation and read in data call init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, & - module_load_durations, module_delete_durations, loop_durations, allocation_durations, deallocation_durations, & - tensor_creation_durations, tensor_deletion_durations, inference_durations, all_durations, messages, & + loop_durations, allocation_durations, deallocation_durations, tensor_creation_durations, & + tensor_deletion_durations, inference_durations, all_durations, messages, & start_loop_time, end_loop_time, start_time, end_time) ! Reshape arrays, if not done for every loop @@ -80,7 +88,7 @@ subroutine main() #else print *, "generate model in python runtime" #endif - call load_module(model_dir, model_name, run_emulator, model) + call load_module(model_dir, model_name, run_emulator, model, use_cuda) do i = 1, ntimes @@ -108,13 +116,14 @@ subroutine main() ie = ndarray_create_nocopy(gwfcng_y_nd, gwfcng_y_flattened) ! create model input args as tuple - ie = tuple_create(args,6) + ie = tuple_create(args, 7) ie = args%setitem(0, model) ie = args%setitem(1, uuu_nd) ie = args%setitem(2, lat_nd) ie = args%setitem(3, psfc_nd) ie = args%setitem(4, gwfcng_x_nd) ie = args%setitem(5, J_MAX) + ie = args%setitem(6, trim(input_device)) end_time = omp_get_wtime() tensor_creation_durations(i) = end_time - start_time ! ------------------------------ End tensor creation timer ------------------------------ @@ -210,25 +219,23 @@ subroutine main() end do - call time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations, run_emulator, model) + call forpy_finalize ! Call individual print for loop, to avoid adding to combined mean call print_time_stats(loop_durations, "full loop") - all_durations(:, 1) = module_load_durations - all_durations(:, 2) = module_delete_durations - all_durations(:, 3) = allocation_durations - all_durations(:, 4) = deallocation_durations - all_durations(:, 5) = tensor_creation_durations - all_durations(:, 6) = tensor_deletion_durations - all_durations(:, 7) = inference_durations - messages = [character(len=20) :: "module creation", "module deletion", "array allocation", "array deallocation", & + all_durations(:, 1) = allocation_durations + all_durations(:, 2) = deallocation_durations + all_durations(:, 3) = tensor_creation_durations + all_durations(:, 4) = tensor_deletion_durations + all_durations(:, 5) = inference_durations + messages = [character(len=20) :: "array allocation", "array deallocation", & "tensor creation", "tensor deletion", "forward pass"] call print_all_time_stats(all_durations, messages) - call deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, module_load_durations, & - module_delete_durations, loop_durations, allocation_durations, deallocation_durations, & - tensor_creation_durations, tensor_deletion_durations, inference_durations, all_durations, messages) + call deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, & + loop_durations, allocation_durations, deallocation_durations, tensor_creation_durations, & + tensor_deletion_durations, inference_durations, all_durations, messages) if (.not. alloc_in_loop) then call deallocate_reshaped_arrays(uuu_flattened, vvv_flattened, lat_reshaped, psfc_reshaped, gwfcng_x_flattened, gwfcng_y_flattened) @@ -236,45 +243,12 @@ subroutine main() end subroutine main - subroutine time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations, run_emulator, model) - - implicit none - - integer, intent(in) :: ntimes - character(len=*), intent(in) :: model_dir, model_name - real(dp), dimension(:), intent(inout) :: module_load_durations, module_delete_durations - type(module_py), intent(out) :: run_emulator - type(object), intent(out) :: model - - integer :: i - real(dp) :: start_time, end_time - - do i = 1, ntimes - ! ------------------------------ Start module load timer ------------------------------ - start_time = omp_get_wtime() - call load_module(model_dir, model_name, run_emulator, model) - end_time = omp_get_wtime() - module_load_durations(i) = end_time - start_time - ! ------------------------------ End module load timer ------------------------------ - - ! ------------------------------ Start module deletion timer ------------------------------ - ! We can only call forpy_finalize once - if (i == ntimes) then - start_time = omp_get_wtime() - call forpy_finalize - end_time = omp_get_wtime() - module_delete_durations(:) = (end_time - start_time) / (ntimes + 1) - end if - ! ------------------------------ End module deletion timer ------------------------------ - end do - - end subroutine time_module - - subroutine load_module(model_dir, model_name, run_emulator, model) + subroutine load_module(model_dir, model_name, run_emulator, model, use_cuda) implicit none character(len=*), intent(in) :: model_dir, model_name + logical, intent(in) :: use_cuda type(module_py), intent(out) :: run_emulator type(object), intent(out) :: model @@ -301,7 +275,11 @@ subroutine load_module(model_dir, model_name, run_emulator, model) #ifdef USETS ! load torchscript saved model ie = tuple_create(args,1) - ie = str_create(filename, trim(model_dir//"/"//"saved_cgdrag_model_cpu.pt")) + if (use_cuda) then + ie = str_create(filename, trim(model_dir//"/"//"saved_cgdrag_model_gpu.pt")) + else + ie = str_create(filename, trim(model_dir//"/"//"saved_cgdrag_model_cpu.pt")) + end if ie = args%setitem(0, filename) ie = call_py(model, run_emulator, "initialize_ts", args) call args%destroy @@ -318,8 +296,8 @@ subroutine load_module(model_dir, model_name, run_emulator, model) end subroutine load_module subroutine init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, & - module_load_durations, module_delete_durations, loop_durations, allocation_durations, & - deallocation_durations, tensor_creation_durations, tensor_deletion_durations, inference_durations, & + loop_durations, allocation_durations, deallocation_durations, & + tensor_creation_durations, tensor_deletion_durations, inference_durations, & all_durations, messages, start_loop_time, end_loop_time, start_time, end_time) implicit none @@ -330,8 +308,8 @@ subroutine init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, g real(wp), intent(out), dimension(:,:,:), allocatable :: gwfcng_x_ref, gwfcng_y_ref real(wp), intent(out), dimension(:,:), allocatable :: lat, psfc - real(dp), intent(out), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations, inference_durations - real(dp), intent(out), dimension(:), allocatable :: allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), intent(out), dimension(:), allocatable :: loop_durations, inference_durations, allocation_durations + real(dp), intent(out), dimension(:), allocatable :: deallocation_durations, tensor_creation_durations, tensor_deletion_durations real(dp), intent(out), dimension(:,:), allocatable :: all_durations character(len=20), intent(out), dimension(:), allocatable :: messages @@ -385,20 +363,16 @@ subroutine init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, g close(15) ! Allocate arrays for timings - allocate(module_load_durations(ntimes)) - allocate(module_delete_durations(ntimes)) allocate(loop_durations(ntimes)) allocate(allocation_durations(ntimes)) allocate(deallocation_durations(ntimes)) allocate(tensor_creation_durations(ntimes)) allocate(tensor_deletion_durations(ntimes)) allocate(inference_durations(ntimes)) - allocate(all_durations(ntimes, 7)) - allocate(messages(7)) + allocate(all_durations(ntimes, 5)) + allocate(messages(5)) ! Initialise timings with arbitrary large values - module_load_durations(:) = 100. - module_delete_durations(:) = 100. loop_durations(:) = 100. allocation_durations(:) = 100. deallocation_durations(:) = 100. @@ -445,14 +419,14 @@ subroutine init_reshaped_arrays(I_MAX, J_MAX, K_MAX, uuu, vvv, lat, psfc, uuu_fl end subroutine init_reshaped_arrays - subroutine deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, module_load_durations, & - module_delete_durations, loop_durations, allocation_durations, deallocation_durations, & - tensor_creation_durations, tensor_deletion_durations, inference_durations, all_durations, messages) + subroutine deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, & + loop_durations, allocation_durations, deallocation_durations, tensor_creation_durations, & + tensor_deletion_durations, inference_durations, all_durations, messages) implicit none - real(dp), intent(inout), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations, inference_durations - real(dp), intent(inout), dimension(:), allocatable :: allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), intent(inout), dimension(:), allocatable :: loop_durations, inference_durations, allocation_durations + real(dp), intent(inout), dimension(:), allocatable :: deallocation_durations, tensor_creation_durations, tensor_deletion_durations real(dp), intent(inout), dimension(:,:), allocatable :: all_durations character(len=20), intent(inout), dimension(:), allocatable :: messages @@ -460,8 +434,6 @@ subroutine deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, real(wp), intent(inout), dimension(:,:,:), allocatable :: gwfcng_x_ref, gwfcng_y_ref real(wp), intent(inout), dimension(:,:), allocatable :: lat, psfc - deallocate(module_load_durations) - deallocate(module_delete_durations) deallocate(loop_durations) deallocate(allocation_durations) deallocate(deallocation_durations) diff --git a/benchmark_cgdrag/benchmarker_cgdrag_torch.f90 b/benchmark_cgdrag/benchmarker_cgdrag_torch.f90 index c985ebc..9fbd2b2 100644 --- a/benchmark_cgdrag/benchmarker_cgdrag_torch.f90 +++ b/benchmark_cgdrag/benchmarker_cgdrag_torch.f90 @@ -1,6 +1,6 @@ program benchmark_cgdrag_test - use, intrinsic :: iso_c_binding + use, intrinsic :: iso_c_binding, only : c_loc, c_int, c_int64_t use :: omp_lib, only : omp_get_wtime use :: utils, only : assert, setup, print_time_stats, print_all_time_stats use :: ftorch @@ -22,8 +22,8 @@ subroutine main() integer :: i, j, n, ii real(dp) :: start_time, end_time, start_loop_time, end_loop_time - real(dp), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations, inference_durations - real(dp), dimension(:), allocatable :: allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), dimension(:), allocatable :: loop_durations, inference_durations, allocation_durations + real(dp), dimension(:), allocatable :: deallocation_durations, tensor_creation_durations, tensor_deletion_durations real(dp), dimension(:,:), allocatable :: all_durations character(len=20), dimension(:), allocatable :: messages @@ -37,17 +37,17 @@ subroutine main() real(wp), dimension(:,:), allocatable, target :: lat_reshaped, psfc_reshaped real(wp), dimension(:,:), allocatable, target :: gwfcng_x_flattened, gwfcng_y_flattened - integer(c_int), parameter :: n_inputs = 3 + integer, parameter :: n_inputs = 3 - integer(c_int), parameter :: dims_1D = 2 - integer(c_int), parameter :: dims_2D = 2 - integer(c_int), parameter :: dims_out = 2 - integer(c_int64_t) :: shape_2D(dims_2D) = [I_MAX * J_MAX, K_MAX] - integer(c_int) :: stride_2D(dims_2D) = [1, 2] - integer(c_int64_t) :: shape_1D(dims_1D) = [I_MAX * J_MAX, 1] - integer(c_int) :: stride_1D(dims_1D) = [1, 2] - integer(c_int64_t) :: shape_out(dims_out) = [I_MAX * J_MAX, K_MAX] - integer(c_int) :: stride_out(dims_out) = [1, 2] + integer, parameter :: dims_1D = 2 + integer, parameter :: dims_2D = 2 + integer, parameter :: dims_out = 2 + integer :: shape_2D(dims_2D) = [I_MAX * J_MAX, K_MAX] + integer :: stride_2D(dims_2D) = [1, 2] + integer :: shape_1D(dims_1D) = [I_MAX * J_MAX, 1] + integer :: stride_1D(dims_1D) = [1, 2] + integer :: shape_out(dims_out) = [I_MAX * J_MAX, K_MAX] + integer :: stride_out(dims_out) = [1, 2] character(len=:), allocatable :: model_dir, model_name character(len=128) :: msg1, msg2, msg3, msg4, msg5, msg6 @@ -83,8 +83,8 @@ subroutine main() ! Allocate arrays shared with FTorch implementation and read in data call init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, & - module_load_durations, module_delete_durations, loop_durations, allocation_durations, deallocation_durations, & - tensor_creation_durations, tensor_deletion_durations, inference_durations, all_durations, messages, & + loop_durations, allocation_durations, deallocation_durations, tensor_creation_durations, & + tensor_deletion_durations, inference_durations, all_durations, messages, & start_loop_time, end_loop_time, start_time, end_time) ! Allocate arrays and flatten inputs and outputs if --explicit_reshape is set, but --alloc_in_loop is not @@ -94,7 +94,7 @@ subroutine main() lat_reshaped, psfc_reshaped, gwfcng_x_flattened, gwfcng_y_flattened) end if - ! Load model (creation/deletion timed at end) + ! Load model model = torch_module_load(model_dir//"/"//model_name) do i = 1, ntimes @@ -117,20 +117,20 @@ subroutine main() ! ------------------------------ Start tensor creation timer ------------------------------ start_time = omp_get_wtime() if (explicit_reshape) then - in_tensors(3) = torch_tensor_from_blob(c_loc(lat_reshaped), dims_1D, shape_1D, torch_wp, input_device, stride_1D) - in_tensors(2) = torch_tensor_from_blob(c_loc(psfc_reshaped), dims_1D, shape_1D, torch_wp, input_device, stride_1D) + in_tensors(3) = torch_tensor_from_array(lat_reshaped, stride_1D, input_device) + in_tensors(2) = torch_tensor_from_array(psfc_reshaped, stride_1D, input_device) else - in_tensors(3) = torch_tensor_from_blob(c_loc(lat), dims_1D, shape_1D, torch_wp, input_device, stride_1D) - in_tensors(2) = torch_tensor_from_blob(c_loc(psfc), dims_1D, shape_1D, torch_wp, input_device, stride_1D) + in_tensors(3) = torch_tensor_from_blob(c_loc(lat), int(dims_1D, c_int), int(shape_1D, c_int64_t), int(stride_1D, c_int), torch_wp, input_device) + in_tensors(2) = torch_tensor_from_blob(c_loc(psfc), int(dims_1D, c_int), int(shape_1D, c_int64_t), int(stride_1D, c_int), torch_wp, input_device) end if ! Zonal if (explicit_reshape) then - in_tensors(1) = torch_tensor_from_blob(c_loc(uuu_flattened), dims_2D, shape_2D, torch_wp, input_device, stride_2D) - gwfcng_x_tensor = torch_tensor_from_blob(c_loc(gwfcng_x_flattened), dims_out, shape_out, torch_wp, torch_kCPU, stride_out) + in_tensors(1) = torch_tensor_from_array(uuu_flattened, stride_2D, input_device) + gwfcng_x_tensor = torch_tensor_from_array(gwfcng_x_flattened, stride_out, torch_kCPU) else - in_tensors(1) = torch_tensor_from_blob(c_loc(uuu), dims_2D, shape_2D, torch_wp, input_device, stride_2D) - gwfcng_x_tensor = torch_tensor_from_blob(c_loc(gwfcng_x), dims_out, shape_out, torch_wp, torch_kCPU, stride_out) + in_tensors(1) = torch_tensor_from_blob(c_loc(uuu), int(dims_2D, c_int), int(shape_2D, c_int64_t), int(stride_2D, c_int), torch_wp, input_device) + gwfcng_x_tensor = torch_tensor_from_blob(c_loc(gwfcng_x), int(dims_out, c_int), int(shape_out, c_int64_t), int(stride_out, c_int), torch_wp, torch_kCPU) end if end_time = omp_get_wtime() tensor_creation_durations(i) = end_time - start_time @@ -144,15 +144,18 @@ subroutine main() inference_durations(i) = end_time - start_time ! ------------------------------ End inference timer ------------------------------ + ! Clean up here before this points to a new tensor. + call torch_tensor_delete(in_tensors(1)) + ! Meridional ! ------------------------------ Start tensor creation timer ------------------------------ start_time = omp_get_wtime() if (explicit_reshape) then - in_tensors(1) = torch_tensor_from_blob(c_loc(vvv_flattened), dims_2D, shape_2D, torch_wp, input_device, stride_2D) - gwfcng_y_tensor = torch_tensor_from_blob(c_loc(gwfcng_y_flattened), dims_out, shape_out, torch_wp, torch_kCPU, stride_out) + in_tensors(1) = torch_tensor_from_array(vvv_flattened, stride_2D, input_device) + gwfcng_y_tensor = torch_tensor_from_array(gwfcng_y_flattened, stride_out, torch_kCPU) else - in_tensors(1) = torch_tensor_from_blob(c_loc(vvv), dims_2D, shape_2D, torch_wp, input_device, stride_2D) - gwfcng_y_tensor = torch_tensor_from_blob(c_loc(gwfcng_y), dims_out, shape_out, torch_wp, torch_kCPU, stride_out) + in_tensors(1) = torch_tensor_from_blob(c_loc(vvv), int(dims_2D, c_int), int(shape_2D, c_int64_t), int(stride_2D, c_int), torch_wp, input_device) + gwfcng_y_tensor = torch_tensor_from_blob(c_loc(gwfcng_y), int(dims_out, c_int), int(shape_out, c_int64_t), int(stride_out, c_int), torch_wp, torch_kCPU) end if end_time = omp_get_wtime() tensor_creation_durations(i) = tensor_creation_durations(i) + (end_time - start_time) @@ -225,25 +228,24 @@ subroutine main() end do - call time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations) + ! Delete model + call torch_module_delete(model) ! Call individual print for loop, to avoid adding to combined mean call print_time_stats(loop_durations, "full loop") - all_durations(:, 1) = module_load_durations - all_durations(:, 2) = module_delete_durations - all_durations(:, 3) = allocation_durations - all_durations(:, 4) = deallocation_durations - all_durations(:, 5) = tensor_creation_durations - all_durations(:, 6) = tensor_deletion_durations - all_durations(:, 7) = inference_durations - messages = [character(len=20) :: "module creation", "module deletion", "array allocation", "array deallocation", & + all_durations(:, 1) = allocation_durations + all_durations(:, 2) = deallocation_durations + all_durations(:, 3) = tensor_creation_durations + all_durations(:, 4) = tensor_deletion_durations + all_durations(:, 5) = inference_durations + messages = [character(len=20) :: "array allocation", "array deallocation", & "tensor creation", "tensor deletion", "forward pass"] call print_all_time_stats(all_durations, messages) - call deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, module_load_durations, & - module_delete_durations, loop_durations, allocation_durations, deallocation_durations, & - tensor_creation_durations, tensor_deletion_durations, inference_durations, all_durations, messages) + call deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, loop_durations, & + allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations, & + inference_durations, all_durations, messages) ! Deallocate arrays for flattened inputs and outputs if --explicit_reshape is set, but --alloc_in_loop is not ! if --explicit_reshape and --alloc_in_loop are both set, this is done within each loop instead @@ -253,39 +255,10 @@ subroutine main() end subroutine main - subroutine time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations) - - implicit none - - integer, intent(in) :: ntimes - real(dp), dimension(:), intent(inout) :: module_load_durations, module_delete_durations - integer :: i - real(dp) :: start_time, end_time - character(len=*), intent(in) :: model_dir, model_name - type(torch_module) :: model - - do i = 1, ntimes - ! ------------------------------ Start module load timer ------------------------------ - start_time = omp_get_wtime() - model = torch_module_load(model_dir//"/"//model_name) - end_time = omp_get_wtime() - module_load_durations(i) = end_time - start_time - ! ------------------------------ End module load timer ------------------------------ - - ! ------------------------------ Start module deletion timer ------------------------------ - start_time = omp_get_wtime() - call torch_module_delete(model) - end_time = omp_get_wtime() - module_delete_durations(i) = end_time - start_time - ! ------------------------------ End module deletion timer ------------------------------ - end do - - end subroutine time_module - subroutine init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, & - module_load_durations, module_delete_durations, loop_durations, allocation_durations, & - deallocation_durations, tensor_creation_durations, tensor_deletion_durations, inference_durations, & - all_durations, messages, start_loop_time, end_loop_time, start_time, end_time) + loop_durations, allocation_durations, deallocation_durations, tensor_creation_durations, & + tensor_deletion_durations, inference_durations, all_durations, messages, & + start_loop_time, end_loop_time, start_time, end_time) implicit none @@ -295,8 +268,8 @@ subroutine init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, g real(wp), intent(out), dimension(:,:,:), allocatable :: gwfcng_x_ref, gwfcng_y_ref real(wp), intent(out), dimension(:,:), allocatable :: lat, psfc - real(dp), intent(out), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations, inference_durations - real(dp), intent(out), dimension(:), allocatable :: allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), intent(out), dimension(:), allocatable :: loop_durations, inference_durations, allocation_durations + real(dp), intent(out), dimension(:), allocatable :: deallocation_durations, tensor_creation_durations, tensor_deletion_durations real(dp), intent(out), dimension(:,:), allocatable :: all_durations character(len=20), intent(out), dimension(:), allocatable :: messages @@ -350,20 +323,16 @@ subroutine init_common_arrays(ntimes, I_MAX, J_MAX, K_MAX, uuu, vvv, gwfcng_x, g close(15) ! Allocate arrays for timings - allocate(module_load_durations(ntimes)) - allocate(module_delete_durations(ntimes)) allocate(loop_durations(ntimes)) allocate(allocation_durations(ntimes)) allocate(deallocation_durations(ntimes)) allocate(tensor_creation_durations(ntimes)) allocate(tensor_deletion_durations(ntimes)) allocate(inference_durations(ntimes)) - allocate(all_durations(ntimes, 7)) - allocate(messages(7)) + allocate(all_durations(ntimes, 5)) + allocate(messages(5)) ! Initialise timings with arbitrary large values - module_load_durations(:) = 100. - module_delete_durations(:) = 100. loop_durations(:) = 100. allocation_durations(:) = 100. deallocation_durations(:) = 100. @@ -410,14 +379,14 @@ subroutine init_reshaped_arrays(I_MAX, J_MAX, K_MAX, uuu, vvv, lat, psfc, uuu_fl end subroutine init_reshaped_arrays - subroutine deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, module_load_durations, & - module_delete_durations, loop_durations, allocation_durations, deallocation_durations, & - tensor_creation_durations, tensor_deletion_durations, inference_durations, all_durations, messages) + subroutine deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, gwfcng_y_ref, lat, psfc, loop_durations, & + allocation_durations, deallocation_durations, tensor_creation_durations, & + tensor_deletion_durations, inference_durations, all_durations, messages) implicit none - real(dp), intent(inout), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations, inference_durations - real(dp), intent(inout), dimension(:), allocatable :: allocation_durations, deallocation_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), intent(inout), dimension(:), allocatable :: loop_durations, inference_durations, allocation_durations + real(dp), intent(inout), dimension(:), allocatable :: deallocation_durations, tensor_creation_durations, tensor_deletion_durations real(dp), intent(inout), dimension(:,:), allocatable :: all_durations character(len=20), intent(inout), dimension(:), allocatable :: messages @@ -425,8 +394,6 @@ subroutine deallocate_common_arrays(uuu, vvv, gwfcng_x, gwfcng_y, gwfcng_x_ref, real(wp), intent(inout), dimension(:,:,:), allocatable :: gwfcng_x_ref, gwfcng_y_ref real(wp), intent(inout), dimension(:,:), allocatable :: lat, psfc - deallocate(module_load_durations) - deallocate(module_delete_durations) deallocate(loop_durations) deallocate(allocation_durations) deallocate(deallocation_durations) diff --git a/benchmark_large_stride/benchmarker_large_stride_torch.f90 b/benchmark_large_stride/benchmarker_large_stride_torch.f90 index 17ffb9e..fa9001c 100644 --- a/benchmark_large_stride/benchmarker_large_stride_torch.f90 +++ b/benchmark_large_stride/benchmarker_large_stride_torch.f90 @@ -95,8 +95,8 @@ subroutine main() ! Create input and output tensors for the model. ! ------------------------------ Start tensor creation timer ------------------------------ start_time = omp_get_wtime() - input_array(1) = torch_tensor_from_blob(c_loc(big_array), 2, shape_2d, torch_wp, input_device, stride_2d) - result_tensor = torch_tensor_from_blob(c_loc(big_result), 2, shape_2d, torch_wp, torch_kCPU, stride_2d) + input_array(1) = torch_tensor_from_blob(c_loc(big_array), 2, shape_2d, stride_2d, torch_wp, input_device) + result_tensor = torch_tensor_from_blob(c_loc(big_result), 2, shape_2d, stride_2d, torch_wp, torch_kCPU) end_time = omp_get_wtime() tensor_creation_durations(i) = end_time - start_time ! ------------------------------ End tensor creation timer ------------------------------ diff --git a/benchmark_mima/cg_drag_torch_mod.f90 b/benchmark_mima/cg_drag_torch_mod.f90 index 4bd8748..79d01aa 100644 --- a/benchmark_mima/cg_drag_torch_mod.f90 +++ b/benchmark_mima/cg_drag_torch_mod.f90 @@ -169,18 +169,21 @@ subroutine cg_drag_ML(uuu, vvv, psfc, lat, gwfcng_x, gwfcng_y) lat = lat*RADIAN ! Create input/output tensors from the above arrays - model_input_arr(3) = torch_tensor_from_blob(c_loc(lat), dims_1D, shape_1D, torch_wp, torch_kCPU, stride_1D) - model_input_arr(2) = torch_tensor_from_blob(c_loc(psfc), dims_1D, shape_1D, torch_wp, torch_kCPU, stride_1D) + model_input_arr(3) = torch_tensor_from_blob(c_loc(lat), dims_1D, shape_1D, stride_1D, torch_wp, torch_kCPU) + model_input_arr(2) = torch_tensor_from_blob(c_loc(psfc), dims_1D, shape_1D, stride_1D, torch_wp, torch_kCPU) ! Zonal - model_input_arr(1) = torch_tensor_from_blob(c_loc(uuu), dims_2D, shape_2D, torch_wp, torch_kCPU, stride_2D) - gwfcng_x_tensor = torch_tensor_from_blob(c_loc(gwfcng_x), dims_out, shape_out, torch_wp, torch_kCPU, stride_out) + model_input_arr(1) = torch_tensor_from_blob(c_loc(uuu), dims_2D, shape_2D, stride_2D, torch_wp, torch_kCPU) + gwfcng_x_tensor = torch_tensor_from_blob(c_loc(gwfcng_x), dims_out, shape_out, stride_out, torch_wp, torch_kCPU) ! Run model and Infer call torch_module_forward(model, model_input_arr, n_inputs, gwfcng_x_tensor) + ! Clean up here before this points to a new tensor + call torch_tensor_delete(model_input_arr(1)) + ! Meridional - model_input_arr(1) = torch_tensor_from_blob(c_loc(vvv), dims_2D, shape_2D, torch_wp, torch_kCPU, stride_2D) - gwfcng_y_tensor = torch_tensor_from_blob(c_loc(gwfcng_y), dims_out, shape_out, torch_wp, torch_kCPU, stride_out) + model_input_arr(1) = torch_tensor_from_blob(c_loc(vvv), dims_2D, shape_2D, stride_2D, torch_wp, torch_kCPU) + gwfcng_y_tensor = torch_tensor_from_blob(c_loc(gwfcng_y), dims_out, shape_out, stride_out, torch_wp, torch_kCPU) ! Run model and Infer call torch_module_forward(model, model_input_arr, n_inputs, gwfcng_y_tensor) diff --git a/benchmark_resnet/benchmarker_resnet_forpy.f90 b/benchmark_resnet/benchmarker_resnet_forpy.f90 index 2212fcb..541424f 100644 --- a/benchmark_resnet/benchmarker_resnet_forpy.f90 +++ b/benchmark_resnet/benchmarker_resnet_forpy.f90 @@ -24,8 +24,8 @@ subroutine main() real(wp), dimension(:,:), allocatable, asynchronous :: out_data real(dp) :: start_time, end_time, start_loop_time, end_loop_time - real(dp), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations - real(dp), dimension(:), allocatable :: inference_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), dimension(:), allocatable :: loop_durations, inference_durations + real(dp), dimension(:), allocatable :: tensor_creation_durations, tensor_deletion_durations real(dp), dimension(:,:), allocatable :: all_durations character(len=20), dimension(:), allocatable :: messages @@ -37,6 +37,8 @@ subroutine main() character(len=:), allocatable :: model_dir, model_name character(len=128) :: msg1, msg2, msg3, msg4 integer :: ntimes + character(len=10) :: input_device + logical :: use_cuda = .false. type(ndarray) :: out_data_nd, in_data_nd @@ -54,23 +56,25 @@ subroutine main() print *, "====== FORPY ======" - call setup(model_dir, model_name, ntimes, n) + call setup(model_dir, model_name, ntimes, n, use_cuda=use_cuda) + + if (use_cuda) then + input_device = "cuda" + else + input_device = "cpu" + end if allocate(in_data(1, 3, 224, 224)) allocate(out_data(1, 1000)) allocate(probabilities(1, 1000)) - allocate(module_load_durations(ntimes)) - allocate(module_delete_durations(ntimes)) allocate(loop_durations(ntimes)) allocate(tensor_creation_durations(ntimes)) allocate(tensor_deletion_durations(ntimes)) allocate(inference_durations(ntimes)) - allocate(all_durations(ntimes, 5)) - allocate(messages(5)) + allocate(all_durations(ntimes, 3)) + allocate(messages(3)) ! Initialise timings with arbitrary large values - module_load_durations(:) = 100. - module_delete_durations(:) = 100. loop_durations(:) = 100. tensor_creation_durations(:) = 100. tensor_deletion_durations(ntimes) = 100. @@ -92,7 +96,7 @@ subroutine main() #else print *, "generate model in python runtime" #endif - call load_module(model_dir, model_name, run_emulator, model) + call load_module(model_dir, model_name, run_emulator, model, use_cuda) call load_data(data_file, tensor_length, in_data) @@ -108,10 +112,11 @@ subroutine main() ie = ndarray_create_nocopy(out_data_nd, out_data) ! create model input args as tuple - ie = tuple_create(args,3) + ie = tuple_create(args, 4) ie = args%setitem(0, model) ie = args%setitem(1, in_data_nd) - ie = args%setitem(2, out_data_nd) + ie = args%setitem(2, trim(input_device)) + ie = args%setitem(3, out_data_nd) end_time = omp_get_wtime() tensor_creation_durations(i) = end_time - start_time ! ------------------------------ End tensor creation timer ------------------------------ @@ -148,7 +153,7 @@ subroutine main() probability = maxval(probabilities) ! Check top probability matches expected value - call assert(probability, expected_prob, test_name="Check probability", rtol_opt=1.0e-5_wp) + call assert(probability, expected_prob, test_name="Check probability", rtol_opt=1.0e-2_wp) write(msg1, '(A, I10, A, F10.6, A)') "check iteration create tensors", i, " (", tensor_creation_durations(i), " s)" write(msg2, '(A, I15, A, F10.6, A)') "check iteration inference", i, " (", inference_durations(i), " s)" @@ -161,23 +166,19 @@ subroutine main() end do - call time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations, run_emulator, model) + call forpy_finalize ! Call individual print for loop, to avoid adding to combined mean call print_time_stats(loop_durations, "full loop") - all_durations(:, 1) = module_load_durations - all_durations(:, 2) = module_delete_durations - all_durations(:, 3) = tensor_creation_durations - all_durations(:, 4) = tensor_deletion_durations - all_durations(:, 5) = inference_durations - messages = [character(len=20) :: "module creation", "module deletion", "tensor creation", "tensor deletion", "forward pass"] + all_durations(:, 1) = tensor_creation_durations + all_durations(:, 2) = tensor_deletion_durations + all_durations(:, 3) = inference_durations + messages = [character(len=20) :: "tensor creation", "tensor deletion", "forward pass"] call print_all_time_stats(all_durations, messages) deallocate(in_data) deallocate(out_data) - deallocate(module_load_durations) - deallocate(module_delete_durations) deallocate(loop_durations) deallocate(tensor_creation_durations) deallocate(tensor_deletion_durations) @@ -236,45 +237,12 @@ subroutine calc_probs(out_data, probabilities) end subroutine calc_probs - subroutine time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations, run_emulator, model) - - implicit none - - integer, intent(in) :: ntimes - character(len=*), intent(in) :: model_dir, model_name - real(dp), dimension(:), intent(inout) :: module_load_durations, module_delete_durations - type(module_py), intent(out) :: run_emulator - type(object), intent(out) :: model - - integer :: i - real(dp) :: start_time, end_time - - do i = 1, ntimes - ! ------------------------------ Start module load timer ------------------------------ - start_time = omp_get_wtime() - call load_module(model_dir, model_name, run_emulator, model) - end_time = omp_get_wtime() - module_load_durations(i) = end_time - start_time - ! ------------------------------ End module load timer ------------------------------ - - ! ------------------------------ Start module deletion timer ------------------------------ - ! We can only call forpy_finalize once - if (i == ntimes) then - start_time = omp_get_wtime() - call forpy_finalize - end_time = omp_get_wtime() - module_delete_durations(:) = (end_time - start_time) / (ntimes + 1) - end if - ! ------------------------------ End module deletion timer ------------------------------ - end do - - end subroutine time_module - - subroutine load_module(model_dir, model_name, run_emulator, model) + subroutine load_module(model_dir, model_name, run_emulator, model, use_cuda) implicit none character(len=*), intent(in) :: model_dir, model_name + logical, intent(in) :: use_cuda type(module_py), intent(out) :: run_emulator type(object), intent(out) :: model @@ -301,7 +269,11 @@ subroutine load_module(model_dir, model_name, run_emulator, model) #ifdef USETS ! load torchscript saved model ie = tuple_create(args,1) - ie = str_create(filename, trim(model_dir//"/"//"saved_resnet18_model_cpu.pt")) + if (use_cuda) then + ie = str_create(filename, trim(model_dir//"/"//"saved_resnet18_model_gpu.pt")) + else + ie = str_create(filename, trim(model_dir//"/"//"saved_resnet18_model_cpu.pt")) + end if ie = args%setitem(0, filename) ie = call_py(model, run_emulator, "initialize_ts", args) call args%destroy diff --git a/benchmark_resnet/benchmarker_resnet_torch.f90 b/benchmark_resnet/benchmarker_resnet_torch.f90 index 836b95b..193b0e0 100644 --- a/benchmark_resnet/benchmarker_resnet_torch.f90 +++ b/benchmark_resnet/benchmarker_resnet_torch.f90 @@ -1,18 +1,15 @@ program benchmark_resnet_test - use, intrinsic :: iso_c_binding, only: c_int64_t, c_loc use :: omp_lib, only : omp_get_wtime use :: utils, only : assert, setup, print_time_stats, print_all_time_stats ! Import our library for interfacing with PyTorch use :: ftorch ! Define working precision for C primitives and Fortran reals ! Precision must match `wp` in resnet18.py and `wp_torch` in pt2ts.py - use :: precision, only: c_wp, wp, dp + use :: precision, only: wp, dp implicit none - integer, parameter :: torch_wp = torch_kFloat32 - call main() contains @@ -23,21 +20,21 @@ subroutine main() integer :: i, ii, n real(dp) :: start_time, end_time, start_loop_time, end_loop_time - real(dp), dimension(:), allocatable :: module_load_durations, module_delete_durations, loop_durations - real(dp), dimension(:), allocatable :: inference_durations, tensor_creation_durations, tensor_deletion_durations + real(dp), dimension(:), allocatable :: loop_durations, inference_durations + real(dp), dimension(:), allocatable :: tensor_creation_durations, tensor_deletion_durations real(dp), dimension(:,:), allocatable :: all_durations character(len=20), dimension(:), allocatable :: messages - real(c_wp), dimension(:,:,:,:), allocatable, target :: in_data - integer(c_int), parameter :: n_inputs = 1 - real(c_wp), dimension(:,:), allocatable, target :: out_data + real(wp), dimension(:,:,:,:), allocatable, target :: in_data + real(wp), dimension(:,:), allocatable, target :: out_data + integer, parameter :: n_inputs = 1 - integer(c_int), parameter :: in_dims = 4 - integer(c_int64_t) :: in_shape(in_dims) = [1, 3, 224, 224] - integer(c_int) :: in_layout(in_dims) = [1,2,3,4] - integer(c_int), parameter :: out_dims = 2 - integer(c_int64_t) :: out_shape(out_dims) = [1, 1000] - integer(c_int) :: out_layout(out_dims) = [1,2] + integer, parameter :: in_dims = 4 + integer :: in_shape(in_dims) = [1, 3, 224, 224] + integer :: in_layout(in_dims) = [1, 2, 3, 4] + integer, parameter :: out_dims = 2 + integer :: out_shape(out_dims) = [1, 1000] + integer :: out_layout(out_dims) = [1, 2] character(len=:), allocatable :: model_dir, model_name character(len=128) :: msg1, msg2, msg3, msg4 @@ -74,18 +71,14 @@ subroutine main() allocate(out_data(out_shape(1), out_shape(2))) allocate(probabilities(out_shape(1), out_shape(2))) - allocate(module_load_durations(ntimes)) - allocate(module_delete_durations(ntimes)) allocate(loop_durations(ntimes)) allocate(tensor_creation_durations(ntimes)) allocate(tensor_deletion_durations(ntimes)) allocate(inference_durations(ntimes)) - allocate(all_durations(ntimes, 5)) - allocate(messages(5)) + allocate(all_durations(ntimes, 3)) + allocate(messages(3)) ! Initialise timings with arbitrary large values - module_load_durations(:) = 100. - module_delete_durations(:) = 100. loop_durations(:) = 100. tensor_creation_durations(:) = 100. tensor_deletion_durations(ntimes) = 100. @@ -101,7 +94,7 @@ subroutine main() return end if - ! Load model (creation/deletion timed at end) + ! Load model model = torch_module_load(model_dir//"/"//model_name) ! Initialise data - previously in loop, but not modified? @@ -115,8 +108,8 @@ subroutine main() ! Create input and output tensors for the model. ! ------------------------------ Start tensor creation timer ------------------------------ start_time = omp_get_wtime() - in_tensor(1) = torch_tensor_from_blob(c_loc(in_data), in_dims, in_shape, torch_wp, input_device, in_layout) - out_tensor = torch_tensor_from_blob(c_loc(out_data), out_dims, out_shape, torch_wp, torch_kCPU, out_layout) + in_tensor(1) = torch_tensor_from_array(in_data, in_layout, input_device) + out_tensor = torch_tensor_from_array(out_data, out_layout, torch_kCPU) end_time = omp_get_wtime() tensor_creation_durations(i) = end_time - start_time ! ------------------------------ End tensor creation timer ------------------------------ @@ -162,26 +155,20 @@ subroutine main() end do - ! Delete model (creation/deletion timed at end) + ! Delete model call torch_module_delete(model) - call time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations) - ! Call individual print for loop, to avoid adding to combined mean call print_time_stats(loop_durations, "full loop") - all_durations(:, 1) = module_load_durations - all_durations(:, 2) = module_delete_durations - all_durations(:, 3) = tensor_creation_durations - all_durations(:, 4) = tensor_deletion_durations - all_durations(:, 5) = inference_durations - messages = [character(len=20) :: "module creation", "module deletion", "tensor creation", "tensor deletion", "forward pass"] + all_durations(:, 1) = tensor_creation_durations + all_durations(:, 2) = tensor_deletion_durations + all_durations(:, 3) = inference_durations + messages = [character(len=20) :: "tensor creation", "tensor deletion", "forward pass"] call print_all_time_stats(all_durations, messages) deallocate(in_data) deallocate(out_data) - deallocate(module_load_durations) - deallocate(module_delete_durations) deallocate(loop_durations) deallocate(tensor_creation_durations) deallocate(tensor_deletion_durations) @@ -198,9 +185,9 @@ subroutine load_data(filename, tensor_length, in_data) character(len=*), intent(in) :: filename integer, intent(in) :: tensor_length - real(c_wp), dimension(:,:,:,:), intent(out) :: in_data + real(wp), dimension(:,:,:,:), intent(out) :: in_data - real(c_wp) :: flat_data(tensor_length) + real(wp) :: flat_data(tensor_length) integer :: ios character(len=100) :: ioerrmsg @@ -229,7 +216,7 @@ subroutine calc_probs(out_data, probabilities) implicit none - real(c_wp), dimension(:,:), intent(in) :: out_data + real(wp), dimension(:,:), intent(in) :: out_data real(wp), dimension(:,:), intent(out) :: probabilities real(wp) :: prob_sum @@ -240,33 +227,4 @@ subroutine calc_probs(out_data, probabilities) end subroutine calc_probs - subroutine time_module(ntimes, model_dir, model_name, module_load_durations, module_delete_durations) - - implicit none - - integer, intent(in) :: ntimes - real(dp), dimension(:), intent(out) :: module_load_durations, module_delete_durations - integer :: i - real(dp) :: start_time, end_time - character(len=*), intent(in) :: model_dir, model_name - type(torch_module) :: model - - do i = 1, ntimes - ! ------------------------------ Start module load timer ------------------------------ - start_time = omp_get_wtime() - model = torch_module_load(model_dir//"/"//model_name) - end_time = omp_get_wtime() - module_load_durations(i) = end_time - start_time - ! ------------------------------ End module load timer ------------------------------ - - ! ------------------------------ Start module deletion timer ------------------------------ - start_time = omp_get_wtime() - call torch_module_delete(model) - end_time = omp_get_wtime() - module_delete_durations(i) = end_time - start_time - ! ------------------------------ End module deletion timer ------------------------------ - end do - - end subroutine time_module - end program benchmark_resnet_test diff --git a/cgdrag_model/run_emulator_davenet.py b/cgdrag_model/run_emulator_davenet.py index fb92b18..b4b3994 100644 --- a/cgdrag_model/run_emulator_davenet.py +++ b/cgdrag_model/run_emulator_davenet.py @@ -4,7 +4,7 @@ It needs in the same directory as `arch_DaveNet.py` which describes the model architecture, and `network_wst.pkl` which contains the model weights. """ -from torch import load, device, no_grad, tensor, float64, jit +from torch import load, device, no_grad, tensor, float64, jit, device import arch_davenet as m @@ -69,22 +69,26 @@ def compute_reshape_drag(*args): output prellocated in MiMA (128, num_col, 40) num_col : # of latitudes on this proc + device : str + Device type ("cpu", "cuda" or "mps"), and optional device ordinal for + the device type, to move input_batch to. Must match device of model. Returns ------- Y_out : Results to be returned to MiMA """ - model, wind, lat, p_surf, Y_out, num_col = args + model, wind, lat, p_surf, Y_out, num_col, input_device = args + input_device = device(input_device) # Reshape and put all input variables together [wind, lat, p_surf] - wind_T = tensor(wind) + wind_T = tensor(wind).to(input_device) # lat_T = zeros((imax * num_col, 1), dtype=float64) - lat_T = tensor(lat) + lat_T = tensor(lat).to(input_device) # pressure_T = zeros((imax * num_col, 1), dtype=float64) - pressure_T = tensor(p_surf) + pressure_T = tensor(p_surf).to(input_device) # Apply model. with no_grad(): @@ -94,7 +98,7 @@ def compute_reshape_drag(*args): temp = model(wind_T, pressure_T, lat_T) # Place in output array for MiMA. - Y_out[:, :] = temp + Y_out[:, :] = temp.cpu() del temp return Y_out diff --git a/resnet_model/resnet18.py b/resnet_model/resnet18.py index db8d246..75c0efa 100644 --- a/resnet_model/resnet18.py +++ b/resnet_model/resnet18.py @@ -144,15 +144,19 @@ def compute(*args): ResNet model ready to be deployed. input_batch : torch.Tensor Input batch to operate on + device : str + Device type ("cpu", "cuda" or "mps"), and optional device ordinal for + the device type, to move input_batch to. Must match device of model. Returns ------- output : Results from ResNet model """ - model, input_batch, result = args + model, input_batch, device, result = args + device = torch.device(device) - input_batch = torch.from_numpy(input_batch) + input_batch = torch.from_numpy(input_batch).to(device) # Apply model. with torch.no_grad(): @@ -160,7 +164,7 @@ def compute(*args): assert model.training is False output = model(input_batch) - result[:, :] = output + result[:, :] = output.cpu() return result diff --git a/run_benchmarks.sh b/run_benchmarks.sh index e46f71f..56e7fc2 100755 --- a/run_benchmarks.sh +++ b/run_benchmarks.sh @@ -1,19 +1,16 @@ #!/usr/bin/env bash nrun=1000 -NDIM=256 for n in {1,4,8}; do export OMP_NUM_THREADS=$n - ./benchmarker_cgdrag_forpy ../cgdrag_model run_emulator_davenet $nrun 10 --alloc_in_loop | tee cgdrag_forpy_$n.out - ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 --alloc_in_loop --explicit_reshape | tee cgdrag_torch_explicit_$n.out - ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 | tee cgdrag_torch_implicit_$n.out + date;/usr/bin/time -v ./benchmarker_cgdrag_forpy ../cgdrag_model run_emulator_davenet $nrun 10 | tee cgdrag_forpy_$n.out;date + date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 --explicit_reshape | tee cgdrag_torch_explicit_$n.out;date + date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 | tee cgdrag_torch_implicit_$n.out;date - ./benchmarker_resnet_forpy ../resnet_model resnet18 $nrun 10 | tee resnet_forpy_$n.out - ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_cpu.pt $nrun 10 | tee resnet_torch_$n.out + date;/usr/bin/time -v ./benchmarker_resnet_forpy ../resnet_model resnet18 $nrun 10 | tee resnet_forpy_$n.out;date + date;/usr/bin/time -v ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_cpu.pt $nrun 10 | tee resnet_torch_$n.out;date - ./benchmarker_large_stride_forpy ../large_stride_model run_emulator_stride $nrun $NDIM | tee ls_forpy_$n.out - ./benchmarker_large_stride_torch ../large_stride_model saved_large_stride_model_cpu.pt $nrun $NDIM | tee ls_torch_$n.out done diff --git a/run_benchmarks_gpu.sh b/run_benchmarks_gpu.sh index 4874d1e..79dbafe 100644 --- a/run_benchmarks_gpu.sh +++ b/run_benchmarks_gpu.sh @@ -1,19 +1,16 @@ #!/usr/bin/env bash -nrun=1000 -NDIM=256 +nrun=10000 -for n in {1,4,8}; +for n in {1,8}; do export OMP_NUM_THREADS=$n - ./benchmarker_cgdrag_forpy ../cgdrag_model run_emulator_davenet $nrun 10 | tee cgdrag_forpy_$n.out - ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_gpu.pt $nrun 10 --alloc_in_loop --explicit_reshape --use_cuda | tee cgdrag_torch_explicit_gpu_$n.out - ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_gpu.pt $nrun 10 --use_cuda | tee cgdrag_torch_implicit_gpu_$n.out + date;/usr/bin/time -v ./benchmarker_cgdrag_forpy ../cgdrag_model run_emulator_davenet $nrun 10 --use_cuda | tee cgdrag_forpy_gpu_$n.out;date + date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_gpu.pt $nrun 10 --explicit_reshape --use_cuda | tee cgdrag_torch_explicit_gpu_$n.out;date + date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_gpu.pt $nrun 10 --use_cuda | tee cgdrag_torch_implicit_gpu_$n.out;date - ./benchmarker_resnet_forpy ../resnet_model resnet18 $nrun 10 | tee resnet_forpy_$n.out - ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_gpu.pt $nrun 10 --use_cuda | tee resnet_torch_gpu_$n.out + date;/usr/bin/time -v ./benchmarker_resnet_forpy ../resnet_model resnet18 $nrun 10 --use_cuda | tee resnet_forpy_gpu_$n.out;date + date;/usr/bin/time -v ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_gpu.pt $nrun 10 --use_cuda | tee resnet_torch_gpu_$n.out;date - ./benchmarker_large_stride_forpy ../large_stride_model run_emulator_stride $nrun $NDIM | tee ls_forpy_$n.out - ./benchmarker_large_stride_torch ../large_stride_model saved_large_stride_model_gpu.pt $nrun $NDIM --use_cuda | tee ls_torch_gpu_$n.out done diff --git a/utils/read_benchmarks.py b/utils/read_benchmarks.py index 7eb8b6c..843c28e 100644 --- a/utils/read_benchmarks.py +++ b/utils/read_benchmarks.py @@ -1,25 +1,26 @@ """Helper functions to read and plot benchmarking data.""" +from typing import Union import numpy as np import matplotlib.pyplot as plt import pandas as pd def read_iteration_data(directory: str, filename: str, labels: list) -> pd.DataFrame: - """Read benchmarking data from each loop iteration + """Read benchmarking data from each loop iteration. Parameters ---------- - directory: str + directory : str Directory of file containing benchmarking data to be read. - filename: str - Path to file containing benchmarking data to be read. - labels: list + filename : str + Name of file containing benchmarking data to be read. + labels : list List of labels in output file to read. List does not need to be complete, but must be given in order of output. Returns ------- - df: pd.DataFrame + df : pd.DataFrame Dataframe of durations, with columns corresponding to each input label. """ df = pd.DataFrame(columns=labels) @@ -63,16 +64,16 @@ def read_summary_data(directory: str, filename: str, labels: list) -> dict: Parameters ---------- - directory: str + directory : str Directory of file containing benchmarking data to be read. - filename: str + filename : str Path to file containing benchmarking data to be read. - labels: list + labels : list List of labels to read summary information for. Returns ------- - results: dict + results : dict Nested dictionary with keys for each label passed, and nested keys for the mean, min, max and stddev for each label. """ @@ -118,13 +119,13 @@ def read_summary_data(directory: str, filename: str, labels: list) -> dict: def plot_df(df: pd.DataFrame, labels: list) -> None: - """Plot scatter plots for each column in input dataframe + """Plot scatter plots for each column in input dataframe. Parameters ---------- - df: pd.DataFrame) + df : pd.DataFrame) Dataframe containing data to be plotted. - labels: list + labels : list List of columns in dataframe to plot. """ # Create separate plots for each label. @@ -138,14 +139,13 @@ def plot_df(df: pd.DataFrame, labels: list) -> None: def plot_summary_means(data: dict, labels: list) -> None: - """Plot a bar chart for each labelled duration comparing the files - specified by keys of the input data. + """Plot bar chart comparing durations for specified files and keys. Parameters ---------- - data: dict + data : dict Dictionary of summary data in the form data[file][label][mean]. - labels: list + labels : list List of summary labels to plot bar charts for. """ alpha = 0.9 @@ -174,13 +174,13 @@ def plot_summary_means(data: dict, labels: list) -> None: def plot_summary_with_stddev(data: dict, labels: list) -> None: - """Plot scatter plot with error bars of summary data from benchmarking output files + """Plot scatter plot with error bars of summary data from benchmarking output files. Parameters ---------- - data: dict + data : dict Dictionary of summary data in the form data[file][label][mean, stddev]. - labels: list + labels : list List of summary labels to plot on the same graph. """ # Loop over each file @@ -224,3 +224,203 @@ def plot_summary_with_stddev(data: dict, labels: list) -> None: fontsize=7.5, ) plt.show() + + +def read_slurm_walltime(filepath: str, labels: list) -> dict: + """Read benchmarking data from each loop iteration. + + Parameters + ---------- + filepath : str + Path to file containing benchmarking data to be read. + labels : list + List of all benchmarks run, matching the run order. + Typically of the form [model]_[forpy/torch]_[cpu/gpu]. + + Returns + ------- + benchmarks : dict + Dictionary of times, with keys corresponding to each input label. + """ + print(f"Reading: {filepath}") + + current_label = "" + i = 0 + benchmarks = {} + + with open(filepath) as f: + lines = f.readlines() + for line in lines: + if "Command being timed" in line: + # Cut from 'Command being timed: "./benchmarker_cgdrag_forpy...' + # to 'cgdrag_forpy' + current_label = line.split()[3][15:] + if "Elapsed (wall clock) time" in line: + if current_label in labels[i]: + benchmarks[labels[i]] = convert_to_seconds(line.split()[7]) + i += 1 + + return benchmarks + + +def convert_to_seconds(time_str: str): + """ + Convert wall time string from /usr/bin/time to time in seconds. + + Parameters + ---------- + time_str : str + Time in the format h:mm:ss or m:ss. + + Returns + ------- + time : float + Time in seconds. + """ + time = time_str.split(":") + if len(time) == 3: + return float(time[0]) * 3600 + float(time[1]) * 60 + float(time[2]) + elif len(time) == 2: + return float(time[0]) * 60 + float(time[1]) + else: + raise ValueError("Time format not supported. Expected format: h:mm:ss or m:ss") + + +def plot_walltimes( + benchmarks: dict, + labels: list, + normalise: bool = False, + title: Union[str, None] = None, + ylabel: Union[str, None] = None, + xlabel: Union[str, None] = None, + alpha: float = 0.9, + bar_width: float = 1.0, + yscale: str = "linear", + ylim: Union[float, tuple] = 0.0, + legend_labels: dict = {}, + xticklabels: Union[list, None] = None, + save_path: Union[str, None] = None, +): + """Plot bar charts comparing walltimes for all labels given. + + Parameters + ---------- + benchmarks : dict + Dictionary of times, with keys corresponding to each input label. + labels : list + List containing subset of benchmark keys to plot. + normalise : bool + Whether to normalise data, so the maximum value is 1. + title : Union[str, None] + Title for plot. + ylabel : Union[str, None] + Y-axis label for plot. + xlabel : Union[str, None] + X-axis label for plot. + alpha : float + Opaqu + bar_width : float + Width(s) of bars. + yscale : str + Y-axis scale type. + ylim : Union[float, tuple] + Y-axis value range. + legend_labels : dict + Dictionary of legend labels for each benchmark. Each key should + be present in an item in `labels`, while values specify the legend + labels plotted. + xticklabels : Union[list, None] + List of x-axis tick labels. + save_path : Union[str, None] + File path to save plot. + """ + if len(benchmarks) == 0: + raise ValueError("No data passed in `benchmarks`.") + + # If legend_labels unspecified, create bar for every label + num_legend_labels = len(legend_labels) + if num_legend_labels == 0: + num_x_groups = len(labels) + # If legend_labels is specified, check legend labels match benchmark labels + # or repeat tje list to match the correct length. + elif len(labels) % num_legend_labels != 0: + raise ValueError( + "The number labels specified in `legend_labels` equal or be a factor" + " of the number of labels specified in `labels`" + ) + # Calculate number of groups of bars, each with own xtick + else: + num_x_groups = len(labels) // num_legend_labels + + # Set up list at each xtick value for each legend key + group_data = {} # type: dict + for key in legend_labels: + group_data[key] = [] + + # Central xtick coordinates + x = np.arange(num_x_groups) + + # Normalise data if requested + benchmarks_copy = benchmarks.copy() + if normalise: + max_time = 0.0 + for benchmark, value in benchmarks_copy.items(): + if benchmark in labels and value > max_time: + max_time = value + for benchmark, value in benchmarks_copy.items(): + benchmarks_copy[benchmark] = value / max_time + + # Use legend_labels dictionary to extract data for each legend entry + if num_legend_labels > 0: + for i, label in enumerate(labels): + for key in legend_labels: + if key in label: + group_data[key].append(benchmarks_copy[label]) + + # Plot data for each legend entry + for i, key in enumerate(legend_labels): + # Bars equal on each side of xtick + if num_legend_labels % 2 == 0: + xticks = np.linspace( + -bar_width / num_legend_labels, + bar_width / num_legend_labels, + num_legend_labels, + ) + # Middle bar centred on xtick + else: + xticks = np.linspace(-bar_width, bar_width, num_legend_labels) + plt.bar( + x + xticks[i], + group_data[key], + alpha=alpha, + width=bar_width, + label=legend_labels[key], + ) + else: + # Plot bar for each label + data = [] + for label in labels: + data.append(benchmarks_copy[label]) + plt.bar( + x, + data, + alpha=alpha, + width=bar_width, + ) + + plt.xticks(ticks=x, labels=xticklabels) + plt.yscale(yscale) + plt.ylim(ylim) + if ylabel is not None: + plt.ylabel(ylabel) + else: + plt.ylabel("Time / s") + if xlabel is not None: + plt.xlabel(xlabel) + if title is not None: + plt.title(title) + if legend_labels is not None: + plt.legend() + if save_path is not None: + plt.savefig(save_path, dpi=300) + plt.show() diff --git a/utils/visualise.ipynb b/utils/visualise.ipynb index e2682fd..4d5b8c1 100644 --- a/utils/visualise.ipynb +++ b/utils/visualise.ipynb @@ -15,12 +15,81 @@ "metadata": {}, "outputs": [], "source": [ - "directory = \"../build/\"\n", - "files = [\n", - " \"cgdrag_forpy_1.out\",\n", - " \"cgdrag_torch_1_explicit.out\",\n", - " \"cgdrag_torch_1_implicit.out\",\n", - "]" + "directory = \"../../results/\"\n", + "\n", + "# Icelake CPU results with NoGradMode set in torch_jit_module_forward\n", + "filepath_nograd_fix_1k = directory + \"icelake_nograd/output_1000_fix/slurm-34050567.out\"\n", + "filepath_nograd_fix_10k = directory + \"icelake_nograd/output_10000_fix/slurm-34051232.out\"\n", + "\n", + "# ampere (A100 GPU) results with NoGradMode set in torch_jit_module_forward\n", + "filepath_nograd_fix_gpu_10k = directory + \"ampere_nograd/output_10000_fix/slurm-34050397.out\"\n", + "filepath_nograd_fix_gpu_100k = directory + \"ampere_nograd/output_100000_fix/slurm-34051212.out\"\n", + "\n", + "# Comparison between gradients enabled, NoGradMode, and NoGradMode with a frozen model, on Sapphire Rapids CPUs\n", + "filepath_options_1k = directory + \"sapphire_options_grad/output_1k/slurm-37212483.out\"\n", + "filepath_options_10k = directory + \"sapphire_options_grad/output_10k/slurm-37224854.out\"\n", + "\n", + "# Comparison between gradient enabled, NoGradMode, and NoGradMode with a frozen model, on ampere (A100 GPU)\n", + "filepath_options_gpu_10k = directory + \"ampere_options_grad/output_10k/slurm-37429435.out\"\n", + "filepath_options_gpu_100k = directory + \"ampere_options_grad/output_100k/slurm-37431441.out\"\n", + "\n", + "# Comparison between InferenceMode and NoGradMode (both with a frozen model) on Sapphire Rapids CPUs\n", + "filepath_infer_1k = directory + \"sapphire_infer/output_1k/slurm-37447583.out\"\n", + "filepath_infer_10k = directory + \"sapphire_infer/output_10k/slurm-37449094.out\"\n", + "\n", + "# Comparison between InferenceMode and NoGradMode (both with a frozen model) on ampere (A100 GPU)\n", + "filepath_infer_gpu_10k = directory + \"ampere_infer/output_10k/slurm-37521108.out\"\n", + "filepath_infer_gpu_100k = directory + \"ampere_infer/output_100k/slurm-37521956.out\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FTorch and Forpy on Sapphire Rapids CPUs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Output files here use a significantly modified version of run_benchmarks.sh to allow comparisons between not only Forpy and FTorch, but also switching off gradients and freezing the model, e.g.:\n", + "\n", + "```bash\n", + "nrun=1000\n", + "\n", + "# Run with gradients on\n", + "for n in {1,4,8};\n", + "do\n", + " export OMP_NUM_THREADS=$n\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_forpy ../cgdrag_model run_emulator_davenet $nrun 10 | tee cgdrag_forpy_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 --explicit_reshape | tee cgdrag_torch_explicit_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 | tee cgdrag_torch_implicit_$n.out;date\n", + "\n", + " date;/usr/bin/time -v ./benchmarker_resnet_forpy ../resnet_model resnet18 $nrun 10 | tee resnet_forpy_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_cpu.pt $nrun 10 | tee resnet_torch_$n.out;date\n", + "done\n", + "\n", + "cd ../build_sapphire_options_nograd\n", + "\n", + "# Run with gradients off\n", + "for n in {1,4,8};\n", + "do\n", + " export OMP_NUM_THREADS=$n\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 --explicit_reshape | tee cgdrag_torch_explicit_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 | tee cgdrag_torch_implicit_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_cpu.pt $nrun 10 | tee resnet_torch_$n.out;date\n", + "done\n", + "\n", + "# Run with gradients off and use frozen models\n", + "for n in {1,4,8};\n", + "do\n", + " export OMP_NUM_THREADS=$n\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_freeze_cpu.pt $nrun 10 --explicit_reshape | tee cgdrag_torch_explicit_freeze_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_freeze_cpu.pt $nrun 10 | tee cgdrag_torch_implicit_freeze_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_freeze_cpu.pt $nrun 10 | tee resnet_torch_freeze_$n.out;date\n", + "done\n", + "```" ] }, { @@ -29,15 +98,40 @@ "metadata": {}, "outputs": [], "source": [ - "# Labels can be skipped, but those present must be in order of output \"check iteration [label]\"\n", - "iteration_labels = [\n", - " \"inference\",\n", - " \"create tensors\",\n", - " \"delete tensors\",\n", - " \"allocate arrays\",\n", - " \"deallocate arrays\",\n", - " \"full loop\",\n", - "]" + "# Create labels matching the order of tests in run_benchmarks.sh\n", + "\n", + "cpu_options_labels = []\n", + "\n", + "cpu_tests_grad = [\n", + " \"cgdrag_forpy\",\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_forpy\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "cpu_tests_nograd = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "cpu_tests_nograd_freeze = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "cpu_n_threads = [\"1\", \"4\", \"8\"]\n", + "\n", + "for threads in cpu_n_threads:\n", + " for test in cpu_tests_grad:\n", + " cpu_options_labels.append(f\"{test}_{threads}_grad\")\n", + "for threads in cpu_n_threads:\n", + " for test in cpu_tests_nograd:\n", + " cpu_options_labels.append(f\"{test}_{threads}_nograd\")\n", + "for threads in cpu_n_threads:\n", + " for test in cpu_tests_nograd_freeze:\n", + " cpu_options_labels.append(f\"{test}_{threads}_freeze\")" ] }, { @@ -49,20 +143,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "Reading: ../build/cgdrag_forpy_1.out\n", - "Number of runs: 500\n", - "Reading: ../build/cgdrag_torch_1_explicit.out\n", - "Number of runs: 500\n", - "Reading: ../build/cgdrag_torch_1_implicit.out\n", - "Number of runs: 500\n" + "Reading: ../../results/sapphire_options_grad/output_1k/slurm-37212483.out\n", + "Reading: ../../results/sapphire_options_grad/output_10k/slurm-37224854.out\n" ] } ], "source": [ - "dataframes = {}\n", + "benchmarks_options_1k = rb.read_slurm_walltime(filepath_options_1k, cpu_options_labels)\n", + "benchmarks_options_10k = rb.read_slurm_walltime(filepath_options_10k, cpu_options_labels)\n", + "\n", + "\n", + "# Scale by number of iterations\n", + "for key, value in benchmarks_options_1k.items():\n", + " benchmarks_options_1k[key] = value / 1000\n", "\n", - "for file in files:\n", - " dataframes[file] = rb.read_iteration_data(directory, file, iteration_labels)" + "for key, value in benchmarks_options_10k.items():\n", + " benchmarks_options_10k[key] = value / 10000" ] }, { @@ -72,175 +168,37 @@ "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
inferencecreate tensorsdelete tensorsallocate arraysdeallocate arraysfull loop
00.37350.00.00.00020.00020.3766
10.35010.00.00.00000.00000.3521
20.34420.00.00.00000.00000.3463
30.35400.00.00.00000.00000.3560
40.34020.00.00.00000.00000.3424
.....................
4950.48600.00.00.00000.00000.4881
4960.46180.00.00.00000.00000.4654
4970.45900.00.00.00000.00000.4613
4980.44570.00.00.00000.00000.4479
4990.42610.00.00.00000.00000.4282
\n", - "

500 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " inference create tensors delete tensors allocate arrays \\\n", - "0 0.3735 0.0 0.0 0.0002 \n", - "1 0.3501 0.0 0.0 0.0000 \n", - "2 0.3442 0.0 0.0 0.0000 \n", - "3 0.3540 0.0 0.0 0.0000 \n", - "4 0.3402 0.0 0.0 0.0000 \n", - ".. ... ... ... ... \n", - "495 0.4860 0.0 0.0 0.0000 \n", - "496 0.4618 0.0 0.0 0.0000 \n", - "497 0.4590 0.0 0.0 0.0000 \n", - "498 0.4457 0.0 0.0 0.0000 \n", - "499 0.4261 0.0 0.0 0.0000 \n", - "\n", - " deallocate arrays full loop \n", - "0 0.0002 0.3766 \n", - "1 0.0000 0.3521 \n", - "2 0.0000 0.3463 \n", - "3 0.0000 0.3560 \n", - "4 0.0000 0.3424 \n", - ".. ... ... \n", - "495 0.0000 0.4881 \n", - "496 0.0000 0.4654 \n", - "497 0.0000 0.4613 \n", - "498 0.0000 0.4479 \n", - "499 0.0000 0.4282 \n", - "\n", - "[500 rows x 6 columns]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataframes['cgdrag_forpy_1.out']" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGOklEQVR4nO3deXwO5/7/8fedkF2CiEQIsbX2xFJOlNpiSdVSpahTEcWvtZSqFtUGRbWqjmos1SrqVG1tVR0nSg49LVp71U5LrRFrUltCMr8/+nUfd5OQO+7bjXk9H4/7cXJfc801n7lz9+Rt5poZi2EYhgAAAEzEzdUFAAAA3G0EIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIAAAYDoEIMAFwsPD1aNHD1eXkaO+ffuqefPmri7DtNauXSuLxaK1a9e6upQ8mzNnjiwWiw4fPuzSOmbMmKHSpUsrPT3dpXXg/kAAAmB16NAhffzxx3rttdeyLUtLS9Po0aMVEREhPz8/eXt7q1q1aho6dKhOnDhh7dejRw9ZLBbry9/fXxEREXrvvfds/jD16NFDfn5+udbi5+eX75C4b98+vfTSS6pfv768vLxu+8d52bJlqlWrlry8vFS6dGmNHDlS169fz9bvwoUL6tOnj4KCguTr66smTZpo69atdzRmXsyfP1+TJ0/O17qO9NZbb2np0qWuLiNXPXr0UEZGhj788ENXl4L7gQHgritTpowRGxvr6jKyGThwoPHQQw9la//111+NsmXLGu7u7kaXLl2MhIQEY+bMmUb//v2NwMBAo2LFita+sbGxhqenpzFv3jxj3rx5xgcffGA0btzYkGR07tzZpp+vr2+utfj6+ub7M5o9e7bh5uZmVKtWzYiMjDQkGYcOHcqx74oVKwyLxWI0adLEmDlzpjFgwADDzc3NeP755236ZWZmGvXr1zd8fX2NUaNGGQkJCUaVKlWMQoUKGfv378/XmDnJzMw0rly5YmRmZlrbWrdubZQpU8buz8HRcvudXL9+3bhy5YqRlZV194v6i1dffdUoU6bMPVEL7m0EIMAF8hKALl68eHeK+T8ZGRlGsWLFjNdff92m/dq1a0ZERITh4+NjfP/999nWS01NNV577TXr+5yCTWZmplGnTh1DknH8+PFc+93sTgLQ2bNnjbS0NMMwDOPdd9+9ZQCqUqWKERERYVy7ds3aNmLECMNisRh79uyxti1cuNCQZCxevNjalpKSYhQuXNjo2rVrvsbMK2cEoBtByx538ju5WzZv3mxIMpKSklxdCu5xnAID/uL48eN67rnnFBoaKk9PT5UtW1YvvPCCMjIyrH127NihRo0aydvbW6VKldLYsWM1e/bsbKdaDMPQ2LFjVapUKfn4+KhJkybatWtXtm3emEPx3XffqW/fvipevLhKlSolSfr999/Vt29fPfzww/L29lZgYKA6deqU4ymdvNaVkx9++EFnzpxRdHS0TfsXX3yhn3/+WSNGjFCDBg2yrefv769x48bdcmw3Nzc1btxYku7KPJGiRYuqUKFCt+23e/du7d69W3369FGBAgWs7X379pVhGFqyZIm1bcmSJQoODlaHDh2sbUFBQXr66af19ddfW0/v2TNmTv46B6hx48b617/+pd9//916WjE8PNzaPz09XSNHjlSFChXk6empsLAwvfrqq9nmwVgsFvXv31+fffaZqlatKk9PTyUmJkqSJk6cqPr16yswMFDe3t6qXbt2tjotFosuXbqkuXPnWuu4cYoytzlA06ZNs24rNDRU/fr104ULF2z6NG7cWNWqVdPu3bvVpEkT+fj4qGTJkpowYUK2z+aDDz5Q1apV5ePjoyJFiqhOnTqaP3++TZ/atWuraNGi+vrrr2/5OQMFbt8FMI8TJ06obt261rkelSpV0vHjx7VkyRJdvnxZHh4eOn78uJo0aSKLxaLhw4fL19dXH3/8sTw9PbONFx8fr7Fjx+rxxx/X448/rq1bt6pFixY2Yepmffv2VVBQkOLj43Xp0iVJ0qZNm7R+/Xp16dJFpUqV0uHDhzV9+nQ1btxYu3fvlo+PjyTZVVdO1q9fL4vFopo1a9q0L1u2TJL07LPP5vlzzMmvv/4qSQoMDLyjcRxp27ZtkqQ6derYtIeGhqpUqVLW5Tf61qpVS25utv9urFu3rmbOnKn9+/erevXqdo2ZFyNGjFBqaqqOHTumf/zjH5JknTuVlZWltm3b6ocfflCfPn1UuXJl/fLLL/rHP/6h/fv3Z5uv85///EeLFi1S//79VaxYMWuQev/999W2bVt169ZNGRkZWrBggTp16qTly5erdevWkqR58+apV69eqlu3rvr06SNJKl++fK51jxo1SqNHj1Z0dLRe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AK61fPly+fn5Wd/HxMTooYceUlhYmBISEmSxWFSpUiWdOHFCQ4cOVXx8vNzc/jxuUrFiRU2YMCHbmJ06dVKvXr0kSWPGjNGqVav0wQcfaNq0aerQoYP69++vr7/+Wk8//bQkac6cOerRo4dLbiXAESAAAEyoSZMm2r59u/U1ZcoU7dmzR1FRUTaB5NFHH9XFixd17Ngxa1vt2rVzHDMqKirb+xtHgLy8vPTss8/qk08+kSRt3bpVO3fuVI8ePRy8Z3nDESAAAEzI19c331d8+fr65mu9Xr16KTIyUseOHdPs2bPVtGlTlSlTJl9j3SmOAAEAAElS5cqVtWHDBhmGYW1bt26dChUqpFKlSt12/R9//DHb+8qVK1vfV69eXXXq1NFHH32k+fPnq2fPno4r3k4EIAAAIEnq27evjh49qgEDBmjv3r36+uuvNXLkSA0ePNg6/+dWFi9erE8++UT79+/XyJEjtXHjxmxXfvXq1Utvv/22DMPQk08+6axduS0CEAAAkCSVLFlSK1as0MaNGxUREaHnn39ezz33nF5//fU8rT969GgtWLBANWrU0KeffqrPP/9cVapUsenTtWtXFShQQF27dpWXl5czdiNPmAMEAIAD3Q9Xxs6ZMyfXZY0aNdLGjRtzXb527dpcl4WGhurbb7+95bbPnDmjq1ev6rnnnrtdmU5FAAIAAE537do1nT17Vq+//rr+9re/qVatWi6th1NgAADA6datW6cSJUpo06ZNNjdPdBWOAAEAgDt285VjOWncuPFt+9xNHAECAACmQwACAACmQwACAACmQwACAACmQwACAACmQwACAACmQwACAAAusXbtWlksFl24cOGub5v7AAEA4EgTH7672xuyz+5VevTooblz59q93po1a9S4cWO717sXEYAAADChVq1aafbs2db3GRkZcnd3l7u7uyRp4MCBSktLs+lTtGjRPI+fmZkpi8WSp6fIu8K9WRUAAHAqT09PhYSEWF+lS5dWyZIlre+9vb1t+nh6eqpXr14qUqSIfHx8FBMTowMHDljHmzNnjgoXLqxly5apSpUq8vT01JEjR5Senq6hQ4cqLCxMnp6eqlChgmbNmmVTy5YtW1SnTh35+Piofv362rfP/qNa9iIAAQCA2+rRo4c2b96sZcuWacOGDTIMQ48//riuXbtm7XP58mW98847+vjjj7Vr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_forpy_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_forpy_4_grad',\n", + " 'cgdrag_torch_implicit_4_nograd',\n", + " 'cgdrag_forpy_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_1k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU, 1000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" ] }, { @@ -250,57 +208,87 @@ "outputs": [ { "data": { - "image/png": "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F/G3bdu26atf/apuvPFG3XfffTrhhBO0bNkyjR07Vq2trSooKDC1nMccc0zEvwOBgILBoKnLAGAOwg0A2+Tl5amtrS3ivXPOOUfPPPOMKioq1KlT8oekVatWKRgM6uc//7lyco40Qv/hD3/ocHnRPv/5z2vHjh3asWNHqPXmrbfe0r59+1RZWZl0eQC4B91SAGxTUVGhFStWaNu2bWpqalIwGNSECRO0d+9ejRw5Uq+//rreffdd/e1vf1NtbW3CYHLaaafpk08+0cMPP6wtW7bo6aefDg00Dl/egQMHVF9fr6amppjdVTU1NerXr5+uv/56rV69WitXrtTo0aN14YUX6txzzzW9DgBYj3ADwDa33367cnNzVVlZqZKSEm3fvl09e/bUa6+9pra2Nl166aXq16+fbrnlFhUXF4daZGIZMGCAZs6cqQceeEB9+/bV//zP/6iuri5imvPOO0/jx4/XiBEjVFJSctSAZOlI99Jf/vIXHX/88frSl76kmpoanXrqqZo/f77p6w/AHgHDMAynCwEAAGAWWm4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICvEG4AAICv/D/Ft4nlWSyBHgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAHHCAYAAABnS/bqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABA5UlEQVR4nO3de3xU5b3v8W8uzIRbMmEDmQABgnJRQEDY5ES5aJlNULaS2haMHEQ2bbTGYy31Arub264KBtvTQkGx++zS9lhAbJW9uUkaFA4QAgaQS2ikCoUNJBRiEhBIIPM7f7hZdSAgoVkZEj7v12tewzzPb631rCej6/tas2ZNhJmZAAAAUOciwz0AAACAxoqgBQAA4BKCFgAAgEsIWgAAAC4haAEAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWgJva5s2bNWPGDJWVlTWI9QJoWAhaAG5qmzdv1syZM10JWm6sF0DDQtAC0CB8/vnn4R7CTYu5B64fQQtAvTty5IgmTpyodu3ayev1Kjk5Wd/97ndVVVUlSVq0aJEiIiK0fv16Pfnkk2rbtq06dOjgLL969WoNHjxYzZs3V8uWLTVy5Ejt3bs3ZBu7du3SY489pi5duigmJkZ+v1//9E//pJMnTzo1M2bM0HPPPSdJSk5OVkREhCIiInTw4EGn5v/+3/+r/v37q2nTpmrVqpUefvhhHT58+Kr7V1frveeee9SrVy8VFhbq3nvvVbNmzdS+fXtlZ2dfts158+apZ8+eatasmeLj4zVgwAD99re/DanZsWOH7rvvPsXGxqpFixYaNmyYtmzZElJztbk/deqUnnnmGXXu3Fler1dt27bVP/zDP2j79u1XnQ/gZhYd7gEAuLkcPXpUAwcOVFlZmTIzM9WjRw8dOXJEb7/9ts6cOSOPx+PUPvnkk2rTpo2mTZvmnFX5zW9+o/HjxystLU2vvPKKzpw5o9dee02DBg3Sjh071LlzZ0lSTk6OPv30U02YMEF+v1979+7VG2+8ob1792rLli2KiIjQQw89pI8//liLFy/W//7f/1utW7eWJLVp00aS9NJLL2nq1KkaPXq0vv3tb+svf/mL5s2bpyFDhmjHjh3y+Xw17mNdrvezzz7TiBEj9NBDD2n06NF6++239cILL6h379667777JEm/+MUv9PTTT+ub3/ymvve97+ncuXPatWuX8vPz9cgjj0iS9u7dq8GDBys2NlbPP/+8mjRpooULF+qee+7R+vXrlZKSErIPNc39E088obfffltPPfWUbr/9dp08eVIbN27Uvn37dOedd17vWwJo3AwA6tGjjz5qkZGRtm3btsv6gsGgmZn98pe/NEk2aNAgu3DhgtN/6tQp8/l89p3vfCdkueLiYouLiwtpP3PmzGXrX7x4sUmyDRs2OG1z5swxSXbgwIGQ2oMHD1pUVJS99NJLIe27d++26Ojoy9ovVRfrHTp0qEmyX//6105bZWWl+f1++8Y3vuG0jRo1ynr27HnV8aSnp5vH47FPPvnEaTt69Ki1bNnShgwZ4rRdae7NzOLi4iwrK+uq2wEQio8OAdSbYDCod999Vw888IAGDBhwWX9ERETI6+985zuKiopyXufk5KisrEwZGRk6ceKE84iKilJKSoref/99p7Zp06bOv8+dO6cTJ07of/yP/yFJ1/RR1+9//3sFg0GNHj06ZFt+v19du3YN2VZt1Ha9LVq00P/8n//Tee3xeDRw4EB9+umnTpvP59N//dd/adu2bTVus7q6WmvXrlV6erq6dOnitCcmJuqRRx7Rxo0bVVFREbLMpXN/cTv5+fk6evTode07cDPio0MA9eYvf/mLKioq1KtXr2uqT05ODnm9f/9+SdLXvva1GutjY2Odf5eWlmrmzJlasmSJjh8/HlJXXl7+ldvev3+/zExdu3atsb9JkyZfuY66WG+HDh0uC6Dx8fHatWuX8/qFF17QH/7wBw0cOFC33nqrhg8frkceeUR33323pC/m/cyZM+revftl27vtttsUDAZ1+PBh9ezZ02m/dO4lKTs7W+PHj1dSUpL69++v+++/X48++mhIeAMQiqAF4Ib15bNS0hdnxKQvrtPy+/2X1UdH//V/aaNHj9bmzZv13HPPqW/fvmrRooWCwaBGjBjhrOdqgsGgIiIitHr16svO7EhfnGm6HrVdb001kmRmzr9vu+02FRUVacWKFVqzZo1+97vfacGCBZo2bZpmzpx5XeO8dO6lL+Z08ODBeuedd7R27VrNmTNHr7zyin7/+98714sBCEXQAlBv2rRpo9jYWO3Zs+e6lr/lllskSW3btlUgELhi3Weffabc3FzNnDlT06ZNc9ovnhH7skvPFn15W2am5ORkdevWrdZjdWu9V9K8eXONGTNGY8aMUVVVlR566CG99NJLmjJlitq0aaNmzZqpqKjosuX++Mc/KjIyUklJSde0ncTERD355JN68skndfz4cd1555166aWXCFrAFXCNFoB6ExkZqfT0dP3nf/6nPvzww8v6v3yWpiZpaWmKjY3Vyy+/rPPnz1/W/5e//EXSX88CXbq+n/70p5ct07x5c0m67MaiDz30kKKiojRz5szL1mNmIbeJqIlb663Jpct4PB7dfvvtMjOdP39eUVFRGj58uJYvXx5yi4mSkhL99re/1aBBg0I+dq1JdXX1ZR+5tm3bVu3atVNlZWWtxwzcLDijBaBevfzyy1q7dq2GDh2qzMxM3XbbbTp27JiWLVumjRs3XvGWCdIX12C99tprGjdunO688049/PDDatOmjQ4dOqSVK1fq7rvv1s9//nPFxsZqyJAhys7O1vnz59W+fXutXbtWBw4cuGyd/fv3lyT98Ic/1MMPP6wmTZrogQce0C233KIXX3xRU6ZM0cGDB5Wenq6WLVvqwIEDeuedd5SZmalnn332imN1a701GT58uPx+v+6++24lJCRo3759+vnPf66RI0eqZcuWkqQXX3xROTk5GjRokJ588klFR0dr4cKFqqysrPG+XJc6deqUOnTooG9+85vq06ePWrRooT/84Q/atm2bfvzjH9dqvMBNJTxfdgRwM/vzn/9sjz76qLVp08a8Xq916dLFsrKyrLKy0sz+eouBmm4BYWb2/vvvW1pamsXFxVlMTIzdcsst9thjj9mHH37o1PzXf/2Xff3rXzefz2dxcXH2rW99y44ePWqSbPr06SHr+9GPfmTt27e3yMjIy27J8Lvf/c4GDRpkzZs3t+bNm1uPHj0sKyvLioqKvnI//9b1Dh06tMbbNowfP946derkvF64cKENGTLE/u7v/s68Xq/dcsst9txzz1l5eXnIctu3b7e0tDRr0aKFNWvWzO69917bvHlzSM2V5r6ystKee+4569Onj7Vs2dKaN29uffr0sQULFnzlPAA3swizrzhXDwAAgOvCNVoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALiFoAQAAuIQbloZRMBjU0aNH1bJlyyv+XAcAALixmJlOnTqldu3aKTLy6uesCFphdPTo0Wv+fTEAAHBjOXz4sDp06HDVGoJWGF38aYzDhw9/5e+M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qTl06JC1bNnSnnrqKSsqKrIVK1ZY27Zt7cUXX7zm/edbhwAANDy1OX6HNWiZmc2bN886duxoHo/HBg4caFu2bHH6hg4dauPHjw+pf+utt6xbt27m8XisZ8+etnLlypD+YDBoU6dOtYSEBPN6vTZs2DArKioKqTl58qRlZGRYixYtLDY21iZMmGCnTp0Kqfnoo49s0KBB5vV6rX379jZ79uzLxr5582ZLSUkxr9drXbp0sZdeeskuXLhwzftO0AIAoOGpzfE7wswsvOfUbl4VFRWKi4tTeXm5YmNjwz0cAABwDWpz/OZbhwAAAC6pddBas2aNNm7c6LyeP3+++vbtq0ceecS5mScAAACuI2g999xzzh3Nd+/erR/84Ae6//77deDAAU2aNKnOBwgAANBQ1fo+WgcOHNDtt98uSfrd736nf/zHf9TLL7+s7du36/7776/zAQIAADRUtT6j5fF4dObMGUnSH/7wBw0fPlyS1KpVK367DwAA4EtqfUZr0KBBmjRpku6++25t3bpVS5culfTFzTo7dOhQ5wMEAABoqGp9RuvnP/+5oqOj9fbbb+u1115T+/btJUmrV6/WiBEj6nyAAAAADRX30Qoj7qMFAEDDw320AAAAbgAELQAAAJcQtAAAAFxC0AIAAHDJNQetjh076qmnntLatWt14cIFN8cEAADQKFxz0PrNb34jr9errKwstW7dWmPGjNGbb76psrIyF4cHAADQcF3X7R327t2r//iP/9Dy5cu1c+dO3XXXXXrwwQf14IMPqkuXLm6Ms1Hi9g4AADQ8rt/eoWfPnpoyZYq2bNmigwcPKiMjQ7m5uerVq5d69eqllStXXtfAAQAAGpM6vWHpmTNn9N5776lly5YKBAJ1tdpGizNaAAA0PLU5ftf6tw6vplmzZvr6179el6sEAABosLi9AwAAgEsIWgAAAC4haAEAALjkuoPWn/70J7333ns6e/asJKkOr6kHAABoFGodtE6ePKlAIKBu3brp/vvv17FjxyRJEydO1A9+8IM6HyAAAEBDVeug9f3vf1/R0dE6dOiQmjVr5rSPGTNGa9asqdPBAQAANGS1vr3D2rVr9d5776lDhw4h7V27dtWf//znOhsYAABAQ1frM1qff/55yJmsi0pLS+X1eutkUAAAAI1BrYPW4MGD9etf/9p5HRERoWAwqOzsbN177711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V7377rvq1auXU/P888/r888/V2ZmpsrKyjRo0CCtWbNGMTExTs2bb76pp556SsOGDVNkZKS+8Y1vaO7cuU5/XFyc1q5dq6ysLPXv31+tW7fWtGnTQu61BQAAcDURZvyIYbhUVFQoLi5O5eXlfIwIAEADUZvjN986BAAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcckMErfnz56tz586KiYlRSkqKtm7detX6ZcuWqUePHoqJiVHv3r21atWqkH4z07Rp05SYmKimTZsqEAho//79ITWlpaUaO3asYmNj5fP5NHHiRJ0+fTqkZteuXRo8eLBiYmKUlJSk7OzskP5f/OIXGjx4sOLj4xUfH69AIPCVYwcAADePsAetpUuXatKkSZo+fbq2b9+uPn36KC0tTcePH6+xfvPmzcrIyNDEiRO1Y8cOpaenKz09XXv27HFqsrOzNXfuXL3++uvKz89X8+bNlZaWpnPnzjk1Y8eO1d69e5WTk6MVK1Zow4YNyszMdPorKio0fPhwderUSQUFBZozZ45mzJihN954w6n54IMPlJGRoffff195eXlKSkrS8OHDdeTIERdmCgAANDgWZgMHDrSsrCzndXV1tbVr185mzZpVY/3o0aNt5MiRIW0pKSn2+OOPm5lZMBg0v99vc+bMcfrLysrM6/Xa4sWLzcyssLDQJNm2bducmtWrV1tERIQdOXLEzMwWLFhg8fHxVllZ6dS88MIL1r179yvuy4ULF6xly5b2q1/96pr2vby83CRZ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hnsojRrzXH+Y6/rBPNcf5rr+hHOuuRgeAADAJZzRAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0GqE5s+fr86dOysmJkYpKSnaunVruIfU4GzYsEEPPPCA2rVrp4iICL377rsh/WamadOmKTExUU2bNlUgEND+/ftDakpLSzV27FjFxsbK5/Np4sSJOn36dD3uxY1v1qxZ+vu//3u1bNlSbdu2VXp6uoqKikJqzp07p6ysLP3d3/2dWrRooW984xsqKSkJqTl06JBGjhypZs2aqW3btnruued04cKF+tyVG9prr72mO+64w7lZY2pqqlavXu30M8fumT17tiIiIvTMM884bcz3327GjBmKiIgIefTo0cPpv5HmmKDVyCxdulSTJk3S9OnTtX37dvXp00dpaWk6fvx4uIfWoHz++efq06eP5s+fX2N/dna25s6dq9dff135+flq3ry50tLSdO7cOadm7Nix2rt3r3JycrRixQpt2LBBmZmZ9bULDcL69euVlZWlLVu2KCcnR+fPn9fw4cP1+eefOzXf//739Z//+Z9atmyZ1q9fr6NHj+qhhx5y+qurqzVy5EhVVVVp8+bN+tWvfqVFixZp2rRp4dilG1KHDh00e/ZsFRQU6MMPP9TXvvY1jRo1Snv37pXEHLtl27ZtWrhwoe64446Qdua7bvTs2VPHjh1zHhs3bnT6bqg5NjQqAwcOtKysLOd1dXW1tWvXzmbNmhXGUTVskuydd95xXgeDQfP7/TZnzhynrayszLxery1evNjMzAoLC02Sbdu2zalZvXq1RURE2JEjR+pt7A3N8ePHTZKtX7/ezL6Y1yZNmtiyZcucmn379pkky8vLMzOzVatWWWRkpBUXFzs1r732msXGxlplZWX97kADEh8fb//2b//GHLvk1KlT1rVrV8vJybGhQ4fa9773PTPjPV1Xpk+fbn369Kmx70abY85oNSJVVVUqKChQIBBw2iIjIxUIBJSXlxfGkTUuBw4cUHFxccg8x8XFKSUlxZnnvLw8+Xw+DRgwwKkJBAKKjIxUfn5+vY+5oSgvL5cktWrVSpJUUFCg8+fPh8x1jx491LFjx5C57t27txISEpyatLQ0VVRUOGds8FfV1dVasmSJPv/8c6WmpjLHLsnKytLIkSND5lXiPV2X9u/fr3bt2qlLly4aO3asDh06JOnGm2N+VLoR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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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qZOkj+e4S5cuzjo1NTUqLS1t0Fi+8IUv6Atf+IKeffZZ/eY3v1FWVpaWLFmib33rW416PMDNgHu0AFxXERERSk9P15tvvqlDhw457fv379fatWuDah9++GFFRERo5syZQVdvpI+v5pw4ceKy+xk1apTq6ur0k5/85JK+2traoEcatGjR4pJHHFzcRmFh4SXjkj5+PENtbe1l9+/mdj/tzJkzOnfuXFBb165d1apVK50/f16S5Pf75fF4NHfu3KC5/I//+A9VVVVpxIgRV93PyZMnL/k99OvXT5Kc/QAIxhUtANfdzJkztWbNGg0ePFjf+973VFtbq3nz5qlXr17atWuXU9e1a1c988wzmjp1qg4ePKiMjAy1atVKpaWleuONNzRhwgQ9+eST9e5jyJAhmjhxonJzc7Vz504NGzZMzZo104EDB7Rs2TL94he/0D/+4z9KklJSUvTiiy/qmWee0e2336527drpS1/6kn74wx/q97//vR544AE9+uijSklJ0UcffaTdu3fr9ddf18GDB9WmTZvLHqdb2/20999/X0OHDtWoUaN0xx13KDIyUm+88YbKy8v1yCOPSPr4SuLUqVM1c+ZMDR8+XA899JBKSkq0YMEC3XXXXfrnf/7nq+7nlVde0YIFC/TVr35VXbt21alTp/TLX/5SMTExuv/++695vMAtJYSfeARwC9uwYYOlpKSYx+OxLl262MKFCy0nJ8fq+9/Sb3/7Wxs0aJC1aNHCWrRoYT179rTs7GwrKSlxaj79eIeLXn75ZUtJSbHo6Ghr1aqV9enTx5566in78MMPnZqysjIbMWKEtWrVyiQFPZLh1KlTNnXqVLv99tvN4/FYmzZt7O6777Y5c+ZYTU3NFY/x793uxcc71PfYBkmWk5NjZmbHjx+37Oxs69mzp7Vo0cJiY2MtNTXVXnvttUvWe+GFF6xnz57WrFkzi4+Pt+9+97t28uTJoJohQ4ZYr169Lll3+/btlpmZaR07djSv12vt2rWzBx54wN59990rzgNwKwsz+9R1YAAAADQK7tECAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCU8sDSEAoGAPvzwQ7Vq1eqyX9UBAABuLGamU6dOqX379goPv/I1K4JWCH344YdKSkoK9TAAAMBncPjwYd12221XrCFohVCrVq0kffyLiomJCfFoAADAtaiurlZSUpJzHr8SglYIXXy7MCYmhqAFAEATcy23/XAzPAAAgEsIWgAAAC4haAEAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALgl50Jo/f746d+6sqKgopaamauvWrVesX7ZsmXr27KmoqCj16dNHq1atCuo3M02fPl2JiYmKjo6W3+/XgQMHgmoqKiqUlZWlmJgY+Xw+jR8/XqdPn3b6z507p0cffVR9+vRRZGSkMjIy6h3L+vXr9fnPf15er1e33367Fi1a9JnmAAAA3JxCGrSWLl2qyZMnKycnR9u3b1ffvn2Vnp6uY8eO1Vv/zjvvKDMzU+PHj9eOHTuUkZGhjIwM7dmzx6nJy8vT3LlztXDhQhUVFalFixZKT0/XuXPnnJqsrCzt3btX+fn5WrFihTZu3KgJEyY4/XV1dYqOjtbjjz8uv99f71hKS0s1YsQIffGLX9TOnTs1adIkfetb39LatWsbaXYAAECTZyE0cOBAy87Odl7X1dVZ+/btLTc3t976UaNG2YgRI4LaUlNTbeLEiWZmFggELCEhwWbPnu30V1ZWmtfrtcWLF5uZ2b59+0ySbdu2zalZvXq1hYWF2ZEjRy7Z59ixY23kyJGXtD/11FPWq1evoLbRo0dbenr6VY76/1RVVZkkq6qquuZ1AABAaDXk/B2yK1o1NTUqLi4OumIUHh4uv9+vwsLCetcpLCy85ApTenq6U19aWqqysrKgmtjYWKWmpjo1hYWF8vl8GjBggFPj9/sVHh6uoqKiax7/1cZSn/Pnz6u6ujpoAa6HvR9WqfOUldr7YVWohwIAt5SQBa3jx4+rrq5O8fHxQe3x8fEqKyurd52ysrIr1l/8ebWadu3aBfVHRkaqdevWl91vQ8ZSXV2ts2fP1rtObm6uYmNjnSUpKema9wf8PUbM3RT0EwBwfYT8ZvhbydSpU1VVVeUshw8fDvWQcItY+figoJ8AgOsjMlQ7btOmjSIiIlReXh7UXl5eroSEhHrXSUhIuGL9xZ/l5eVKTEwMqunXr59T8+mb7Wtra1VRUXHZ/TZkLDExMYqOjq53Ha/XK6/Xe837ABpLr/axOjhrRKiHAQC3nJBd0fJ4PEpJSVFBQYHTFggEVFBQoLS0tHrXSUtLC6qXpPz8fKc+OTlZCQkJQTXV1dUqKipyatLS0lRZWani4mKnZt26dQoEAkpNTb3m8V9tLAAAACH91OGSJUvM6/XaokWLbN++fTZhwgTz+XxWVlZmZmZjxoyxKVOmOPWbN2+2yMhImzNnju3fv99ycnKsWbNmtnv3bqdm1qxZ5vP5bPny5bZr1y4bOXKkJScn29mzZ52a4cOHW//+/a2oqMg2bdpk3bp1s8zMzKCx7d2713bs2GEPPvig3XfffbZjxw7bsWOH0//BBx9Y8+bN7Yc//KHt37/f5s+fbxEREbZmzZprPn4+dQgAQNPTkPN3SIOWmdm8efOsY8eO5vF4bODAgbZlyxanb8iQITZ27Nig+tdee826d+9uHo/HevXqZStXrgzqDwQCNm3aNIuPjzev12tDhw61kpKSoJoTJ05YZmamtWzZ0mJiYmzcuHF26tSpoJpOnTqZpEuWT3r77betX79+5vF4rEuXLvaf//mfDTp2ghYAAE1PQ87fYWZmIbucdourrq5WbGysqqqqFBMTE+rhAACAa9CQ8zefOgQAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXELQAgAAcAlBCwAAwCUELQAAAJcQtAAAAFxC0AIAAHAJQQsAAMAlBC0AAACXELQAAABcQtACAABwCUELAADAJQQtAAAAlxC0AAAAXBLyoDV//nx17txZUVFRSk1N1datW69Yv2zZMvXs2VNRUVHq06ePVq1aFdRvZpo+fboSExMVHR0tv9+vAwcOBNVUVFQoKytLMTEx8vl8Gj9+vE6fPh1Us2vXLg0ePFhRUVFKSkpSXl7eJWN5/vnn1aNHD0VHRyspKUk/+MEPdO7cuc84EwAA4KZjIbRkyRLzeDz2q1/9yvbu3Wvf/va3zefzWXl5eb31mzdvtoiICMvLy7N9+/bZv/7rv1qzZs1s9+7dTs2sWbMsNjbW3nzzTXvvvffsoYcesuTkZDt79qxTM3z4cOvbt69t2bLF/ud//sduv/12y8zMdPqrqqosPj7esrKybM+ePbZ48WKLjo62l156yal59dVXzev12quvvmqlpaW2du1aS0xMtB/84AfXfPxVVVUmyaqqqhoybQAAIIQacv4OadAaOHCgZWdnO6/r6uqsffv2lpubW2/9qFGjbMSIEUFtqampNnHiRDMzCwQClpCQYLNnz3b6Kysrzev12uLFi83MbN++fSbJtm3b5tSsXr3awsLC7MiRI2ZmtmDBAouLi7Pz5887NU8//bT16NHDeZ2dnW1f+tKXgsYyefJku+eee675+AlaAAA0PQ05f4fsrcOamhoVFxfL7/c7beHh4fL7/SosLKx3ncLCwqB6SUpPT3fqS0tLVVZWFlQTGxur1NRUp6awsFA+n08DBgxwavx+v8LDw1VUVOTU3HvvvfJ4PEH7KSkp0cmTJyVJd999t4qLi523Oj/44AOtWrVK999//2WP+fz586qurg5aAADAzSsyVDs+fvy46urqFB8fH9QeHx+vP/3pT/WuU1ZWVm99WVmZ03+x7Uo17dq1C+qPjIxU69atg2qSk5Mv2cbFvri4OH3961/X8ePHNWjQIJmZamtr9Z3vfEc/+tGPLnvMubm5mjlz5mX7AQDAzSXkN8M3VevXr9dPf/pTLViwQNu3b9fvfvc7rVy5Uj/5yU8uu87UqVNVVVXlLIcPH76OIwYAANdbyK5otWnTRhERESovLw9qLy8vV0JCQr3rJCQkXLH+4s/y8nIlJiYG1fTr18+pOXbsWNA2amtrVVFREbSd+vbzyX1MmzZNY8aM0be+9S1JUp8+ffTRRx9pwoQJ+vGPf6zw8EszrNfrldfrvcyMAACAm03Irmh5PB6lpKSooKDAaQsEAiooKFBaWlq966SlpQXVS1J+fr5Tn5ycrISEhKCa6upqFRUVOTVpaWmqrKxUcXGxU7Nu3ToFAgGlpqY6NRs3btSFCxeC9tOjRw/FxcVJks6cOXNJmIqIiJD08SMmAAAAQv54B6/Xa4sWLbJ9+/bZhAkTzOfzWVlZmZmZjRkzxqZMmeLUb9682SIjI23OnDm2f/9+y8nJqffxDj6fz5YvX267du2ykSNH1vt4h/79+1tRUZFt2rTJunXrFvR4h8rKSouPj7cxY8bYnj17bMmSJda8efOgxzvk5ORYq1atbPHixfbBBx/YW2+9ZV27drVRo0Zd8/HzqUMAAJqeJvN4BzOzefPmWceOHc3j8djAgQNty5YtTt+QIUNs7NixQfWvvfaade/e3Twej/Xq1ctWrlwZ1B8IBGzatGkWHx9vXq/Xhg4daiUlJUE1J06csMzMTGvZsqXFxMTYuHHj7NSpU0E17733ng0aNMi8Xq916NDBZs2aFdR/4cIFmzFjhnXt2tWioqIsKSnJvve979nJkyev+dgJWgAAND0NOX+HmfE+V6hUV1crNjZWVVVViomJCfVwAADANWjI+ZtPHQIAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALiFoAQAAuISgBQAA4BKCFgAAgEsIWgAAAC4haAEAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALiFoAQAAuISgBQAA4BKCFgAAgEsIWgAAAC4haAEAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALiFoAQAAuISgBQAA4BKCFgAAgEsIWgAAAC4haAEAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALiFoAQAAuISgBQAA4BKCFgAAgEsIWgAAAC4haAEAALiEoAUAAOASghYAAIBLCFoAAAAuIWgBAAC4hKAFAADgEoIWAACASwhaAAAALgl50Jo/f746d+6sqKgopaamauvWrVesX7ZsmXr27KmoqCj16dNHq1atCuo3M02fPl2JiYmKjo6W3+/XgQMHgmoqKiqUlZWlmJgY+Xw+jR8/XqdPnw6q2bVrlwYPHqyoqCglJSUpLy/vkrFUVlYqOztbiYmJ8nq96t69+yXjAQAAt66QBq2lS5dq8uTJysnJ0fbt29W3b1+lp6fr2LFj9da/8847yszM1Pjx47Vjxw5lZGQoIyNDe/bscWry8vI0d+5cLVy4UEVFRWrRooXS09N17tw5pyYrK0t79+5Vfn6+VqxYoY0bN2rChAlOf3V1tYYNG6ZOnTqpuLhYs2fP1owZM/Tyyy87NTU1Nfryl7+sgwcP6vXXX1dJSYl++ctfqkOHDi7MFAAAaJIshAYOHGjZ2dnO67q6Omvfvr3l5ubWWz9q1CgbMWJEUFtqaqpNnDjRzMwCgYAlJCTY7Nmznf7Kykrzer22ePFiMzPbt2+fSbJt27Y5NatXr7awsDA7cuSImZktWLDA4uLi7Pz5807N008/bT169HBev/jii9alSxerqan5rIdvVVVVJsmqqqo+8zYAAMD11ZDzd8iuaNXU1Ki4uFh+v99pCw8Pl9/vV2FhYb3rFBYWBtVLUnp6ulNfWlqqsrKyoJrY2FilpqY6NYWFhfL5fBowYIBT4/f7FR4erqKiIqfm3nvvlcfjCdpPSUmJTp48KUn6/e9/r7S0NGVnZys+Pl69e/fWT3/6U9XV1V32mM+fP6/q6uqgBQAA3LxCFrSOHz+uuro6xcfHB7XHx8errKys3nXKysquWH/x59Vq2rVrF9QfGRmp1q1bB9XUt41P7uODDz7Q66+/rrq6Oq1atUrTpk3Tz372Mz3zzDOXPebc3FzFxsY6S1JS0mVrAQBA0xfym+GbqkAgoHbt2unll19WSkqKRo8erR//+MdauHDhZdeZOnWqqqqqnOXw4cPXccQAAOB6iwzVjtu0aaOIiAiVl5cHtZeXlyshIaHedRISEq5Yf/FneXm5EhMTg2r69evn1Hz6Zvva2lpVVFQEbae+/XxyH4mJiWrWrJkiIiKcms997nMqKytTTU1N0NuOF3m9Xnm93nqPDQAA3HxCdkXL4/EoJSVFBQUFTlsgEFBBQYHS0tLqXSctLS2oXpLy8/Od+uTkZCUkJATVVFdXq6ioyKlJS0tTZWWliouLnZp169YpEAgoNTXVqdm4caMuXLgQtJ8ePXooLi5OknTPPffoz3/+swKBgFPz/vvvKzExsd6QBQAAbkHX4eb8y1qyZIl5vV5btGiR7du3zyZMmGA+n8/KysrMzGzMmDE2ZcoUp37z5s0WGRlpc+bMsf3791tOTo41a9bMdu/e7dTMmjXLfD6fLV++3Hbt2mUjR4605ORkO3v2rFMzfPhw69+/vxUVFdmmTZusW7dulpmZ6fRXVlZafHy8jRkzxvbs2WNLliyx5s2b20svveTUHDp0yFq1amWPPfaYlZSU2IoVK6xdu3b2zDPPXPPx86lDAACanoacv0MatMzM5s2bZx07djSPx2MDBw60LVu2OH1DhgyxsWPHBtW/9tpr1r17d/N4PNarVy9buXJlUH8gELBp06ZZfHy8eb1eGzp0qJWUlATVnDhxwjIzM61ly5YWExNj48aNs1OnTgXVvPfeezZo0CDzer3WoUMHmzVr1iVjf+eddyw1NdW8Xq916dLFnn32Wautrb3mYydoAQDQ9DTk/B1mZhbaa2q3rurqasXGxqqqqkoxMTGhHg4AALgGDTl/86lDAAAAlzQ4aK1Zs0abNm1yXs+fP1/9+vXT17/+dedhngAAAPgMQeuHP/yh80Tz3bt364knntD999+v0tJSTZ48udEHCAAA0FQ1+DlapaWluuOOOyRJv/3tb/XAAw/opz/9qbZv367777+/0QcIAADQVDX4ipbH49GZM2ckSX/84x81bNgwSVLr1q357j4AAIBPaPAVrUGDBmny5Mm65557tHXrVi1dulTSxw/rvO222xp9gAAAAE1Vg69ovfDCC4qMjNTrr7+uF198UR06dJAkrV69WsOHD2/0AQIAADRVPEcrhHiOFgAATQ/P0QIAALgBELQAAABcQtACAABwCUELAADAJdcctDp27KjHHntMb731lmpra90cEwAAwE3hmoPWr3/9a3m9XmVnZ6tNmzYaPXq0Xn31VVVWVro4PAAAgKbrMz3eYe/evfr973+v5cuXa+fOnbr77rv10EMP6aGHHlKXLl3cGOdNicc7AADQ9Lj+eIdevXpp6tSp2rJliw4ePKjMzEwVFBSod+/e6t27t1auXPmZBg4AAHAzadQHlp45c0Zr165Vq1at5Pf7G2uzNy2uaAEA0PQ05Pzd4O86vJLmzZvrq1/9amNuEgAAoMni8Q4AAAAuIWgBAAC4hKAFAADgks8ctP785z9r7dq1Onv2rCSpEe+pBwAAuCk0OGidOHFCfr9f3bt31/3336+jR49KksaPH68nnnii0QcIAADQVDU4aP3gBz9QZGSkDh06pObNmzvto0eP1po1axp1cAAAAE1Zgx/v8NZbb2nt2rW67bbbgtq7deumv/71r402MAAAgKauwVe0Pvroo6ArWRdVVFTI6/U2yqAAAABuBg0OWoMHD9Z//dd/Oa/DwsIUCASUl5enL37xi406OAAAgKaswW8d5uXlaejQoXr33XdVU1Ojp556Snv37lVFRYU2b97sxhgBAACapAZf0erdu7fef/99DRo0SCNH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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAHHCAYAAABnS/bqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKT0lEQVR4nO3dfVxUdd7/8fcgMtzFoKEMJArlXd4khkG4FpVsVGzJdq0Z66XkutmNbRm1re6uUm0tpt1qbtbVJt17U1vuehshWimioaaimbXeVYKXEoOaSjLf3x/9PFcTiNJ6HMHX8/E4j3G+388553u+Ts67M2fOOIwxRgAAADjlAvw9AAAAgJaKoAUAAGATghYAAIBNCFoAAAA2IWgBAADYhKAFAABgE4IWAACATQhaAAAANiFoAQAA2ISgBeCMs3TpUjkcDi1dutRqu+WWWxQfH++3MQHAT0HQAoAmeOONN/T000/7exgAmgmCFgA0AUELQFMQtACgmTt48GCD7V6vV4cPHz7NowHwQwQtAKfNjh07dOedd6pbt24KCQnRueeeq8GDB2v79u0/aXsHDx7Ufffdp7i4ODmdTnXr1k2PP/64jDH1al977TUlJycrNDRUbdq00eWXX6733nvP6p87d64yMzMVGxsrp9OpCy64QH/5y19UV1dn1VxxxRWaP3++duzYIYfDIYfD4XPd2JEjR5SXl6fOnTvL6XQqLi5ODzzwgI4cOXLCY/nwww81ePBgdezY0Vr33nvv1aFDh3zqbrnlFoWHh+uLL77Qddddp3POOUdDhw6VJDkcDt111116/fXX1bNnTzmdTi1atEiS9Pjjj6t///4699xzFRISoqSkJL311ls+205LS1OfPn0aHF+3bt2UkZFhPZ85c6aSkpJ0zjnnKCIiQr1799YzzzxzwuMEzjaB/h4AgLPH6tWrtWLFCt18883q0KGDtm/frueee05XXHGFNm3apNDQ0JPeljFGN9xwg4qLizVy5EglJiZq8eLF+v3vf6+vvvpKTz31lFX70EMP6cEHH1T//v318MMPKygoSKWlpVqyZImuvvpqSVJBQYHCw8OVm5ur8PBwLVmyRBMmTFBNTY0mT54sSfrTn/4kj8ejL7/80tp+eHi4pO/PHt1www366KOPNGrUKF144YXasGGDnnrqKX322Wd69913Gz2eOXPm6Ntvv9Udd9yhc889V6tWrdLUqVP15Zdfas6cOT61R48eVUZGhgYMGKDHH3/cZ96WLFmi2bNn66677lJUVJQVBJ955hndcMMNGjp0qGprazVz5kwNHjxY8+bNU2ZmpiRp2LBhuvXWW7Vx40b16tXL5+/ts88+05///GdJUmFhobKzszVw4EA99thjkqTNmzdr+fLluueee0767xA4KxgAOE2+/fbbem0lJSVGknnllVestuLiYiPJFBcXW205OTmmU6dO1vN3333XSDKPPPKIz/Z+9atfGYfDYT7//HNjjDFbt241AQEB5pe//KWpq6vzqfV6vY2O7bbbbjOhoaHm8OHDVltmZqbPOI559dVXTUBAgPnwww992qdPn24kmeXLl9db54ca2n9+fr5xOBxmx44dVltOTo6RZMaOHVuvXpIJCAgw5eXlJ9x+bW2t6dWrl7nqqqusturqahMcHGz+8Ic/+NTefffdJiwszBw4cMAYY8w999xjIiIizNGjRxs9JgDG8NEhgNMmJCTE+vN3332nffv2qXPnzoqMjNSaNWuatK0FCxaoVatWuvvuu33a77vvPhljtHDhQknSu+++K6/XqwkTJiggwPefPIfD0eDY9u/fr7179+qyyy7Tt99+q08//fSE45kzZ44uvPBCde/eXXv37rWWq666SpJUXFzc6Po/3P/Bgwe1d+9e9e/fX8YYrV27tl79HXfc0eB20tLS1KNHj0a3/80338jj8eiyyy7zmXeXy6VBgwbpzTfftD5+raur06xZs5SVlaWwsDBJUmRkpA4ePKjCwsJGjwkA12gBOI0OHTqkCRMmWNdURUVFqV27dqqurpbH42nStnbs2KHY2Fidc845Pu0XXnih1S9JX3zxhQICAhoMHz9UXl6uX/7yl3K5XIqIiFC7du303//935J0UmPbunWrysvL1a5dO5+la9eukqQ9e/Y0uv7OnTt1yy23qG3btgoPD1e7du2UlpbW4P4DAwPVoUOHBreTkJDQYPu8efN06aWXKjg4WG3btlW7du303HPP1dv28OHDtXPnTn344YeSpPfff1+VlZUaNmyYVXPnnXeqa9euuvbaa9WhQwf95je/sa4FA+CLa7QAnDa/+93vNGPGDI0ZM0apqalyuVxyOBy6+eab5fV6/Tau6upqpaWlKSIiQg8//LAuuOACBQcHa82aNfrDH/5wUmPzer3q3bu3nnzyyQb74+LijrtuXV2dfv7zn6uqqkp/+MMf1L17d4WFhemrr77SLbfcUm//Tqez3tm5Y3545uqYDz/8UDfccIMuv/xy/e1vf1NMTIxat26tGTNm6I033vCpzcjIUHR0tF577TVdfvnleu211+R2u5Wenm7VtG/fXuvWrdPixYu1cOFCLVy4UDNmzNDw4cP18ssvH/c4gbMRQQvAafPWW28pJydHTzzxhNV2+PBhVVdXN3lbnTp10vvvv6/9+/f7nNU69jFfp06dJEkXXHCBvF6vNm3apMTExAa3tXTpUu3bt0//+Mc/dPnll1vt27Ztq1f7w48bf+iCCy7QJ598ooEDBx635ng2bNigzz77TC+//LKGDx9utZ+qj+befvttBQcHa/HixXI6nVb7jBkz6tW2atVKv/71r1VQUKDHHntM7777rm699Va1atXKpy4oKEjXX3+9rr/+enm9Xt155516/vnnNX78eHXu3PmUjBtoCfjoEMBp06pVq3q3Xpg6darPLRRO1nXXXae6ujo9++yzPu1PPfWUHA6Hrr32WklSVlaWAgIC9PDDD9c7M3RsLMdCxA/HVltbq7/97W/19hsWFtbgR4k33XSTvvrqK/3P//xPvb5Dhw4d915Xx9u/MeaU3S6hVatWcjgcPvO8ffv2434TctiwYfrmm29022236cCBA9ZHqMfs27fP53lAQIAuuugiSTqpW1kAZxPOaAE4bX7xi1/o1VdflcvlUo8ePVRSUqL3339f5557bpO3df311+vKK6/Un/70J23fvl19+vTRe++9p7lz52rMmDG64IILJEmdO3fWn/70J/3lL3/RZZddphtvvFFOp1OrV69WbGys8vPz1b9/f7Vp00Y5OTm6++675XA49OqrrzZ4P66kpCTNmjVLubm5uuSSSxQeHq7rr79ew4YN0+zZs3X77beruLhYP/vZz1RXV6dPP/1Us2fP1uLFi9WvX78Gj6V79+664IILdP/99+urr75SRESE3n77bX3zzTdNnpeGZGZm6sknn9Q111yjX//619qzZ4+mTZumzp07a/369fXq+/btq169elkX+F988cU+/b/97W9VVVWlq666Sh06dNCOHTs0depUJSYmWtfIAfj//PZ9RwBnnW+++caMGDHCREVFmfDwcJORkWE+/fRT06lTJ5OTk2PVncztHYwx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bELQAgAAsAlBCwAAwCYELQAAAJsQtAAAAGxC0AIAALAJQQsAAMAmBC0AAACbELQAAABsQtACAACwCUELAADAJgQtAAAAmxC0AAAAbELQAgAAsAlBCwAAwCYELQAAAJv4PWhNmzZN8fHxCg4OVkpKilatWtVo/Zw5c9S9e3cFBwerd+/eWrBggU+/MUYTJkxQTEyMQkJClJ6erq1bt/rUPProo+rfv79CQ0MVGRnZ4H4cDke9ZebMmT41S5cu1cUXXyyn06nOnTuroKCgyccPAABaLr8GrVmzZik3N1d5eXlas2aN+vTpo4yMDO3Zs6fB+hUrVig7O1sjR47U2rVrlZWVpaysLG3cuNGqmTRpkqZMmaLp06ertLRUYWFhysjI0OHDh62a2tpaDR48WHfccUej45sxY4Z2795tLVlZWVbftm3blJmZqSuvvFLr1q3TmDFj9Nvf/laLFy/+zyYFAAC0HMaPkpOTzejRo63ndXV1JjY21uTn5zdYf9NNN5nMzEyftpSUFHPbbbcZY4zxer3G7XabyZMnW/3V1dXG6XSaN998s972ZsyYYVwuV4P7kmTeeeed4479gQceMD179vRpGzJkiMnIyDjuOj/m8XiMJOPxeE56HQAA4F9Nef/22xmt2tpalZWVKT093WoLCAhQenq6SkpKGlynpKTEp16SMjIyrPpt27apoqLCp8blciklJeW422zM6NGjFRUVpeTkZL300ksyxpz0WBpy5MgR1dTU+CwAAKDlCvTXjvfu3au6ujpFR0f7tEdHR+vTTz9tcJ2KiooG6ysqKqz+Y23HqzlZDz/8sK666iqFhobqvffe05133qkDBw7o7rvvbnQsNTU1OnTokEJCQuptMz8/Xw899FCTxgEAAJovvwWtM9348eOtP/ft21cHDx7U5MmTraD1U4wbN065ubnW85qaGsXFxf1H4wQAAGcuv310GBUVpVatWqmystKnvbKyUm63u8F13G53o/XHHpuyzZOVkpKiL7/8UkeOHGl0LBEREQ2ezZIkp9OpiIgInwUAALRcfgtaQUFBSkpKUlFRkdXm9XpVVFSk1NTUBtdJTU31qZekwsJCqz4hIUFut9unpqamRqWlpcfd5slat26d2rRpI6fTeVJjAQAA8OtHh7m5ucrJyVG/fv2UnJysp59+WgcPHtSIESMkScOHD9d5552n/Px8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el9AOHr0qKqqqvi7aMBdd92lefPmqbi4WB06dLDa3W63amtrVV1d7VP/47lu6O/iWB++FxQUpM6dOyspKUn5+fnq06ePnnnmGeb4FCsrK9OePXt08cUXKzAwUIGBgVq2bJmmTJmiwMBARUdHM982iIyMVNeuXfX555+fca9pglYLEhQUpKSkJBUVFVltXq9XRUVFSk1N9ePIWpaEhAS53W6fea6pqVFpaak1z6mpqaqurlZZWZlVs2TJEnm9XqWkpJz2MZ+pjDG666679M4772jJkiVKSEjw6U9KSlLr1q195nrLli3auXOnz1xv2LDBJ9gWFhYqIiJCPXr0OD0H0gx5vV4dOXKEOT7FBg4cqA0bNmjdunXW0q9fPw0dOtT6M/N96h04cEBffPGFYmJizrzX9Cm9tB5+N3PmTON0Ok1BQYHZtGmTGTVqlImMjPT5ZgVObP/+/Wbt2rVm7dq1RpJ58sknzdq1a82OHTuMMcZMnDjRREZGmrlz55r169ebQYMGmYSEBHPo0CFrG9dcc43p27evKS0tNR999JHp0qWLyc7O9tchnZHuuOMO43K5zNKlS83u3but5dtvv7Vqbr/9dtOxY0ezZMkS8/HHH5vU1FSTmppq9R89etT06tXLXH311WbdunVm0aJFpl27dmbcuHH+OKQz0tixY82yZcvMtm3bzPr1683YsWONw+Ew7733njGGObbbD791aAzzfSrcd999ZunSpWbbtm1m+fLlJj093URFRZk9e/YYY86sOSZotUBTp041HTt2NEFBQSY5OdmsXLnS30NqdoqLi42kektOTo4x5vtbPIwfP95ER0cbp9NpBg4caLZs2eKzjX379pns7GwTHh5uIiIizIgRI8z+/fv9cDRnrobmWJKZMWOGVXPo0CFz5513mjZt2pjQ0FDzy1/+0uzevdtnO9u3bzfXXnutCQkJMVFRUea+++4z33333Wk+mjPXb37zG9OpUycTFBRk2rVrZwYOHGiFLGOYY7v9OGgx3/+5IUOGmJiYGBMUFGTOO+88M2TIEPP5559b/WfSHDuMMebUniMDAACAxDVaAAAAtiFoAQAA2ISgBQAAYBOCFgAAgE0IWgAAADYhaAEAANiEoAUAAGATghYA+FF8fLyefvppfw8DgE0IWgDOGrfccouysrIkSVdccYXGjBlz2vZdUFCgyMjIeu2rV6/WqFGjTts4AJxegf4eAAA0Z7W1tQoKCvrJ67dr1+4UjgbAmYYzWgDOOrfccouWLVumZ555Rg6HQw6HQ9u3b5ckbdy4Uddee63Cw8MVHR2tYcOGae/evda6V1xxhe666y6NGTNGUVFRysjIkCQ9+eST6t27t8LCwhQXF6c777xTBw4ckCQtXbpUI0aMkMfjsfb34IMPSqr/0eHOnTs1aNAghYeHKyIiQjfddJMqKyut/gcffFCJiYl69dVXFR8fL5fLpZtvvln79++3d9IA/CQELQBnnWeeeUapqam69dZbtXv3bu3evVtxcXGqrq7WVVddpb59++rjjz/WokWLVFlZqZtuusln/ZdffllBQUFavny5pk+fLkkKCAjQlClTVF5erpdffllLlizRAw88IEnq37+/nn76aUVERFj7u//+++uNy+v1atCgQaqqqtKyZctUWFiof//73xoyZIhP3RdffKF3331X8+bN07x587Rs2TJNnDjRptkC8J/go0MAZx2Xy6WgoCCFhobK7XZb7c8++6z69u2rv/71r1bbSy+9pLi4OH322Wfq2rWrJKlLly6aNGmSzzZ/eL1XfHy8HnnkEd1+++3629/+pqCgILlcLjkcDp/9/VhRUZE2bNigbdu2KS4uTpL0yiuvqGfPnlq9erUuueQSSd8HsoKCAp1zzjmSpGHDhqmoqEiPPvrofzYxAE45zmgBwP/3ySefqLi4WOHh4dbSvXt3Sd+fRTomKSmp3rrvv/++Bg4cqPPOO0/nnHOOhg0bpn379unbb7896f1v3rxZcXFxVsiSpB49eigyMlKbN2+22uLj462QJUkxMTHas2dPk44VwOnBGS0A+P8OHDig66+/Xo899li9vpiYGOvPYWFhPn3bt2/XL37xC91xxx169NFH1bZtW3300UcaOXKkamtrFRoaekrH2bp1a5/nDodDXq/3lO4DwKlB0AJwVgoKClJdXZ1P28UXX6y3335b8fHxCgw8+X8ey8rK5PV69cQTTygg4PsPCmbPnn3C/f3YhRdeqF27dmnXrl3WWa1NmzapurpaPXr0OOnxADhz8NEhgLNSfHy8SktLtX37du3du1der1ejR49WVVWVsrOztXr1an3xxRdavHixRowY0WhI6ty5s7777jtNnTpV//73v/Xqq69aF8n/cH8HDhxQUVGR9u7d2+BHiunp6erdu7eGDh2qNWvWaNWqVRo+fLjS0tLUr1+/Uz4HAOxH0AJwVrr//vvVqlUr9ejRQ+3atdPOnTsVGxur5cuXq66uTldffbV69+6tMWPGKDIy0jpT1ZA+ffroySef1GOPPaZevXrp9ddfV35+vk9N//79dfvtt2vIkCFq165dvYvppe8/Apw7d67atGmjyy+/XOnp6Tr//PM1a9asU378AE4PhzHG+HsQAAAALRFntAAAAGxC0AIAALAJQQsAAMAmBC0AAACbELQAAABsQtACAACwCUELAADAJgQtAAAAmxC0AAAAbELQAgAAsAlBCwAAwCYELQAAAJv8P3VipO5242b2AAAAAElFTkSuQmCC", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHbklEQVR4nO3de3yMd/7//+ck5CCRhIgQIkGoc6JRNpY6hVAUrRZrK+L02TqUptpSbVDUsdYqjWod26q2tlX1tVqypXVonSlCUeoYIQ5xKCG5fn/0Z9Y0CRlmDK7H/Xab25r39b7e87rGdOfpfb2vayyGYRgCAAAwETdXFwAAAHCvEYAAAIDpEIAAAIDpEIAAAIDpEIAAAIDpEIAAAIDpEIAAAIDpEIAAAIDpEIAAAIDpEIAAJwgPD1f37t1dXUae+vbtq+bNm7u6DNyhuXPnymKx6NChQ64upcBGjBghi8Xi6jI0ZMgQ1atXz9Vl4D5BAAJM5ODBg/rggw/02muv5dqWmZmpkSNHKjIyUr6+vvL29laNGjX06quv6vjx49Z+3bt3l8VisT78/PwUGRmpt99+W1evXrXp5+vrm28tvr6+dxwS9+7dqxdffFH169eXl5fXbQPBkiVL9Oijj8rLy0vlypXT8OHDdf369QK/3qxZs1S1alV5eXmpUqVKeuedd/Lsd+zYMT377LMKCAiQn5+f2rVrp19//fWuxiyId999V3Pnzr3j/R3h8uXLGjFihFatWuXSOm5l0KBB2r59u5YsWeLqUnA/MAA4XFhYmBEfH+/qMnIZOHCgUbly5VztBw4cMMqXL2+4u7sbnTt3NqZNm2bMnDnT6N+/vxEYGGhUqlTJ2jc+Pt7w9PQ0PvzwQ+PDDz803nnnHaNx48aGJKNTp042/Xx8fPKtxcfH547fozlz5hhubm5GjRo1jKioKEOScfDgwTz7Llu2zLBYLEaTJk2MmTNnGgMGDDDc3NyMf/zjHwV6rRkzZhiSjKefftqYOXOm8dxzzxmSjHHjxtn0u3DhglGpUiWjZMmSxvjx443JkycboaGhRtmyZY3Tp0/f0Zh5uX79uvH7778bOTk51rbq1asbjRo1KtDxOMupU6cMScbw4cNzbbt27Zrx+++/3/ui8vDss88aDRs2dHUZuA8QgAAnKEgAunjx4r0p5v+XlZVllChRwnj99ddt2q9du2ZERkYaRYoUMX744Ydc+50/f9547bXXrM/zCjbZ2dlGnTp1DEnGsWPH8u13s7sJQBkZGUZmZqZhGIYxceLEWwagatWqGZGRkca1a9esbcOGDTMsFouRmpp6y9e5fPmyERgYaLRu3dqmvWvXroaPj49x5swZa9v48eMNScaGDRusbampqYa7u7sxdOjQOxqzoJwRgK5du2ZcvXq1wP1vFYDuJ4sWLTIsFotx4MABV5cCF+MUGEzn2LFj6tmzp0JCQuTp6any5cvr+eefV1ZWlrXPjh071KhRI3l7e6ts2bIaPXq05syZk+tUi2EYGj16tMqWLasiRYqoSZMm2rVrV67XvLFuY/Xq1erbt69KliypsmXLSpJ+++039e3bV4888oi8vb0VGBioZ555Js9TOgWtKy9r1qzR6dOnFRsba9P+73//W9u3b9ewYcPUoEGDXPv5+flpzJgxtxzbzc1NjRs3lqR7sjalePHiKlq06G377d69W7t371afPn1UqFAha3vfvn1lGIYWLVp0y/2/++47ZWRkqG/fvjbt/fr106VLl/T//t//s7YtWrRIjz32mB577DFrW5UqVdSsWTN99tlndzRmXv68Big8PFy7du3S6tWrraclb/xdSNK5c+c0aNAghYaGytPTUxERERo/frxycnKsfQ4dOiSLxaJJkyZpypQpqlixojw9PbV7925lZWUpKSlJ0dHR8vf3l4+Pjxo2bKjvvvvOZv+goCBJ0siRI611jBgxQlLea4CuX7+uUaNGWV8rPDxcr732ms1p1BvH16ZNG61Zs0Z169aVl5eXKlSooPnz59v0u3btmkaOHKlKlSrJy8tLgYGBatCggVasWGHT78bn/6uvvrrl+4yHX6HbdwEeHsePH1fdunV17tw59enTR1WqVNGxY8e0aNEiXb58WR4eHjp27JiaNGkii8WioUOHysfHRx988IE8PT1zjZeUlKTRo0friSee0BNPPKEtW7aoRYsWNmHqZn379lVQUJCSkpJ06dIlSdLGjRu1bt06de7cWWXLltWhQ4eUnJysxo0ba/fu3SpSpIgk2VVXXtatWyeLxaLatWvbtN9YD/Hcc88V+H3My4EDByRJgYGBdzWOI23dulWSVKdOHZv2kJAQlS1b1rrd3v2jo6Pl5uamrVu36u9//7tycnK0Y8cO9ejRI9cYdevW1bfffqsLFy6oaNGiBR6zoKZMmaIBAwbI19dXw4YNkyQFBwdL+mNdTqNGjXTs2DH93//9n8qVK6d169Zp6NChOnHihKZMmWIz1pw5c3TlyhX16dNHnp6eKl68uDIzM/XBBx+oS5cu6t27ty5cuKBZs2YpLi5OGzZsUFRUlIKCgpScnKznn39eHTp00FNPPSVJqlWrVr519+rVS/PmzVPHjh310ksv6aefftLYsWOVmpqqL7/80qbv/v371bFjR/Xs2VPx8fGaPXu2unfvrujoaFWvXl3SHyFr7Nix6tWrl+rWravMzExt2rRJW7ZssVn07+/vr4oVK2rt2rV68cUXC/w+4yHk6iko4F7q1q2b4ebmZmzcuDHXthtrKgYMGGBYLBZj69at1m0ZGRlG8eLFbU61pKenGx4eHkbr1q1t1mO89tprhiSb0ztz5swxJBkNGjQwrl+/bvO6ly9fzlXL+vXrDUnG/PnzrW0FrSs/f//7343AwMBc7bVr1zb8/f1vue/NbpzaOnXqlHHq1Clj//79xltvvWVYLBajVq1aufrl525Ogd3sVqfAbmw7fPhwrm2PPfaY8Ze//OWWY/fr189wd3fPc1tQUJDRuXNnwzD+d/rnzTffzNVv+vTphiRjz549do2ZnxufpZuPN79TYKNGjTJ8fHyMX375xaZ9yJAhhru7u/V9OXjwoCHJ8PPzM9LT0236Xr9+PdepsLNnzxrBwcFGjx49rG23OgU2fPhw4+avm23bthmSjF69etn0Gzx4sCHJ+O9//2ttCwsLMyQZ33//vbUtPT3d8PT0NF566SVrW2RkZK7Tivlp0aKFUbVq1QL1xcOLU2AwjZycHC1evFht27bN9a9vSdYp+uXLlysmJkZRUVHWbcWLF1fXrl1t+q9cuVJZWVkaMGCAzfT+oEGD8q2hd+/ecnd3t2nz9va2/vnatWvKyMhQRESEAgICtGXLFuu2gtaVn4yMDBUrVixXe2ZmZoFOJ93s0qVLCgoKUlBQkCIiIvTaa68pJiYm17/cXe3333+XpDxnyby8vKzbb7W/h4dHnttu3v92r3Nzn4KO6Qiff/65GjZsqGLFiun06dPWR2xsrLKzs/X999/b9H/66aetp7JucHd3t9abk5OjM2fO6Pr166pTp47N59Mey5YtkyQlJibatL/00kuSlOs0YLVq1dSwYUPr86CgID3yyCM2V9gFBARo165d2rdv321f/8b7AXPjFBhM49SpU8rMzFSNGjVu2e+3335TTExMrvaIiIhc/SSpUqVKNu1BQUF5Bg1JKl++fK6233//XWPHjtWcOXN07NgxGYZh3Xb+/Hm767qVm8e+wc/PL99LtfPj5eWlr7/+WpKs66hurGmyh7PvDXMjXP55XYkkXblyxSZ85rd/fqczb97/dq9zc5+CjukI+/bt044dO3KFmhvS09Ntnuf1+ZSkefPm6e2339aePXt07dq12/a/nd9++01ubm65PrulSpVSQECA9b+tG8qVK5drjGLFiuns2bPW52+++abatWunypUrq0aNGmrZsqWee+65PE/DGYZxX9yXCK5FAALuoby+3AYMGKA5c+Zo0KBBiomJkb+/vywWizp37myzUPVuBQYG2nxh3FClShVt3bpVR44cUWhoaIHGcnd3z7WY+s+8vLx09erVPL9sDMPQlStXrLMjzlK6dGlJ0okTJ3Id24kTJ1S3bt3b7p+dna309HSVLFnS2p6VlaWMjAyFhIRI+mMmztPTUydOnMg1xo22G30LOqYj5OTkqHnz5nrllVfy3F65cmWb53l9Pj/66CN1795d7du318svv6ySJUvK3d1dY8eOta77ulMFDSF/njW94eZA//jjj+vAgQP66quv9O233+qDDz7QP//5T82YMUO9evWy2e/s2bMqUaLEnReOhwKnwGAaQUFB8vPz086dO2/ZLywsTPv378/V/ue2sLAwSco15X7q1Kk8g0Z+Fi1apPj4eL399tvq2LGjmjdvrgYNGujcuXN3VFd+qlSporNnz9rMKklS27ZtJf3xRedIYWFhun79ep5fkvv371d2drb1PXSWG6cLN23aZNN+/PhxHT161OZ0oj37b9q0STk5Odbtbm5uqlmzZq5+kvTTTz+pQoUK1tOMBR3THvkFiYoVK+rixYuKjY3N85HXzMqfLVq0SBUqVNAXX3yh5557TnFxcYqNjbXObN2uhryEhYUpJycn1387J0+e1Llz5+74c1G8eHElJCTok08+0ZEjR1SrVi3rlWg3O3jwoKpWrXpHr4GHBwEIpuHm5qb27dvr66+/zvOL6sa/JuPi4rR+/Xpt27bNuu3MmTP6+OOPbfrHxsaqcOHCeuedd2z+JfrnK2tux93dPdepqXfeeUfZ2dk2bQWtKz8xMTEyDEObN2+2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4A7cuPz78uXLLq7EXG6837e7/P52+CkMAADugLu7uwICApSeni5JKlKkiM3PQMCxDMPQ5cuXlZ6eroCAALm7u9/VeAQgAADuUKlSpSTJGoLgfAEBAdb3/W7cFwFo+vTpmjhxotLS0hQZGal33nlHdevWzbPv+++/r/nz52vnzp2SpOjoaL311ls2/Q3D0PDhw/X+++/r3Llz+utf/6rk5GRVqlTpnhwPAMAcLBaLSpcurZIlS+ratWuuLuehV7hw4bue+bnB5QHo008/VWJiombMmKF69eppypQpiouL0969e1WyZMlc/VetWqUuXbqofv368vLy0vjx49WiRQvt2rVLZcqUkSRNmDBBU6dO1bx581S+fHm98cYbiouL0+7du7lbJwDA4dzd3R32xYx7w+U/hVGvXj099thjmjZtmiQpJydHoaGhGjBggIYMGXLb/bOzs1WsWDFNmzZN3bp1k2EYCgkJ0UsvvaTBgwdLks6fP6/g4GDNnTtXnTt3vu2Y/BSGffgpDADA/eCB+SmMrKwsbd68WbGx//sCdXNzU2xsrNavX1+gMS5fvqxr166pePHikqSDBw8qLS3NZkx/f3/Vq1cv3zGvXr2qzMxMmwcAAHh4uTQAnT59WtnZ2QoODrZpDw4OVlpaWoHGePXVVxUSEmINPDf2s2fMsWPHyt/f3/oIDQ2191AAAMAD5IG+D9C4ceO0cOFCffnll3e1tmfo0KE6f/689XHkyBEHVgkAAO43Ll0EXaJECbm7u+vkyZM27SdPnrztJW6TJk3SuHHjtHLlStWqVcvafmO/kydPqnTp0jZjRkVF5TmWp6enPD097/AooEmPuLoCxxq819UVAACczKUzQB4eHoqOjlZKSoq1LScnRykpKYqJicl3vwkTJmjUqFFavny56tSpY7OtfPnyKlWqlM2YmZmZ+umnn245JgAAMA+XXwafmJio+Ph41alTR3Xr1tWUKVN06dIlJSQkSJK6deumMmXKaOzYsZKk8ePHKykpSQsWLFB4eLh1XY+vr698fX1lsVg0aNAgjR49WpUqVbJeBh8SEqL27du76jABAMB9xOUBqFOnTjp16pSSkpKUlpamqKgoLV++3LqI+fDhw3Jz+99EVXJysrKystSxY0ebcYYPH64RI0ZIkl555RVdunRJffr00blz59SgQQMtX76cewABAABJ98F9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CLirYzMbPz8//sPEA4XPLB40fGYL5nYzPze4/BRYYmKi4uPjVadOHdWtW1dTpkzRpUuXlJCQIEnq1q2bypQpo7Fjx0qSBg4cqEaNGuntt99W69attXDhQm3atEkzZ86UJFksFg0aNEijR49WpUqVVL58eb3xxhsKCQmxhiwAAGBuLg9AnTp10qlTp5SUlKS0tDRFRUVp+fLl1kXMhw8flpvb/y5Wq1+/vhYsWKDXX39dr732mipVqqTFixerRo0a1j6vvPKKLl26pD59+ujcuXNq0KCBli9fLi8vr3t+fAAA4P5jMQqyVBrIx9WrVzV27FgNHTo012lE4H7EZxYPGj6zzkEAAgAApuPyO0EDAADcawQgAABgOgQgAABgOgQgAABgOgQg3JHvv/9ebdu2VUhIiCwWixYvXuzqkoACGzdunPWeYcD9Kjs7W2+88YbKly8vb29vVaxYUaNGjSrQ71zh9lx+HyA8mC5duqTIyEj16NFDTz31lKvLAQps48aNeu+991SrVi1XlwLc0vjx45WcnKx58+apevXq2rRpkxISEuTv768XXnjB1eU98AhAuCOtWrVSq1atXF0GYJeLFy+qa9euev/99zV69GhXlwPc0rp169SuXTu1bt1akhQeHq5PPvlEGzZscHFlDwdOgQEwjX79+ql169aKjY11dSnAbdWvX18pKSn65ZdfJEnbt2/XmjVr+MengzADBMAUFi5cqC1btmjjxo2uLgUokCFDhigzM1NVqlSRu7u7srOzNWbMGHXt2tXVpT0UCEAAHnpHjhzRwIEDtWLFCn4TEA+Mzz77TB9//LEWLFig6tWra9u2bRo0aJBCQkIUHx/v6vIeePwUBu6axWLRl19+qfbt27u6FCBPixcvVocOHeTu7m5ty87OlsVikZubm65evWqzDbgfhIaGasiQIerXr5+1bfTo0froo4+0Z88eF1b2cGAGCMBDr1mzZvr5559t2hISElSlShW9+uqrhB/cly5fviw3N9uluu7u7srJyXFRRQ8XAhDuyMWLF7V//37r84MHD2rbtm0qXry4ypUr58LKgNyKFi2qGjVq2LT5+PgoMDAwVztwv2jbtq3GjBmjcuXKqXr16tq6dasmT56sHj16uLq0hwKnwHBHVq1apSZNmuRqj4+P19y5c+99QYCdGjdurKioKE2ZMsXVpQB5unDhgt544w19+eWXSk9PV0hIiLp06aKkpCR5eHi4urwHHgEIAACYDvcBAgAApkMAAgAApkMAAgAApkMAAgAApkMAAgAApkMAAgAApkMAAgAApkMAAoBbGDFihKKiolxdhtWhQ4dksVi0bds2V5cCPNAIQADydOTIEfXo0UMhISHy8PBQWFiYBg4cqIyMDJfU0717d1ksFv3jH//Ita1fv36yWCzq3r17rv4Wi0UeHh6KiIjQm2++qevXr+f7GhaLRYsXL3ZC9QDuNwQgALn8+uuvqlOnjvbt26dPPvlE+/fv14wZM5SSkqKYmBidOXPGJXWFhoZq4cKF+v33361tV65c0YIFC/L8DbqWLVvqxIkT2rdvn1566SWNGDFCEydOdHqdWVlZTn8NAHeHAAQgl379+snDw0PffvutGjVqpHLlyqlVq1ZauXKljh07pmHDhln7hoeHa9SoUerSpYt8fHxUpkwZTZ8+3Wa8c+fOqVevXgoKCpKfn5+aNm2q7du3W7ffOM304YcfKjw8XP7+/urcubMuXLhgM86jjz6q0NBQffHFF9a2L774QuXKlVPt2rVzHYenp6dKlSqlsLAwPf/884qNjdWSJUvyPObw8HBJUocOHWSxWKzPb7hVbY0bN1b//v01aNAglShRQnFxcZKknTt3qlWrVvL19VVwcLCee+45nT592rrf8uXL1aBBAwUEBCgwMFBt2rTRgQMHbF53w4YNql27try8vFSnTh1t3brVZvvZs2fVtWtXBQUFydvbW5UqVdKcOXPyPEYA/0MAAmDjzJkz+uabb9S3b195e3vbbCtVqpS6du2qTz/9VDf/jODEiRMVGRmprVu3asiQIRo4cKBWrFhh3f7MM88oPT1d//nPf7R582Y9+uijatasmc1M0oEDB7R48WItXbpUS5cu1erVqzVu3Lhc9fXo0cPmC3727NlKSEgo0LF5e3vnOzuzceNGSdKcOXN04sQJ6/OC1jZv3jx5eHho7dq1mjFjhs6dO6emTZuqdu3a2rRpk5YvX66TJ0/q2Wefte5z6dIlJSYmatOmTUpJSZGbm5s6dOignJwcSdLFixfVpk0bVatWTZs3b9aIESM0ePBgm9d94403tHv3bv3nP/9RamqqkpOTVaJEiQK9H4CpGQBwkx9//NGQZHz55Zd5bp88ebIhyTh58qRhGIYRFhZmtGzZ0qZPp06djFatWhmGYRg//PCD4efnZ1y5csWmT8WKFY333nvPMAzDGD58uFGkSBEjMzPTuv3ll1826tWrZ30eHx9vtGvXzkhPTzc8PT2NQ4cOGYcOHTK8vLyMU6dOGe3atTPi4+Nz9TcMw8jJyTFWrFhheHp6GoMHD8732PM67oLU1qhRI6N27do2+40aNcpo0aKFTduRI0cMScbevXvzfP1Tp04Zkoyff/7ZMAzDeO+994zAwEDj999/t/ZJTk42JBlbt241DMMw2rZtayQkJOR7TADyVsiV4QvA/cu4aYbndmJiYnI9nzJliiRp+/btunjxogIDA236/P777zane8LDw1W0aFHr89KlSys9PT3XawUFBal169aaO3euDMNQ69at853xWLp0qXx9fXXt2jXl5OTob3/7m0aMGFHg47KntujoaJvn27dv13fffSdfX99c4x04cECVK1fWvn37lJSUpJ9++kmnT5+2zvwcPnxYNWrUUGpqqmrVqiUvLy/rvn9+r59//nk9/fTT2rJli1q0aKH27durfv36dh8jYDYEIAA2IiIiZLFYlJqaqg4dOuTanpqaqmLFiikoKKhA4128eFGlS5fWqlWrcm0LCAiw/rlw4cI22ywWizUQ/FmPHj3Uv39/Scq13uhmTZo0UXJysjw8PBQSEqJChe7s//IKUpuPj4/N84sXL6pt27YaP358rvFKly4tSWrbtq3CwsL0/vvvKyQkRDk5OapRo4Zdi6hbtWql3377TcuWLdOKFSvUrFkz9evXT5MmTSrwGIAZEYAA2AgMDFTz5s317rvv6sUXX7RZB5SWlqaPP/5Y3bp1k8Visbb/+OOPNmP8+OOPqlq1qqQ/Fi6npaWpUKFCuRYW36mWLVsqKytLFovFuuA4Lz4+PoqIiCjwuIULF1Z2drYjStSjjz6qf//73woPD88zeGVkZGjv3r16//331bBhQ0nSmjVrbPpUrVpVH374oa5cuWKdBfrzey39MSsWHx+v+Ph4NWzYUC+//DIBCLgNFkEDyGXatGm6evWq4uLi9P333+vIkSNavny5mjdvrjJlymjMmDE2/deuXasJEybol19+0fTp0/X5559r4MCBkqTY2FjFxMSoffv2+vbbb3Xo0CGtW7dOw4YN06ZNm+6oPnd3d6Wmpmr37t1yd3e/6+O9ITw8XCkpKUpLS9PZs2fvaqx+/frpzJkz6tKlizZu3KgDBw7om2++UUJCgrKzs1WsWDEFBgZq5syZ2r9/v/773/8qMTHRZoy//e1vslgs6t27t3bv3q1ly5blCjZJSUn66quvtH//fu3atUtLly61hk8A+SMAAcilUqVK2rRpkypUqKBnn31WFStWVJ8+fdSkSROtX79exYsXt+n/0ksvadOmTapdu7ZGjx6tyZMnW2dmLBaLli1bpscff1wJCQmqXLmyOnfurN9++03BwcF3XKOfn5/8/Pzu6jj/7O2339aKFSsUGhqa52X19ggJCdHatWuVnZ2tFi1aqGbNmho0aJACAgLk5uYmNzc3LVy4UJs3b1aNGjX04osv5rpHka+vr77++mv9/PPPql27toYNG5brlJqHh4eGDh2qWrVq6fHHH5e7u7sWLlx4V7UDZmAx7FnpCAB/Eh4erkGDBmnQoEGuLgUACowZIAAAYDoEIAAAYDqcAgMAAKbDDBAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADCd/w+jVvKaUS4SqwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_forpy_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_forpy_4_grad',\n", + " 'cgdrag_torch_implicit_4_nograd',\n", + " 'cgdrag_forpy_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAHHCAYAAABnS/bqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMCklEQVR4nO3dfVxUZf7/8Tc3zoAQkIEMFAblXd67GoRrUTkbFZXUrhrrKrmWbdmWS25f3e96U5uLabeam/VtE2vLu9xs8zbCmzZFVNRUNNcM00owIwY1lWSu3x/9PNsE3lAeR/D1fDzOY5zr+pxzrnMx27z3zJkzAcYYIwAAAJxxgf4eAAAAQGNF0AIAALAJQQsAAMAmBC0AAACbELQAAABsQtACAACwCUELAADAJgQtAAAAmxC0AAAAbELQAmCLsWPHKiAg4KzvIzExUXfddZet+wWA00XQAgAb/PWvf9W8efP8PQwAfkbQAgAbELQASAQtADgvGGN0+PDhOvuOHDkir9d7lkcEnB8IWgB+sg8++EBXXnmlQkJCdPnll+vFF188Ye0//vEPdevWTaGhoWrWrJnuvPNO7dmzx6fm3//+t/r06aMWLVrI6XQqISFBf/jDH04YFE7lk08+UZ8+fdSsWTM1bdpUV111lRYsWFCr7siRIxo7dqxat26tkJAQxcXF6Y477tDOnTutmieffFI9evTQRRddpNDQUHXr1k1vvvmmz3YCAgJ06NAhTZ8+XQEBAQoICPC5buzzzz/Xb3/7W8XGxsrpdKp9+/Z65ZVXTutYpk2bpuuvv17NmzeX0+lUu3bt9MILL9SqS0xM1C233KIlS5aoe/fuCg0N1Ysvvqjly5crICBAM2fO1J///GddfPHFatq0qaqqqlRRUaHhw4erY8eOCg8PV0REhG666SZ9+OGH1nYPHjyosLAwPfTQQ7X2+dlnnykoKEi5ubmSpG+//VaPPvqoWrVqpZCQEF100UXq2bOn8vPzT+tYgcYg2N8DANCwbd68WTfccINiYmI0duxYHTt2TGPGjFFsbGyt2nHjxmnUqFHq27ev7r77bn355ZeaPHmyrrnmGm3YsEFRUVGSpDlz5uibb77Rfffdp4suukhr1qzR5MmT9dlnn2nOnDn1Gl95ebl69Oihb775Rg8++KAuuugiTZ8+XbfddpvefPNN3X777ZKkmpoa3XLLLSooKNCdd96phx56SAcOHFB+fr62bNmiyy+/XJL03HPP6bbbblP//v1VXV2tmTNnqk+fPpo/f74yMjIkSa+99pruvvtuJScna8iQIZJkrV9eXq6rrrpKAQEBeuCBBxQTE6NFixZp8ODBqqqq0rBhw056PC+88ILat2+v2267TcHBwXrnnXd0//33y+v1aujQoT6127dvV1ZWlu69917dc889atOmjdX3l7/8RQ6HQ8OHD9fRo0flcDi0detWzZs3T3369FFSUpLKy8v14osvKi0tTVu3blV8fLzCw8N1++23a9asWXr66acVFBRkbXPGjBkyxqh///6SvvuyQm5urjUXVVVVWrdundavX69f/OIX9fo7Ag2WAYCfIDMz04SEhJhPP/3Uatu6dasJCgoy3/9PzK5du0xQUJAZN26cz/qbN282wcHBPu3ffPNNrf3k5uaagIAAn/2MGTPG/PA/Y5deeqnJzs62ng8bNsxIMv/+97+ttgMHDpikpCSTmJhoampqjDHGvPLKK0aSefrpp2vt2+v1nnBs1dXVpkOHDub666/3aQ8LC/MZx3GDBw82cXFxZv/+/T7td955p4mMjKzz2L+vrv709HRz2WWX+bRdeumlRpJZvHixT/uyZcuMJHPZZZfV2taRI0es+TiutLTUOJ1O89hjj1ltS5YsMZLMokWLfGo7depk0tLSrOedO3c2GRkZJz0eoLHjo0MAP1pNTY2WLFmizMxMtWjRwmq/4oorlJ6e7lP7z3/+U16vV3379tX+/futxeVyqVWrVlq2bJlVGxoaav370KFD2r9/v3r06CFjjDZs2FCvMS5cuFDJycnq2bOn1RYeHq4hQ4Zo165d2rp1qyRp7ty5io6O1u9///ta2/j+LSS+P7avv/5aHo9HV199tdavX3/KsRhjNHfuXN16660yxvjMQ3p6ujwezym38/39ezwe7d+/X2lpafrkk0/k8Xh8apOSkmr9HY7Lzs722ZYkOZ1OBQZ+97ZQU1Ojr776SuHh4WrTpo3PuNxut+Lj4/X6669bbVu2bNGmTZv0m9/8xmqLiopSSUmJduzYcYqZARovghaAH+3LL7/U4cOH1apVq1p93/+YSpJ27NghY4xatWqlmJgYn2Xbtm3at2+fVbt7927dddddatasmcLDwxUTE6O0tDRJqhUmTuXTTz+tNRbpuzB4vF+Sdu7cqTZt2ig4+ORXVMyfP19XXXWVQkJC1KxZM8XExOiFF144rXF9+eWXqqys1EsvvVRrDgYNGiRJPvNQl5UrV8rtdissLExRUVGKiYnRn/70J0m15yYpKemE26mrz+v16plnnlGrVq3kdDoVHR2tmJgYbdq0yWfbgYGB6t+/v+bNm6dvvvlGkvT6668rJCREffr0seoee+wxVVZWqnXr1urYsaP++Mc/atOmTaeYJaBx4RotAGeF1+tVQECAFi1a5HNdz3Hh4eGSvjuT8otf/EIVFRX6n//5H7Vt21ZhYWH6/PPPddddd/n123H//ve/ddttt+maa67R3/72N8XFxalJkyaaNm2a3njjjVOuf3zsv/nNb5SdnV1nTadOnU64/s6dO9WrVy+1bdtWTz/9tBISEuRwOLRw4UI988wztebmh2esTtX317/+VaNGjdJvf/tb/eUvf1GzZs0UGBioYcOG1dr2wIEDNXHiRM2bN09ZWVl64403dMsttygyMtKqueaaa7Rz5069/fbbevfdd/Xyyy/rmWee0dSpU3X33XefcGxAY0LQAvCjxcTEKDQ0tM6PhrZv3+7z/PLLL5cxRklJSWrduvUJt7l582b95z//0fTp0zVw4ECr/cd+U+3SSy+tNRZJ+uijj6z+4+MrKirSt99+qyZNmtS5rblz5yokJERLliyR0+m02qdNm1artq674sfExOiCCy5QTU2N3G53vY/lnXfe0dGjR/Wvf/3L56Pa73/s+lO8+eabuu666/T3v//dp72yslLR0dE+bR06dFDXrl31+uuv65JLLtHu3bs1efLkWtts1qyZBg0apEGDBungwYO65pprNHbsWIIWzht8dAjgRwsKClJ6errmzZun3bt3W+3btm3TkiVLfGrvuOMOBQUF6dFHH5UxxqfPGKOvvvrK2ubxtu/3P/fccz9qjDfffLPWrFmjwsJCq+3QoUN66aWXlJiYqHbt2kmSfvnLX2r//v16/vnna23j+FiCgoIUEBCgmpoaq2/Xrl113pg0LCxMlZWVPm1BQUH65S9/qblz52rLli211vnyyy9Peix1zY3H46kz6P0YQUFBtf42c+bM0eeff15n/YABA/Tuu+/q2Wef1UUXXaSbbrrJp//43/S48PBwtWzZUkePHj0j4wUaAs5oAfhJHn30US1evFhXX3217r//fh07dkyTJ09W+/btfa7Hufzyy/X4449r5MiR2rVrlzIzM3XBBReotLRUb731loYMGaLhw4erbdu2uvzyyzV8+HB9/vnnioiI0Ny5c/X111//qPGNGDFCM2bM0E033aQHH3xQzZo10/Tp01VaWqq5c+daF38PHDhQr776qnJycrRmzRpdffXVOnTokN577z3df//96t27tzIyMvT000/rxhtv1K9//Wvt27dPU6ZMUcuWLWtde9StWze99957evrppxUfH6+kpCSlpKRo/PjxWrZsmVJSUnTPPfeoXbt2qqio0Pr16/Xee++poqLihMdyww03yOFw6NZbb9W9996rgwcP6v/+7//UvHlz7d2790fNz/fdcssteuyxxzRo0CD16NFDmzdv1uuvv67LLruszvpf//rXeuSRR/TWW2/pvvvuq3UmsF27drr22mvVrVs3NWvWTOvWrdObb76pBx544CePFWgw/PNlRwCNyYoVK0y3bt2Mw+Ewl112mZk6dWqdt14wxpi5c+eanj17mrCwMBMWFmbatm1rhg4darZv327VbN261bjdbhMeHm6io6PNPffcYz788EMjyUybNs2qO53bOxhjzM6dO82vfvUrExUVZUJCQkxycrKZP39+rbF988035n//939NUlKSadKkiXG5XOZXv/qV2blzp1Xz97//3bRq1co4nU7Ttm1bM23atDrH8dFHH5lrrrnGhIaGGkk+YyovLzdDhw41CQkJ1n569eplXnrppVPO9b/+9S/TqVMnExISYhITE80TTzxh3ZqitLTUZx7qurXC8ds7zJkzp1bfkSNHzMMPP2zi4uJMaGio+fnPf24KCwtNWlqaz20bvu/mm282ksyqVatq9T3++OMmOTnZREVFmdDQUNO2bVszbtw4U11dfcrjBBqLAGN+cJ4YAIDTdPvtt2vz5s36+OOP/T0U4JzENVoAgB9l7969WrBggQYMGODvoQDnLK7RAgDUS2lpqVauXKmXX35ZTZo00b333uvvIQHnLM5oAQDqZcWKFRowYIBKS0s1ffp0uVwufw8JOGdxjRYAAIBNOKMFAABgE4IWAACATbgY3o+8Xq+++OILXXDBBXX+XAcAADj3GGN04MABxcfHWzc9PhGClh998cUXSkhI8PcwAADAj7Bnzx5dcsklJ60haPnRBRdcIOm7P1RERISfRwMAAE5HVVWVEhIS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Xbt2mZtuusmEhoaa6Oho8/DDD5tvv/3WZzvLli0zXbp0MQ6Hw1x22WVm2rRp9Tp2ghYAAA1Pfd6/A4wxpj5nwMLDw7VlyxYlJiZq7Nix2rJli958802tX79eN998c72+3Xe+q6qqUmRkpDweD9drAQDQQNTn/bve12g5HA598803kqT33ntPN9xwgySpWbNm3BcKAADge4Lru0LPnj2Vk5Ojn//851qzZo1mzZolSfrPf/6jSy655IwPEAAAoKGq9xmt559/XsHBwXrzzTf1wgsv6OKLL5YkLVq0SDfeeOMZHyAAAEBDVe9rtHDmcI0WAAANj63XaAEAAOD0ELQAAABsQtACAACwCUELAADAJqcdtFq0aKEHHnhA7777ro4dO2bnmAAAABqF0w5ar732mpxOp4YOHaro6Gj169dPr7/+uiorK20cHgAAQMP1o27vUFJSon/96196++23tXHjRvXo0UO33XabbrvtNl122WV2jLNR4vYOAAA0PLbf3qF9+/YaOXKkVq9erV27dikrK0sFBQXq0KGDOnTooAULFvyogQMAADQmP/lieJfLpXvuuUfvvPOO9u/fr7/85S9yOp1nYmwAAKCBKfnCo8QRC1TyhcffQzkncGd4P+KjQwBAY5M44r+fau0an+HHkdiHO8MDAAC/WPBgT5/H812wvwcAAAAaj/bxkY32TNaPwRktAAAAm/zooPXxxx9ryZIlOnz4sCSJS70AAAB81TtoffXVV3K73WrdurVuvvlm7d27V5I0ePBgPfzww2d8gAAAAA1VvYPWH/7wBwUHB2v37t1q2rSp1d6vXz8tXrz4jA4OAACgIav3xfDvvvuulixZoksuucSnvVWrVvr000/P2MAAAAAaunqf0Tp06JDPmazjKioquFEpAADA99Q7aF199dV69dVXrecBAQHyer2aMGGCrrvuujM6OAAAgIas3h8dTpgwQb169dK6detUXV2tRx55RCUlJaqoqNDKlSvtGCMAAECDVO8zWh06dNB//vMf9ezZU71799ahQ4d0xx13aMOGDbr88svtGCMAAECDxG8d+hG/dQgAQMNTn/fvH/UTPEeOHNGmTZu0b98+eb1en77bbrvtx2wSAACg0al30Fq8eLEGDhyo/fv31+oLCAhQTU3NGRkYAABAQ1fva7R+//vfq0+fPtq7d6+8Xq/PQsgCAAD4r3oHrfLycuXk5Cg2NtaO8QAAADQa9Q5av/rVr7R8+XIbhgIAANC41Ptbh99884369OmjmJgYdezYUU2aNPHpf/DBB8/oABszvnUIAEDDY+u3DmfMmKF3331XISEhWr58uQICAqy+gIAAghbOqpIvPMqY9IEWPNhT7eMjz3g9AAA/Rb3PaLlcLj344IMaMWKEAgPr/ckjvoczWj9d4ogF1r93jc844/UAAPxQfd6/652Uqqur1a9fP0IWzgkLHuzp83im6wEA+CnqfUbrD3/4g2JiYvSnP/3JrjGdNzijBQBAw2PrNVo1NTWaMGGClixZok6dOtW6GP7pp5+u7yYBAAAapXoHrc2bN6tr166SpC1btvj0ff/CeAAAgPNdvS+0WrZs2QmXpUuX/qhBTJkyRYmJiQoJCVFKSorWrFlz0vo5c+aobdu2CgkJUceOHbVw4UKffmOMRo8erbi4OIWGhsrtdmvHjh0+NRUVFerfv78iIiIUFRWlwYMH6+DBg1b/2LFjFRAQUGsJCwuzavLy8mr1h4SE/Kg5AAAAjY/fr2ifNWuWcnJyNGbMGK1fv16dO3dWenq69u3bV2f9qlWrlJWVpcGDB2vDhg3KzMxUZmamz9m1CRMmaNKkSZo6daqKiooUFham9PR0HTlyxKrp37+/SkpKlJ+fr/nz5+v999/XkCFDrP7hw4dr7969Pku7du3Up08fn/FERET41Hz66adneIYAAEBDdVoXw99xxx3Ky8tTRESE7rjjjpPW/vOf/6zXAFJSUnTllVfq+eeflyR5vV4lJCTo97//vUaMGFGrvl+/fjp06JDmz59vtV111VXq0qWLpk6dKmOM4uPj9fDDD2v48OGSJI/Ho9jYWOXl5enOO+/Utm3b1K5dO61du1bdu3eX9N2PZd9888367LPPFB8fX2u/H374obp06aL3339fV199taTvzmgNGzZMlZWV9Trm47gYHgCAhueM394hMjLSuv4qMjLypEt9VFdXq7i4WG63+78DCgyU2+1WYWFhnesUFhb61EtSenq6VV9aWqqysjKfmsjISKWkpFg1hYWFioqKskKWJLndbgUGBqqoqKjO/b788stq3bq1FbKOO3jwoC699FIlJCSod+/eKikpqccMAACAxuy0LoafNm2aHnvsMQ0fPlzTpk07Yzvfv3+/ampqav1AdWxsrD766KM61ykrK6uzvqyszOo/3naymubNm/v0BwcHq1mzZlbN9x05ckSvv/56rTNsbdq00SuvvKJOnTrJ4/HoySefVI8ePVRSUqJLLrmk1naOHj2qo0ePWs+rqqrqPEYAANA4nPY1Wo8++qjPxeLnk7feeksHDhxQdna2T3tqaqoGDhyoLl26KC0tTf/85z8VExOjF198sc7t5Obm+pz9S0hIOBvDBwAAfnLaQaue9zU9LdHR0QoKClJ5eblPe3l5uVwuV53ruFyuk9YffzxVzQ8vtj927JgqKirq3O/LL7+sW265pdZZsh9q0qSJunbtqo8//rjO/pEjR8rj8VjLnj17Tro9AADQsNXrW4dn+j5ZDodD3bp1U0FBgdXm9XpVUFCg1NTUOtdJTU31qZek/Px8qz4pKUkul8unpqqqSkVFRVZNamqqKisrVVxcbNUsXbpUXq9XKSkpPtsuLS3VsmXLNHjw4FMeT01NjTZv3qy4uLg6+51OpyIiInwWAADQeNXrhqWtW7c+ZdiqqKio1wBycnKUnZ2t7t27Kzk5Wc8++6wOHTqkQYMGSZIGDhyoiy++WLm5uZKkhx56SGlpaXrqqaeUkZGhmTNnat26dXrppZckfRcGhw0bpscff1ytWrVSUlKSRo0apfj4eGVmZkqSrrjiCt1444265557NHXqVH377bd64IEHdOedd9b6xuErr7yiuLg43XTTTbXG/thjj+mqq65Sy5YtVVlZqYkTJ+rTTz/V3XffXa85AAAAjVO9gtajjz5a728Wnkq/fv305ZdfavTo0SorK1OXLl20ePFi62O63bt3+/yAdY8ePfTGG2/oz3/+s/70pz+pVatWmjdvnjp06GDVPPLIIzp06JCGDBmiyspK9ezZU4sXL/a5mejrr7+uBx54QL169VJgYKB++ctfatKkST5j83q9ysvL01133aWgoKBaY//66691zz33qKysTBdeeKG6deumVatWqV27dmd0jgAAQMN02j8qHRgYWOe39fDjcR8tAAAanjN+Hy2J3zEEAACoL79+6xAAAKAxO+1rtLxer53jAAAAaHT8/qPSAAAAjRVBCwAAwCYELQAAAJsQtAAAAGxC0AIAALAJQQsAAMAmBC0AAACbELQAAABsQtACAACwCUELAADAJgQtAAAAmxC0AAAAbELQAgAAsAlBCwAAwCYELQAAAJsQtAAA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/e1vcjgcioyMVEBAgM/+fqigoECbN29WaWmpEhISJEmvvvqq2rdvr7Vr1+rKK6+U9F0gy8vL0wUXXCBJGjBggAoKCjRu3LifNjEAzjjOaAHA//fhhx9q2bJlCg8Pt5a2bdtK+u4s0nHdunWrte57772nXr166eKLL9YFF1ygAQMG6KuvvtI333xz2vvftm2bEhISrJAlSe3atVNUVJS2bdtmtSUmJlohS5Li4uK0b9++eh0rgLODM1oA8P8dPHhQt956q5544olafXFxcda/w8LCfPp27dqlW265Rffdd5/GjRunZs2a6YMPPtDgwYNVXV2tpk2bntFxNmnSxOd5QECAvF7vGd0HgDODoAXgvORwOFRTU+PT9rOf/Uxz585VYmKigoNP/z+PxcXF8nq9euqppxQY+N0HBbNnzz7l/n7oiiuu0J49e7Rnzx7rrNbWrVtVWVmpdu3anfZ4AJw7+OgQwHkpMTFRRUVF2rVrl/bv3y+v16uhQ4eqoqJCWVlZWrt2rXbu3KklS5Zo0KBBJw1JLVu21LfffqvJkyfrk08+0WuvvWZdJP/9/R08eFAFBQXav39/nR8put1udezYUf3799f69eu1Zs0aDRw4UGlpaerevfsZnwMA9iNoATgvDR8+XEFBQWrXrp1iYmK0e/duxcfHa+XKlaqpqdENN9ygjh07atiwYYqKirLOVNWlc+fOevrpp/XEE0+oQ4cOev3115Wbm+tT06NHD/3ud79Tv379FBMTU+tieum7jwDffvttXXjhhbrmmmvkdrt12WWXadasWWf8+AGcHQHGGOPvQQAAADRGnNECAACwCUELAADAJgQtAAAAmxC0AAAAbELQAgAAsAlBCwAAwCYELQAAAJsQtAAAAGxC0AIAALAJQQsAAMAmBC0AAACbELQAAABs8v8AVewBD3vv2qkAAAAASUVORK5CYII=", + "image/png": "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fXHs2DH07NkTwP3bZTExMVi1ahXKysrQuXNnLFy4sMbTcURERPRs0vk6SE0V10HSHNdBIiKixkLT39+N4qtGiIiIiBoTBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISAUDEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISAUDEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISAUDEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISIW+rgugZ8D7z+u6gvr1VpauKyAiogbGK0hEREREKhpFQNqyZQtsbGwgk8ng5uaGlJSUh/bfs2cP7OzsIJPJ4ODggAMHDihtX7VqFezs7GBkZITWrVvD29sbJ06cUOpTWFiISZMmwdjYGKamppg2bRru3r1b7+dGRERETY/OA9Lu3bsRHByMlStXIj09HY6OjvDx8UFeXp7a/klJSQgICMC0adOQkZEBPz8/+Pn54cyZM2Kfbt26ISIiAqdPn8avv/4KGxsbDB06FPn5+WKfSZMm4ezZs0hISEBcXBx++eUXzJw5s8HPl4iIiBo/iSAIgi4LcHNzQ9++fREREQEAUCgUsLa2xty5c7FkyZIa/f39/VFSUoK4uDixrV+/fnByckJkZKTaYxQXF8PExASHDh3C4MGDkZmZiR49euDkyZNwcXEBAMTHx2P48OG4du0aLC0tH1l39ZhFRUUwNjauy6nXynXdoXodT9dSDGfruoT6xTlIRERNlqa/v3V6Bam8vBxpaWnw9vYW26RSKby9vZGcnKx2n+TkZKX+AODj41Nr//LyckRFRcHExASOjo7iGKampmI4AgBvb29IpdIat+KqlZWVobi4WOlFRERETyedBqSCggJUVVXBwsJCqd3CwgI5OTlq98nJydGof1xcHFq2bAmZTIYPPvgACQkJaNOmjThGu3btlPrr6+vDzMys1uOGhobCxMREfFlbW2t1rkRERNR06HwOUkMZOHAgTp06haSkJAwbNgwTJkyodV6TJpYuXYqioiLxdfXq1XqsloiIiBoTnQakNm3aQE9PD7m5uUrt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bhwA4Ny5c+jevTuSk5PRr18/jWovLi6GiYkJioqKYGxsrO2pP5TrukP1Op6upRjO1nUJ9YvryajFz20jx88tEQDNf3/r7ApSeXk50tLS4O3t/b9ipFJ4e3sjOTlZ7T7JyclK/QHAx8en1v7qpKWloaKiQmkcOzs7dOzY8aHjlJWVobi4WOlFRERETyedBaSCggJUVVXBwsJCqd3CwgI5OTlq98nJydGqf21jGBgYwNTUVKtxQkNDYWJiIr6sra01PiYRERE1LTqfpN1ULF26FEVFReLr6tWrui6JiIiIGojOvoutTZs20NPTq/H0WG5uLuRyudp95HK5Vv1rG6O8vBy3b99Wuor0qHEMDQ1haGio8XGIiKhxe+rmzS3zfnQn0pjOriAZGBjA2dkZiYmJYptCoUBiYiLc3d3V7uPu7q7UHwASEhJq7a+Os7MzmjVrpjROVlYWsrOztRqHiIiInl46u4IEAMHBwQgMDISLiwtcXV0RHh6OkpISBAUFAQAmT54MKysrhIaGAgDmz58PT09PbNq0CSNGjEBMTAxSU1MRFRUljllYWIjs7GzcuHEDwP3wA9y/ciSXy2FiYoJp06YhODgYZmZmMDY2xty5c+Hu7q7xE2xERET0dNNpQPL390d+fj5CQkKQk5MDJycnxMfHixOxs7OzIZX+7yKXh4cHoqOjsXz5crzzzjuwtbVFbGws7O3txT779u0TAxYATJw4EQCwcuVKrFq1CgDwwQcfQCqVYuzYsSgrK4OPjw8++eSTJ3DGRERE1BTodB2kpozrIGmO68k8G/i5beT4ua3hqfvMcg6SRhr9OkhEREREjRUDEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISAUDEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISIW+rgsgIiKievD+87quoH69laXTw/MKEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISAUDEhEREZEKBiQiIiIiFQxIRERERCoYkIiIiIhUMCARERERqWBAIiIiIlLBgERERESkggGJiIiISEWjCEhbtmyBjY0NZDIZ3NzckJKS8tD+e/bs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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_forpy_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_forpy_4_grad',\n", + " 'resnet_torch_4_nograd',\n", + " 'resnet_forpy_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_1k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU, 1000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "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", + "image/png": "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CQCYOXMmvL29sWbNGvj7+yM2NhapqamIjo4GAEgkEsyaNQvLli2Do6Mj2rZti4ULF8LW1hYBAQEAHk70PnnyJPr164cWLVogOTkZs2fPxr/+9S+0bNlSK58DERERNR5aD0iBgYEoKChAeHg4cnNz4ebmhvj4eHGSdXZ2NnR0/j7R1bt3b8TExGDBggX46KOP4OjoiD179sDZ2Vns8+GHH6K0tBRTpkzB3bt30adPH8THx0MmkwF4eDYoNjYWERERKC8vR9u2bTF79myFeUlERET04pIIgiBou4imqKSkBCYmJiguLq73y20eyw/W63jalqI/Tdsl1K/3s7RdQaPE47aR43GrgsdsI9dAx2xdv7+1/qBIIiIiosaGAYmIiIhICQMSERERkRIGJCIiIiIlDEhEREREShiQiIiIiJQwIBEREREpYUAiIiIiUsKARERERKSEAYmIiIhICQMSERERkRIGJCIiIiIlDEhEREREShiQiIiIiJQwIBEREREpYUAiIiIiUsKARERERKSEAYmIiIhICQMSERERkRIGJCIiIiIlDEhEREREShiQiIiIiJQwIBEREREpYUAiIiIiUsKARERERKSEAYmIiIhICQMSERERkRIGJCIiIiIlDEhEREREShiQiIiIiJQwIBEREREpYUAiIiIiUsKARERERKSEAYmIiIhICQMSERERkRIGJCIiIiIlDEhEREREShpFQNq4cSMcHBwgk8ng6emJlJSUR/bfuXMnnJycIJPJ4OLiggMHDigsFwQB4eHhsLGxgYGBAXx9fXH58mWFPkVFRQgODoaxsTFMTU0xceJE3L9/v973jYiIiJoerQekHTt2ICwsDIsWLUJ6ejpcXV3h5+eH/Px8tf2TkpIQFBSEiRMnIiMjAwEBAQgICMD58+fFPqtWrcLnn3+OqKgonDx5EoaGhvDz80NZWZnYJzg4GBcuXEBCQgLi4uLwyy+/YMqUKQ2+v0RERNT4aT0grV27FpMnT0ZoaCg6d+6MqKgoNG/eHN98843a/p999hkGDx6MDz74AJ06dcLSpUvRvXt3bNiwAcDDs0fr1q3DggULMGzYMHTt2hXffvstbt26hT179gAAMjMzER8fj6+//hqenp7o06cP1q9fj9jYWNy6detZ7ToRERE1UloNSBUVFUhLS4Ovr6/YpqOjA19fXyQnJ6tdJzk5WaE/APj5+Yn9r169itzcXIU+JiYm8PT0FPskJyfD1NQUPXr0EPv4+vpCR0cHJ0+erLf9IyIioqZJV5sbLywsRHV1NaysrBTarayscPHiRbXr5Obmqu2fm5srLq9pe1QfS0tLheW6urpo1aqV2EdZeXk5ysvLxffFxcUAgJKSkkfu45OoLiut9zG1qUSo1nYJ9asB/s6fBzxuGzketyp4zDZyDXTM1nxvC4LwyH5aDUhNSWRkJBYvXqzSbm9vr4VqmhYTbRdQ3xY+d3tEajx3f8s8bp97z93fcAMfs/fu3YOJSe3b0GpAMjc3h1QqRV5enkJ7Xl4erK2t1a5jbW39yP41/5uXlwcbGxuFPm5ubmIf5UngVVVVKCoqqnW78+bNQ1hYmPheLpejqKgIZmZmkEgkddjbF1NJSQns7e2Rk5MDY2NjbZdDVCc8bqmp4TFbd4Ig4N69e7C1tX1kP60GJD09Pbi7uyMxMREBAQEAHgaPxMRETJ8+Xe06Xl5eSExMxKxZs8S2hIQEeHl5AQDatm0La2trJCYmioGopKQEJ0+exLvvviuOcffuXaSlpcHd3R0AcOjQIcjlcnh6eqrdrr6+PvT19RXaTE1Nn3DPXzzGxsb8R0tNDo9bamp4zNbNo84c1dD6JbawsDCEhISgR48e8PDwwLp161BaWorQ0FAAwLhx42BnZ4fIyEgAwMyZM+Ht7Y01a9bA398fsbGxSE1NRXR0NABAIpFg1qxZWLZsGRwdHdG2bVssXLgQtra2Ygjr1KkTBg8ejMmTJyMqKgqVlZWYPn06xo4d+9hESURERM8/rQekwMBAFBQUIDw8HLm5uXBzc0N8fLw4yTo7Oxs6On/fbNe7d2/ExMRgwYIF+Oijj+Do6Ig9e/bA2dlZ7PPhhx+itLQUU6ZMwd27d9GnTx/Ex8dDJpOJfbZv347p06djwIAB0NHRwciRI/H5558/ux0nIiKiRksiPG4aN9FTKC8vR2RkJObNm6dyiZKoseJxS00Nj9n6x4BEREREpETrT9ImIiIiamwYkIiIiIiUMCARERERKWFAIiIiIlLCgEQN4pdffsEbb7wBW1tbSCQS7NmzR9slEWlkxYoV4nPViBqr6upqLFy4EG3btoWBgQHat2+PpUuXPvZ3xujxtP4cJHo+lZaWwtXVFRMmTMCIESO0XQ6RRk6dOoUvv/wSXbt21XYpRI+0cuVKbNq0Cdu2bUOXLl2QmpqK0NBQmJiY4L333tN2eU0aAxI1iCFDhmDIkCHaLoNIY/fv30dwcDC++uorLFu2TNvlED1SUlIShg0bBn9/fwCAg4MDvv/+e6SkpGi5sqaPl9iIiP5h2rRp8Pf3h6+vr7ZLIXqs3r17IzExEZcuXQIAnDlzBr/++iv/A7Ue8AwSEdH/Fxsbi/T0dJw6dUrbpRDVydy5c1FSUgInJydIpVJUV1dj+fLlCA4O1nZpTR4DEhERgJycHMycORMJCQkKv9tI1Jj98MMP2L59O2JiYtClSxecPn0as2bNgq2tLUJCQrRdXpPGnxqhBieRSPDjjz8iICBA26UQ1WrPnj0YPnw4pFKp2FZdXQ2JRAIdHR2Ul5crLCNqDOzt7TF37lxMmzZNbFu2bBn+85//4OLFi1qsrOnjGSQiIgADBgzAuXPnFNpCQ0Ph5OSEOXPmMBxRo/TgwQPo6ChOJ5ZKpZDL5Vqq6PnBgEQN4v79+/j999/F91evXsXp06fRqlUrtG7dWouVEanXokULODs7K7QZGhrCzMxMpZ2osXjjjTewfPlytG7dGl26dEFGRgbWrl2LCRMmaLu0Jo+X2KhBHDlyBP369VNpDwkJwdatW599QURPwMfHB25ubli3bp22SyFS6969e1i4cCF+/PFH5Ofnw9bWFkFBQQgPD4eenp62y2vSGJCIiIiIlPA5SERERERKGJCIiIiIlDAgERERESlhQCIiIiJSwoBEREREpIQBiYiIiEgJAxIRERGREgYkIqKnEBERATc3N22XIbp27RokEglOnz6t7VKImjQGJCJ6Ijk5OZgwYQJsbW2hp6eHNm3aYObMmbhz545W6hk/fjwkEgneeecdlWXTpk2DRCLB+PHjVfpLJBLo6emhQ4cOWLJkCaqqqmrdhkQiwZ49exqgeiJqbBiQiEhjf/zxB3r06IHLly/j+++/x++//46oqCgkJibCy8sLRUVFWqnL3t4esbGx+Ouvv8S2srIyxMTEqP0NwMGDB+P27du4fPky/v3vfyMiIgKrV69u8DorKioafBtE9HQYkIhIY9OmTYOenh5+/vlneHt7o3Xr1hgyZAgOHjyImzdvYv78+WJfBwcHLF26FEFBQTA0NISdnR02btyoMN7du3cxadIkWFhYwNjYGP3798eZM2fE5TWXsb777js4ODjAxMQEY8eOxb179xTG6d69O+zt7bF7926xbffu3WjdujW6deumsh/6+vqwtrZGmzZt8O6778LX1xf79u1Tu88ODg4AgOHDh0MikYjvazyqNh8fH0yfPh2zZs2Cubk5/Pz8AADnz5/HkCFDYGRkBCsrK7z11lsoLCwU14uPj0efPn1gamoKMzMzvP7667hy5YrCdlNSUtCtWzfIZDL06NEDGRkZCsv//PNPBAcHw8LCAgYGBnB0dMSWLVvU7iMR/Y0BiYg0UlRUhJ9++glTp06FgYGBwjJra2sEBwdjx44d+OfPPK5evRqurq7IyMjA3LlzMXPmTCQkJIjLR48ejfz8fPzf//0f0tLS0L17dwwYMEDhTNSVK1ewZ88exMXFIS4uDkePHsWKFStU6pswYYJCAPjmm28QGhpap30zMDCo9ezOqVOnAABbtmzB7du3xfd1rW3btm3Q09PD8ePHERUVhbt376J///7o1q0bUlNTER8fj7y8PIwZM0Zcp7S0FGFhYUhNTUViYiJ0dHQwfPhwyOVyAMD9+/fx+uuvo3PnzkhLS0NERATef/99he0uXLgQv/32G/7v//4PmZmZ2LRpE8zNzev0eRC90AQiIg2cOHFCACD8+OOPapevXbtWACDk5eUJgiAIbdq0EQYPHqzQJzAwUBgyZIggCIJw7NgxwdjYWCgrK1Po0759e+HLL78UBEEQFi1aJDRv3lwoKSkRl3/wwQeCp6en+D4kJEQYNmyYkJ+fL+jr6wvXrl0Trl27JshkMqGgoEAYNmyYEBISotJfEARBLpcLCQkJgr6+vvD+++/Xuu/q9rsutXl7ewvdunVTWG/p0qXCoEGDFNpycnIEAEJWVpba7RcUFAgAhHPnzgmCIAhffvmlYGZmJvz1119in02bNgkAhIyMDEEQBOGNN94QQkNDa90nIlJPV5vhjIiaLuEfZ4gex8vLS+X9unXrAABnzpzB/fv3YWZmptDnr7/+Uric5ODggBYtWojvbWxskJ+fr7ItCwsL+Pv7Y+vWrRAEAf7+/rWeMYmLi4ORkREqKyshl8vx5ptvIiIios77pUlt7u7uCu/PnDmDw4cPw8jISGW8K1euoGPHjrh8+TLCw8Nx8uRJFBYWimeOsrOz4ezsjMzMTHTt2hUymUxcV/mzfvfddzFy5Eikp6dj0KBBCAgIQO/evTXeR6IXDQMSEWmkQ4cOkEgkyMzMxPDhw1WWZ2ZmomXLlrCwsKjTePfv34eNjQ2OHDmisszU1FT8c7NmzRSWSSQSMTAomzBhAqZPnw4AKvOd/qlfv37YtGkT9PT0YGtrC13dJ/u/xLrUZmhoqPD+/v37eOONN7By5UqV8WxsbAAAb7zxBtq0aYOvvvoKtra2kMvlcHZ21miS95AhQ3D9+nUcOHAACQkJGDBgAKZNm4ZPPvmkzmMQvYgYkIhII2ZmZhg4cCC++OILzJ49W2EeUm5uLrZv345x48ZBIpGI7SdOnFAY48SJE+jUqROAhxOrc3NzoaurqzLx+UkNHjwYFRUVkEgk4oRodQwNDdGhQ4c6j9usWTNUV1fXR4no3r07/vvf/8LBwUFtMLtz5w6ysrLw1VdfoW/fvgCAX3/9VaFPp06d8N1336GsrEw8i6T8WQMPz6qFhIQgJCQEffv2xQcffMCARPQYnKRNRBrbsGEDysvL4efnh19++QU5OTmIj4/HwIEDYWdnh+XLlyv0P378OFatWoVLly5h48aN2LlzJ2bOnAkA8PX1hZeXFwICAvDzzz/j2rVrSEpKwvz585GamvpE9UmlUmRmZuK3336DVCp96v2t4eDggMTEROTm5uLPP/98qrGmTZuGoqIiBAUF4dSpU7hy5Qp++uknhIaGorq6Gi1btoSZmRmio6Px+++/49ChQwgLC1MY480334REIsHkyZPx22+/4cCBAyrBJzw8HHv37sXvv/+OCxcuIC4uTgynRFQ7BiQi0pijoyNSU1PRrl07jBkzBu3bt8eUKVPQr18/JCcno1WrVgr9//3vfyM1NRXdunXDsmXLsHbtWvHMjkQiwYEDB/Dqq68iNDQUHTt2xNixY3H9+nVYWVk9cY3GxsYwNjZ+qv1UtmbNGiQkJMDe3l7tYwM0YWtri+PHj6O6uhqDBg2Ci4sLZs2aBVNTU+jo6EBHRwexsbFIS0uDs7MzZs+erfKMJiMjI+zfvx/nzp1Dt27dMH/+fJVLdnp6epg3bx66du2KV199FVKpFLGxsU9VO9GLQCJoMtOSiEhDDg4OmDVrFmbNmqXtUoiI6oxnkIiIiIiUMCARERERKeElNiIiIiIlPINEREREpIQBiYiIiEgJAxIRERGREgYkIiIiIiUMSERERERKGJCIiIiIlDAgERERESlhQCIiIiJSwoBEREREpOT/AZyOYnErL/jXAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -310,54 +298,112 @@ } ], "source": [ - "rb.plot_df(dataframes['cgdrag_forpy_1.out'], iteration_labels)" + "filtered_labels = [\n", + " 'resnet_forpy_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_forpy_4_grad',\n", + " 'resnet_torch_4_nograd',\n", + " 'resnet_forpy_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FTorch and Forpy on an A100 GPU" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Create labels matching the order of tests in run_benchmarks.sh\n", + "\n", + "gpu_options_labels = []\n", + "\n", + "gpu_tests_grad = [\n", + " \"cgdrag_forpy\",\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_forpy\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "gpu_tests_nograd = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "gpu_tests_nograd_freeze = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "gpu_n_threads = [\"1\", \"8\"]\n", + "\n", + "for threads in gpu_n_threads:\n", + " for test in gpu_tests_grad:\n", + " gpu_options_labels.append(f\"{test}_{threads}_grad\")\n", + "for threads in gpu_n_threads:\n", + " for test in gpu_tests_nograd:\n", + " gpu_options_labels.append(f\"{test}_{threads}_nograd\")\n", + "for threads in gpu_n_threads:\n", + " for test in gpu_tests_nograd_freeze:\n", + " gpu_options_labels.append(f\"{test}_{threads}_freeze\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Reading: ../build/cgdrag_forpy_1.out\n", - "Number of runs: 500\n", - "Reading: ../build/cgdrag_torch_1_explicit.out\n", - "Number of runs: 500\n", - "Reading: ../build/cgdrag_torch_1_implicit.out\n", - "Number of runs: 500\n" + "Reading: ../../results/ampere_options_grad/output_10k/slurm-37429435.out\n", + "Reading: ../../results/ampere_options_grad/output_100k/slurm-37431441.out\n" ] } ], "source": [ - "summary_data = {}\n", - "summary_labels = [\n", - " \"full loop\",\n", - " \"module creation\",\n", - " \"module deletion\",\n", - " \"array allocation\",\n", - " \"array deallocation\",\n", - " \"tensor creation\",\n", - " \"tensor deletion\",\n", - " \"forward pass\",\n", - " \"Overall mean\",\n", - "]\n", + "benchmarks_options_gpu_10k = rb.read_slurm_walltime(filepath_options_gpu_10k, gpu_options_labels)\n", + "benchmarks_options_gpu_100k = rb.read_slurm_walltime(filepath_options_gpu_100k, gpu_options_labels)\n", + "\n", + "# Scale by number of iterations\n", + "for key, value in benchmarks_options_gpu_10k.items():\n", + " benchmarks_options_gpu_10k[key] = value / 10000\n", "\n", - "# Create nested dictionary: summary_data[file][label][mean, min, max, stddev]\n", - "for file in files:\n", - " summary_data[file] = rb.read_summary_data(directory, file, summary_labels)" + "for key, value in benchmarks_options_gpu_100k.items():\n", + " benchmarks_options_gpu_100k[key] = value / 100000" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -367,30 +413,35 @@ } ], "source": [ - "summary_labels = [\n", - " # \"full loop\",\n", - " # \"module creation\",\n", - " \"module deletion\",\n", - " \"array allocation\",\n", - " \"array deallocation\",\n", - " \"tensor creation\",\n", - " \"tensor deletion\",\n", - " # \"forward pass\",\n", - " # \"Overall mean\",\n", + "filtered_labels = [\n", + " 'cgdrag_forpy_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_forpy_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", "]\n", "\n", - "# Plot subset of data with error bars\n", - "rb.plot_summary_with_stddev(summary_data, summary_labels)" + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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AEREZAgyQCZjTzYR2DNERERERo7JEBERERk1JkNERERk1JgMERERkVFjMkRERERGjckQERERGTUmQ0RERGTUmAwRERGRUWMyREREREaNyRAREREZNSZDREREZNSYDBEREZFRYzJERERERo3JEBERERk1U0MH8LS7XVQK1d17uFN4F+K/ZVdz7+J2SSEAwMbCDE0sFYYLkIiIiKrEZKiGDpy/iR2J1yHXFEL237JVey9AI28EABji1RpDvRwMFyARERFViclQDQV0agkvxyYoLVFhxW9luzP8hU5QKG0AlPUMERHVB+zJJqoYk6EaamKpQBNLBUqK78NEXtY31LZZIyjNGxk4MiIibezJJqoYkyEiIiPBnmyiijEZqiFViQr5JfkoLS3AXaEBAFy9cw2K0nwAgLXSGjb//aAhIjIk9mQTVYzJUA0dTIvFrsu7AY0GFqLsKvzKY8sAedldCwY4B2GQa7AhQyQiAsCTN6LKMBmqod5FJfC4lVf2wuy/19rzVNJ8a9sSA0RFRFQeT96IKsZkqIZsXF+CjXPvyhcwb1JnsRARVYUnb0QVYzJUU5bNyiYionqOJ29EFasXj+NYs2YNnJ2dYW5uDl9fXxw7dkynet999x1kMhmGDRtWuwESETUEls2AZu0rn3hiR0bK4MnQ1q1bER4ejsjISCQkJMDT0xNBQUG4ceNGlfUuX76M999/H3369KmjSImIiKghMngytGLFCowfPx5hYWFwd3fHunXrYGlpiejo6ErrqNVqjBo1CgsWLED79u3rMFoiIiJqaAyaDJWWluLEiRMIDAyUyuRyOQIDA3H48OFK6y1cuBC2trYYO3bsY9soKSlBfn6+1kRERET0gEGToZycHKjVatjZ2WmV29nZISsrq8I6Bw8exJdffon169fr1MaSJUtgY2MjTY6OjjWOm4iIiBoOg18mq46CggK8+eabWL9+PVq0aKFTnYiICKhUKmnKyMio5SiJiIjoaWLQn9a3aNECJiYmyM7O1irPzs6Gvb19ueUvXryIy5cvY/DgwVKZRlN2F1VTU1OkpKSgQ4cOWnWUSiWUSmUtRE9EREQNgUF7hhQKBby9vREXFyeVaTQaxMXFwc/Pr9zyrq6uOH36NBITE6VpyJAheO6555CYmMhLYERERFRtBr/pYnh4OEJDQ+Hj44OePXti1apVKCwsRFhYGAAgJCQEDg4OWLJkCczNzdG1a1et+k2aNAGAcuVEREREujB4MhQcHIybN29i3rx5yMrKgpeXF2JjY6VB1enp6ZDLn6qhTURERPQUkQnx36f1GYn8/HzY2NhApVLB2tra0OEQERGRDmrz+5tdLkRERGTUmAwRERGRUWMyREREREaNyRAREREZNSZDREREZNSYDBEREZFRe6JkKDY2FgcPHpRer1mzBl5eXnjjjTeQl5ent+CIiIiIatsTJUMzZsxAfn4+AOD06dN47733MHDgQKSlpSE8PFyvARIRERHVpie6A3VaWhrc3d0BAD/++CNeeuklLF68GAkJCRg4cKBeAyQiIiKqTU/UM6RQKFBUVAQA2Lt3L1544QUAQLNmzaQeIyIiIqKnwRP1DPXu3Rvh4eHw9/fHsWPHsHXrVgDA+fPn0aZNG70GSERERFSbnqhnaPXq1TA1NcUPP/yAtWvXwsHBAQCwa9cuvPjii3oNkIiIiKg28UGtREREVO/xQa1EREREtYTJEBERERk1JkNERERk1JgMERERkVGrVjLUtm1bTJ48Gb/99hvu379fWzERERER1ZlqJUObN2+GUqnEpEmT0KJFCwQHB+Obb77B7du3ayk8IiIiotr1xD+tP3PmDHbs2IGff/4ZiYmJ6NWrF4YMGYIhQ4agffv2+o5Tb/jTeiIioqdPvfxpfZcuXRAREYEjR47g8uXLGDlyJOLi4tC1a1d07doVv/76qz7jJCIiIqoVer/pYlFREXbv3g0rKysEBgbqc9V6wZ4hIiKip09tfn8/0bPJqmJpaYmXX35Z36slIiIiqhX8aT0REREZNSZDREREZNSYDBEREZFRq1EylJqait27d+Pu3bsAAD2PxSYiIiKqdU+UDN26dQuBgYHo1KkTBg4ciMzMTADA2LFj8d577+k1QCIiIqLa9ETJ0PTp02Fqaor09HRYWlpK5cHBwYiNjdVbcERERES17Yl+Wv/bb79h9+7daNOmjVa5i4sLrly5opfAiIiIiOrCE/UMFRYWavUIPZCbmwulUlnjoIiIiIjqyhMlQ3369MGmTZuk1zKZDBqNBsuWLcNzzz2nt+CIiIiIatsTXSZbtmwZ+vXrhz///BOlpaWYOXMmzpw5g9zcXMTHx+s7RiIiIqJa80Q9Q127dsX58+fRu3dvDB06FIWFhXjllVdw8uRJdOjQQd8xEhEREdUavT+otb7jg1qJiIiePvXyQa3FxcVISkrCjRs3oNFotOYNGTKkxoERERER1YUnSoZiY2MREhKCnJyccvNkMhnUanWNAyMiIiKqC080ZmjKlCkYPnw4MjMzodFotCYmQkRERPQ0eaJkKDs7G+Hh4bCzs9N3PERERER16omSoddeew379+/XcyhEREREde+Jfk1WVFSE4cOHo2XLlujWrRvMzMy05k+dOlVvAeobf01GRET09Kl3vyb79ttv8dtvv8Hc3Bz79++HTCaT5slksnqdDBERERE97ImSoTlz5mDBggWYPXs25PInutJGREREVC88USZTWlqK4OBgvSVCa9asgbOzM8zNzeHr64tjx45VuuxPP/0EHx8fNGnSBI0aNYKXlxc2b96slziIiIjI+DxRNhMaGoqtW7fqJYCtW7ciPDwckZGRSEhIgKenJ4KCgnDjxo0Kl2/WrBnmzJmDw4cPIykpCWFhYQgLC8Pu3bv1Eg8REREZlycaQD116lRs2rQJnp6e8PDwKDeAesWKFTqvy9fXFz169MDq1asBABqNBo6OjpgyZQpmz56t0zqeeeYZDBo0CIsWLXrsshxATURE9PSpdwOoT58+je7duwMA/vrrL615Dw+mfpzS0lKcOHECERERUplcLkdgYCAOHz782PpCCPznP/9BSkoKli5dWuEyJSUlKCkpkV7n5+frHB8RERE1fE+UDO3bt08vjefk5ECtVpe7eaOdnR3OnTtXaT2VSgUHBweUlJTAxMQE//rXv9C/f/8Kl12yZAkWLFigl3iJiIio4XkqfwpmZWWFxMREHD9+HB999BHCw8MrvQlkREQEVCqVNGVkZNRtsERERFSv6dwz9Morr2Djxo2wtrbGK6+8UuWyP/30k07rbNGiBUxMTJCdna1Vnp2dDXt7+0rryeVydOzYEQDg5eWF5ORkLFmyBH379i23rFKphFKp1CkeIiIiMj469wzZ2NhI44FsbGyqnHSlUCjg7e2NuLg4qUyj0SAuLg5+fn46r0ej0WiNCyIiIiLSlc49Qxs2bMDChQvx/vvvY8OGDXoLIDw8HKGhofDx8UHPnj2xatUqFBYWIiwsDAAQEhICBwcHLFmyBEDZGCAfHx906NABJSUl2LlzJzZv3oy1a9fqLSYiIiIyHtUaQL1gwQJMnDgRlpaWegsgODgYN2/exLx5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", + "image/png": "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uoclCAK++OILPP300xAEAdeuXRMfcrkcpaWlWqefIiMj1X5+q/fJxOT+r5mqqipcv34dbdu2xWOPPaa1fl0dOHAApqamePnll9XG582bB0EQ8M0336iNh4SEiEfFAKB3796wsrJSu2vRxsYGGRkZuHLlygNfv3379rh27Vq9eqfmhafY6JFUXFwMpVIJLy+vWusuXbqEwMBArfFu3bpp1QGAh4eH2ri9vb3OIAIA7u7uWmN37txBXFwcduzYgYKCArVrKkpLS/XuqzaCxvUaANCuXTtcv35da3zmzJkYOXIkgJpPv8XGxmLgwIEwNTWFnZ0devTogVatmtZHTPUv8IqKCq1l5eXlajUWFhY1nh4tLy/XCgO6Xquur6NPT3Wpe1jFxcW4ceMGEhISkJCQoLOmqKhI7bmun2eVSoV///vfePfdd5Gbm4uqqipxWX1PvV66dAkymQzt2rVTG68+7Vj9/2K1f17XVa19+/b4+++/xefr1q1DZGQkXFxc4OvrixEjRmDixIno0qWL1rqCIDS7uaSofprWpxfRI0TXL7M5c+Zgx44diI6ORmBgIKytrSGRSBAREQGVSmWw17a1tVX7BVHN09MTp06dQkFBAZydncXx7t27o3v37gD+d7RCU69evbQu+v6nBx3luH37do3bNpQOHTrA3NwcV69e1VpWPSaTyQAATk5OqKqqQlFRETp27CjWVVZW4vr162JdTZycnHD48GGtX6i6Xuef45o9VfeszzYfVvXP2osvvojIyEidNb1791Z7ruvn+fXXX8eyZcswefJkrF69Gh06dICJiQmio6MN+vNcG82jtNX++Q+E559/HgMHDsR//vMffPvtt1i/fj3efPNNfPnll1o3JPz9999a/xCilomn2OiRZG9vDysrK5w5c6bWOldXV1y4cEFrXHPM1dUVAHD+/Hm18eLiYp1BpCb79u1DZGQkNmzYgDFjxmDo0KEYMGAAbty4Ua++auLp6Ym///5b7agUAPEo0aefflrnnuuq+j06d+6czuXnzp0TaxqKiYkJevXqhaysLK1lGRkZ6NKli3hkovr0pWZtVlYWVCqV2ulNXXx8fHD79m3k5ORovc4/t+/s7Ax7e3udPWVmZqq9Tl23qQ9dR0Ps7e3Rrl07VFVVISQkROfjn6GxJvv27cPgwYOxfft2RERE4KmnnkJISIjWz7M+R2RcXV1x5coV3Lx5U2387Nmz4vL6cHJywsyZM5GUlITc3FzY2tpi7dq1ajX37t1Dfn6+1kXy1DIxINEjycTEBGFhYfj66691/mKq/telXC5Henq62gy/JSUlWgEiJCQErVu3xjvvvKP2L9NNmzbp1ZepqanWqa933nlH7dSEPn3VJDAwEIIg4MSJE2rjzz//PHr27InVq1fj559/1rmurlNzdeHk5AQfHx988sknWr8gT5w4gZ9//rlO0wc8rDFjxuD48eNqf+/nzp3Dd999h7Fjx4pjQ4YMQYcOHbBt2za19bdt24Y2bdogNDS01tcZPXo0WrdujXfffVccEwQB8fHxcHZ2VrtL67nnnkNycjLy8/PFsbS0NPzxxx9qPemzzbqytLTU+vswNTXFc889hy+++ELnPyJ0zfCti66f571796KgoECrBwBafegyYsQIVFVVYcuWLWrjb7/9NiQSid4/Q1VVVVr/UOjYsSNkMpnW6czff/8d5eXl9XqfqfnhKTZ6ZL3++uv49ttvERwcjOnTp6NHjx64evUq9u7di59++gk2NjZYsGABPvnkEwwdOhRz5swRb6fv3LkzSkpKxH/52tvbY/78+YiLi8PIkSMxYsQIZGdn45tvvoGdnV2dexo5ciQ+/vhjWFtbo2fPnkhPT8ehQ4e0rteoa181GTBgAGxtbXHo0CFxviIAaN26Nf7zn/9ALpdjwIABePbZZzFw4EBYWlqioKAA+/fvR15e3gPDQU02btwIuVwOHx8fTJo0CTKZDDk5OUhISICTkxMWLVqkVr9ixQqsXLkShw8fxqBBg2rd9scff4xLly7h9u3bAIAffvgBa9asAQBMmDBBPLIwc+ZMvP/++wgNDcX8+fPRunVrbNy4EQ4ODpg3b564PQsLC6xevRqzZs3C2LFjIZfL8eOPP+KTTz7B2rVr0aFDB7H2yJEjGDx4MJYvXy5+xUmnTp0QHR2N9evX4+7du+jXrx+SkpLw448/4tNPP1U79bN48WLs3bsXgwcPxty5c3Hr1i2sX78evXr1QlRUlFinzzbrytfXF4cOHcLGjRshk8ng7u6OgIAAvPHGGzh8+DACAgIwbdo09OzZEyUlJTh58iQOHTqEkpKSB2575MiRWLVqFaKiohAUFIRff/0Vn376qda1PV27doWNjQ3i4+PRrl07WFpaIiAgQOd1TU8//TQGDx6MJUuW4OLFi/D29sa3336Lr776CtHR0WoXZNfFzZs30alTJ4wZMwbe3t5o27YtDh06hOPHj2PDhg1qtampqWjTpg2/v/BR0ej3zRE1IZcuXRImTpwo2NvbC+bm5kKXLl2EWbNmqX29Q3Z2tjBw4EDB3Nxc6NSpkxAXFyfOEq1QKMS6qqoqYeXKlYKTk5NgYWEhDBo0SDhz5ozWTNrVt/nrml7g77//FqKiogQ7Ozuhbdu2glwuF86ePatzNu669lWTl19+WejWrZvOZTdu3BBWrVol9OnTR2jbtq1gZmYmuLi4CGPGjBG+/vprtdoH3b6v6eeffxZGjhwptG/fXmjVqpXg7OwsTJ06Vbh8+bJW7bx58wSJRCLk5OQ8cLvBwcECAJ2Pw4cPq9Xm5+cLY8aMEaysrIS2bdsKI0eOFM6fP69zuwkJCcJjjz0mmJmZCV27dhXefvtttakcBEEQvv76awGAEB8frzZeVVUlvP7664Krq6tgZmYmPP7448Inn3yi83XOnDkjPPXUU0KbNm0EGxsbYfz48Tr/HvXZpiZdt/mfPXtW+Ne//iVYWFhoTUlRWFgozJo1S3BxcRFat24tODo6Ck8++aSQkJAg1tT2919eXi7MmzdP/H/iiSeeENLT04Xg4GAhODhYrfarr74SevbsKbRq1Urtln/N2/wF4f7XxbzyyiuCTCYTWrduLXh4eAjr16/X+nsBoPP2/X/+/1RRUSG8+uqrgre3t9CuXTvB0tJS8Pb2Ft59912t9QICAoQXX3xRa5xaJokg1PN4OdEjLDo6Gu+99x5u3bpVr3+1NxR9+vrrr7/g6emJb775Bk8++WQjdagff39/uLq6Yu/evcZupVYLFizAZ599hgsXLtR5sk5qXk6dOoW+ffvi5MmT9brWi5ofBiSiB7hz547aHTrXr19H9+7d0bdvX6N+5YAh+poxYwYuXLjQJL86QalUwt7eHqdOnWryF8X269cP06ZNE2ejppan+k7Sf371C7VsDEhED+Dj44NBgwahR48eKCwsxPbt23HlyhWkpaXhX//6F/siImqBeJE20QOMGDEC+/btQ0JCAiQSCfr27Yvt27cbPYQ01b6IiFoCHkEiIiIi0sB5kIiIiIg0MCARERERaeA1SPWkUqlw5coVtGvXjl9cSERE1EwIgoCbN29CJpPBxKTm40QMSPV05coVuLi4GLsNIiIiqof8/Hx06tSpxuUMSPVU/YWW+fn5sLKyMnI3REREVBdKpRIuLi7i7/GaMCDVU/VpNSsrKwYkIiKiZuZBl8fwIm0iIiIiDQxIRERERBqMHpC2bt0KNzc3SKVSBAQEIDMzs9b6vXv3wtPTE1KpFL169cKBAwfUlguCgNjYWDg5OcHCwgIhISE4f/68Ws0ff/yB0aNHw87ODlZWVhgwYAAOHz5s8H0jIiKi5smo1yDt2bMHMTExiI+PR0BAADZt2gS5XI5z586hY8eOWvXHjh3DuHHjEBcXh5EjR2LXrl0ICwvDyZMn4eXlBQBYt24dNm/ejJ07d8Ld3R3Lli2DXC7H77//DqlUCgAYOXIkPDw88N1338HCwgKbNm3CyJEj8eeff8LR0bFR3wMiImr5VCoVKisrjd3GI6F169YwNTV96O0Y9atGAgIC0K9fP2zZsgXA/R8gFxcXzJkzBwsXLtSqDw8PR1lZGZKTk8Wx/v37w8fHB/Hx8RAEATKZDPPmzcP8+fMBAKWlpXBwcEBiYiIiIiJw7do12Nvb44cffsDAgQMBADdv3oSVlRVSU1MREhJSp96VSiWsra1RWlrKi7SJiKhGlZWVyM3NhUqlMnYrjwwbGxs4OjrqvBC7rr+/jXYEqbKyEidOnMCiRYvEMRMTE4SEhCA9PV3nOunp6YiJiVEbk8vlSEpKAgDk5uZCoVCohRxra2sEBAQgPT0dERERsLW1xWOPPYaPPvoIffv2hbm5Od577z107NgRvr6+ht9RIiJ6ZAmCgKtXr8LU1BQuLi61TkxID08QBNy+fRtFRUUAACcnp3pvy2gB6dq1a6iqqoKDg4PauIODA86ePatzHYVCobNeoVCIy6vHaqqRSCQ4dOgQwsLC0K5dO5iYmKBjx45ISUlB+/bta+y3oqICFRUV4nOlUlnHPSUiokfVvXv3cPv2bchkMrRp08bY7TwSLCwsAABFRUXo2LFjvU+3PXJRVhAEzJo1Cx07dsSPP/6IzMxMhIWF4emnn8bVq1drXC8uLg7W1tbig7NoExHRg1RVVQEAzMzMjNzJo6U6jN69e7fe2zBaQLKzs4OpqSkKCwvVxgsLC2u8UNrR0bHW+uo/a6v57rvvkJycjN27d+OJJ55A37598e6778LCwgI7d+6ssd9FixahtLRUfOTn5+u3w0RE9Mjid3Y2LkO830YLSGZmZvD19UVaWpo4plKpkJaWhsDAQJ3rBAYGqtUDQGpqqljv7u4OR0dHtRqlUomMjAyx5vbt2wCgdR7YxMSk1gvozM3NxVmzOXs2ERFRy2bU2/xjYmIQGRkJPz8/+Pv7Y9OmTSgrK0NUVBQAYOLEiXB2dkZcXBwAYO7cuQgODsaGDRsQGhqK3bt3IysrCwkJCQDuJ8bo6GisWbMGHh4e4m3+MpkMYWFhAO6HrPbt2yMyMhKxsbGwsLDA+++/j9zcXISGhhrlfSAiIqKmxagBKTw8HMXFxYiNjYVCoYCPjw9SUlLEi6zz8vLUjvQEBQVh165dWLp0KRYvXgwPDw8kJSWJcyABwIIFC1BWVobp06fjxo0bGDBgAFJSUsQ5kOzs7JCSkoIlS5ZgyJAhuHv3Lh5//HF89dVX8Pb2btw3gIiIHkn+aw816utlLqnbFDbVJk2apPOyk/Pnz6Nbt26GaqtJM+o8SM0Z50EiIqIHKS8vR25uLtzd3cV/qAPNIyAVFhZix44dauP29vZ63xVWWVnZ6Bep1/S+A3X//f3I3cVGRERED2Zubg5HR0e1h6mpKb7//nv4+/vD3NwcTk5OWLhwIe7duyeuN2jQIMyePRvR0dGws7ODXC4HcP8ymG3btmH48OGwsLBAly5dsG/fPnG9IUOGYPbs2Wo9FBcXw8zMTOv648bAgERERER1UlBQgBEjRqBfv344ffo0tm3bhu3bt2PNmjVqdTt37oSZmRmOHj2K+Ph4cXzZsmV47rnncPr0aYwfPx4RERHIyckBAEydOhW7du1Sm3Pwk08+gbOzM4YMGdI4O/gPRr0GiYiIjKOxT/E8CvQ9jdXUJScno23btuLz4cOHo3v37nBxccGWLVsgkUjg6emJK1eu4LXXXkNsbKx43bCHhwfWrVuntc2xY8di6tSpAIDVq1cjNTUV77zzDt599108++yzmD17Nr766is8//zzAIDExERMmjTJKNMk8AgSERERaRk8eDBOnTolPjZv3oycnBwEBgaqBZYnnngCt27dwuXLl8Wxmr66S3Man8DAQPEIklQqxYQJE/Dhhx8CAE6ePIkzZ85g0qRJBt6zuuERJCIiItJiaWlZ7zvWLC0t67Xe1KlT4ePjg8uXL2PHjh0YMmQIXF1d67Wth8UjSERERFQnPXr0QHp6Ov55A/zRo0fRrl07dOrU6YHr//zzz1rPe/ToIT7v1asX/Pz88P7772PXrl2YPHmy4ZrXEwMSERER1cnMmTORn5+POXPm4OzZs/jqq6+wfPlyxMTEaH1DhS579+7Fhx9+iD/++APLly9HZmam1p1rU6dOxRtvvAFBEPDMM8801K48EAMSERER1YmzszMOHDiAzMxMeHt746WXXsKUKVOwdOnSOq2/cuVK7N69G71798ZHH32Ezz77DD179lSrGTduHFq1aoVx48ZpzWHUmHgNEhERUSNr6ne8JSYm1rgsODgYmZmZNS4/cuRIjctkMhm+/fbbWl/72rVrKC8vx5QpUx7UZoNiQCIiIiKju3v3Lq5fv46lS5eif//+6Nu3r1H74Sk2IiIiMrqjR4/CyckJx48fV5tc0lh4BImIiIga3IO++nXQoEEPrGlMPIJEREREpIEBiYiIiEgDAxIRERGRBgYkIiIiIg0MSEREREQaGJCIiIiINDAgERERUZN05MgRSCQS3Lhxo9Ffm/MgERERNba3Hmvc15t/Tq/ySZMmYefOnXq/zOHDhzFo0CC912uKGJCIiIhIy7Bhw7Bjxw7xeWVlJUxNTWFqagoAmDt3LpRKpVpNhw4d6rz9qqoqSCQSmJg0zZNZTbMrIiIiMipzc3M4OjqKj86dO8PZ2Vl8bmFhoVZjbm6OqVOnon379mjTpg2GDx+O8+fPi9tLTEyEjY0N9u/fj549e8Lc3Bx5eXmoqKjAa6+9BhcXF5ibm6Nbt27Yvn27Wi8nTpyAn58f2rRpg6CgIJw7p98RsfpgQCIiIqKHNmnSJGRlZWH//v1IT0+HIAgYMWIE7t69K9bcvn0bb775Jj744AP89ttv6NixIyZOnIjPPvsMmzdvRk5ODt577z20bdtWbdtLlizBhg0bkJWVhVatWmHy5MkNvj88xUZERERakpOT1YLK8OHDsXfvXp2158+fx/79+3H06FEEBQUBAD799FO4uLggKSkJY8eOBQDcvXsX7777Lry9vQEAf/zxBz7//HOkpqYiJCQEANClSxet7a9duxbBwcEAgIULFyI0NBTl5eWQSqWG22ENDEhERESkZfDgwdi2bZv43NLSssbanJwctGrVCgEBAeKYra0tHnvsMeTk5IhjZmZm6N27t/j81KlTMDU1FcNPTf65jpOTEwCgqKgInTt3rvsO6YkBiYiIiLRYWlqiW7duBt2mhYUFJBKJ2vO6aN26tfjf1eurVCqD9qaJ1yARERHRQ+nRowfu3buHjIwMcez69es4d+4cevbsWeN6vXr1gkqlwvfff98YbeqFAYmIiIgeioeHB0aPHo1p06bhp59+wunTp/Hiiy/C2dkZo0ePrnE9Nzc3REZGYvLkyUhKSkJubi6OHDmCzz//vBG7140BiYiIiB7ajh074Ovri5EjRyIwMBCCIODAgQNqp8d02bZtG8aMGYOZM2fC09MT06ZNQ1lZWSN1XTOJIAiCsZtojpRKJaytrVFaWgorKytjt0NEpBf/tYeM3UKLk7kkRGusvLwcubm5cHd3b9A7rkhdbe97XX9/8wgSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQ0iYC0detWuLm5QSqVIiAgAJmZmbXW7927F56enpBKpejVqxcOHDigtlwQBMTGxsLJyQkWFhYICQlR+8K8I0eOQCKR6HwcP368QfaRiIgeXbwfqnEZ4v02ekDas2cPYmJisHz5cpw8eRLe3t6Qy+UoKirSWX/s2DGMGzcOU6ZMQXZ2NsLCwhAWFoYzZ86INevWrcPmzZsRHx+PjIwMWFpaQi6Xo7y8HAAQFBSEq1evqj2mTp0Kd3d3+Pn5Ncp+ExFRy2dqagoAqKysNHInj5bbt28DwAOnGKiN0W/zDwgIQL9+/bBlyxYA96cOd3FxwZw5c7Bw4UKt+vDwcJSVlSE5OVkc69+/P3x8fBAfHw9BECCTyTBv3jzMnz8fAFBaWgoHBwckJiYiIiJCa5t3796Fs7Mz5syZg2XLltWpb97mT0TNGW/zNzxdt/kLgoC8vDzcvXsXMpkMJiZGPy7RogmCgNu3b6OoqAg2Njbi97b9U11/fxv1u9gqKytx4sQJLFq0SBwzMTFBSEgI0tPTda6Tnp6OmJgYtTG5XI6kpCQAQG5uLhQKhfitwABgbW2NgIAApKen6wxI+/fvx/Xr1xEVFWWAvSIiIrpPIpHAyckJubm5uHTpkrHbeWTY2NjA0dHxobZh1IB07do1VFVVwcHBQW3cwcEBZ8+e1bmOQqHQWa9QKMTl1WM11Wjavn075HI5OnXqVGOvFRUVqKioEJ8rlcoaa4mIiKqZmZnBw8ODp9kaSevWrcVTmw/DqAGpKbh8+TIOHjz4wO99iYuLw8qVKxupKyIiaklMTEw4k3YzY9SToXZ2djA1NUVhYaHaeGFhYY2HxhwdHWutr/6zrtvcsWMHbG1tMWrUqFp7XbRoEUpLS8VHfn5+7TtHREREzZZRA5KZmRl8fX2RlpYmjqlUKqSlpSEwMFDnOoGBgWr1AJCamirWu7u7w9HRUa1GqVQiIyNDa5uCIGDHjh2YOHHiA690Nzc3h5WVldqDiIiIWiajn2KLiYlBZGQk/Pz84O/vj02bNqGsrEy8YHrixIlwdnZGXFwcAGDu3LkIDg7Ghg0bEBoait27dyMrKwsJCQkA7l8QFx0djTVr1sDDwwPu7u5YtmwZZDIZwsLC1F77u+++Q25uLqZOndqo+0xERERNm9EDUnh4OIqLixEbGwuFQgEfHx+kpKSIF1nn5eWp3RYZFBSEXbt2YenSpVi8eDE8PDyQlJQELy8vsWbBggUoKyvD9OnTcePGDQwYMAApKSla53+3b9+OoKAgeHp6Ns7OEhERUbNg9HmQmivOg0REzRnnQTI8XfMgUdNT19/fnLGKiIiISAMDEhEREZEGo1+DRNp46NvweOibiIj0wSNIRERERBoYkIiIiIg0MCARERERaWBAIiIiItLAgERERESkgQGJiIiISAMDEhEREZEGBiQiIiIiDQxIRERERBoYkIiIiIg0MCARERERaWBAIiIiItLAgERERESkgQGJiIiISAMDEhEREZEGBiQiIiIiDQxIRERERBoYkIiIiIg0MCARERERaWBAIiIiItLAgERERESkgQGJiIiISAMDEhEREZEGBiQiIiIiDQxIRERERBoYkIiIiIg0MCARERERaWBAIiIiItLAgERERESkgQGJiIiISAMDEhEREZEGowekrVu3ws3NDVKpFAEBAcjMzKy1fu/evfD09IRUKkWvXr1w4MABteWCICA2NhZOTk6wsLBASEgIzp8/r7Wd//73vwgICICFhQXat2+PsLAwQ+4WERERNWNGDUh79uxBTEwMli9fjpMnT8Lb2xtyuRxFRUU6648dO4Zx48ZhypQpyM7ORlhYGMLCwnDmzBmxZt26ddi8eTPi4+ORkZEBS0tLyOVylJeXizVffPEFJkyYgKioKJw+fRpHjx7FCy+80OD7S0RERM2DRBAEwVgvHhAQgH79+mHLli0AAJVKBRcXF8yZMwcLFy7Uqg8PD0dZWRmSk5PFsf79+8PHxwfx8fEQBAEymQzz5s3D/PnzAQClpaVwcHBAYmIiIiIicO/ePbi5uWHlypWYMmVKvXtXKpWwtrZGaWkprKys6r0dXfzXHjLo9gjIXBJi7BaImhR+zhgeP2eah7r+/jbaEaTKykqcOHECISH/+4EyMTFBSEgI0tPTda6Tnp6uVg8AcrlcrM/NzYVCoVCrsba2RkBAgFhz8uRJFBQUwMTEBH369IGTkxOGDx+udhSKiIiIHm1GC0jXrl1DVVUVHBwc1MYdHBygUCh0rqNQKGqtr/6ztpq//voLALBixQosXboUycnJaN++PQYNGoSSkpIa+62oqIBSqVR7EBERUctk9Iu0G5tKpQIALFmyBM899xx8fX2xY8cOSCQS7N27t8b14uLiYG1tLT5cXFwaq2UiIiJqZEYLSHZ2djA1NUVhYaHaeGFhIRwdHXWu4+joWGt99Z+11Tg5OQEAevbsKS43NzdHly5dkJeXV2O/ixYtQmlpqfjIz8+vy24SERFRM2S0gGRmZgZfX1+kpaWJYyqVCmlpaQgMDNS5TmBgoFo9AKSmpor17u7ucHR0VKtRKpXIyMgQa3x9fWFubo5z586JNXfv3sXFixfh6upaY7/m5uawsrJSexAREVHL1MqYLx4TE4PIyEj4+fnB398fmzZtQllZGaKiogAAEydOhLOzM+Li4gAAc+fORXBwMDZs2IDQ0FDs3r0bWVlZSEhIAABIJBJER0djzZo18PDwgLu7O5YtWwaZTCbOc2RlZYWXXnoJy5cvh4uLC1xdXbF+/XoAwNixYxv/TSAiIqImx6gBKTw8HMXFxYiNjYVCoYCPjw9SUlLEi6zz8vJgYvK/g1xBQUHYtWsXli5disWLF8PDwwNJSUnw8vISaxYsWICysjJMnz4dN27cwIABA5CSkgKpVCrWrF+/Hq1atcKECRNw584dBAQE4LvvvkP79u0bb+eJiIioyTLqPEjNGedBal44PwmROn7OGB4/Z5qHJj8PEhEREVFTxYBEREREpIEBiYiIiEgDAxIRERGRBgYkIiIiIg0MSEREREQaGJCIiIiINDAgEREREWnQOyDl5+fj8uXL4vPMzExER0eLX/dBRERE1NzpHZBeeOEFHD58GACgUCgwdOhQZGZmYsmSJVi1apXBGyQiIiJqbHp/F9uZM2fg7+8PAPj888/h5eWFo0eP4ttvv8VLL72E2NhYgzdJRETU5L31mLE7aFnmnzPqy+t9BOnu3bswNzcHABw6dAijRo0CAHh6euLq1auG7Y6IiIjICPQOSI8//jji4+Px448/IjU1FcOGDQMAXLlyBba2tgZvkIiIiKix6R2Q3nzzTbz33nsYNGgQxo0bB29vbwDA/v37xVNvRERERM2Z3tcgDRo0CNeuXYNSqUT79u3F8enTp6NNmzYGbY6IiIjIGPQOSABgamqqFo4AwM3NzRD9EBERERkdJ4okIiIi0sCARERERKSBAYmIiIhIQ50D0sSJE/HFF1/g1q1bDdkPERERkdHVOSB169YNr7/+Ouzt7TF8+HBs27YNBQUFDdkbERERkVHU+S622NhYxMbG4vLly9i/fz+SkpLwyiuv4PHHH8fo0aMxatQo+Pj4NGCrRA+BXwFgWEb+CgAiooam9zVInTp1wsyZM3Hw4EEUFxfjtddew7lz5zBkyBC4urpi9uzZ+O233xqiVyIiIqJG8VAXabdr1w7PP/88Pv30UxQXF+PDDz+Eqakp0tPTDdUfERERUaOr10SRupiamuLJJ5/Ek08+aahNEhERERkFb/MnIiIi0sCARERERKSBAYmIiIhIAwMSERERkYZ6XaSdlpaGtLQ0FBUVQaVSqS378MMPDdIYERERkbHoHZBWrlyJVatWwc/PD05OTpBIJA3RFxEREZHR6B2Q4uPjkZiYiAkTJjREP0RERERGp/c1SJWVlQgKCmqIXoiIiIiaBL0D0tSpU7Fr166G6IWIiIioSdA7IJWXl2Pjxo0IDg7GnDlzEBMTo/aoj61bt8LNzQ1SqRQBAQHIzMystX7v3r3w9PSEVCpFr169cODAAbXlgiAgNjYWTk5OsLCwQEhICM6fP69W4+bmBolEovZ444036tU/ERERtSx6B6RffvkFPj4+MDExwZkzZ5CdnS0+Tp06pXcDe/bsQUxMDJYvX46TJ0/C29sbcrkcRUVFOuuPHTuGcePGYcqUKcjOzkZYWBjCwsJw5swZsWbdunXYvHkz4uPjkZGRAUtLS8jlcpSXl6tta9WqVbh69ar4mDNnjt79ExERUcsjEQRBMGYDAQEB6NevH7Zs2QIAUKlUcHFxwZw5c7Bw4UKt+vDwcJSVlSE5OVkc69+/P3x8fBAfHw9BECCTyTBv3jzMnz8fAFBaWgoHBwckJiYiIiICwP0jSNHR0YiOjq5X30qlEtbW1igtLYWVlVW9tlET/7WHDLo9AjLNZxm7hZZl/jljd0APiZ8zhsfPGQNroM+Zuv7+fqiJIi9fvozLly/Xe/3KykqcOHECISEh/2vIxAQhISFIT0/XuU56erpaPQDI5XKxPjc3FwqFQq3G2toaAQEBWtt84403YGtriz59+mD9+vW4d+9evfeFiIiIWg69A5JKpcKqVatgbW0NV1dXuLq6wsbGBqtXr9aaNPJBrl27hqqqKjg4OKiNOzg4QKFQ6FxHoVDUWl/954O2+fLLL2P37t04fPgw/u///g+vv/46FixYUGOvFRUVUCqVag8iIiJqmfSeB2nJkiXYvn073njjDTzxxBMAgJ9++gkrVqxAeXk51q5da/AmG8I/Lyjv3bs3zMzM8H//93+Ii4uDubm5Vn1cXBxWrlzZmC0SERGRkeh9BGnnzp344IMPMGPGDPTu3Ru9e/fGzJkz8f777yMxMVGvbdnZ2cHU1BSFhYVq44WFhXB0dNS5jqOjY6311X/qs03g/rVQ9+7dw8WLF3UuX7RoEUpLS8VHfn5+rftGREREzZfeAamkpASenp5a456enigpKdFrW2ZmZvD19UVaWpo4plKpkJaWhsDAQJ3rBAYGqtUDQGpqqljv7u4OR0dHtRqlUomMjIwatwkAp06dgomJCTp27Khzubm5OaysrNQeRERE1DLpfYrN29sbW7ZswebNm9XGt2zZAm9vb70biImJQWRkJPz8/ODv749NmzahrKwMUVFRAICJEyfC2dkZcXFxAIC5c+ciODgYGzZsQGhoKHbv3o2srCwkJCQAACQSCaKjo7FmzRp4eHjA3d0dy5Ytg0wmQ1hYGID7F3pnZGRg8ODBaNeuHdLT0/HKK6/gxRdfRPv27fXeByIiImpZ9A5I69atQ2hoKA4dOiQekUlPT0d+fr7WhI11ER4ejuLiYsTGxkKhUMDHxwcpKSniRdZ5eXkwMfnfga6goCDs2rULS5cuxeLFi+Hh4YGkpCR4eXmJNQsWLEBZWRmmT5+OGzduYMCAAUhJSYFUKgVw/2jQ7t27sWLFClRUVMDd3R2vvPJKvSe6JCIiopalXvMgXblyBVu3bsXZs2cBAD169MDMmTMhk8kM3mBTxXmQmhfOT2JgnAep2ePnjOHxc8bAjDwPkt5HkABAJpM1m7vViIiIiPRVp4D0yy+/wMvLCyYmJvjll19qre3du7dBGiMiIiIyljoFJB8fHygUCnTs2BE+Pj6QSCTQdWZOIpGgqqrK4E0SERERNaY6BaTc3FzY29uL/01ERETUktUpILm6uor/fenSJQQFBaFVK/VV7927h2PHjqnVEhERETVHek8UOXjwYJ0TQpaWlmLw4MEGaYqIiIjImPQOSIIgQCKRaI1fv34dlpaWBmmKiIiIyJjqfJv/s88+C+D+hdiTJk1S+0LXqqoq/PLLLwgKCjJ8h0RERESNrM4BydraGsD9I0jt2rWDhYWFuMzMzAz9+/fHtGnTDN8hERERUSOrc0DasWMHAMDNzQ3z58/n6TQiIiJqsfSeSXv58uUN0QcRERFRk1GvrxrZt28fPv/8c+Tl5aGyslJt2cmTJw3SGBEREZGx6H0X2+bNmxEVFQUHBwdkZ2fD398ftra2+OuvvzB8+PCG6JGIiIioUekdkN59910kJCTgnXfegZmZGRYsWIDU1FS8/PLLKC0tbYgeiYiIiBqV3gEpLy9PvJ3fwsICN2/eBABMmDABn332mWG7IyIiIjICvQOSo6OjOJN2586d8fPPPwO4/x1tur7AloiIiKi50TsgDRkyBPv37wcAREVF4ZVXXsHQoUMRHh6OZ555xuANEhERETU2ve9iS0hIgEqlAgDMmjULtra2OHbsGEaNGoX/+7//M3iDRERERI1Nr4B07949vP7665g8eTI6deoEAIiIiEBERESDNEdERERkDHqdYmvVqhXWrVuHe/fuNVQ/REREREan9zVITz75JL7//vuG6IWIiIioSdD7GqThw4dj4cKF+PXXX+Hr66v1nWyjRo0yWHNERERExqB3QJo5cyYAYOPGjVrLJBIJqqqqHr4rIiIiIiPSOyBV38FGRERE1FLpfQ3SP5WXlxuqDyIiIqImQ++AVFVVhdWrV8PZ2Rlt27bFX3/9BQBYtmwZtm/fbvAGiYiIiBqb3gFp7dq1SExMxLp162BmZiaOe3l54YMPPjBoc0RERETGoHdA+uijj5CQkIDx48fD1NRUHPf29sbZs2cN2hwRERGRMegdkAoKCtCtWzetcZVKhbt37xqkKSIiIiJj0jsg9ezZEz/++KPW+L59+9CnTx+DNEVERERkTHrf5h8bG4vIyEgUFBRApVLhyy+/xLlz5/DRRx8hOTm5IXokIiIialR6H0EaPXo0vv76axw6dAiWlpaIjY1FTk4Ovv76awwdOrQheiQiIiJqVHofQQKAgQMHIjU11dC9EBERETUJeh9B6tKlC65fv641fuPGDXTp0sUgTREREREZk94B6eLFizq/b62iogIFBQX1amLr1q1wc3ODVCpFQEAAMjMza63fu3cvPD09IZVK0atXLxw4cEBtuSAIiI2NhZOTEywsLBASEoLz58/r3FZFRQV8fHwgkUhw6tSpevVPRERELUudT7Ht379f/O+DBw/C2tpafF5VVYW0tDS4ubnp3cCePXsQExOD+Ph4BAQEYNOmTZDL5Th37hw6duyoVX/s2DGMGzcOcXFxGDlyJHbt2oWwsDCcPHkSXl5eAIB169Zh8+bN2LlzJ9zd3bFs2TLI5XL8/vvvkEqlattbsGABZDIZTp8+rXfvRERE1DJJBEEQ6lJoYnL/YJNEIoHmKq1bt4abmxs2bNiAkSNH6tVAQEAA+vXrhy1btgC4P5+Si4sL5syZg4ULF2rVh4eHo6ysTO2Ouf79+8PHxwfx8fEQBAEymQzz5s3D/PnzAQClpaVwcHBAYmIiIiIixPW++eYbxMTE4IsvvsDjjz+O7Oxs+Pj41KlvpVIJa2trlJaWwsrKSq99fhD/tYcMuj0CMs1nGbuFlmX+OWN3QA+JnzOGx88ZA2ugz5m6/v6u8yk2lUoFlUqFzp07o6ioSHyuUqlQUVGBc+fO6R2OKisrceLECYSEhPyvIRMThISEID09Xec66enpavUAIJfLxfrc3FwoFAq1GmtrawQEBKhts7CwENOmTcPHH3+MNm3a6NU3ERERtWx638WWm5trsBe/du0aqqqq4ODgoDbu4OBQ49eWKBQKnfUKhUJcXj1WU40gCJg0aRJeeukl+Pn54eLFiw/staKiAhUVFeJzpVL5wHWIiIioeapTQNq8eTOmT58OqVSKzZs311r78ssvG6SxhvTOO+/g5s2bWLRoUZ3XiYuLw8qVKxuwKyIiImoq6hSQ3n77bYwfPx5SqRRvv/12jXUSiUSvgGRnZwdTU1MUFhaqjRcWFsLR0VHnOo6OjrXWV/9ZWFgIJycntZrq64u+++47pKenw9zcXG07fn5+GD9+PHbu3Kn1uosWLUJMTIz4XKlUwsXFpY57SkRERM1JnQLSP0+rGfIUm5mZGXx9fZGWloawsDAA9691SktLw+zZs3WuExgYiLS0NERHR4tjqampCAwMBAC4u7vD0dERaWlpYiBSKpXIyMjAjBkzANw/IrZmzRpx/StXrkAul2PPnj0ICAjQ+brm5uZagYqIiIhapnrNpG1IMTExiIyMhJ+fH/z9/bFp0yaUlZUhKioKADBx4kQ4OzsjLi4OADB37lwEBwdjw4YNCA0Nxe7du5GVlYWEhAQA949iRUdHY82aNfDw8BBv85fJZGII69y5s1oPbdu2BQB07doVnTp1aqQ9JyIioqbK6AEpPDwcxcXFiI2NhUKhgI+PD1JSUsSLrPPy8sQpBgAgKCgIu3btwtKlS7F48WJ4eHggKSlJnAMJuD+3UVlZGaZPn44bN25gwIABSElJ0ZoDiYiIiEiXOs+DROo4D1LzwvlJDIzzIDV7/JwxPH7OGFhzmQeJiIiI6FGhV0C6d+8eVq1ahcuXLzdUP0RERERGp1dAatWqFdavX4979+41VD9ERERERqf3KbYhQ4bg+++/b4heiIiIiJoEve9iGz58OBYuXIhff/0Vvr6+sLS0VFs+atQogzVHREREZAx6B6SZM2cCADZu3Ki1TCKRoKqq6uG7IiIiIjIivQOSSqVqiD6IiIiImoyHus2/vLzcUH0QERERNRl6B6SqqiqsXr0azs7OaNu2Lf766y8AwLJly7B9+3aDN0hERETU2PQOSGvXrkViYiLWrVsHMzMzcdzLywsffPCBQZsjIiIiMga9A9JHH32EhIQEjB8/HqampuK4t7c3zp49a9DmiIiIiIxB74BUUFCAbt26aY2rVCrcvXvXIE0RERERGZPeAalnz5748ccftcb37duHPn36GKQpIiIiImPS+zb/2NhYREZGoqCgACqVCl9++SXOnTuHjz76CMnJyQ3RIxEREVGj0vsI0ujRo/H111/j0KFDsLS0RGxsLHJycvD1119j6NChDdEjERERUaPS+wgSAAwcOBCpqamG7oWIiIioSahXQAKArKws5OTkALh/XZKvr6/BmiIiIiIyJr0D0uXLlzFu3DgcPXoUNjY2AIAbN24gKCgIu3fvRqdOnQzdIxEREVGj0vsapKlTp+Lu3bvIyclBSUkJSkpKkJOTA5VKhalTpzZEj0RERESNSu8jSN9//z2OHTuGxx57TBx77LHH8M4772DgwIEGbY6IiIjIGPQ+guTi4qJzQsiqqirIZDKDNEVERERkTHoHpPXr12POnDnIysoSx7KysjB37ly89dZbBm2OiIiIyBj0PsU2adIk3L59GwEBAWjV6v7q9+7dQ6tWrTB58mRMnjxZrC0pKTFcp0RERESNRO+AtGnTpgZog4iIiKjp0DsgRUZGNkQfRERERE2G3tcgEREREbV0DEhEREREGhiQiIiIiDQwIBERERFpqHdAunDhAg4ePIg7d+4AAARBMFhTRERERMakd0C6fv06QkJC0L17d4wYMQJXr14FAEyZMgXz5s0zeINEREREjU3vgPTKK6+gVatWyMvLQ5s2bcTx8PBwpKSkGLQ5IiIiImPQex6kb7/9FgcPHkSnTp3Uxj08PHDp0iWDNUZERERkLHofQSorK1M7clStpKQE5ubmBmmKiIiIyJj0DkgDBw7ERx99JD6XSCRQqVRYt24dBg8eXK8mtm7dCjc3N0ilUgQEBCAzM7PW+r1798LT0xNSqRS9evXCgQMH1JYLgoDY2Fg4OTnBwsICISEhOH/+vFrNqFGj0LlzZ0ilUjg5OWHChAm4cuVKvfonIiKilkXvgLRu3TokJCRg+PDhqKysxIIFC+Dl5YUffvgBb775pt4N7NmzBzExMVi+fDlOnjwJb29vyOVyFBUV6aw/duwYxo0bhylTpiA7OxthYWEICwvDmTNn1HrcvHkz4uPjkZGRAUtLS8jlcpSXl4s1gwcPxueff45z587hiy++wJ9//okxY8bo3T8RERG1PBKhHvfnl5aWYsuWLTh9+jRu3bqFvn37YtasWXByctK7gYCAAPTr1w9btmwBAKhUKri4uGDOnDlYuHChVn14eDjKysqQnJwsjvXv3x8+Pj6Ij4+HIAiQyWSYN28e5s+fL/br4OCAxMRERERE6Oxj//79CAsLQ0VFBVq3bv3AvpVKJaytrVFaWgorKyu997s2/msPGXR7BGSazzJ2Cy3L/HPG7oAeEj9nDI+fMwbWQJ8zdf39rfdF2gBgbW2NJUuW1Lu5apWVlThx4gQWLVokjpmYmCAkJATp6ek610lPT0dMTIzamFwuR1JSEgAgNzcXCoUCISEhav0GBAQgPT1dZ0AqKSnBp59+iqCgoDqFIyIiImrZ6hWQysvL8csvv6CoqAgqlUpt2ahRo+q8nWvXrqGqqgoODg5q4w4ODjh79qzOdRQKhc56hUIhLq8eq6mm2muvvYYtW7bg9u3b6N+/v9pRKU0VFRWoqKgQnyuVygfsHRERETVXegeklJQUTJw4EdeuXdNaJpFIUFVVZZDGGsOrr76KKVOm4NKlS1i5ciUmTpyI5ORkSCQSrdq4uDisXLnSCF0SERFRY9P7Iu05c+Zg7NixuHr1KlQqldpD33BkZ2cHU1NTFBYWqo0XFhbC0dFR5zqOjo611lf/WZdt2tnZoXv37hg6dCh2796NAwcO4Oeff9b5uosWLUJpaan4yM/Pr/uOEhERUbOid0AqLCxETEyM1ims+jAzM4Ovry/S0tLEMZVKhbS0NAQGBupcJzAwUK0eAFJTU8V6d3d3ODo6qtUolUpkZGTUuM3q1wWgdhrtn8zNzWFlZaX2ICIiopZJ71NsY8aMwZEjR9C1a1eDNBATE4PIyEj4+fnB398fmzZtQllZGaKiogAAEydOhLOzM+Li4gAAc+fORXBwMDZs2IDQ0FDs3r0bWVlZSEhIAHD/NF90dDTWrFkDDw8PuLu7Y9myZZDJZAgLCwMAZGRk4Pjx4xgwYADat2+PP//8E8uWLUPXrl1rDVFERET0aNA7IG3ZsgVjx47Fjz/+iF69emnd9fXyyy/rtb3w8HAUFxcjNjYWCoUCPj4+SElJEY9Q5eXlwcTkfwe6goKCsGvXLixduhSLFy+Gh4cHkpKS4OXlJdYsWLAAZWVlmD59Om7cuIEBAwYgJSUFUqkUANCmTRt8+eWXWL58OcrKyuDk5IRhw4Zh6dKlnA2ciIiI9J8Hafv27XjppZcglUpha2urdkGzRCLBX3/9ZfAmmyLOg9S8cH4SA+M8SM0eP2cMj58zBtbc5kFasmQJVq5ciYULF6od2SEiIiJqKfROOJWVlQgPD2c4IiIiohZL75QTGRmJPXv2NEQvRERERE2C3qfYqqqqsG7dOhw8eBC9e/fWukh748aNBmuOiIiIyBj0Dki//vor+vTpAwA4c+aM2jJdM1ATERERNTd6B6TDhw83RB9ERERETQavtCYiIiLSUKcjSM8++ywSExNhZWWFZ599ttbaL7/80iCNERERERlLnQKStbW1eH2RtbV1gzZEREREZGx1Ckg7duzAqlWrMH/+fOzYsaOheyIiIiIyqjpfg7Ry5UrcunWrIXshIiIiahLqHJD0/Mo2IiIiomZLr7vYOM8RERERPQr0mgepe/fuDwxJJSUlD9UQERERkbHpFZBWrlzJu9iIiIioxdMrIEVERKBjx44N1QsRERFRk1Dna5B4/RERERE9KngXGxEREZGGOp9iU6lUDdkHERERUZPBL6slIiIi0sCARERERKSBAYmIiIhIAwMSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQwIBERERFpYEAiIiIi0sCARERERKSBAYmIiIhIAwMSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQ0iYC0detWuLm5QSqVIiAgAJmZmbXW7927F56enpBKpejVqxcOHDigtlwQBMTGxsLJyQkWFhYICQnB+fPnxeUXL17ElClT4O7uDgsLC3Tt2hXLly9HZWVlg+wfERERNS9GD0h79uxBTEwMli9fjpMnT8Lb2xtyuRxFRUU6648dO4Zx48ZhypQpyM7ORlhYGMLCwnDmzBmxZt26ddi8eTPi4+ORkZEBS0tLyOVylJeXAwDOnj0LlUqF9957D7/99hvefvttxMfHY/HixY2yz0RERNS0SQRBEIzZQEBAAPr164ctW7YAAFQqFVxcXDBnzhwsXLhQqz48PBxlZWVITk4Wx/r37w8fHx/Ex8dDEATIZDLMmzcP8+fPBwCUlpbCwcEBiYmJiIiI0NnH+vXrsW3bNvz111916lupVMLa2hqlpaWwsrLSd7dr5b/2kEG3R0Cm+Sxjt9CyzD9n7A7oIfFzxvD4OWNgDfQ5U9ff30Y9glRZWYkTJ04gJCREHDMxMUFISAjS09N1rpOenq5WDwByuVysz83NhUKhUKuxtrZGQEBAjdsE7oeoDh06PMzuEBERUQvRypgvfu3aNVRVVcHBwUFt3MHBAWfPntW5jkKh0FmvUCjE5dVjNdVounDhAt555x289dZbNfZaUVGBiooK8blSqayxloiIiJo3o1+DZGwFBQUYNmwYxo4di2nTptVYFxcXB2tra/Hh4uLSiF0SERFRYzJqQLKzs4OpqSkKCwvVxgsLC+Ho6KhzHUdHx1rrq/+syzavXLmCwYMHIygoCAkJCbX2umjRIpSWloqP/Pz8B+8gERERNUtGDUhmZmbw9fVFWlqaOKZSqZCWlobAwECd6wQGBqrVA0BqaqpY7+7uDkdHR7UapVKJjIwMtW0WFBRg0KBB8PX1xY4dO2BiUvtbYW5uDisrK7UHERERtUxGvQYJAGJiYhAZGQk/Pz/4+/tj06ZNKCsrQ1RUFABg4sSJcHZ2RlxcHABg7ty5CA4OxoYNGxAaGordu3cjKytLPAIkkUgQHR2NNWvWwMPDA+7u7li2bBlkMhnCwsIA/C8cubq64q233kJxcbHYT01HroiIiOjRYfSAFB4ejuLiYsTGxkKhUMDHxwcpKSniRdZ5eXlqR3eCgoKwa9cuLF26FIsXL4aHhweSkpLg5eUl1ixYsABlZWWYPn06bty4gQEDBiAlJQVSqRTA/SNOFy5cwIULF9CpUye1fow86wERERE1AUafB6m54jxIzQvnJzEwzoPU7PFzxvD4OWNgj/I8SERERERNEQMSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQwIBERERFpYEAiIiIi0sCARERERKSBAYmIiIhIAwMSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQwIBERERFpYEAiIiIi0sCARERERKSBAYmIiIhIAwMSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQwIBERERFpYEAiIiIi0sCARERERKSBAYmIiIhIAwMSERERkQYGJCIiIiINDEhEREREGhiQiIiIiDQwIBERERFpYEAiIiIi0sCARERERKSBAYmIiIhIAwMSERERkQajB6StW7fCzc0NUqkUAQEByMzMrLV+79698PT0hFQqRa9evXDgwAG15YIgIDY2Fk5OTrCwsEBISAjOnz+vVrN27VoEBQWhTZs2sLGxMfQuERERUTNn1IC0Z88exMTEYPny5Th58iS8vb0hl8tRVFSks/7YsWMYN24cpkyZguzsbISFhSEsLAxnzpwRa9atW4fNmzcjPj4eGRkZsLS0hFwuR3l5uVhTWVmJsWPHYsaMGQ2+j0RERNT8GDUgbdy4EdOmTUNUVBR69uyJ+Ph4tGnTBh9++KHO+n//+98YNmwYXn31VfTo0QOrV69G3759sWXLFgD3jx5t2rQJS5cuxejRo9G7d2989NFHuHLlCpKSksTtrFy5Eq+88gp69erVGLtJREREzYzRAlJlZSVOnDiBkJCQ/zVjYoKQkBCkp6frXCc9PV2tHgDkcrlYn5ubC4VCoVZjbW2NgICAGrdJREREpKmVsV742rVrqKqqgoODg9q4g4MDzp49q3MdhUKhs16hUIjLq8dqqqmviooKVFRUiM+VSuVDbY+IiIiaLqNfpN1cxMXFwdra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", "text/plain": [ "
" ] @@ -400,111 +451,348 @@ } ], "source": [ - "summary_labels = [\n", - " \"full loop\",\n", - " \"module creation\",\n", - " # \"module deletion\",\n", - " # \"array allocation\",\n", - " # \"array deallocation\",\n", - " # \"tensor creation\",\n", - " # \"tensor deletion\",\n", - " \"forward pass\",\n", - " \"Overall mean\",\n", + "filtered_labels = [\n", + " 'cgdrag_forpy_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_forpy_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", "]\n", "\n", - "labels = summary_labels \n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_100k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 100,000 iterations)\",\n", "\n", - "rb.plot_summary_with_stddev(summary_data, labels)" + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { - "image/png": "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4QYAABiFcAMAAIxCuAEAAEapUbhJT0/Xtm3b7PuLFy+W0+nUyJEjdezYMbcVBwAAUF01CjdTpkxRUVGRJGnv3r167LHHNHDgQO3fv18JCQluLRAAAKA6GtVkp/379yskJESStG7dOv3617/WX/7yF+3evVsDBw50a4EAAADVUaOZGx8fH/3444+SpPfee0+33367JOnqq6+2Z3QAAAA8oUYzN71791ZCQoL+8z//Uzt37lRaWpok6auvvlKbNm3cWiAAAEB11GjmZtGiRWrUqJHWrl2rv/71r2rdurUk6e9//7sGDBjg1gIBAACqo0bhpm3btvrb3/6mPXv2aNy4cfb25557TgsWLKh2f4sXL1ZwcLD8/PzUs2dP7dy5s9K269evV2RkpJo3b64rr7xSTqdTK1eurMlpAAAAA3n8c27S0tKUkJCgadOmaffu3QoPD1f//v2Vn59fYfurr75aU6dO1fbt2/WPf/xDcXFxiouL08aNG+u4cgAAUB95PNzMnz9f8fHxiouLU0hIiFJTU9WkSRMtW7aswvYxMTG66667dNNNN6lDhw76wx/+oLCwMJfP3QEAAJcvj4ab0tJSZWZmKjY21t7m5eWl2NhYbd++/aL7W5aljIwM7du3T7fcckuFbUpKSlRUVORyAwAA5vJouDl69KjKysoUEBDgsj0gIEC5ubmV7ldYWKirrrpKPj4+GjRokBYuXKjbbrutwrbJycny9/e3b0FBQW49BwAAUL9UK9y0bdtWkyZN0qZNm3T69OnaqumimjZtqqysLH3yySd65plnlJCQoK1bt1bYNjExUYWFhfYtJyenbosFAAB1qlqfc7Ny5Uq9/fbbmjhxogoKCtS/f38NHjxYgwYNUvPmzat98JYtW8rb21t5eXku2/Py8hQYGFjpfl5eXurYsaMkyel06osvvlBycrJiYmLOa+vr6ytfX99q1wYAABqmas3cREdHa968efr666/14Ycfyul0auHChQoMDFTfvn2VkpKif//731Xuz8fHRxEREcrIyLC3lZeXKyMjQ1FRUVXup7y8XCUlJdU5FQAAYKgar7np3LmzEhMTtWPHDmVnZ2vEiBHKyMhQaGioQkND9c4771Spn4SEBC1ZskSvvPKKvvjiCz388MMqLi5WXFycJGnMmDFKTEy02ycnJ+vdd9/Vv//9b33xxReaN2+eVq5c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VVRUZK1Zs8aKjo62SktLrePHj1vt27e3nn76acuyLGvw4MFWamqqZVmW9dZbb1mSrJycHMuyLEuS9fLLL9t9Hz161P553bp11n333WdZlmWtX7++0v4rsmXLFqtfv372/SFDhljPP/+8ZVmWtXPnTqtdu3ZWaWmptWXLFsvHx8f65z//abdt166dNWXKFMuyLGv37t1WmzZtrJKSEuuNN96wRo8ebVmWZf3www9W69atrR9++OGi16tdu3b2+f7SyZMnrTZt2liZmZmWZVnW3LlzrWHDhlmWZVljx461Vq5cabft0KGDtX///ov2WRcawhhYvny5NW7cOPv+W2+9ZUVFRVk//fST9dNPP1ndu3e3NmzYYFnWmev5X//1X3bbXr16Wa+++qplWZZ1+vRp69ixY3atr7/+umVZljVnzhxr/PjxF71W+/fvtzp06HDRdhkZGdaoUaOssrIyy7Isa+LEidYLL7xgWZZlzZo1y7r//vut2bNn22PwbN0VjdVzx/+5P2/atMnq2rWrVVhYaFnWz9d62rRp9rU89+dfOnLkiBUYGGgdOHDAsizLmjRpkvXEE09YlmVZ0dHR1gcffGC39fb2rvDnC2FcuX9c/XIsXHnlldb+/futsrIyKzIy0ho6dKh1+vRp6/PPP7eCg4PtviVZ77zzjmVZlpWSkmLdc889lmVVPlaeeuopa/z48fb4PXu9zx0Xvxwj57rQdTx3/HzwwQdWdHT0eedW33j86xdQfTt27NDNN9+sTp06SZKaNm2qHTt2aNiwYWrcuLH8/f01ePBgu/3777+v119/XZJ05513nvet6CNHjrR/3rdvn6ZOnaqjR4+qrKzM/uqL999/v9L+q+L//u//tHLlSklnZlSaN2+ur7/+WpLUrVs33XTTTS7tx44dK0nq2rWrWrZsqa+//lpDhgzRE088oePHj2vdunX69a9/rSuvvLJadfzSl19+qcDAQHXr1k2SNG7cOM2aNeuS+qwLDXEMbN26Vffff7/8/PzsY27ZskV33HGHJOn++++XdOav83379mn06NGSJG9vb7teh8Ohe+65R9KZcZSenl6tGi5kw4YNev/99+2xcPLkSV1xxRWSpMcff1wxMTH66KOP7PULZ1U0ViuzceNGxcXF2d8q/atf/apaNX788cfq3bu32rZtK+nMeH3wwQer1ceFMK7cP65+qWvXrgoODpYkdenSRT179pS3t7dCQkJ05MgR+6X5li1bauDAgZLOzCJXNpt11saNG7V8+XL7ulZ3bF3sOjY0hJsGyKrCN2Y4HI4qPebt7W0PZunME8Hq1asVFRWlvXv36q677qp2/1U57rk/VxRQKuq/cePGGjFihFatWqXXXntNixYtqnYNFzvOufcbNWrksgbo5MmTl3w8d2mIY+BC11pyHQeVnZ+Xl5caN25s1+3OdRTW/3955NFHHz3vsaKiIh05ckSWZamoqMgOJ1L1rkNV/t8upKrj9dSpUzVav8a4cv+4+qVzv5vKy8vrvO+qOvv/Vt3rUJtjy8vLS5ZlyeFw1KvnwQthzU0DFBUVpR07dujLL7+UdOYvkptvvllr167V6dOnVVRU5LLgLjo6Wq+99pok6X//93917NixSvsuKipS69atJcnlm9ZvueWWSvuvipiYGHt9TGZmpo4fP67rr7++0vZnF6nt2bNH3333nd02Pj5es2bNUklJiSIiIqpVQ0VuvPFG5ebm2n+NL1u2TH379pUkXXfddcrMzJQkffTRRzp8+LC9X9OmTT26oLghjIFfXqOYmBitXr1aJSUlOnnypF5//XX7Wv9yv06dOtkzfWVlZTp+/PhFrsilu+OOO7R8+XL7WMeOHbPXhTzyyCOaMGGCnnnmGT3wwAMuv0gqG6sVGTBggJYvX25fl+++++68NhcaWz169NCHH35ovyNp+fLlFY7XdevWudTYpEkTFRcXX/QaMK7qj4KCAnsGaeXKlYqOjr5g+wEDBmjhwoV2OKru2LrQdWzXrp39HHnuOjBPPw9eCOGmAWrZsqVWrlypUaNGKTw8XLGxsYqNjVWXLl0UEhKiQYMGKTw8XP7+/pKk559/Xq+88opCQ0P1zjvv2FPaFZk9e7aio6MVERGhFi1a2NuHDBlSaf9VsWDBAv3tb39TWFiYJkyYoNWrV9t/KVXG6XRqxIgRWrFihXx8fCSdeQJv3779Rd8hIEl//vOf1aZNGx06dEjdu3e3p7sPHz5sv3vA19dXq1ev1vjx4xUWFqZ3331XKSkpks4EqU8++URdunTRqlWr7KlkSXr44Yd11113eWxBcUMYA3379lV2dra98HPw4MHq16+fIiIiFBkZqYEDB2rAgAEV7rtq1SqtWrVKYWFhioiI0J49e2p0nQYNGqSoqChlZ2erTZs2Sk5OrrRtbGysJkyYoFtuuUVhYWHq16+fDh06pNWrV+vIkSNKSEjQyJEjde211+q5555z2beisVqR2267TWPHjlVUVJTCw8P1u9/97rw2d955pzZu3KiuXbtq7dq12rVrl/3yRGBgoBYtWqRBgwapS5cuys/P19SpUyVJU6ZM0YoVK+R0OrVv3z55e3vbfU6aNEkREREXXVDMuKqa6oyrmrruuuu0du1ahYaGKi0t7bwx90tTp06Vw+GwF6tX9C6m3/72t5o8ebK9oDg1NVVJSUmSdMHrOHv2bA0dOlQ9evRwmbU8+38VFhbGgmLUnhMnTliWdWaxbdeuXa0dO3Y0qP7PutBi3ePHj1tt27a1jh8/XivHbuhMGQMNhacXltcVxlXdqupiZVSONTcGueeee5SXl6eTJ09q9OjR6tmzZ4Pq/2LS0tI0ZcoUPfnkk9WaNbqcmD4G4BmMKzQ0Dsu6xFVIuKxNmDDB/syas2677TbNmTOnTo6flZWlBx544Lzt69atU4cOHeqkhsudp8fA0qVLz1tc3qJFiwo/c0Y683km69evd9nWuXNne+0I6gfGFS4F4QYAABiFBcUAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKP8P8d1k26AYyyQAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAYAAABB4NqyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1mElEQVR4nO3de1xVVf7/8fcBBMyCHGnAC4q3chTkOCiIk2JKYdkY3SRNRQdr7GtORVlq5qWbadlgYeP4ncLSLMfL+Ohrjqao00XMUbRyZjRnRtRSwBuglJCwfn/4c+cRUCDgAPv1fDzOQ1hn7bU/e7MenLebdfZxGGOMAAAAbMTD3QUAAADUNQIQAACwHQIQAACwHQIQAACwHQIQAACwHQIQAACwHQIQAACwHQIQAACwHQIQAACwHQIQgDqRlZUlh8OhRYsWVWt7h8OhGTNm1GhNDcGiRYvkcDiUlZXl7lKARoUABAD1wIsvvqjVq1e7uwzANghAAFAPVBSARo4cqe+//17t2rWr+6KARowABACVZIzR999/X6f79PT0lK+vrxwOR53uF2jsCECATcyYMUMOh0Nff/21RowYIX9/f1133XV65plnZIzR4cOHdccdd8jPz09BQUGaO3dumTFyc3OVlJSkwMBA+fr6Kjw8XG+//XaZfnl5eRo9erT8/f117bXXKjExUXl5eWX69e/fX/379y/TPnr0aIWEhFzxmL799lv95je/UWBgoHx8fNStWze99dZblTkdkqQlS5YoMjJSV111lZo3b65+/frpo48+sp4PCQnR7bffrvXr16tnz55q2rSp/vjHP1rH+Oijjyo4OFg+Pj7q1KmTZs+erdLSUpd9vPLKK+rTp49atGihpk2bKiIiQitWrHDp43A4VFhYqLffflsOh0MOh0OjR4+WVPEaoDfeeEPdunWTj4+PWrVqpfHjx5c5x/3791doaKj++c9/6qabbtJVV12l1q1ba86cOZU+R0BjRQACbCYhIUGlpaV66aWXFBUVpeeff14pKSm6+eab1bp1a82ePVudOnXSE088oY8//tja7vvvv1f//v21ePFi3X///Xr55Zfl7++v0aNHa968eVY/Y4zuuOMOLV68WCNGjNDzzz+vb775RomJiTV6HDk5Oerdu7c2btyohx9+WPPmzVOnTp2UlJSklJSUK24/c+ZMjRw5Uk2aNNGzzz6rmTNnKjg4WJs2bXLpt2/fPg0bNkw333yz5s2bJ6fTqe+++04xMTFasmSJRo0apddee02/+tWvNHnyZCUnJ7tsP2/ePPXo0UPPPvusXnzxRXl5eenee+/Vhx9+aPVZvHixfHx81LdvXy1evFiLFy/Wb3/72wprnzFjhsaPH69WrVpp7ty5uvvuu/XHP/5Rt9xyi3744QeXvqdOndKgQYMUHh6uuXPnqkuXLnrqqaf017/+tRJnGWjEDABbmD59upFkHnzwQavt3Llzpk2bNsbhcJiXXnrJaj916pRp2rSpSUxMtNpSUlKMJLNkyRKrrbi42ERHR5urr77aFBQUGGOMWb16tZFk5syZ47Kfvn37GkkmLS3Nao+JiTExMTFlak1MTDTt2rVzaZNkpk+fbn2flJRkWrZsaY4fP+7S77777jP+/v7mu+++q/Bc7N+/33h4eJg777zTlJSUuDxXWlpqfd2uXTsjyaxbt86lz3PPPWeaNWtmvv76a5f2SZMmGU9PT3Po0CGr7dI6iouLTWhoqBkwYIBLe7NmzVzO9wVpaWlGkjlw4IAxxpjc3Fzj7e1tbrnlFpfaU1NTjSTz1ltvWW0xMTFGknnnnXestqKiIhMUFGTuvvvu8k4NYBtcAQJsZuzYsdbXnp6e6tmzp4wxSkpKstqvvfZa3XDDDfrvf/9rta1du1ZBQUEaNmyY1dakSRP97ne/05kzZ/S3v/3N6ufl5aWHHnrIZT8TJkyosWMwxmjlypX69a9/LWOMjh8/bj3i4uKUn5+vzMzMCrdfvXq1SktLNW3aNHl4uP4avHStTfv27RUXF+fStnz5cvXt21fNmzd32XdsbKxKSkpcrpw1bdrU+vrUqVPKz89X3759L1vf5WzcuFHFxcV69NFHXWp/4IEH5Ofn53JlSZKuvvpqjRgxwvre29tbkZGRLj9bwI683F0AgLrVtm1bl+/9/f3l6+urgICAMu0nTpywvj948KA6d+5cJjD84he/sJ6/8G/Lli119dVXu/S74YYbauwYjh07pry8PC1cuFALFy4st09ubm6F2//nP/+Rh4eHunbtesV9tW/fvkzb/v379eWXX+q666674r7XrFmj559/Xrt371ZRUZHVXt1FzRfO86Xn09vbWx06dLCev6BNmzZl9tW8eXN9+eWX1do/0FgQgACb8fT0rFSbdP5KS21yOBzl7qOkpOSy211YaDxixIgK1xZ17979pxco1ys4F+//5ptv1pNPPlnuNtdff70k6ZNPPtGQIUPUr18/vfHGG2rZsqWaNGmitLQ0LV26tEbquxJ3/WyB+o4ABKBS2rVrpy+//FKlpaUuV4H27t1rPX/h3/T0dJ05c8blKtC+ffvKjNm8efNy/xRz6VWMS1133XW65pprVFJSotjY2CofS8eOHVVaWqp//vOfcjqd1dr+zJkzV9z3ypUr5evrq/Xr18vHx8dqT0tLK9O3sleELpznffv2qUOHDlZ7cXGxDhw4UK3zAdgRa4AAVMptt92m7OxsLVu2zGo7d+6cXn/9dV199dWKiYmx+p07d05/+MMfrH4lJSV6/fXXy4zZsWNH7d27V8eOHbPavvjiC3322WeXrcXT01N33323Vq5cqT179pR5/uLxyhMfHy8PDw89++yzZd62XpkrI0OHDlVGRobWr19f5rm8vDydO3fOqtPhcLhc0crKyir3hofNmjUr91YBl4qNjZW3t7dee+01l1rffPNN5efna/DgwVccAwBXgABU0oMPPqg//vGPGj16tHbu3KmQkBCtWLFCn332mVJSUnTNNddIkn7961/rV7/6lSZNmqSsrCx17dpVq1atUn5+fpkxf/Ob3+jVV19VXFyckpKSlJubqwULFqhbt24qKCi4bD0vvfSSNm/erKioKD3wwAPq2rWrTp48qczMTG3cuFEnT56scNtOnTrp6aef1nPPPae+ffvqrrvuko+Pj/7+97+rVatWmjVr1mX3PXHiRH3wwQe6/fbbNXr0aEVERKiwsFBfffWVVqxYoaysLAUEBGjw4MF69dVXNWjQIA0fPly5ubmaP3++OnXqVGYNTkREhDZu3KhXX31VrVq1Uvv27RUVFVVm39ddd50mT56smTNnatCgQRoyZIj27dunN954Q7169XJZ8AzgMtz3BjQAdenC2+CPHTvm0p6YmGiaNWtWpn9MTIzp1q2bS1tOTo4ZM2aMCQgIMN7e3iYsLMzlbe0XnDhxwowcOdL4+fkZf39/M3LkSLNr164yb4M3xpglS5aYDh06GG9vb+N0Os369esr9Tb4C/WMHz/eBAcHmyZNmpigoCAzcOBAs3Dhwkqdk7feesv06NHD+Pj4mObNm5uYmBizYcMG6/l27dqZwYMHl7vt6dOnzeTJk02nTp2Mt7e3CQgIMH369DGvvPKKKS4utvq9+eabpnPnzsbHx8d06dLFpKWlWT+Li+3du9f069fPNG3a1Eiy3hJ/6dvgL0hNTTVdunQxTZo0MYGBgeahhx4yp06dculT3s/QmPJvMwDYjcMYVsIBAAB7YQ0QAACwHQIQAACwHQIQAACwHQIQAACwHQIQAACwHQIQAACwHW6EWI7S0lIdOXJE11xzTbU/sBAAANQtY4xOnz6tVq1alfng5ksRgMpx5MgRBQcHu7sMAABQDYcPH1abNm0u24cAVI4Lt/Q/fPiw/Pz83FwNAACojIKCAgUHB1uv45dDACrHhT97+fn5EYAAAGhgKrN8hUXQAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdghAAADAdrzcXQCAGvLKDe6uAI3RE/vcXQFQK7gCBAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbIcABAAAbKdeBKD58+crJCREvr6+ioqK0vbt2y/bf/ny5erSpYt8fX0VFhamtWvXujw/evRoORwOl8egQYNq8xAAAEAD4vYAtGzZMiUnJ2v69OnKzMxUeHi44uLilJubW27/rVu3atiwYUpKStKuXbsUHx+v+Ph47dmzx6XfoEGDdPToUevx3nvv1cXhAACABsBhjDHuLCAqKkq9evVSamqqJKm0tFTBwcGaMGGCJk2aVKZ/QkKCCgsLtWbNGqutd+/ecjqdWrBggaTzV4Dy8vK0evXqatVUUFAgf39/5efny8/Pr1pjAHXulRvcXQEaoyf2ubsCoNKq8vrt1itAxcXF2rlzp2JjY602Dw8PxcbGKiMjo9xtMjIyXPpLUlxcXJn+W7Zs0c9//nPdcMMNeuihh3TixIkK6ygqKlJBQYHLAwAANF5uDUDHjx9XSUmJAgMDXdoDAwOV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ffXV8vX11e9//3tt2LBBAQEB5Y45a9Ys+fv7W4/g4OBKHwMAAGh4qhWAPvroI82ePVtt2rRxae/cubMOHjxYI4X9VDfddJN2796trVu3atCgQRo6dGiF64omT56s/Px863H48OE6rhYAANSlagWgwsJClys/F5w8ebJKN0AMCAiQp6encnJyXNpzcnIUFBRU7jZBQUGV6t+sWTN16tRJvXv31ptvvikvLy+9+eab5Y7p4+MjPz8/lwcAAGi8qhWA+vbtq3feecf63uFwqLS0VHPmzNFNN91U6XG8vb0VERGh9PR0q620tFTp6emKjo4ud5vo6GiX/pK0YcOGCvtfPG5RUVGlawMAAI1Xte4EPWfOHA0cOFA7duxQcXGxnnzySf3jH//QyZMn9dlnn1VprOTkZCUmJqpnz56KjIxUSkqKCgsLNWbMGEnSqFGj1Lp1a82aNUuS9Mgjj1gfyjp48GC9//772rFjhxYuXCjp/NWpF154QUOGDFHLli11/PhxzZ8/X99++63uvffe6hwuAABoZKoVgEJDQ/X1118rNTVV11xzjc6cOaO77rpL48ePV8uWLas0VkJCgo4dO6Zp06YpOztbTqdT69atsxY6Hzp0SB4eP16o6tOnj5YuXaqpU6dqypQp6ty5s1avXq3Q0FBJkqenp/bu3au3335bx48fV4sWLdSrVy998skn6tatW3UOFwAANDI/6T5AjRX3AUJDxH2AUBu4DxBqQ324D1C1Pwz17Nmz+vLLL5Wbm6vS0lKX54YMGVLdYQEAAGpdtQLQunXrNGrUKB0/frzMcw6HQyUlJT+5MAAAgNpSrXeBTZgwQffee6+OHj2q0tJSlwfhBwAA1HfVCkA5OTlKTk4uc0dmAACAhqBaAeiee+7Rli1bargUAACAulGtNUCpqam699579cknnygsLExNmjRxef53v/tdjRQHAABQG6oVgN577z199NFH8vX11ZYtW+RwOKznHA4HAQgAANRr1QpATz/9tGbOnKlJkya53KQQAACgIahWeikuLlZCQgLhBwAANEjVSjCJiYlatmxZTdcCAABQJ6r1J7CSkhLNmTNH69evV/fu3cssgn711VdrpDgAAIDaUK0A9NVXX6lHjx6SpD179rg8d/GCaAAAgPqoWgFo8+bNNV0HAABAnWEVMwAAsJ1KXwG66667tGjRIvn5+emu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fdu1a2cmTpxojDEmMzPTtGnTxhQVFZk///nPZuTIkcYYY86cOWNat25tzpw5c8Xz1a5dO+t4L3X27FnTpk0bs3PnTmOMMa+88ooZOnSoMcaYxMREs3jxYqtvx44dzYEDB644Zl1oCHMgLS3NJCUlWd+vXr3aREdHm++//958//33plevXmbt2rXGmPPn85lnnrH69unTx7zzzjvGGGPOnTtnTp06ZdX63nvvGWOMefnll83YsWOveK4OHDhgOnbseMV+6enpZsSIEaakpMQYY8z48ePNG2+8YYwxZvbs2eb+++83c+bMsebghbrLm6sXz/+Lv/7oo49Mjx49TH5+vjHmx3M9ffp061xe/PWljh49aoKCgszBgweNMcY8/PDD5sknnzTGGBMTE2M++eQTq6+np2e5X18O86rm59Wlc6FZs2bmwIEDpqSkxPTs2dPcc8895ty5c+Yf//iHCQkJscaWZD788ENjjDEpKSnm7rvvNsZUPFemTJlixo4da83fC+f74nlx6Ry52OXO48Xz55NPPjExMTFljq2+cftHYaB2bNu2Tb1791aXLl0kSddcc422bdumoUOHqkmTJvL399eQIUOs/h9//LHee+89SdIdd9yha6+91mW84cOHW1/v27dPTz/9tI4fP66SkhLro0o+/vjjCsevjL/97W9avHixpPNXZq699lrt379fkvTLX/5Sv/jFL1z6JyYmSpJ69OihgIAA7d+/X/Hx8XryySeVl5enlStX6vbbb1ezZs2qVMel9u7dq6CgIP3yl7+UJCUlJWn27Nk/acy60BDnwJYtW3T//fdbH1szfPhwbd68Wbfeeqsk6f7775d0/n/5+/bt08iRIyVJnp6eVr0Oh0N33323pPPzaN26dVWq4XLWrl2rjz/+2JoLZ8+eVdOmTSVJTzzxhPr376+tW7da6ykuKG+uVmT9+vUaM2aM9YniLVq0qFKNn3/+uW688Ua1bdtW0vn5+uCDD1ZpjMthXtX8vLpUjx49FBISIkkKCwtTVFSUPD091bVrVx09etRaBhAQEKDbbrtN0vmr0RVdFbtg/fr1SktLs85rVefWlc5jQ0MAaqRMJT7hxOFwVOo5T09Pl89Ru//++7V06VJFR0frq6++0p133lnl8Suz34u/Li/ElDd+kyZNNGzYMC1ZskTvvvuuUlNTq1zDlfZz8fdeXl4ua5LOnj37k/dXUxriHLjcuZZc50FFx+fh4aEmTZpYddfkug7z//8U8+ijj5Z5rqCgQEePHpUxRgUFBVaAkap2Hirzc7ucys7XH374oVrr6ZhXNT+vLnXx54l5eHiU+XyxCz+3qp6H2pxbHh4eMsbI4XDUq9+Dl8MaoEYqOjpa27Zt0969eyWd/59N7969tWLFCp07d04FBQUuiwRjYmL07rvvSpL+7//+T6dOnapw7IKCArVu3VqStHDhQqu9X79+FY5fGf3797fW6+zcuVN5eXnq3Llzhf0vLKz74osvdOLECavvAw88oNmzZ6uoqEgRERFVqqE8N9xwg7Kzs63/1b/11lsaMGCAJKl9+/bauXOnJGnr1q06cuSItd0111zj1kXQDWEOXHqO+vfvr6VLl6qoqEhnz57Ve++9Z53rS7fr0qWLdcWwpKREeXl5VzgjP92tt96qtLQ0a1+nTp2y1qn8z//8j8aNG6cXXnhBo0ePdnmxqWiulmfQoEFKS0uzzsuJEyfK9Lnc3IqMjNRnn31mvdMqLS2t3Pm6cuVKlxqvuuoqFRYWXvEcMK/qj2PHjllXohYvXqyYmJjL9h80aJBef/11K0BVdW5d7jy2a9fO+h158bo0d/8evBwCUCMVEBCgxYsXa8SIEQoPD1dsbKxiY2MVFhamrl27avDgwQoPD5e/v78kad68eXr77bcVGhqqDz/80Lp8Xp45c+YoJiZGERERat68udUeHx9f4fiV8dprr2nNmjXq3r27xo0bp6VLl1r/46qI0+nUsGHDtGjRInl7e0s6/0u+Q4cOV3zngyQ9//zzatOmjb755hv16tXLurR+5MgR610RPj4+Wrp0qcaOHavu3btrw4YNSklJkXQ+bP39739XWFiYlixZYl22lqSHHnpId955p9sWQTeEOTBgwABlZWVZi1WHDBmigQMHKiIiQj179tRtt92mQYMGlbvtkiVLtGTJEnXv3l0RERH64osvqnWeBg8erOjoaGVlZalNmzaaNWtWhX1jY2M1btw49evXT927d9fAgQP1zTffaOnSpTp69KiSk5M1fPhw/fznP9fvf/97l23Lm6vlufnmm5WYmKjo6GiFh4drwoQJZfrccccdWr9+vXr06KEVK1Zox44d1p9CgoKClJqaqsGDByssLEy5ubl6+umnJUkTJ07UokWL5HQ6tW/fPnl6elpjPvzww4qIiLjiImjmVeVUZV5VV/v27bVixQqFhoZq2bJlZebcpZ5++mk5HA5rgX157876zW9+o8cee8xaBL1gwQJNmzZNki57HufMmaN77rlHkZGRLlc/L/ysunfvziJouNfp06eNMecXCPfo0cNs27atQY1/weUWGOfl5Zm2bduavLy8Wtl3Q9dY5kBD4e7F8HWFeVW3KrvAGhVjDZDN3H333crJydHZs2c1cuRIRUVFNajxr2TZsmWaOHGiJk2aVKWrT3bS2OcA3IN5hYbGYcxPXBUFXMG4ceOse/pccPPNN+vll1+uk/3v3r1bo0ePLtO+cuVKdezYsU5qsDt3z4E//elPZRbEN2/evNx78kjn7/eyatUql7Zu3bpZa1lQPzCv8FMQgAAAgO2wCBoAANgOAQgAANgOAQgAANgOAQgAANgOAQgAANgOAQgAANgOAQgAANjO/wNmFwk0qU9t1QAAAABJRU5ErkJggg==", + "image/png": "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3LgRs2bNwhtvvAEvLy+kpqaiffv2Us20adNQUlKCsWPHorCwEN26dUNaWhosLCykmvj4eKxbt0563rFjRwDAvn370KNHD5iammLlypWYPHkyhBDw9PTE0qVLMWbMGGkfDw8PfP3115g8eTLee+89NGvWDKtXr0ZYWJhs7xcRERHVLQZdR+txx3W06haub0OkjZ8ztYufM3VDnVhHi4iIiKi+Y9AiIiIikgmDFhEREZFMGLSIiIiIZMKgRURERCQTBi0iIiIimTBoEREREcmEQYuIiIhIJgxaRERERDJh0CIiIiKSCYMWERERkUwM+qXSRHXKO60N3UH9M/W0oTsgIpIVz2gRERERyYRBi4iIiEgmDFpEREREMmHQIiIiIpIJb4YnIiJ6VPCXbmqfgX/pRu8zWhcvXsSlS5ek59nZ2YiNjUVycnKtNkZERERU1+kdtF566SXs27cPAKBUKtGnTx9kZ2dj5syZmD9/fq03SERERFRX6R20Tpw4gYCAAADAli1b0L59exw8eBAbNmxASkpKbfdHREREVGfpHbQqKipgbm4OANizZw+eeeYZAECbNm1w9erV2u2OiIiIqA7TO2i1a9cOSUlJ+P7775Geno5+/foBAK5cuYLGjRvXeoNEREREdZXeQevtt9/Ghx9+iB49emDo0KHw9fUFAOzYsUO6pEhERERED7C8Q48ePXDjxg0UFxejYcOG0vjYsWNhZWVVq80RERER1WUPtI6WsbGxRsgCAHd399roh4iIiKje4MrwRERERDJh0CIiIiKSCYMWERERkUxqHLRGjBiBbdu24fbt23L2Q0RERFRv1DhoeXp64s0330TTpk3Rv39/rFq1CpcvX5azNyIiIqI6rcZBKz4+HocPH8aZM2cwcOBApKamomXLlvD398f8+fNx7NgxGdskIiIiqnv0vkerWbNmGD9+PL755htcv34dr7/+Ok6fPo1evXqhRYsWmDhxIk6ePClHr0RERER1ykPdDN+gQQO8+OKL2LBhA65fv441a9bA2NgYmZmZtdUfERERUZ31QAuW6mJsbIzevXujd+/etTUlERERUZ3G5R2IiIiIZMKgRURERCQTgwetlStXwt3dHRYWFggMDER2dna19Vu3bkWbNm1gYWEBHx8f7Nq1S2O7EALx8fFwdnaGpaUlQkNDcebMGY2aRYsWITg4GFZWVrC3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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_forpy_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_forpy_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAGwCAYAAABxbMuTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHp0lEQVR4nO3de1wWdd7/8TeggIcAXZODklKSR/RyRRDWwgMbpm3SEc2UDPW2TdPQXI9Yra6F62am95K3m7ip6yHL3VUXM9R1S8I8lnZYbfFUXqghXMqGJMzvD39OXXIQjOkSfD0fj+uB13c+853PNUzwbq65BjfDMAwBAACgxrm7ugEAAIC6iqAFAABgEYIWAACARQhaAAAAFiFoAQAAWISgBQAAYBGCFgAAgEUIWgAAABYhaAEAAFiEoAWgzjl69Kjc3NyUnp5+Xeu7ubnp+eefr9GeanI7P/b1VaRXr17q1atXjc4J3OwIWgBwE/n000/1/PPP6+jRo65uBbgp1HN1AwCAn86nn36qF154Qb169VLr1q2dlr377ruuaQqowwhaAABJkqenp6tbAOoc3joEUOOef/55ubm56d///rcef/xx+fr66tZbb9WMGTNkGIZOnDihgQMHysfHRwEBAZo3b16ZOU6fPq2kpCT5+/vL29tbXbp00bJly8rU5efn64knnpCvr6/8/PyUmJio/Pz8MnUVXX/0xBNPlDmzU56vvvpKTz75pPz9/eXl5aWOHTvqjTfeqMru0MWLF/Xss8/q1ltv1S233KL7779fJ0+erPHtfP7553r44YfVtGlTeXt7Kzw8XH/729/M5enp6XrkkUckSb1795abm5vc3Ny0fft2SeXvo6p8H65cM/b73/9eixcv1h133CEvLy91795dH330UZV6B+oqzmgBsExCQoLat2+vl156SRs3btSsWbPUtGlTvf766+rTp49efvllrVixQhMnTlT37t119913S5K+/fZb9erVS0eOHNGYMWMUEhKitWvX6oknnlB+fr7GjRsnSTIMQwMHDtT777+v0aNHq3379nrnnXeUmJhYo68jNzdXPXr0kJubm8aMGaNbb71V//jHP5SUlCSHw6Hx48dXuv6IESO0fPlyPfbYY4qOjtbWrVs1YMCAGt3OoUOH9Itf/EItWrTQ5MmT1ahRI61Zs0bx8fFat26dHnjgAd199916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arSPa9m+fbtiY2MlSbt379bo0aMrrU9LS9OSJUvMdXfs2FGj/bz44os1Ol9FOK7Kqsr3vzqef/55zZo1S5LzcVORESNGaP/+/ZKk9PR0HT9+vMZ6OXr0qP785z/X2Hw1iaCFG9KlS5dqbK59+/apsLBQ+/fv19NPP12ldQzDUGlpaY310LdvX23dulWtWrWqsTmvqO1BqyI1eQxc7y/Emuxh9OjR2rx5c43Ndz3Cw8OVlpZWac3o0aM1YsQISbU7aFXkZj6uqvL9/zF9XDluKrJkyRLzT+ERtIBq2Lp1qyIiItSlSxd1795d33zzjZ599lm1bdtWPXv21GOPPWb+X8+xY8fUs2dPdezYUf/zP/+jH97GrV69epo+fbq6du2qt99+W0uXLlVERIS6du2qXr16KScnR9LlEFTR/Fc7ceKEHn/8cR04cEA2m03Z2dk6efKk+vXrp86dO6t79+768MMPJV3+pRIVFaWHH35YnTp10ldffaXWrVvrN7/5jWw2mzp06KBt27ZJkmJjY51+AY0aNUpLly6tcB917969SiHr/fffV3h4uDp37qwBAwbIbrdLkp544gktX77crGvTpo2OHj2quXPn6uuvvzbP2BUXF19zG1a4kY+B8+fPKyUlRe+8845sNpsWLFggSUpJSVGnTp3UqVMnp1/+rVu31uTJkxUeHq7XXntNR48e1b333qvOnTurS5cu2r59u1n74osvymazqXPnzvr3v/9d6T7q06ePmjZtWuV9+tprr5n7dMSIEfruu++0f/9+hYaGqqCgQKWlperdu7fWrFlj9l3esfpDPzy7JUkLFixQWFiYunTpooSEBEnfn6X44osvlJaWpkWLFslms+mtt94qM98777yjLl26KCwsTI899pjOnz8vSerVq5fef/99s+7KWZpnn31WJSUlstlsTn1UhOOqZo+rH37/t2/frujoaD366KO688479eijj2rnzp26++671bp1a/O4Onr0qG6//XYlJSWpY8eOuuuuu3TixIkyc//w7Na3336r0aNHKywsTJ07d9a8efMkfX9crFixQrt379bw4cNls9l09OjRMvNVtB9/eMbv/fffV69evSRdPrays7Nls9k0efLkKu2Pn4zLbpWKOuHMmTNGUFCQ8dlnnxmGYRgOh8NYtWqVERMTYxQXFxv5+fnG7bffbvz2t781DMMw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", + "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_forpy_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_forpy_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_100k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"Forpy\", \"_nograd\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Summary of FTorch and Forpy on CPU and GPU" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Results for 10,000 steps, with 8 threads, from Sapphire Rapids CPUs and A100 GPUs.\n", + "- FTorch has NoGradMode enabled, but does not use a frozen model, as this requires further testing." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "benchmarks_options_summary = {}\n", + "for benchmark in benchmarks_options_10k:\n", + " if \"forpy_8\" in benchmark or (\"torch\" in benchmark and \"8_nograd\" in benchmark and \"explicit\" not in benchmark):\n", + " benchmarks_options_summary[f\"{benchmark}_cpu\"] = benchmarks_options_10k[benchmark]\n", + "\n", + "for benchmark in benchmarks_options_gpu_10k:\n", + " if \"forpy_8\" in benchmark or (\"torch\" in benchmark and \"8_nograd\" in benchmark and \"explicit\" not in benchmark):\n", + " benchmarks_options_summary[f\"{benchmark}_gpu\"] = benchmarks_options_gpu_10k[benchmark]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAGwCAYAAACJjDBkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/NElEQVR4nO3df3zP9f7/8ftmtvnRtoTNWLakhDHHj5mPTOw0rJOVyiS/znBURCOhmnJ0caycJGpHnaxEiTpOyZnkR4oZhookpwinNj9mG8s29n5+//D1yrv9sL0ab9Pterm8L7PX6/F6vp6vl2d27/l+vl9zM8YYAQAAoFLcXd0BAACA6ogQBQAAYAMhCgAAwAZCFAAAgA2EKAAAABsIUQAAADYQogAAAGwgRAEAANhAiAIAALCBEAUAFZCSkiI3NzcdOHDA2ta9e3d1797dZX26mPXr18vNzU3r1693dVeAqxIhCgCquZdfflkpKSmu7gbwu+Ph6g4AAH6bl19+WfXr19fQoUOdtnfr1k2nT5+Wp6enazoGXOWYiQLgEvn5+WXu+/nnny9jT65e7u7u8vb2lrs7/9QDlwL/ZQGw7YcfftBDDz2km2++WbVq1dJ1112ne++912ndkPTLeqJPP/1UDz30kBo2bKgmTZpIOreuqHXr1srIyFC3bt1Uu3ZtTZkyRZL073//WzExMQoMDJSXl5eaNWumv/71ryouLrbanjp1qmrWrKmjR4+W6N/IkSPl5+engoKCMq/hyy+/1NChQ3XDDTfI29tbAQEB+vOf/6zjx4/buidHjhxRfHy8/P395e3trbZt2+qNN94oUedwOPTiiy8qNDRU3t7eatCggXr16qVt27ZZNQsWLFCPHj3UsGFDeXl5qWXLlnrllVec2gkODtbu3bv16aefys3NTW5ubtY6rbLWRC1dulTt27dXrVq1VL9+fT3wwAP63//+51QzdOhQ1a1bV//73/8UGxurunXrqkGDBpowYYLT/Qd+z3g7D4BtW7du1aZNmxQXF6cmTZrowIEDeuWVV9S9e3d9/fXXql27tlP9Qw89pAYNGigxMdFpJur48ePq3bu34uLi9MADD8jf31/SufBVt25dJSQkqG7dulq7dq0SExOVl5en5557TpI0aNAgTZs2TUuWLNHo0aOtNouKirRs2TL169dP3t7eZV7D6tWr9f3332vYsGEKCAjQ7t27NX/+fO3evVubN2+Wm5tbhe/H6dOn1b17d/33v//V6NGjFRISoqVLl2ro0KHKycnR2LFjrdr4+HilpKSod+/eGj58uM6ePavPPvtMmzdvVocOHSRJr7zyilq1aqU777xTHh4e+vDDD/XQQw/J4XDo4YcfliTNnj1bY8aMUd26dfXEE09IknX/SpOSkqJhw4apY8eOmjFjhrKysvTiiy9q48aN2rFjh/z8/Kza4uJiRUdHKzw8XM8//7w++eQTzZo1S82aNdODDz5Y4fsCXLUMANj0888/l9iWlpZmJJk333zT2rZgwQIjyXTt2tWcPXvWqT4yMtJIMsnJyRVq/y9/+YupXbu2KSgosLZFRESY8PBwp7r333/fSDLr1q2r9DW8/fbbRpLZsGFDiWvYv3+/U98jIyOt72fPnm0kmbfeesvaVlRUZCIiIkzdunVNXl6eMcaYtWvXGknmkUceKXFuh8NRbt+io6PNDTfc4LStVatWTv04b926dU73oKioyDRs2NC0bt3anD592qpbsWKFkWQSExOtbUOGDDGSzLRp05zabNeunWnfvn2JcwG/R7ydB8C2WrVqWX8+c+aMjh8/rhtvvFF+fn7avn17ifoRI0aoRo0aJbZ7eXlp2LBh5bZ/8uRJHTt2TLfeeqt+/vlnffPNN9a+wYMHKz09Xd999521bdGiRQoKClJkZGSFr6GgoEDHjh1T586dJanUayjPypUrFRAQoAEDBljbatasqUceeUSnTp3Sp59+Kkl677335ObmpqlTp5Zo48KZrwv7lpubq2PHjikyMlLff/+9cnNzK9U3Sdq2bZuOHDmihx56yGl2LiYmRi1atNBHH31U4phRo0Y5fX/rrbfq+++/r/S5gasRIQqAbadPn1ZiYqKCgoLk5eWl+vXrq0GDBsrJySn1h3xISEip7TRu3LjUT5Dt3r1bd911l3x9feXj46MGDRrogQcekCSn9vv37y8vLy8tWrTI2rdixQoNHDjwom/HZWdna+zYsfL391etWrXUoEEDq5+VDSo//PCDmjdvXmIh9y233GLtl6TvvvtOgYGBqlevXrntbdy4UVFRUapTp478/PzUoEEDa72YnRB1/vw333xziX0tWrSw9p93fq3Wha699lqdOHGi0ucGrkasiQJg25gxY7RgwQKNGzdOERER8vX1lZubm+Li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lJ6ersOHD6tXr15q06aNOnbsqM2bN0s69wMjIiJC99xzj1q3bq3//e9/Cg4O1uOPP66wsDC1bNlS69atkyRFRUU5/XAZOXKkFixYUOY96tixY4UC1Oeff64OHTqoTZs2iomJUWZmpiRp6NCheuutt6y6G2+8UQcOHNBzzz2nH3/80ZppKyoquug5LoUreQycPHlSiYmJ+te//qWwsDDNmTNHkpSYmKjWrVurdevWTj/Yg4ODNWnSJHXo0EEvvfSSDhw4oN69e6tNmzZq27at1q9fb9VOmzZNYWFhatOmjb799tty71GPHj1Ur169Ct/Tl156ybqnw4cP15kzZ7Rz5041b95cubm5cjgcuu222/Tuu+9a/S5trF7owlkpSZozZ45CQ0PVtm1b9e/fX9Ivswt79+5VcnKy5s2bp7CwMC1btqxEe//617/Utm1bhYaG6v7779fJkyclSd27d9fnn39u1Z2fXXn00UdVXFyssLAwp36UhXFVtePqwr//9evXq0uXLrrvvvt000036b777tOmTZvUrVs3BQcHW+PqwIEDuuGGGxQfH69WrVrp1ltv1aFDh0q0feGs1OnTpzVq1CiFhoaqTZs2mjVrlqRfxsWiRYu0bds2DRs2TGFhYTpw4ECJ9sq6jxfO1H3++efq3r27pHNjKz09XWFhYZo0aVKF7sdl47LHfOKKd/ToURMYGGj27NljjDEmLy/PvPPOOyYyMtIUFRWZnJwcc8MNN5i//vWvxhhj7rzzTpOcnGyMMWb58uVGkjl06JAxxhhJ5p///KfV9rFjx6w/v/feeyYuLs4YY8z7779fZvulWbdunenZs6f1fWxsrHnxxReNMcZs2bLFNG3a1BQVFZl169YZT09P8/XXX1u1TZs2NY899pgxxpjt27ebJk2amMLCQvPuu++aQYMGGWOMOXXqlGncuLE5derURe9X06ZNrev9tYKCAtOkSROTkZFhjDHm+eefN/fdd58xxpghQ4aYhQsXWrXNmjUz+/fvv2ibl0N1GAMLFiww8fHx1vfLly83ERER5vTp0+b06dOmY8eOZuXKlcaYc/fzqaeesmq7dOli3nzzTWOMMWfPnjUnTpyw+vr2228bY4x57rnnzPDhwy96r/bv32+aNWt20bo1a9aYBx54wBQXFxtjjHn44YfNyy+/bIwxZubMmWbgwIEmKSnJGoPn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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBlklEQVR4nO3deVyU5f7/8feAMmwCspNhqLiWS2IaarkcjNQsWzxqi1tauZV6PG65ZKZU57hkmmam2eLJNI/V0TwqqR2TMkFtc6nUMBVETVBRULh/f/Rzvk2AzuDA4O3r+XjMI+a6r/u6PzfQ8Pa6N4thGIYAAABMwsPdBQAAALgS4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QYAAJgK4QaoIGJiYtSnTx93l1GsQYMGqUOHDu4uo8KoyD+rklgsFj333HNureHEiRPy8/PTmjVr3FoHzI9wA+CyDhw4oIULF2rcuHF27fPmzVO3bt1UvXp1WSyWy/6xP3XqlJ544gmFhYXJz89P7dq1U1pamsM1HD58WH/9618VFBSkgIAA3Xfffdq/f3+xfd98803Vr19f3t7eql27tl599dWrHvNKfvjhBz333HM6ePBgqdZ3lTVr1rg9wFxOSEiI+vfvrwkTJri7FJidAaBCuOmmm4zevXu7u4winnnmGaNOnTpF2m+66SYjODjYuPvuu41KlSqVWHtBQYHRsmVLw8/Pz3juueeMOXPmGA0aNDCqVKli7Nu374rbP336tFG7dm0jPDzceOmll4wZM2YY0dHRxo033mgcP37cru/8+fMNScaDDz5oLFiwwHjssccMScaLL75Y6jGLc/78eSM/P9/2fvny5YYkY+PGjVdctywNHjzYKOlj/dy5c8aFCxfKuaKifvjhB0OSkZyc7O5SYGKEG6CCcCTcnDlzpnyK+f/y8/ON0NBQY/z48UWWHTx40CgsLDQMwzD8/PxKrH3ZsmWGJGP58uW2tmPHjhlBQUFGz549r1jDSy+9ZEgytm3bZmvbvXu34enpaYwdO9bWlpuba4SEhBidO3e2W/+RRx4x/Pz8jJMnTzo9pqPKKtw4+/O+XLipSG655Rbjsccec3cZMLGK/38BUAH8+uuvRr9+/YyoqCjDy8vLiImJMZ566ikjLy/P1mfXrl3GnXfeaXh7exvVqlUzpkyZYixatMiQZBw4cMDWr7Cw0JgyZYpRrVo1w8fHx2jbtq3x3XffFQk3ixcvNiQZmzZtMgYOHGiEhYUZQUFBhmH8HiwGDhxo1KlTx/D29jaCg4ONhx56yG47ztZVnM8++8xWw+VcLtx069bNiIiIMAoKCuzan3jiCcPX19c4f/78Zce+7bbbjNtuu61I+1133WXUqlXL9n716tWGJGP16tV2/bZu3WpIMt555x2nxyzJH39Wl35Of379MeisWbPGaN26teHr62v4+/sbnTp1Mr777ju7MXv37m34+fkZP/30k9GxY0fD39/fuO+++wzDMIzPP//ceOihh4zo6GjDy8vLuPHGG41hw4YZubm5dusXV8clkoxJkybZbTMtLc24++67jSpVqhh+fn5G+/btjZSUFLs+l/Zvy5YtxvDhw43Q0FDD19fX6Nq1q3Hs2DG7vl9//bVx1113GSEhIYa3t7cRExNj9O3bt8j3b/jw4UZQUJAtHAOuVql8Dn4B164jR46oefPmtvNG6tWrp8OHD2vFihXKzc2Vl5eXDh8+rHbt2slisWjs2LHy8/PTwoULZbVai4w3ceJEvfDCC+rUqZM6deqktLQ03XXXXcrPzy92+4MGDVJYWJgmTpyos2fPSpK+/vprbd26VT169NCNN96ogwcPat68eWrbtq1++OEH+fr6SpJTdRVn69atslgsuvXWW0v53ZN27Nihpk2bysPD/hS/5s2ba8GCBdq3b58aNmxY7LqFhYX65ptv1K9fvyLLmjdvrnXr1un06dOqUqWKduzYIUlq1qyZXb+4uDh5eHhox44devTRR50a0xF33nmnnn76ac2ePVvjxo1T/fr1Jcn233feeUe9e/dWYmKiXnrpJeXm5mrevHlq3bq1duzYoZiYGNtYFy9eVGJiolq3bq1//vOftp/j8uXLlZubq4EDByokJETbtm3Tq6++ql9//VXLly+XJD355JM6cuSI1q9fr3feeeeKdX///fe64447FBAQoFGjRqly5cp6/fXX1bZtW23evFktWrSw6z906FBVrVpVkyZN0sGDBzVr1iwNGTJEy5YtkyQdO3ZMd911l8LCwjRmzBgFBQXp4MGDWrlyZZFtx8XFaebMmfr+++91yy23OPR9Bpzi7nQFVHS9evUyPDw8jK+//rrIskv/8hw6dKhhsViMHTt22JadOHHCCA4OtpshOXbsmOHl5WV07tzZ7l+t48aNMyQVO3PTunVr4+LFi3bb/eO/2C9JSUkxJBlvv/22rc3Rukry6KOPGiEhIZftYxiXn7nx8/Mz+vXrV6T90kzL2rVrSxw3KyvLkGQ8//zzRZbNnTvXkGTs2bPHMIzfD8l4enoWO05YWJjRo0cPp8csyZ9n2Uo6LHX69GkjKCjIGDBggF17RkaGERgYaNd+aeZlzJgxRbZX3M87KSnJsFgsxi+//GJru9xhKf1p5qZr166Gl5eX8fPPP9vajhw5YlSpUsW48847bW2Xfg8TEhLsfmeHDx9ueHp6GqdOnTIMwzD+/e9/G5KK/f/kzy7Npi1btuyKfYHS4Gop4DIKCwu1atUqdenSpciMgPT75bWStHbtWsXHx6tJkya2ZcHBwXrkkUfs+m/YsEH5+fkaOnSobV1JGjZsWIk1DBgwQJ6ennZtPj4+tq8vXLigEydOKDY2VkFBQXZXITlaV0lOnDihqlWrOtS3JOfOnSt2psjb29u2/HLrSnJo/XPnzsnLy6vYcby9ve36OTrm1Vq/fr1OnTqlnj176vjx47aXp6enWrRooY0bNxZZZ+DAgUXa/vjzPnv2rI4fP66WLVvKMAzbjJUzCgoKtG7dOnXt2lU1a9a0tUdFRenhhx/Wli1blJOTY7fOE088Yfc7e8cdd6igoEC//PKLJCkoKEiS9J///EcXLly47PYv/U4dP37c6doBRxBugMvIyspSTk7OFafOf/nlF8XGxhZp/3PbpT8EtWvXtmsPCwsrMUTUqFGjSNu5c+c0ceJERUdHy2q1KjQ0VGFhYTp16pSys7OdrutyDMNwuG9xfHx8lJeXV6T9/PnztuWXW1eSQ+v7+PiUeGjv/Pnzdv0cHfNq/fjjj5Kk9u3bKywszO61bt06HTt2zK5/pUqVdOONNxYZJz09XX369FFwcLD8/f0VFhamNm3aSJLdz9tRWVlZys3NVd26dYssq1+/vgoLC3Xo0CG79urVq9u9v/T7+ttvv0mS2rRpowcffFCTJ09WaGio7rvvPi1evLjY7/Ol36k/hiXAlTjnBqjgivtDO3ToUC1evFjDhg1TfHy8AgMDZbFY1KNHDxUWFrps2yEhIbY/XqUVFRWlo0ePFmm/1HbDDTeUuG5wcLCsVqtD60dFRamgoEDHjh1TeHi4rV9+fr5OnDhh6+fMmFfr0s/inXfeUWRkZJHllSrZfwRbrdYi5yYVFBSoQ4cOOnnypEaPHq169erJz89Phw8fVp8+fVz6876cP88eXvLHoLJixQp9+eWX+uSTT/Tf//5X/fr10/Tp0/Xll1/K39/fts6l36nQ0NCyLxzXJcINcBlhYWEKCAjQd999d9l+N910k3766aci7X9uu+mmmyT9/i/6Px4OyMrKcipErFixQr1799b06dNtbefPn9epU6dKVVdJ6tWrp/fee0/Z2dkKDAx0uL4/atKkif73v/+psLDQ7g/3V199JV9fX9WpU6fEdT08PNSwYUNt3769yLKvvvpKNWvWtJ34e+nQ2/bt29WpUydbv+3bt6uwsNC23JkxHVXSDEStWrUkSeHh4UpISHBqzEu+/fZb7du3T0uWLFGvXr1s7evXr3e4jj8LCwuTr6+v9u7dW2TZnj175OHhoejo6FLVe/vtt+v222/X1KlTtXTpUj3yyCN6//331b9/f1ufAwcOSPq/k64BV+OwFHAZHh4e6tq1qz755JNi/xhe+ldrYmKiUlJStHPnTtuykydP6r333rPrn5CQoMqVK+vVV1+1O9wza9Ysp+ry9PQscrjo1VdfVUFBgV2bo3WVJD4+XoZhKDU11an6/uihhx5SZmam3VUzx48f1/Lly9WlS5crXrn10EMP6euvv7b7/u/du1efffaZunXrZmtr3769goODNW/ePLv1582bJ19fX3Xu3NnpMR3l5+cnSUXCZWJiogICAjRt2rRiz0PJysq64tiXZkz++PM2DEOvvPKKw3UUN+Zdd92ljz76yO6uypmZmVq6dKlat26tgICAK9b2R7/99luR38lLgfLPh6ZSU1MVGBiom2++2altAI5i5ga4gmnTpmndunVq06aNnnjiCdWvX19Hjx7V8uXLtWXLFgUFBWnUqFF699131aFDBw0dOtR2yXX16tV18uRJ27+ow8LCNHLkSCUlJemee+5Rp06dtGPHDn366adOTdHfc889eueddxQYGKgGDRooJSVFGzZsUEhIiF0/R+sqSevWrRUSEqINGzaoffv2dss++eQT7dq1S9LvJzV/8803euGFFyRJ9957rxo1aiTp9yBx++23q2/fvvrhhx8UGhqq1157TQUFBZo8ebLdmH369NGSJUt04MAB2yXSgwYN0htvvKHOnTtr5MiRqly5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ys/Pd2lxAAAAznI63Dz55JPat2+fJGn//v3q3r27fH19tXz5co0aNcrlBQIAADjD6XCzb98+NWnSRJK0fPlytWnTRkuXLtVbb72lDz/80NX1AQAAOMXpcGMYhgoLCyVJGzZsUKdOnSRJ0dHROn78uGurAwAAcFKp7nPzwgsv6J133tHmzZvVuXNnSdKBAwcUERHh8gIBAACc4XS4mTVrltLS0jRkyBA9++yzio2NlSStWLFCLVu2dHmBAAAAznD6UvBGjRrZXS11yT/+8Q95enq6pCgAAIDSKtV9borzxyeEAwAAuItD4SY4OFj79u1TaGioqlatetkHZJ48edJlxQEAADjLoXAzc+ZMValSRdLv59wAAABUVA6Fm969exf7NQAAQEXjULjJyclxeMCAgIBSFwMAAHC1HAo3QUFBlz3PRvr95n4Wi0UFBQUuKQwAAKA0HAo3GzduLOs6AAAAXMKhcNOmTZuyrgMAAMAlSn2fm9zcXKWnpys/P9+uvVGjRlddFAAAQGk5HW6ysrLUt29fffrpp8Uu55wbAADgTk4/W2rYsGE6deqUvvrqK/n4+Gjt2rVasmSJateurY8//rgsagQAAHCY0zM3n332mT766CM1a9ZMHh4euummm9ShQwcFBAQoKSnJ9pRwAAAAd3B65ubs2bMKDw+XJFWtWlVZWVmSpIYNGyotLc211QEAADjJ6XBTt25d7d27V5LUuHFjvf766zp8+LDmz5+vqKgolxcIAADgDKcPSz3zzDM6evSoJGnSpEm6++679d5778nLy0tvvfWWq+sDAABwitPh5tFHH7V9HRcXp19++UV79uxR9erVFRoa6tLiAAAAnFXq+9xc4uvrq6ZNm7qiFgAAgKvmdLgxDEMrVqzQxo0bdezYMRUWFtotX7lypcuKAwAAcJbT4WbYsGF6/fXX1a5dO0VERFzxgZoAAADlyelw884772jlypXq1KlTWdQDAABwVZy+FDwwMFA1a9Ysi1oAAACumtPh5rnnntPkyZN17ty5sqgHAADgqjgdbv7617/qt99+U3h4uBo2bKimTZvavUpj7ty5iomJkbe3t1q0aKFt27Y5tN77778vi8Wirl27lmq7AADAfJw+56Z3795KTU3Vo48+6pITipctW6YRI0Zo/vz5atGihWbNmqXExETt3bvX9piH4hw8eFAjR47UHXfccVXbBwAA5uJ0uFm9erX++9//qnXr1i4pYMaMGRowYID69u0rSZo/f75Wr16tRYsWacyYMcWuU1BQoEceeUSTJ0/W//73P506dcoltQAAgGuf04eloqOjFRAQ4JKN5+fnKzU1VQkJCf9XkIeHEhISlJKSUuJ6zz//vMLDw/X4449fcRt5eXnKycmxewEAAPNyOtxMnz5do0aN0sGDB69648ePH1dBQYEiIiLs2iMiIpSRkVHsOlu2bNGbb76pN954w6FtJCUlKTAw0PaKjo6+6roBAEDFVapnS+Xm5qpWrVry9fVV5cqV7ZafPHnSZcX92enTp/XYY4/pjTfecPg5VmPHjtWIESNs73Nycgg4AACYmNPhZtasWS7beGhoqDw9PZWZmWnXnpmZqcjIyCL9f/75Zx08eFBdunSxtV16/EOlSpW0d+9e1apVy24dq9Uqq9XqspoBAEDF5lS4uXDhgjZv3qwJEyaoRo0aV71xLy8vxcXFKTk52XY5d2FhoZKTkzVkyJAi/evVq6dvv/3Wrm38+PE6ffq0XnnlFWZkAACAc+GmcuXK+vDDDzVhwgSXFTBixAj17t1bzZo1U/PmzTVr1iydPXvWdvVUr169VK1aNSUlJcnb21u33HKL3fpBQUGSVKQdAABcn5w+LNW1a1etWrVKw4cPd0kB3bt3V1ZWliZOnKiMjAw1adJEa9eutZ1knJ6eLg8Pp897BgAA1ymnw03t2rX1/PPP64svvlBcXJz8/Pzslj/99NNOFzFkyJBiD0NJ0qZNmy677ltvveX09gAAgHk5HW7efPNNBQUFKTU1VampqXbLLBZLqcINAACAqzgdbg4cOFAWdQAAALjEVZ3MYhiGDMNwVS0AAABXrVTh5u2331bDhg3l4+MjHx8fNWrUSO+8846rawMAAHCa04elZsyYoQkTJmjIkCFq1aqVpN8fifDUU0/p+PHjLruKCgAAoDScDjevvvqq5s2bp169etna7r33Xt1888167rnnCDcAAMCtnD4sdfToUbVs2bJIe8uWLXX06FGXFAUAAFBaToeb2NhYffDBB0Xaly1bptq1a7ukKAAAgNJy+rDU5MmT1b17d33++ee2c26++OILJScnFxt6AAAAypPTMzcPPvigvvrqK4WGhmrVqlVatWqVQkNDtW3bNt1///1lUSMAAIDDnJ65kaS4uDi9++67rq4FAADgqvFESgAAYCoOz9x4eHjIYrFcto/FYtHFixevuigAAIDScjjc/Pvf/y5xWUpKimbPnq3CwkKXFAUAAFBaDoeb++67r0jb3r17NWbMGH3yySd65JFH9Pzzz7u0OAAAAGeV6pybI0eOaMCAAWrYsKEuXryonTt3asmSJbrppptcXR8AAIBTnAo32dnZGj16tGJjY/X9998rOTlZn3zyiW655Zayqg8AAMApDh+Wevnll/XSSy8pMjJS//rXv4o9TAUAAOBuDoebMWPGyMfHR7GxsVqyZImWLFlSbL+VK1e6rDgAAABnORxuevXqdcVLwQEAANzN4XDz1ltvlWEZAAAArsEdigEAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKkQbgAAgKlUiHAzd+5cxcTEyNvbWy1atNC2bdtK7PvGG2/ojjvuUNWqVVW1alUlJCRctj8AALi+uD3cLFu2TCNGjNCkSZOUlpamxo0bKzExUceOHSu2/6ZNm9SzZ09t3LhRKSkpio6O1l133aXDhw+Xc+UAAKAishiGYbizgBYtWui2227TnDlzJEmFhYWKjo7W0KFDNWbMmCuuX1BQoKpVq2rOnDnq1avXFfvn5OQoMDBQ2dnZCggIuOr6/6z51A0uH/N6ts062N0lmM/Ive6uAACc5szfb7fO3OTn5ys1NVUJCQm2Ng8PDyUkJCglJcWhMXJzc3XhwgUFBwcXuzwvL085OTl2LwAAYF5uDTfHjx9XQUGBIiIi7NojIiKUkZHh0BijR4/WDTfcYBeQ/igpKUmBgYG2V3R09FXXDQAAKi63n3NzNV588UW9//77+ve//y1vb+9i+4wdO1bZ2dm216FDh8q5SgAAUJ4quXPjoaGh8vT0VGZmpl17ZmamIiMjL7vuP//5T7344ovasGGDGjVqVGI/q9Uqq9XqknoBAEDF59aZGy8vL8XFxSk5OdnWVlhYqOTkZMXHx5e43ssvv6wpU6Zo7dq1atasWXmUCgAArhFunbmRpBEjRqh3795q1qyZmjdvrlmzZuns2bPq27evJKlXr16qVq2akpKSJEkvvfSSJk6cqKVLlyomJsZ2bo6/v7/8/f3dth8AAKBicHu46d69u7KysjRx4kRlZGSoSZMmWrt2re0k4/T0dHl4/N8E07x585Sfn6+HHnrIbpxJkybpueeeK8/SAQBABeT2+9yUN+5zc23hPjdlgPvcALgGXTP3uQEAAHA1wg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVwg0AADAVt9+hGADgHG4W6lrbnk1wdwlwMWZuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqRBuAACAqfBsKQDA9e2fdd1dgfmM3OvWzTNzAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATIVwAwAATKVChJu5c+cqJiZG3t7eatGihbZt23bZ/suXL1e9evXk7e2thg0bas2aNeVUKQAAqOjcHm6WLVumESNGaNKkSUpLS1Pjxo2VmJioY8eOFdt/69at6tmzpx5//HHt2LFDXbt2VdeuXfXdd9+Vc+UAAKAicnu4mTFjhgYMGKC+ffuqQYMGmj9/vnx9fbVo0aJi+7/yyiu6++679fe//13169fXlClT1LRpU82ZM6ecKwcAABWRW8NNfn6+UlNTlZCQYGvz8PBQQkKCUlJSil0nJSXFrr8kJSYmltgfAABcXyq5c+PHjx9XQUGBIiIi7NojIiK0Z8+eYtfJyMgotn9GRkax/fPy8pSXl2d7n52dLUnKycm5mtJLVHD+bJmMe73KMQrcXYL5lNHvPsoPnzOuxedMGSiDz5lLf7cNw7hiX7eGm/KQlJSkyZMnF2mPjo52QzVwVqC7CzCjCXxXgT/i/4gyUIafM6dPn1Zg4OXHd2u4CQ0NlaenpzIzM+3aMzMzFRkZWew6kZGRTvUfO3asRowYYXtfWFiokydPKiQkRBaL5Sr3AGUpJydH0dHROnTokAICAtxdDgAT4nPm2mEYhk6fPq0bbrjhin3dGm68vLwUFxen5ORkde3aVdLv4SM5OVlDhgwpdp34+HglJydr2LBhtrb169crPj6+2P5Wq1VWq9WuLSgoyBXlo5wEBATwoQOgTPE5c2240ozNJW4/LDVixAj17t1bzZo1U/PmzTVr1iydPXtWffv2lST16tVL1apVU1JSkiTpmWeeUZs2bTR9+nR17txZ77//vrZv364FCxa4czcAAEAF4fZw0717d2VlZWnixInKyMhQkyZNtHbtWttJw+np6fLw+L+Lulq2bKmlS5dq/PjxGjdunGrXrq1Vq1bplltucdcuAACACsRiOHLaMeAGeXl5SkpK0tixY4scWgQAV+BzxpwINwAAwFTcfodiAAAAVyLcAAAAUyHcAAAAUyHcAAAAUyHcoNxlZGRo6NChqlmzpqxWq6Kjo9WlSxclJydLkmJiYmSxWGSxWOTn56emTZtq+fLltvX79Olju+njH23atEkWi0WnTp0qpz0BUBFlZGTomWeeUWxsrLy9vRUREaFWrVpp3rx5ys3NlcTnjNkRblCuDh48qLi4OH322Wf6xz/+oW+//VZr165Vu3btNHjwYFu/559/XkePHtWOHTt02223qXv37tq6dasbKwdwLdi/f79uvfVWrVu3TtOmTdOOHTuUkpKiUaNG6T//+Y82bNhg68vnjHm5/SZ+uL4MGjRIFotF27Ztk5+fn6395ptvVr9+/Wzvq1SposjISEVGRmru3Ll699139cknn6hly5buKBvANWLQoEGqVKmStm/fbvcZU7NmTd133312T5Tmc8a8mLlBuTl58qTWrl2rwYMH233oXFLSM78qVaqkypUrKz8/v4wrBHAtO3HihNatW1fiZ4ykEh+YzOeMuRBuUG5++uknGYahevXqObxOfn6+kpKSlJ2drfbt25dhdQCudZc+Y+rWrWvXHhoaKn9/f/n7+2v06NFF1uNzxnwINyg3ztwMe/To0fL395evr69eeuklvfjii+rcuXMZ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_options_summary.keys() if \"cgdrag\" in label\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_summary,\n", + " labels=filtered_labels,\n", + " ylabel=\"Normalised walltime\",\n", + " title=\"cgdrag (10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=[\"CPU\", \"GPU\"],\n", + " xlabel=\"Device\",\n", + "\n", + " bar_width=0.3,\n", + " normalise=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4IElEQVR4nO3deVyVZf7/8fdxO2jKSXNBBXHNRGQJN0yFSjOzEstcskBTJ0ubKbMmq9G0GqYcJ5t0JL9Okls6uc5YueSaueVCo5aONiqagCscxUSF6/eHP894YhEQOHD7ej4e9+PBuc91X+dzbq4H5819X/d9bMYYIwAAAIso5+kCAAAAihLhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBgAAWArhBoDHDRw4UA0bNizx17DZbHrrrbeK9XVvxltvvSWbzebpMoAyh3ADAB504cIFvfXWW1q3bp2nSwEsg3ADAB504cIFjRs3Lsdw8+abb+qXX34p+aKAMo5wA9wC0tPTc33uwoULJVgJCqJChQry8vLydBlAmUO4AcqII0eO6Pnnn1fz5s1VuXJl3XHHHXriiSd0+PBht3bx8fGy2Wxav369nn/+edWuXVu+vr6SpMjISAUGBmrHjh3q3LmzqlSpotdff12StHTpUvXo0UP16tWT3W5XkyZN9PbbbyszM9PV99ixY1WxYkWdPHkyW32/+c1vdPvtt+vixYt5vo8lS5YoMDBQXl5eCgwM1OLFi3Nsl5WVpUmTJqlly5by8vJSnTp19Oyzz+rs2bNu7fJTd0Hs2rVL3bt3l7e3t6pWrar7779fW7ZsydYuNTVVL730kho2bCi73S5fX19FR0fr1KlTkqRLly5pzJgxCgsLk8Ph0G233aZOnTpp7dq1rj4OHz6sWrVqSZLGjRsnm83mNg8opzk3V65c0dtvv60mTZrIbrerYcOGev3115WRkeHWrmHDhnr44Ye1ceNGtW3bVl5eXmrcuLFmzpxZqP0ClCUVPF0AgPz57rvvtGnTJvXr10++vr46fPiwpk6dqsjISP3www+qUqWKW/vnn39etWrV0pgxY9yO3Jw+fVrdu3dXv3799NRTT6lOnTqSroaiqlWrauTIkapatarWrFmjMWPGyOl0asKECZKkp59+WuPHj9f8+fM1YsQIV5+XLl3SggUL9Pjjj+d5pGHlypV6/PHHFRAQoNjYWJ0+fVqDBg1yha/rPfvss4qPj9egQYP029/+VocOHdLkyZO1a9cuffvtt6pYsWK+686vvXv3qlOnTvL29tarr76qihUr6uOPP1ZkZKTWr1+vdu3aSZLOnz+vTp066ccff9Qzzzyju+++W6dOndI///lPHTt2TDVr1pTT6dT06dPVv39/DR06VOfOndPf//53devWTdu2bVNISIhq1aqlqVOn6rnnnlOvXr302GOPSZKCgoJyrXHIkCH69NNP1bt3b7388svaunWrYmNj9eOPP2YLigcPHlTv3r01ePBgxcTE6JNPPtHAgQMVFhamli1bFmjfAGWKAVAmXLhwIdu6zZs3G0lm5syZrnUzZswwkkzHjh3NlStX3NpHREQYSSYuLi5f/T/77LOmSpUq5uLFi6514eHhpl27dm7tFi1aZCSZtWvX5vkeQkJCTN26dU1qaqpr3cqVK40k4+/v71r3zTffGElmzpw5btsvX7482/r81h0TE+P2GsYYI8mMHTvW9TgqKspUqlTJ/PTTT651x48fN9WqVTOdO3d2rRszZoyRZBYtWpTttbOysowxxly5csVkZGS4PXf27FlTp04d88wzz7jWnTx5Mlsd14wdO9Zc/2c6ISHBSDJDhgxxazdq1CgjyaxZs8a1zt/f30gyGzZscK07ceKEsdvt5uWXX872WoCVcFoKKCMqV67s+vny5cs6ffq0mjZtqttvv107d+7M1n7o0KEqX758tvV2u12DBg3Ks/9z587p1KlT6tSpky5cuKB9+/a5nouOjtbWrVv1008/udbNmTNHfn5+ioiIyLX+pKQkJSQkKCYmRg6Hw7W+a9euCggIcGv7+eefy+FwqGvXrjp16pRrCQsLU9WqVd1O7eS37hvJzMzUypUrFRUVpcaNG7vW161bV08++aQ2btwop9MpSVq4cKGCg4PVq1evbP1cO41Uvnx5VapUSdLVU2xnzpzRlStX1Lp16xx/X/nx5ZdfSpJGjhzptv7ll1+WJH3xxRdu6wMCAtSpUyfX41q1aql58+b673//W6jXB8qKWzrcbNiwQY888ojq1asnm82mJUuWFOvrXTt/fv1y1113Fetrwjp++eUXjRkzRn5+frLb7apZs6Zq1aql1NRUpaWlZWvfqFGjHPupX7++60P3env37lWvXr3kcDjk7e2tWrVq6amnnpIkt/779u0ru92uOXPmuJ5btmyZBgwYkOc9WY4cOSJJatasWbbnmjdv7vb4wIEDSktLU+3atVWrVi235fz58zpx4kSB676RkydP6sKFC9lqkaQWLVooKytLR48elST99NNPCgwMvGGfn376qYKCguTl5aU77rhDtWrV0hdffFGguq535MgRlStXTk2bNnVb7+Pjo9tvv921j69p0KBBtj6qV6+ebd4SYDW39Jyb9PR0BQcH65lnnnGd6y5uLVu21Ndff+16XKHCLf0rQAG88MILmjFjhl588UWFh4fL4XDIZrOpX79+ysrKytb++iMaN1qfmpqqiIgIeXt7a/z48WrSpIm8vLy0c+dO/f73v3frv3r16nr44Yc1Z84cjRkzRgsWLFBGRoYrUBSFrKws1a5d2xWgfu3aJNyC1F3SZs+erYEDByoqKkqvvPKKateurfLlyys2NtbtqFdh5PfGfjkduZMkY8xNvT5Q2t3Sn6zdu3dX9+7dc30+IyNDb7zxhj777DOlpqYqMDBQ7733niIjIwv9mhUqVJCPj0+ht8eta8GCBYqJidHEiRNd6y5evKjU1NSb7nvdunU6ffq0Fi1apM6dO7vWHzp0KMf20dHR6tmzp7777jvNmTNHoaGhN5yg6u/vL+nqUZlf279/v9vjJk2a6Ouvv9Y999yTa0grTN15qVWrlqpUqZKtFknat2+fypUrJz8/P1d9e/bsybO/BQsWqHHjxlq0aJFbGBk7dqxbu4Lcgdjf319ZWVk6cOCAWrRo4VqfkpKi1NRU1z4GbnW39GmpGxkxYoQ2b96sefPm6d///reeeOIJPfjggzn+cc6vAwcOqF69emrcuLEGDBigxMTEIqwYVla+fPls/3F/9NFHhb7k+dd9S+7/0V+6dEl/+9vfcmzfvXt31axZU++9957Wr1+fr6M2devWVUhIiD799FO30zKrVq3SDz/84Na2T58+yszM1Ntvv52tnytXrrgCXUHrzkv58uX1wAMPaOnSpW6X16ekpGju3Lnq2LGjvL29JUmPP/64vv/++xwvY79WS061bd26VZs3b3Zrf+0qt/yE1IceekiSNGnSJLf1f/nLXyRJPXr0uGEfwK3glj5yk5fExETNmDFDiYmJqlevniRp1KhRWr58uWbMmKE//vGPBe6zXbt2io+PV/PmzZWUlKRx48apU6dO2rNnj6pVq1bUbwEW8/DDD2vWrFlyOBwKCAjQ5s2b9fXXX+uOO+646b47dOig6tWrKyYmRr/97W9ls9k0a9asXE9fVKxYUf369dPkyZNVvnx59e/fP1+vExsbqx49eqhjx4565plndObMGX300Udq2bKlzp8/72oXERGhZ599VrGxsUpISNADDzygihUr6sCBA/r888/14Ycfqnfv3gWu+0beeecdrVq1Sh07dtTzzz+vChUq6OOPP1ZGRobef/99V7tXXnlFCxYs0BNPPKFnnnlGYWFhOnPmjP75z38qLi5OwcHBevjhh7Vo0SL16tVLPXr00KFDhxQXF6eAgAC391q5cmUFBARo/vz5uvPOO1WjRg0FBgbmOKcnODhYMTExmjZtmuuU3LZt2/Tpp58qKipK9957b6HeN2A5nrtQq3SRZBYvXux6vGzZMiPJ3HbbbW5LhQoVTJ8+fYwxxvz4449GUp7L73//+1xf8+zZs8bb29tMnz69uN8eLODs2bNm0KBBpmbNmqZq1aqmW7duZt++fcbf39/ExMS42l27FPy7777L1kdERIRp2bJljv1/++23pn379qZy5cqmXr165tVXXzUrVqzI9RLvbdu2GUnmgQceKND7WLhwoWnRooWx2+0mICDALFq0KMfLtI0xZtq0aSYsLMxUrlzZVKtWzbRq1cq8+uqr5vjx4wWuOz+XghtjzM6dO023bt1M1apVTZUqVcy9995rNm3alK2206dPmxEjRpj69eubSpUqGV9fXxMTE2NOnTpljLl6Sfgf//hH4+/vb+x2uwkNDTXLli3LsY5NmzaZsLAwU6lSJbeafn0puDHGXL582YwbN840atTIVKxY0fj5+ZnRo0e7XfZuzNVLwXv06JGt7oiICBMREZFtPWAlNmOYWSZdPe+9ePFiRUVFSZLmz5+vAQMGaO/evdkm5VWtWlU+Pj66dOnSDS+pvHaFRG7atGmjLl26KDY29qbfA1CSvv/+e4WEhGjmzJl6+umnPV0OALhwWioXoaGhyszM1IkTJ9zuE3G9SpUq3dSl3OfPn9dPP/3EBwPKpP/7v/9T1apVS+xKQwDIr1s63Jw/f14HDx50PT506JASEhJUo0YN3XnnnRowYICio6M1ceJEhYaG6uTJk1q9erWCgoIKNXFv1KhReuSRR+Tv76/jx49r7NixBZqvAJQG//rXv/TDDz9o2rRpGjFihG677TZPlwQAbm7p01Lr1q3LcQJeTEyM4uPjdfnyZb3zzjuaOXOmfv75Z9WsWVPt27fXuHHj1KpVqwK/Xr9+/bRhwwadPn1atWrVUseOHfXuu++qSZMmRfF2gBLRsGFDpaSkqFu3bpo1axaT4QGUOrd0uAEAANbDfW4AAIClEG4AAICl3HITirOysnT8+HFVq1atQLc9BwAAnmOM0blz51SvXj2VK5f3sZlbLtwcP37c9f0wAACgbDl69Kh8fX3zbHPLhZtrV3YcPXrU9T0xAACgdHM6nfLz88vXFZq3XLi5dirK29ubcAMAQBmTnyklTCgGAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWUsHTBQDIhz8393QFsKJR+z1dAVAsOHIDAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAsxaPhZurUqQoKCpK3t7e8vb0VHh6ur776Ktf28fHxstlsbouXl1cJVgwAAEq7Cp58cV9fX/3pT39Ss2bNZIzRp59+qp49e2rXrl1q2bJljtt4e3tr//79rsc2m62kygUAAGWAR8PNI4884vb43Xff1dSpU7Vly5Zcw43NZpOPj09JlAcAAMqgUjPnJjMzU/PmzVN6errCw8NzbXf+/Hn5+/vLz89PPXv21N69e/PsNyMjQ06n020BAADW5fFws3v3blWtWlV2u13Dhg3T4sWLFRAQkGPb5s2b65NPPtHSpUs1e/ZsZWVlqUOHDjp27Fiu/cfGxsrhcLgWPz+/4norAACgFLAZY4wnC7h06ZISExOVlpamBQsWaPr06Vq/fn2uAed6ly9fVosWLdS/f3+9/fbbObbJyMhQRkaG67HT6ZSfn5/S0tLk7e1dZO8DKFZ/bu7pCmBFo/bfuA1QSjidTjkcjnx9fnt0zo0kVapUSU2bNpUkhYWF6bvvvtOHH36ojz/++IbbVqxYUaGhoTp48GCubex2u+x2e5HVCwAASjePn5b6taysLLcjLXnJzMzU7t27Vbdu3WKuCgAAlBUePXIzevRode/eXQ0aNNC5c+c0d+5crVu3TitWrJAkRUdHq379+oqNjZUkjR8/Xu3bt1fTpk2VmpqqCRMm6MiRIxoyZIgn3wYAAChFPBpuTpw4oejoaCUlJcnhcCgoKEgrVqxQ165dJUmJiYkqV+5/B5fOnj2roUOHKjk5WdWrV1dYWJg2bdqUr/k5AADg1uDxCcUlrSATkoBSgwnFKA5MKEYZUpDP71I35wYAAOBmEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAICleDTcTJ06VUFBQfL29pa3t7fCw8P11Vdf5bnN559/rrvuukteXl5q1aqVvvzyyxKqFgAAlAUeDTe+vr7605/+pB07dmj79u2677771LNnT+3duzfH9ps2bVL//v01ePBg7dq1S1FRUYqKitKePXtKuHIAAFBa2YwxxtNFXK9GjRqaMGGCBg8enO25vn37Kj09XcuWLXOta9++vUJCQhQXF5ev/p1OpxwOh9LS0uTt7V1kdQPF6s/NPV0BrGjUfk9XAORbQT6/S82cm8zMTM2bN0/p6ekKDw/Psc3mzZvVpUsXt3XdunXT5s2bc+03IyNDTqfTbQEAANbl8XCze/duVa1aVXa7XcOGDdPixYsVEBCQY9vk5GTVqVPHbV2dOnWUnJyca/+xsbFyOByuxc/Pr0jrBwAApYvHw03z5s2VkJCgrVu36rnnnlNMTIx++OGHIut/9OjRSktLcy1Hjx4tsr4BAEDpU8HTBVSqVElNmzaVJIWFhem7777Thx9+qI8//jhbWx8fH6WkpLitS0lJkY+PT6792+122e32oi0aAACUWh4/cvNrWVlZysjIyPG58PBwrV692m3dqlWrcp2jAwAAbj0ePXIzevRode/eXQ0aNNC5c+c0d+5crVu3TitWrJAkRUdHq379+oqNjZUk/e53v1NERIQmTpyoHj16aN68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bV2dOnWUnJycY/vY2Fg5HA7X4ufnV+gaAQBA6VeocHP69Gl16dJFd955px566CElJSVJkgYPHqyXX365UIUMHz5ce/bs0bx58wq1fW5Gjx6ttLQ013L06NEi7R8AAJQuhQo3L730kipUqKDExERVqVLFtb5v375avnx5gfsbMWKEli1bprVr18rX1zfPtj4+PkpJSXFbl5KSIh8fnxzb2+12eXt7uy0AAMC6ChVuVq5cqffeey9bEGnWrJmOHDmS736MMRoxYoQWL16sNWvWqFGjRjfcJjw8XKtXr3Zbt2rVKoWHh+f7dQEAgHUV6iZ+6enpbkdsrjlz5kyBbt43fPhwzZ07V0uXLlW1atVc82YcDocqV64sSYqOjlb9+vUVGxsrSfrd737n+hqIHj16aN68edq+fbumTZtWmLcCAAAsplBHbjp16qSZM2e6HttsNmVlZen999/Xvffem+9+pk6dqrS0NEVGRqpu3bquZf78+a42iYmJrjk9ktShQwfNnTtX06ZNU3BwsBYsWKAlS5bkOQkZAADcOgp1n5s9e/bo/vvv19133601a9bo0Ucf1d69e3XmzBl9++23atKkSXHUWiS4zw3KJO5zg+LAfW5QhhT7fW4CAwP1n//8Rx07dlTPnj2Vnp6uxx57TLt27SrVwQYAAFhfob840+Fw6I033ijKWgAAAG5aocPNxYsX9e9//1snTpxQVlaW23OPPvroTRcGAABQGIUKN8uXL1d0dLROnTqV7TmbzabMzMybLqysavvu154uARa0Lf8XIQLALa9Qc25eeOEFPfHEE0pKSlJWVpbbcisHGwAA4HmFCjcpKSkaOXJktu94AgAA8LRChZvevXtr3bp1RVwKAADAzSvUnJvJkyfriSee0DfffKNWrVqpYsWKbs//9re/LZLiAAAACqpQ4eazzz7TypUr5eXlpXXr1slms7mes9lshBsAAOAxhQo3b7zxhsaNG6fXXntN5coV6swWAABAsShUMrl06ZL69u1LsAEAAKVOodJJTEyM25dbAgAAlBaFOi2VmZmp999/XytWrFBQUFC2CcV/+ctfiqQ4AACAgipUuNm9e7dCQ0MlXf2G8OtdP7kYAACgpBUq3Kxdu7ao6wAAACgSzAgGAACWku8jN4899pji4+Pl7e2txx57LM+2ixYtuunCAAAACiPf4cbhcLjm0zgcjmIrCAAA4GbkO9zMmDFD48eP16hRozRjxozirAkAAKDQCjTnZty4cTp//nxx1QIAAHDTChRujDHFVQcAAECRKPDVUtzHBgAAlGYFvs/NnXfeecOAc+bMmUIXBAAAcDMKHG7GjRvH1VIAAKDUKnC46devn2rXrl0ctQAAANy0As25Yb4NAAAo7bhaCgAAWEqBTktlZWUVVx0AAABFgi/OBAAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAluLRcLNhwwY98sgjqlevnmw2m5YsWZJn+3Xr1slms2VbkpOTS6ZgAABQ6nk03KSnpys4OFhTpkwp0Hb79+9XUlKSa+FbygEAwDUF+m6pota9e3d17969wNvVrl1bt99+e9EXBAAAyrwyOecmJCREdevWVdeuXfXtt9/m2TYjI0NOp9NtAQAA1lWmwk3dunUVFxenhQsXauHChfLz81NkZKR27tyZ6zaxsbFyOByuxc/PrwQrBgAAJc2jp6UKqnnz5mrevLnrcYcOHfTTTz/pgw8+0KxZs3LcZvTo0Ro5cqTrsdPpJOAAAGBhZSrc5KRt27bauHFjrs/b7XbZ7fYSrAgAAHhSmTotlZOEhATVrVvX02UAAIBSwqNHbs6fP6+DBw+6Hh86dEgJCQmqUaOGGjRooNGjR+vnn3/WzJkzJUmTJk1So0aN1LJlS128eFHTp0/XmjVrtHLlSk+9BQAAUMp4NNxs375d9957r+vxtbkxMTExio+PV1JSkhITE13PX7p0SS+//LJ+/vlnValSRUFBQfr666/d+gAAALc2mzHGeLqIkuR0OuVwOJSWliZvb+8i77/tu18XeZ/ANvtwT5cAKxq139MVAPlWkM/vMj/nBgAA4HqEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCkeDTcbNmzQI488onr16slms2nJkiU33GbdunW6++67Zbfb1bRpU8XHxxd7nQAAoOzwaLhJT09XcHCwpkyZkq/2hw4dUo8ePXTvvfcqISFBL774ooYMGaIVK1YUc6UAAKCsqODJF+/evbu6d++e7/ZxcXFq1KiRJk6cKElq0aKFNm7cqA8++EDdunUrrjIBAEAZUqbm3GzevFldunRxW9etWzdt3rw5120yMjLkdDrdFgAAYF1lKtwkJyerTp06buvq1Kkjp9OpX375JcdtYmNj5XA4XIufn19JlAoAADykTIWbwhg9erTS0tJcy9GjRz1dEgAAKEYenXNTUD4+PkpJSXFbl5KSIm9vb1WuXDnHbex2u+x2e0mUBwAASoEydeQmPDxcq1evdlu3atUqhYeHe6giAABQ2ng03Jw/f14JCQlKSEiQdPVS74SEBCUmJkq6ekopOjra1X7YsGH673//q1dffVX79u3T3/72N/3jH//QSy+95InyAQBAKeTRcLN9+3aFhoYqNDRUkjRy5EiFhoZqzJgxkqSkpCRX0JGkRo0a6YsvvtCqVasUHBysiRMnavr06VwGDgAAXDw65yYyMlLGmFyfz+nuw5GRkdq1a1cxVgUAAMqyMjXnBgAA4EYINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFJKRbiZMmWKGjZsKC8vL7Vr107btm3LtW18fLxsNpvb4uXlVYLVAgCA0szj4Wb+/PkaOXKkxo4dq507dyo4OFjdunXTiRMnct3G29tbSUlJruXIkSMlWDEAACjNPB5u/vKXv2jo0KEaNGiQAgICFBcXpypVquiTTz7JdRubzSYfHx/XUqdOnRKsGAAAlGYeDTeXLl3Sjh071KVLF9e6cuXKqUuXLtq8eXOu250/f17+/v7y8/NTz549tXfv3lzbZmRkyOl0ui0AAMC6PBpuTp06pczMzGxHXurUqaPk5OQct2nevLk++eQTLV26VLNnz1ZWVpY6dOigY8eO5dg+NjZWDofDtfj5+RX5+wAAAKWHx09LFVR4eLiio6MVEhKiiIgILVq0SLVq1dLHH3+cY/vRo0crLS3NtRw9erSEKwYAACWpgidfvGbNmipfvrxSUlLc1qekpMjHxydffVSsWFGhoaE6ePBgjs/b7XbZ7fabrhUAAJQNHj1yU6lSJYWFhWn16tWudVlZWVq9erXCw8Pz1UdmZqZ2796tunXrFleZAACgDPHokRtJGjlypGJiYtS6dWu1bdtWkyZNUnp6ugYNGiRJio6OVv369RUbGytJGj9+vNq3b6+mTZsqNTVVEyZM0JEjRzRkyBBPvg0AAFBKeDzc9O3bVydPntSYMWOUnJyskJAQLV++3DXJODExUeXK/e8A09mzZzV06FAlJyerevXqCgsL06ZNmxQQEOCptwAAAEoRmzHGeLqIkuR0OuVwOJSWliZvb+8i77/tu18XeZ/ANvtwT5cAKxq139MVAPlWkM/vMne1FAAAQF4INwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFJKRbiZMmWKGjZsKC8vL7Vr107btm3Ls/3nn3+uu+66S15eXmrVqpW+/PLLEqoUAACUdh4PN/Pnz9fIkSM1duxY7dy5U8HBwerWrZtOnDiRY/tNmzapf//+Gjx4sHbt2qWoqChFRUVpz549JVw5AAAojWzGGOPJAtq1a6c2bdpo8uTJkqSsrCz5+fnphRde0GuvvZatfd++fZWenq5ly5a51rVv314hISGKi4u74es5nU45HA6lpaXJ29u76N7I/9f23a+LvE9gm324p0uAFY3a7+kKgHwryOd3hRKqKUeXLl3Sjh07NHr0aNe6cuXKqUuXLtq8eXOO22zevFkjR450W9etWzctWbIkx/YZGRnKyMhwPU5LS5N0dScV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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBM0lEQVR4nO3deVxUZf//8feAMoCKiAi4oKi4h5oQ5lKoYeZWVpqtLqVlaovcrrlrSlYqmQuZuVRappl5p3mnplbGnamp3eWWS1oKoiaoJAic3x/9mG8TqDM4OHh8PR+PeTyc61znOp8z99zDu3Ouc47FMAxDAAAAJuHh7gIAAABciXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADwCHHjh2Tt7e3tmzZ4u5SioWFCxfKYrHoyJEj7i7FYePGjZPFYnF3GRo+fLiaNm3q7jJgYoQb4Cry/ojlvUqUKKHKlSurV69e+v3334tsu3l/iIKDg5WRkZFveVhYmDp16lSosWfPnq2FCxc6tc6ECRPUtGlTtWjRwta2b98+DRo0SM2bN5e3t/dV/9ivWrVKTZo0kbe3t6pWraqxY8cqOzvb4Rreeecd1atXT97e3qpVq5befPPNAvv9/vvveuihh+Tv7y8/Pz/dd999OnTo0DWN6YjCfK6ulpGRoXHjxmnTpk1ureNKXnzxRe3atUurVq1ydykwKwPAFS1YsMCQZEyYMMF47733jLffftt46qmnDE9PT6NmzZrGn3/+WSTbHTt2rCHJkGS8/vrr+ZZXq1bN6NixY6HGbtCggRETE+Nw/5MnTxolS5Y0lixZYte+YMECw8PDw7jllluMxo0bG5KMw4cPFzjGmjVrDIvFYrRu3dqYO3eu8dxzzxkeHh5Gv379HKohMTHRkGQ8+OCDxty5c40nnnjCkGS88sordv3OnTtn1KpVywgKCjKmTJliTJs2zQgNDTWqVKlinDp1qlBjFiQ7O9v4888/jdzcXFubs59rUUhNTTUkGWPHjs237NKlS0X2fXXWQw89ZNxxxx3uLgMmRbgBriIv3Hz//fd27cOGDTMkGUuXLi2S7eaFm8aNGxvBwcFGRkaG3fLrGW6mTZtm+Pj4GOfOnbNrP336tJGenm4YhmG89tprVww39evXNxo1amRcunTJ1jZy5EjDYrEYe/bsueL2MzIyjPLly+fb38cee8woVaqUcebMGVvblClTDEnG1q1bbW179uwxPD09jREjRhRqTEcVRbi5dOmSkZmZ6XD/K4Wb4mT58uWGxWIxDh486O5SYEKclgIK6Y477pAkHTx40K5979696tq1qwICAuTt7a2oqKh8h98vXbqk8ePHq1atWvL29lb58uXVsmVLrVu3Lt92xowZo5SUFM2ZM+eqNeXm5iohIUENGjSQt7e3goOD9cwzz+iPP/6w9QkLC9NPP/2kzZs32061tWrV6orjrly5Uk2bNlXp0qXt2gMCAlSmTJmr1vXzzz/r559/1tNPP60SJUrY2vv37y/DMLR8+fIrrr9x40adPn1a/fv3t2sfMGCALly4oNWrV9vali9frttuu0233Xabra1u3bq666679NFHHxVqzIL8c87N1T7Xs2fP6sUXX1RoaKisVqvCw8M1ZcoU5ebm2vocOXJEFotFr7/+uhISElSzZk1ZrVb9/PPPysrK0pgxYxQZGamyZcuqVKlSuuOOO7Rx40a79StUqCBJGj9+vK2OcePGSSp4zk12drYmTpxo21ZYWJheeuklZWZm2vXLOw36zTffKDo6Wt7e3qpRo4beffddu36OfrdjY2MlSZ9++ukVP2egMAg3QCHl/VErV66cre2nn37S7bffrj179mj48OGaOnWqSpUqpS5duuiTTz6x9Rs3bpzGjx+v1q1ba+bMmRo5cqSqVq2qHTt25NvOHXfcoTZt2ujVV1/Vn3/+ecWannnmGQ0ZMkQtWrTQG2+8od69e2vx4sVq166dLl26JElKSEhQlSpVVLduXb333nt67733NHLkyMuOeenSJX3//fdq0qSJMx+PnR9++EGSFBUVZddeqVIlValSxbbc2fUjIyPl4eFhW56bm6vdu3fn6ydJ0dHROnjwoM6dO+fUmI660ueakZGhmJgYvf/+++rRo4dmzJihFi1aaMSIEYqLi8s31oIFC/Tmm2/q6aef1tSpUxUQEKD09HTNmzdPrVq10pQpUzRu3DilpqaqXbt22rlzpySpQoUKthB8//332+p44IEHLlt3nz59NGbMGDVp0kTTp09XTEyM4uPj9fDDD+fr+8svv6hr165q27atpk6dqnLlyqlXr1766aefbH0c/W6XLVtWNWvWZII6ioa7Dx0BxV3eaan169cbqampxrFjx4zly5cbFSpUMKxWq3Hs2DFb37vuusuIiIgwLl68aGvLzc01mjdvbtSqVcvW1qhRo6ueUso7LZWammps3rzZkGRMmzbNtvyfp6W+/vprQ5KxePFiu3HWrl2br92Z0ye//PKLIcl48803r9jvSqel8pYdPXo037LbbrvNuP3226849oABAwxPT88Cl1WoUMF4+OGHDcP4v1MyEyZMyNdv1qxZhiRj7969To15OXnfi7/v7+U+14kTJxqlSpUy9u/fb9c+fPhww9PT0/a5HD582JBk+Pn5GSdPnrTrm52dne/01B9//GEEBwcbTz75pK3tSqel8r5TeXbu3GlIMvr06WPXb/DgwYYk48svv7S1VatWzZBkfPXVV7a2kydPGlar1fjXv/5la3Pku53n7rvvNurVq+dQX8AZHLkBHBQbG6sKFSooNDRUXbt2ValSpbRq1SpVqVJFknTmzBl9+eWXeuihh3Tu3DmdOnVKp06d0unTp9WuXTsdOHDAdnWVv7+/fvrpJx04cMChbd95551q3br1FY/eLFu2TGXLllXbtm1t2z516pQiIyNVunRpu9MXzjh9+rQk+yNUzsqr2Wq15lvm7e191SNSf/75p7y8vApc9vf1r7adv/dxdExXWLZsme644w6VK1fO7n+b2NhY5eTk6KuvvrLr/+CDD9pOL+Xx9PS01Zubm6szZ84oOztbUVFRBR7xc8SaNWskKd/Ro3/961+SlO/UXP369W2nY6W/jhTVqVPH7ko0Z77beZ8H4GqEG8BBs2bN0rp167R8+XJ16NBBp06dsvsj+ssvv8gwDI0ePVoVKlSwe40dO1aSdPLkSUl/XVZ99uxZ1a5dWxERERoyZIh27959xe2PGzdOycnJSkxMLHD5gQMHlJaWpqCgoHzbP3/+vG3bhWUYRqHX9fHxkaR88zgk6eLFi7blV1o/KyurwGV/X/9q2/l7H0fHdIUDBw5o7dq1+f53yZt38s//bapXr17gOIsWLVLDhg1tc1kqVKig1atXKy0trVB1/frrr/Lw8FB4eLhde0hIiPz9/fXrr7/atVetWjXfGOXKlbOb0+XMd9swjGJx3x2YT4mrdwEg/TVnI29+RpcuXdSyZUs9+uij2rdvn0qXLm2bGDp48GC1a9euwDHy/ojceeedOnjwoD799FN98cUXmjdvnqZPn67ExET16dOn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CuEGAACYCuEGAACYyk035wYAAGfk5OTo0qVL7i7jpuDl5XXVy7wdQbgBAKAAhmEoOTlZZ8+edXcpNw0PDw9Vr15dXl5e1zQO4QYAgALkBZugoCD5+vpy49cilneT3RMnTqhq1arX9HkTbgAA+IecnBxbsClfvry7y7lpVKhQQcePH1d2drZKlixZ6HGYUAwAwD/kzbHx9fV1cyU3l7zTUTk5Odc0DuEGAIDL4FTU9eWqz5twAwAATMWt4earr75S586dValSJVksFq1cufKq62zatElNmjSR1WpVeHi4Fi5cWOR1AgCAG4dbJxRfuHBBjRo10pNPPqkHHnjgqv0PHz6sjh07ql+/flq8eLE2bNigPn36qGLFimrXrt11qBgAcLOLnrT+um1r68hYp9fp1auXFi1alK/9wIEDCg8Pd0VZxZ5bw0379u3Vvn17h/snJiaqevXqmjp1qiSpXr16+uabbzR9+nTCDQAA/98999yjBQsW2LVVqFDB6XGysrKu+Z4z7nBDzblJSkpSbKx9im3Xrp2SkpLcVBEAAMWP1WpVSEiI3cvT01ObN29WdHS0rFarKlasqOHDhys7O9u2XqtWrTRw4EC9+OKLCgwMtB04sFgsmjNnjtq3by8fHx/VqFFDy5cvt63Xpk0bDRw40K6G1NRUeXl5acOGDddnp//mhgo3ycnJCg4OtmsLDg5Wenq6/vzzzwLXyczMVHp6ut0LAICbze+//64OHTrotttu065duzRnzhy98847evnll+36LVq0SF5eXtqyZYsSExNt7aNHj9aDDz6oXbt26bHHHtPDDz+sPXv2SJL69OmjJUuWKDMz09b//fffV+XKldWmTZvrs4N/Y/qb+MXHx2v8+PHXbXvX81zszaAw55sB4Gb32WefqXTp0rb37du3V+3atRUaGqqZM2fKYrGobt26On78uIYNG6YxY8bYnulUq1Ytvfrqq/nG7Natm/r06SNJmjhxotatW6c333xTs2fP1gMPPKCBAwfq008/1UMPPSRJWrhwoXr16uWWy+lvqCM3ISEhSklJsWtLSUmRn5+ffHx8ClxnxIgRSktLs72OHTt2PUoFAMBtWrdurZ07d9peM2bM0J49e9SsWTO7sNGiRQudP39ev/32m60tMjKywDGbNWuW733ekRtvb2898cQTmj9/viRpx44d+t///qdevXq5eM8cc0MduWnWrJnWrFlj17Zu3bp8H/jfWa1WWa3Woi4NAIBio1SpUoW+MqpUqVKFWq9Pnz5q3LixfvvtNy1YsEBt2rRRtWrVCjXWtXLrkZvz58/bUqX016XeO3fu1NGjRyX9ddSlR48etv79+vXToUOHNHToUO3du1ezZ8/WRx99pEGDBrmjfAAAbhj16tVTUlKSDMOwtW3ZskVlypRRlSpVrrr+f//733zv69WrZ3sfERGhqKgovf3221qyZImefPJJ1xXvJLeGm23btunWW2/VrbfeKkmKi4vTrbfeqjFjxkiSTpw4YQs6klS9enWtXr1a69atU6NGjTR16lTNmzePy8ABALiK/v3769ixY3ruuee0d+9effrppxo7dqzi4uJs822uZNmyZZo/f77279+vsWPHauvWrfmukOrTp49eeeUVGYah+++/v6h25arcelqqVatWdgnynwq6+3CrVq30ww8/FGFVAACYT+XKlbVmzRoNGTJEjRo1UkBAgJ566imNGjXKofXHjx+vDz/8UP3791fFihX1wQcfqH79+nZ9HnnkEb344ot65JFH5O3tXRS74ZAbas4NAADuVtyv4rzSY4liYmK0devWyy7ftGnTZZdVqlRJX3zxxRW3ferUKV28eFFPPfXU1cosUoQbAABwTS5duqTTp09r1KhRuv3229WkSRO31nNDXQoOAACKny1btqhixYr6/vvv7W785y4cuQEAAFd0pfmx0tXn0F5vHLkBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAAAut2nTJlksFp09e/a6b5v73AAA4IzX61y/bQ3e5/QqvXr10qJFi5xeb+PGjWrVqpXT6xVHhBsAAEzmnnvu0YIFC2zvs7Ky5OnpKU9PT0nSCy+8oPT0dLs+AQEBDo+fk5Mji8Xi0NPE3aF4VgUAAArNarUqJCTE9qpataoqV65se+/j42PXx2q1qk+fPipXrpx8fX3Vvn17HThwwDbewoUL5e/vr1WrVql+/fqyWq06evSoMjMzNWzYMIWGhspqtSo8PFzvvPOOXS3bt29XVFSUfH191bx5c+3b5/zRKGcRbgAAuMn16tVL27Zt06pVq5SUlCTDMNShQwddunTJ1icjI0NTpkzRvHnz9NNPPykoKEg9evTQBx98oBkzZmjPnj166623VLp0abux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ZMkShYWF2ebmlC5dWqVLl3bbfgAAgOLB7eGme/fuSk1N1ZgxY5ScnKzGjRtr7dq1tknGR48elYfH/x1gmjNnjrKystS1a1e7ccaOHatx48Zdz9IBAEAx5PZwI0kDBw7UwIEDC1y2adMmu/dHjhwp+oIAAMANq1iEGwAA3Ob1Ou6uwHwG73Pr5m/oS8EBAAD+iXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpViEm1mzZiksLEze3t5q2rSptm7desX+y5YtU926deXt7a2IiAitWbPmOlUKAACKO7eHm6VLlyouLk5jx47Vjh071KhRI7Vr104nT54ssP+3336rRx55RE899ZR++OEHdenSRV26dNH//ve/61w5AAAojtwebqZNm6a+ffuqd+/eql+/vhITE+Xr66v58+cX2P+NN97QPffcoyFDhqhevXqaOHGimjRpopkzZ17nygEAQHHk1nCTlZWl7du3KzY21tbm4eGh2NhYJSUlFbhOUlKSXX9Jateu3WX7AwCAm0sJd2781KlTysnJUXBwsF17cHCw9u7dW+A6ycnJBfZPTk4usH9mZqYyMzNt79PS0iRJ6enp11L6ZeVcvFAk496s0o0cd5dgPkX03cf1w++Ma/E7UwSK4Hcm7++2YRhX7evWcHM9xMfHa/z48fnaQ0ND3VANnFXW3QWY0Wg+VeDv+H9EESjC35lz586pbNkrj+/WcBMYGChPT0+lpKTYtaekpCgkJKTAdUJCQpzqP2LECMXFxdne5+bm6syZMypf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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_options_summary.keys() if \"resnet\" in label\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_summary,\n", + " labels=filtered_labels,\n", + " ylabel=\"Normalised walltime\",\n", + " title=\"ResNet (10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=[\"CPU\", \"GPU\"],\n", + " xlabel=\"Device\",\n", + "\n", + " bar_width=0.3,\n", + " normalise=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FTorch with/without gradients and/or frozen models on Sapphire Rapids CPUs" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3AElEQVR4nO3deVxWZf7/8ffN4m0ukOaCCy6p4cIabpgJKqVmKplpWmGO2tdJZyrLipxMLYdJMy110vk6wpiRllvztZLMdUytXCi1NC0VTcAlBaXAhOv3hz/v8ZZFQPCG4+v5eJzHw/vc17nO5xyuB7w993XObTPGGAEAAFiEm6sLAAAAKE2EGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwC4QR5//HE1adLE1WUAlke4ASxqy5Ytmjhxos6ePevqUm4qx48f18SJE5WUlOTqUoCbFuEGsKgtW7Zo0qRJhJsb7Pjx45o0aVK+4eZ///d/tX///htfFHCTIdwAKPcyMzNLvc+LFy/qwoULpd5vYTw9PWW322/oPoGbEeEGsKCJEydq3LhxkqSmTZvKZrPJZrPp8OHDjjaLFi1SaGiobrnlFtWsWVMPP/ywjh496tRPRESE/P399d1336lr166qUqWKGjRooKlTp+bZ56xZs9SmTRtVqVJFNWrUUNu2bZWQkODUZteuXerVq5e8vLxUrVo1de/eXdu2bXNqEx8fL5vNpo0bN+rJJ59UnTp11LBhw0KPNysrSxMnTtQdd9yhypUrq169eurfv79+/PFHSdLhw4dls9n0xhtvaObMmWrWrJnsdru+++47SdK+ffs0YMAA1axZU5UrV1bbtm3173//22kfv/zyi5577jkFBASoWrVq8vLyUq9evfTNN9842mzYsEHt2rWTJA0bNsxx3uPj4yXlP+cmMzNTzz77rHx9fWW32+Xn56c33nhDxhindjabTWPGjNHKlSvl7+8vu92uNm3aaPXq1YWeG+Bm5OHqAgCUvv79++uHH37Q+++/rxkzZqhWrVqSpNq1a0uSpkyZopdfflkDBw7UiBEjdPLkSc2aNUtdunTRrl27dOuttzr6OnPmjHr27Kn+/ftr4MCBWrp0qV544QUFBASoV69eki593PLnP/9ZAwYM0FNPPaWsrCx9++23+vLLLzVkyBBJ0t69e3X33XfLy8tLzz//vDw9PTVv3jxFRERo48aN6tChg9MxPPnkk6pdu7YmTJhQ6JWbnJwc3X///Vq7dq0efvhhPfXUUzp37pzWrFmjPXv2qFmzZo62cXFxysrK0hNPPCG73a6aNWtq7969uuuuu9SgQQO9+OKLqlq1qj744ANFRUVp2bJleuCBByRJP/30k1auXKmHHnpITZs2VVpamubNm6fw8HB99913ql+/vlq1aqXJkydrwoQJeuKJJ3T33XdLkjp16pRv7cYY9e3bV+vXr9fw4cMVHBysxMREjRs3Tj///LNmzJjh1H7z5s1avny5nnzySVWvXl1vv/22HnzwQSUnJ+u222675rgAbhoGgCVNmzbNSDKHDh1yWn/48GHj7u5upkyZ4rR+9+7dxsPDw2l9eHi4kWQWLlzoWJednW18fHzMgw8+6FjXr18/06ZNm0LriYqKMpUqVTI//vijY93x48dN9erVTZcuXRzr4uLijCTTuXNnc/HixWse54IFC4wk8+abb+Z5Lzc31xhjzKFDh4wk4+XlZU6cOOHUpnv37iYgIMBkZWU5bdepUyfTokULx7qsrCyTk5PjtO2hQ4eM3W43kydPdqz7+uuvjSQTFxeXp56hQ4eaxo0bO16vXLnSSDKvvfaaU7sBAwYYm81mDh486FgnyVSqVMlp3TfffGMkmVmzZuV3aoCbFh9LATeZ5cuXKzc3VwMHDtSpU6cci4+Pj1q0aKH169c7ta9WrZoeffRRx+tKlSqpffv2+umnnxzrbr31Vh07dkxff/11vvvMycnRZ599pqioKN1+++2O9fXq1dOQIUO0efNmZWRkOG0zcuRIubu7X/N4li1bplq1aulPf/pTnvdsNpvT6wcffNBx9Uq69FHTunXrNHDgQJ07d85xLk6fPq0ePXrowIED+vnnnyVJdrtdbm5ujuM5ffq0qlWrJj8/P+3cufOadebnk08+kbu7u/785z87rX/22WdljNGnn37qtD4yMtLpSlRgYKC8vLycfhYAbvI5N5s2bVKfPn1Uv3592Ww2rVy5skz3N3HiRMdn8JeXli1bluk+gasdOHBAxhi1aNFCtWvXdlq+//57nThxwql9w4YN84SEGjVq6MyZM47XL7zwgqpVq6b27durRYsWGj16tL744gvH+ydPntSvv/4qPz+/PPW0atVKubm5eeb7NG3atEjH8+OPP8rPz08eHtf+lP3qPg8ePChjjF5++eU85+KVV16RJMf5yM3N1YwZM9SiRQvZ7XbVqlVLtWvX1rfffqv09PQi1Xq1I0eOqH79+qpevbrT+latWjnev1KjRo3y9HH1zwLATT7nJjMzU0FBQfrDH/6g/v3735B9tmnTRp9//rnjdVF+IQOlKTc3VzabTZ9++mm+V0aqVavm9LqgqyfmigmvrVq10v79+7Vq1SqtXr1ay5Yt09///ndNmDBBkyZNKlGdt9xyS4m2K06fubm5kqTnnntOPXr0yHeb5s2bS5L++te/6uWXX9Yf/vAHvfrqq6pZs6bc3Nz09NNPO/opa0X5WQC4ycNNr169HBMi85Odna3x48fr/fff19mzZ+Xv76/XX39dERERJd6nh4eHfHx8Srw9UFRXX225rFmzZjLGqGnTprrjjjtKbX9Vq1bVoEGDNGjQIF24cEH9+/fXlClTFBMTo9q1a6tKlSr5PuNl3759cnNzk6+vb4n226xZM3355Zf6/fff5enpWaxtL39E5unpqcjIyELbLl26VF27dtU///lPp/Vnz551TNiWCj7v+WncuLE+//xznTt3zunqzb59+xzvAyi+m/pjqWsZM2aMtm7dqsWLF+vbb7/VQw89pJ49e+rAgQMl7vPAgQOqX7++br/9dj3yyCNKTk4uxYqB/6pataok5XmIX//+/eXu7q5Jkybl+R+/MUanT58u9r6u3qZSpUpq3bq1jDH6/fff5e7urnvvvVcfffSR0+3oaWlpSkhIUOfOneXl5VXs/UqX5tGcOnVKs2fPzvPeta5o1KlTRxEREZo3b55SUlLyvH/y5EnHv93d3fP09+GHHzrm5FxW0HnPz3333aecnJw8tc+YMUM2m63Q/3wBKNhNfeWmMMnJyYqLi1NycrLq168v6dKl69WrVysuLk5//etfi91nhw4dFB8fLz8/P6WkpGjSpEm6++67tWfPnjyfuQPXKzQ0VJI0fvx4Pfzww/L09FSfPn3UrFkzvfbaa4qJidHhw4cVFRWl6tWr69ChQ1qxYoWeeOIJPffcc8Xa17333isfHx/dddddqlu3rr7//nvNnj1bvXv3dozt1157TWvWrFHnzp315JNPysPDQ/PmzVN2dna+z80pqujoaC1cuFBjx47VV199pbvvvluZmZn6/PPP9eSTT6pfv36Fbj9nzhx17txZAQEBGjlypG6//XalpaVp69atOnbsmOM5Nvfff78mT56sYcOGqVOnTtq9e7fee+89pwnS0qUrSbfeeqvmzp2r6tWrq2rVqurQoUO+c4j69Omjrl27avz48Tp8+LCCgoL02Wef6aOPPtLTTz/tNHkYQDG46C6tckeSWbFiheP1qlWrjCRTtWpVp8XDw8MMHDjQGGPM999/byQVurzwwgsF7vPMmTPGy8vLzJ8/v6wPDzepV1991TRo0MC4ubnluS182bJlpnPnzo6x3bJlSzN69Gizf/9+R5vw8PB8b/G++pbmefPmmS5dupjbbrvN2O1206xZMzNu3DiTnp7utN3OnTtNjx49TLVq1UyVKlVM165dzZYtW5zaXL4V/Ouvvy7ycf76669m/PjxpmnTpsbT09P4+PiYAQMGOG47v3wr+LRp0/Ld/scffzTR0dHGx8fHeHp6mgYNGpj777/fLF261NEmKyvLPPvss6ZevXrmlltuMXfddZfZunWrCQ8PN+Hh4U79ffTRR6Z169bGw8PD6bbwq8+bMcacO3fOPPPMM6Z+/frG09PTtGjRwkybNs1xG/tlkszo0aPz1N64cWMzdOjQIp8r4GZgM4aZaNKlz8lXrFihqKgoSdKSJUv0yCOPaO/evXkm8VWrVk0+Pj66cOHCNW/BvO2225xuPb1au3btFBkZqdjY2Os+BgAAwMdSBQoJCVFOTo5OnDjheMro1SpVqnRdt3KfP39eP/74ox577LES9wEAAJzd1OHm/PnzOnjwoOP1oUOHlJSUpJo1a+qOO+7QI488oujoaE2fPl0hISE6efKk1q5dq8DAQPXu3bvY+3vuuefUp08fNW7cWMePH9crr7wid3d3DR48uDQPCwCAm9pN/bHUhg0b1LVr1zzrhw4dqvj4eP3+++967bXXtHDhQv3888+qVauWOnbsqEmTJikgIKDY+3v44Ye1adMmnT59WrVr11bnzp01ZcoUJg0CAFCKbupwAwAArIfn3AAAAEsh3AAAAEu56SYU5+bm6vjx46pevXqxHpMOAABcxxijc+fOqX79+nJzK/zazE0Xbo4fP17i77ABAACudfToUTVs2LDQNjdduLn8KPijR4+W+LtsAADAjZWRkSFfX98ifV3RTRduLn8U5eXlRbgBAKCCKcqUEiYUAwAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAAS3FpuHnnnXcUGBjo+CqEsLAwffrppwW2j4+Pl81mc1oqV658AysGAADlnUu/W6phw4b629/+phYtWsgYo3/961/q16+fdu3apTZt2uS7jZeXl/bv3+94XZTvmAAAADcPl4abPn36OL2eMmWK3nnnHW3btq3AcGOz2eTj43MjygMAABVQuZlzk5OTo8WLFyszM1NhYWEFtjt//rwaN24sX19f9evXT3v37i203+zsbGVkZDgtAADAulx65UaSdu/erbCwMGVlZalatWpasWKFWrdunW9bPz8/LViwQIGBgUpPT9cbb7yhTp06ae/evWrYsGG+28TGxmrSpElleQhA2XvDz9UVwIK6NWrg6hJgUesGrnPp/m3GGOPKAi5cuKDk5GSlp6dr6dKlmj9/vjZu3FhgwLnS77//rlatWmnw4MF69dVX822TnZ2t7Oxsx+uMjAz5+voqPT1dXl5epXYcQJki3KAMEG5QVsoi3GRkZMjb27tIf79dfuWmUqVKat68uSQpNDRUX3/9td566y3Nmzfvmtt6enoqJCREBw8eLLCN3W6X3W4vtXoBAED5Vm7m3FyWm5vrdKWlMDk5Odq9e7fq1atXxlUBAICKwqVXbmJiYtSrVy81atRI586dU0JCgjZs2KDExERJUnR0tBo0aKDY2FhJ0uTJk9WxY0c1b95cZ8+e1bRp03TkyBGNGDHClYcBAADKEZeGmxMnTig6OlopKSny9vZWYGCgEhMTdc8990iSkpOT5eb234tLZ86c0ciRI5WamqoaNWooNDRUW7ZsKdL8HAAAcHNw+YTiG604E5KAcoMJxSgDTChGWXH1hOJyN+cGAADgehBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApbg03LzzzjsKDAyUl5eXvLy8FBYWpk8//bTQbT788EO1bNlSlStXVkBAgD755JMbVC0AAKgIXBpuGjZsqL/97W/asWOHtm/frm7duqlfv37au3dvvu23bNmiwYMHa/jw4dq1a5eioqIUFRWlPXv23ODKAQBAeWUzxhhXF3GlmjVratq0aRo+fHie9wYNGqTMzEytWrXKsa5jx44KDg7W3Llzi9R/RkaGvL29lZ6eLi8vr1KrGyhTb/i5ugJYULdGDVxdAixq3cB1pd5ncf5+l5s5Nzk5OVq8eLEyMzMVFhaWb5utW7cqMjLSaV2PHj20devWAvvNzs5WRkaG0wIAAKzL5eFm9+7dqlatmux2u0aNGqUVK1aodevW+bZNTU1V3bp1ndbVrVtXqampBfYfGxsrb29vx+Lr61uq9QMAgPLF5eHGz89PSUlJ+vLLL/XHP/5RQ4cO1XfffVdq/cfExCg9Pd2xHD16tNT6BgAA5Y+HqwuoVKmSmjdvLkkKDQ3V119/rbfeekvz5s3L09bHx0dpaWlO69LS0uTj41Ng/3a7XXa7vXSLBgAA5ZbLr9xcLTc3V9nZ2fm+FxYWprVr1zqtW7NmTYFzdAAAwM3HpVduYmJi1KtXLzVq1Ejnzp1TQkKCNmzYoMTERElSdHS0GjRooNjYWEnSU089pfDwcE2fPl29e/fW4sWLtX37dv3jH/9w5WEAAIByxKXh5sSJE4qOjlZKSoq8vb0VGBioxMRE3XPPPZKk5ORkubn99+JSp06dlJCQoL/85S966aWX1KJFC61cuVL+/v6uOgQAAFDOlLvn3JQ1nnODConn3KAM8JwblBWecwMAAFCKCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSPFxdgNW0n/K5q0uABX1ld3UFAFBxcOUGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYikvDTWxsrNq1a6fq1aurTp06ioqK0v79+wvdJj4+XjabzWmpXLnyDaoYAACUdy4NNxs3btTo0aO1bds2rVmzRr///rvuvfdeZWZmFrqdl5eXUlJSHMuRI0duUMUAAKC883DlzlevXu30Oj4+XnXq1NGOHTvUpUuXArez2Wzy8fEp6/IAAEAFVK7m3KSnp0uSatasWWi78+fPq3HjxvL19VW/fv20d+/eAttmZ2crIyPDaQEAANZVbsJNbm6unn76ad11113y9/cvsJ2fn58WLFigjz76SIsWLVJubq46deqkY8eO5ds+NjZW3t7ejsXX17esDgEAAJQD5SbcjB49Wnv27NHixYsLbRcWFqbo6GgFBwcrPDxcy5cvV+3atTVv3rx828fExCg9Pd2xHD16tCzKBwAA5YRL59xcNmbMGK1atUqbNm1Sw4YNi7Wtp6enQkJCdPDgwXzft9vtstvtpVEmAACoAFx65cYYozFjxmjFihVat26dmjZtWuw+cnJytHv3btWrV68MKgQAABWNS6/cjB49WgkJCfroo49UvXp1paamSpK8vb11yy23SJKio6PVoEEDxcbGSpImT56sjh07qnnz5jp79qymTZumI0eOaMSIES47DgAAUH64NNy88847kqSIiAin9XFxcXr88cclScnJyXJz++8FpjNnzmjkyJFKTU1VjRo1FBoaqi1btqh169Y3qmwAAFCOuTTcGGOu2WbDhg1Or2fMmKEZM2aUUUUAAKCiKzd3SwEAAJQGwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALCUEoWb1atXa/PmzY7Xc+bMUXBwsIYMGaIzZ86UWnEAAADFVaJwM27cOGVkZEiSdu/erWeffVb33XefDh06pLFjx5ZqgQAAAMXhUZKNDh06pNatW0uSli1bpvvvv19//etftXPnTt13332lWiAAAEBxlOjKTaVKlfTrr79Kkj7//HPde++9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aJBOnjypCRMmKDU1VcHBwVq9erVjknFycrLc3P57genMmTMaOXKkUlNTVaNGDYWGhmrLli1q3bq1qw4BAACUIzZjjHF1ETdSRkaGvL29lZ6eLi8vr1Lvv/2Uz0u9T+Ar+2hXlwAL6taogatLgEWtG7iu1Psszt/vCne3FAAAQGEINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFLKRbiZM2eOmjRposqVK6tDhw766quvCm3/4YcfqmXLlqpcubICAgL0ySef3KBKAQBAeefycLNkyRKNHTtWr7zyinbu3KmgoCD16NFDJ06cyLf9li1bNHjwYA0fPly7du1SVFSUoqKitGfPnhtcOQAAKI9cHm7efPNNjRw5UsOGDVPr1q01d+5cValSRQsWLMi3/VtvvaWePXtq3LhxatWqlV599VXdeeedmj179g2uHAAAlEcertz5hQsXtGPHDsXExDjWubm5KTIyUlu3bs13m61bt2rs2LFO63r06KGVK1fm2z47O1vZ2dmO1+np6ZKkjIyM66w+fzlZmWXSL25uGSbH1SXAgi7+etHVJcCiyuJv7OU+jTHXbOvScHPq1Cnl5OSobt26Tuvr1q2rffv25btNampqvu1TU1PzbR8bG6tJkyblWe/r61vCqoEbz9vVBcCifnR1AbAo72Fl91vr3Llz8vYuvH+XhpsbISYmxulKT25urn755RfddtttstlsLqzs5paRkSFfX18dPXpUXl5eri4HFsG4QllhbLmeMUbnzp1T/fr1r9nWpeGmVq1acnd3V1pamtP6tLQ0+fj45LuNj49Psdrb7XbZ7XandbfeemvJi0ap8vLy4hcFSh3jCmWFseVa17pic5lLJxRXqlRJoaGhWrt2rWNdbm6u1q5dq7CwsHy3CQsLc2ovSWvWrCmwPQAAuLm4/GOpsWPH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", + "image/png": "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oUOHDoiPjxfbysvLER8fDx8fnyr3W7p0KebPn4/Y2Fh4e3vLbXNxcYGdnZ3cmHl5eThx4kSVY+rr68PMzEzuQURERK8vjd8HKDw8HCEhIfD29kanTp0QFRWFgoIChIaGAgCGDRuGRo0aITIyEgCwZMkSREREYMeOHXB2dhbX9ZiYmMDExAQSiQRhYWFYsGABmjVrBhcXF8yaNQsODg4YOHCgpg6TiIiIXiEaD0DBwcG4d+8eIiIikJmZCU9PT8TGxoqLmNPT06Gj889E1dq1a1FaWop3331XbpzZs2djzpw5AICpU6eioKAAo0ePxqNHj9C1a1fExsa+1DohIiIien1o/D5AryLeB6hyvA+QZvA+QERE1VNn7gNEREREpAkMQERERKR1GICIiIhI6zAAERERkdZhACIiIiKtwwBEREREWocBiIiIiLQOAxARERFpHQYgIiIi0joMQERERKR1GICIiIhI6zAAERERkdZhACIiIiKtwwBEREREWocBiIiIiLQOAxARERFpHQYgIiIi0joMQERERKR1GICIiIhI6zAAERERkdZhACIiIiKto3QAunXrFm7fvi0+P3nyJMLCwrB+/XqVFkZERESkLkoHoPfffx8JCQkAgMzMTPTq1QsnT57EzJkzMW/ePJUXSERERKRqSgeg8+fPo1OnTgCA3bt3o02bNjh+/Di2b9+OzZs3q7o+IiIiIpVTOgCVlZVBX18fABAXF4f+/fsDANzd3ZGRkaHa6oiIiIjUQOkA1Lp1a8TExODIkSM4dOgQgoKCAAB3796FlZWVygskIiIiUjWlA9CSJUuwbt06+Pv7Y8iQIfDw8AAA/PTTT+KpMSIiIqJXWT1ld/D398f9+/eRl5cHS0tLsX306NEwMjJSaXFERERE6qB0AAIAXV1dufADAM7Ozqqoh4iIiEjteCNEIiIi0joMQERERKR1GICIiIhI61Q7AA0bNgzfffcd8vPz1VkPERERkdpVOwC5ublh0aJFsLGxQZ8+fbB27VrcuXNHnbURERERqUW1A1BERAROnTqFK1euoF+/fti7dy+aNm2KDh06YN68eThz5owayyQiIiJSHaXXADVu3Bhjx47FwYMHce/ePUybNg1paWno0aMHmjRpgvHjx+PChQvqqJWIiIhIJV5qEbSpqSkGDRqE7du34969e9i4cSN0dXWRlJSkqvqI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AD2tuLhYVXUQERER1RqlA5BMJsP8+fPRqFEjmJiY4K+//gIAzJo1C19//bXKCyQiIiJSNaUD0MKFC7F582YsXboUenp6YnubNm3w1VdfqbQ4IiIiInVQOgBt3boV69evx9ChQ6Grqyu2e3h44PLlyyotjoiIiEgdlA5Ad+7cgZubm0J7eXk5ysrKVFIUERERkTopHYBatWqFI0eOKLTv2bMHXl5eKimKiIiISJ2Uvgw+IiICISEhuHPnDsrLy/H9998jLS0NW7duxb59+9RRIxEREZFKKT0DNGDAAPz888+Ii4uDsbExIiIicOnSJfz888/o1auXOmokIiIiUimlZ4AAoFu3bjh06JCqayEiIiKqFUrPALm6uuLBgwcK7Y8ePYKrq6tKiiIiIiJSJ6UD0I0bNyr9va+SkhLcuXNHJUURERERqVO1T4H99NNP4t8HDx6Eubm5+FwmkyE+Ph7Ozs4qLY6IiIhIHaodgAYOHAjg7198DwkJkdtWv359ODs7Y/ny5SotjoiIiEgdqh2AKn4F3sXFBcnJybC2tlZbUURERETqpPRVYNevX1dHHURERES1ploBaNWqVRg9ejQMDAywatWq5/b9+OOPVVIYERERkbpUKwCtXLkSQ4cOhYGBAVauXFllP4lEwgBEREREr7xqBaCnT3vxFBgRERHVdUrfB4iIiIiormMAIiIiIq3DAERERERahwGIiIiItI5SAejJkyeYN28ebt++ra56iIiIiNROqQBUr149fP7553jy5Im66iEiIiJSO6VPgfXo0QOHDx9WRy1EREREtULpn8Lo06cPpk+fjnPnzqFDhw4wNjaW296/f3+VFUdERESkDkoHoLFjxwIAVqxYobBNIpFAJpO9fFVEREREaqR0AKr4VXgiIiKiuuqlLoMvLi5WVR1EREREtUbpACSTyTB//nw0atQIJiYm+OuvvwAAs2bNwtdff63yAomIiIhUTekAtHDhQmzevBlLly6Fnp6e2N6mTRt89dVXKi2OiIiISB2UDkBbt27F+vXrMXToUOjq6ortHh4euHz5skqLIyIiIlIHpQPQnTt34ObmptBeXl6OsrIylRRFREREpE5KB6BWrVrhyJEjCu179uyBl5eXSooiIiIiUielL4OPiIhASEgI7ty5g/Lycnz//fdIS0vD1q1bsW/fPnXUSERERKRSSs8ADRgwAD///DPi4uJgbGyMiIgIXLp0CT///DN69eqljhqJiIiIVErpGSAA6NatGw4dOqTqWoiIiIhqRY0CEACkpKTg0qVLAP5eF9ShQweVFUVERESkTkoHoNu3b2PIkCE4duwYLCwsAACPHj2Cr68vdu7cicaNG6u6RiIiIiKVUnoN0KhRo1BWVoZLly7h4cOHePjwIS5duoTy8nKMGjVKHTUSERERqZTSM0CHDx/G8ePH0aJFC7GtRYsWWL16Nbp166bS4oiIiIjUQekZIEdHx0pveCiTyeDg4KCSooiIiIjUSekA9Pnnn2PChAlISUkR21JSUjBx4kQsW7ZMpcURERERqYPSp8CGDx+OwsJCdO7cGfXq/b37kydPUK9ePYwYMQIjRowQ+z58+FB1lRIRERGpiNIBKCoqSg1lEBEREdUepQNQSEiIOuogIiIiqjVKrwEiIiIiqusYgIiIiEjrMAARERGR1tF4AFqzZg2cnZ1hYGCAzp074+TJk1X2vXDhAt555x04OztDIpFUuSBbmTGJiIhI+9Q4AF29ehUHDx5EUVERAEAQBKXH2LVrF8LDwzF79mycPn0aHh4eCAwMRHZ2dqX9CwsL4erqisWLF8POzk4lYxIREZH2UToAPXjwAAEBAWjevDneeOMNZGRkAABGjhyJTz75RKmxVqxYgQ8//BChoaFo1aoVYmJiYGRkhI0bN1bav2PHjvj8888xePBg6Ovrq2RMIiIi0j5KB6BJkyahXr16SE9Ph5GRkdgeHByM2NjYao9TWlqKU6dOISAg4J9idHQQEBCApKQkZct6qTFLSkqQl5cn9yAiIqLXl9IB6Ndff8WSJUvQuHFjufZmzZrh5s2b1R7n/v37kMlksLW1lWu3tbVFZmamsmW91JiRkZEwNzcXH46OjjV6fSIiIqoblA5ABQUFcjM/FR4+fFjlaalX3YwZM5Cbmys+bt26pemSiIiISI2UDkDdunXD1q1bxecSiQTl5eVYunQppFJptcextraGrq4usrKy5NqzsrKqXOCsrjH19fVhZmYm9yAiIqLXl9IBaOnSpVi/fj369OmD0tJSTJ06FW3atMF///tfLFmypNrj6OnpoUOHDoiPjxfbysvLER8fDx8fH2XLUtuYRERE9PpR+rfA2rRpgz///BPR0dEwNTVFfn4+3n77bYwbNw729vZKjRUeHo6QkBB4e3ujU6dOiIqKQkFBAUJDQwEAw4YNQ6NGjRAZGQng70XOFy9eFP++c+cOzpw5AxMTE7i5uVVrTCIiIiKlAxAAmJubY+bMmS/94sHBwbh37x4iIiKQmZkJT09PxMbGiouY09PToaPzzyTV3bt34eXlJT5ftmwZli1bBj8/PyQmJlZrTCIiIiKJUIM7GBYXF+Ps2bPIzs5GeXm53Lb+/furrDhNycvLg7m5OXJzc9WyHqjTwjiVj1kbTuqP03QJNdbDqZGmS6ix3wb9pukSiIjqBGW+v5WeAYqNjcWwYcNw//59hW0SiQQymUzZIYmIiIhqldKLoCdMmID33nsPGRkZKC8vl3sw/BAREVFdoHQAysrKQnh4ONfUEBERUZ2ldAB69913xQXHRERERHWR0muAoqOj8d577+HIkSNo27Yt6tevL7f9448/VllxREREROqgdAD65ptv8Ouvv8LAwACJiYmQSCTiNolEwgBERERErzylA9DMmTMxd+5cTJ8+Xe4ePURERER1hdIJprS0FMHBwQw/REREVGcpnWJCQkKwa9cuddRCREREVCuUPgUmk8mwdOlSHDx4EO3atVNYBL1ixQqVFUdERESkDkoHoHPnzom/x3X+/Hm5bU8viCYiIiJ6VSkdgBISEtRRBxEREVGt4UpmIiIi0jrVmgF6++23sXnzZpiZmeHtt99+bt/vv/9eJYURERERqUu1ApC5ubm4vsfc3FytBRERERGpW7UC0KZNmzBv3jxMnjwZmzZtUndNRERERGpV7TVAc+fORX5+vjprISIiIqoV1Q5AgiCosw4iIiKiWqPUVWC8zw8RERG9DpS6D1Dz5s1fGIIePnz4UgURERERqZtSAWju3Lm8CoyIiIjqPKUC0ODBg9GwYUN11UJERERUK6q9Bojrf4iIiOh1wavAiIiISOtU+xRYeXm5OusgIiIiqjX8MVQiIiLSOgxAREREpHUYgIiIiEjrMAARERGR1lHqPkBEVLd0Whin6RJq7OTMAE2XQESvMc4AERERkdZhACIiIiKtwwBEREREWocBiIiIiLQOAxARERFpHQYgIiIi0joMQERERKR1GICIiIhI6zAAERERkdZhACIiIiKtwwBEREREWocBiIiIiLQOAxARERFpHQYgIiIi0joMQERERKR1GICIiIhI6zAAERERkdZhACIiIiKtwwBEREREWocBiIiIiLQOAxARERFpnXqaLoCI6HXSY3cPTZdQY78N+k3TJRDVGs4AERERkdZhACIiIiKtw1NgRPRqWtZC0xXUjFMjTVdARNXAGSAiIiLSOgxAREREpHUYgIiIiEjrMAARERGR1mEAIiIiIq3zSgSgNWvWwNnZGQYGBujcuTNOnjz53P7ffvst3N3dYWBggLZt2+LAgQNy24cPHw6JRCL3CAoKUuchEBERUR2i8QC0a9cuhIeHY/bs2Th9+jQ8PDwQGBiI7OzsSvsfP34cQ4YMwciRI5GamoqBAwdi4MCBOH/+vFy/oKAgZGRkiI9vvvmmNg6HiIiI6gCNB6AVK1bgww8/RGhoKFq1aoWYmBgYGRlh48aNlfb/4osvEBQUhClTpqBly5aYP38+2rdvj+joaLl++vr6sLOzEx+Wlpa1cThERERUB2g0AJWWluLUqVMICAgQ23R0dBAQEICkpKRK90lKSpLrDwCBgYEK/RMTE9GwYUO0aNECY8aMwYMHD6qso6SkBHl5eXIPIiIien1pNADdv38fMpkMtra2cu22trbIzMysdJ/MzMwX9g8KCsLWrVsRHx+PJUuW4PDhw+jTpw9kMlmlY0ZGRsLc3Fx8ODo6vuSRERER0avstfwpjMGDB4t/t23bFu3atUPTpk2RmJiInj17KvSfMWMGwsPDxed5eXkMQURERK8xjc4AWVtbQ1dXF1lZWXLtWVlZsLOzq3QfOzs7pfoDgKurK6ytrXH16tVKt+vr68PMzEzuQURERK8vjQYgPT09dOjQAfHx8WJbeXk54uPj4ePjU+k+Pj4+cv0B4NChQ1X2B4Dbt2/jwYMHsLe3V03hREREVKdp/Cqw8PBwbNiwAVu2bMGlS5cwZswYFBQUIDQ0FAAwbNgwzJgxQ+w/ceJExMbGYvny5bh8+TLmzJmDlJQUjB8/HgCQn5+PKVOm4Pfff8eNGzcQHx+PAQMGwM3NDYGBgRo5RiIiInq1aHwNUHBwMO7du4eIiAhkZmbC09MTsbGx4kLn9PR06Oj8k9N8fX2xY8cOfPbZZ/j000/RrFkz7N27F23atAEA6Orq4uzZs9iyZQsePXoEBwcH9O7dG/Pnz4e+vr5GjpGIiIheLRoPQAAwfvx4cQbnWYmJiQpt7733Ht57771K+xsaGuLgwYOqLI+IiIheMxo/BUZERERU2xiAiIiISOswABEREZHWeSXWABERUd3XaWGcpkuokZMzA17ciV47nAEiIiIircMARERERFqHAYiIiIi0DgMQERERaR0GICIiItI6DEBERESkdRiAiIiISOswABEREZHWYQAiIiIircMARERERFqHAYiIiIi0DgMQERERaR0GICIiItI6/DV4IiLSbstaaLqCmpucpukK6izOABEREZHWYQAiIiIircNTYERERHVUj909NF1Cjfw26DdNl8AZICIiItI+DEBERESkdRiAiIiISOswABEREZHWYQAiIiIircMARERERFqHAYiIiIi0DgMQERERaR0GICIiItI6DEBERESkdRiAiIiISOswABEREZHWYQAiIiIircMARERERFqHAYiIiIi0DgMQERERaR0GICIiItI6DEBERESkdRiAiIiISOswABEREZHWYQAiIiIircMARERERFqHAYiIiIi0DgMQERERaR0GICIiItI6DEBERESkdRiAiIiISOswABEREZHWYQAiIiIircMARERERFqHAYiIiIi0DgMQERERaR0GICIiItI6DEBERESkdRiAiIiISOswABEREZHWYQAiIiIircMARERERFrnlQhAa9asgbOzMwwMDNC5c2ecPHnyuf2//fZbuLu7w8DAAG3btsWBAwfktguCgIiICNjb28PQ0BABAQG4cuWKOg+BiIiI6hCNB6Bdu3YhPDwcs2fPxunTp+Hh4YHAwEBkZ2dX2v/48eMYMmQIRo4cidTUVAwcOBADBw7E+fPnxT5Lly7FqlWrEBMTgxMnTsDY2BiBgYEoLi6urcMiIiKiV5jGA9CKFSvw4YcfIjQ0FK1atUJMTAyMjIywcePGSvt/8cUXCAoKwpQpU9CyZUvMnz8f7du3R3R0NIC/Z3+ioqLw2WefYcCAAWjXrh22bt2Ku3fvYu/evbV4ZERERPSq0mgAKi0txalTpxAQECC26ejoICAgAElJSZXuk5SUJNcfAAIDA8X+169fR2Zmplwfc3NzdO7cucoxiYiISLvU0+SL379/HzKZDLa2tnLttra2uHz5cqX7ZGZmVto/MzNT3F7RVlWfZ5WUlKCkpER8npubCwDIy8tT4miqT1ZcoJZx1S1PkGm6hBp7UvhE0yXU2Mt8DuvqZw2ou583bf2sAXX381ZXP2tA3f28qev7tWJcQRBe2FejAehVERkZiblz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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_1_freeze',\n", + " 'cgdrag_torch_implicit_4_grad',\n", + " 'cgdrag_torch_implicit_4_nograd',\n", + " 'cgdrag_torch_implicit_4_freeze',\n", + " 'cgdrag_torch_implicit_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + " 'cgdrag_torch_implicit_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_1k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU, 1000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAGwCAYAAACJjDBkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCUUlEQVR4nO3de1xVdb7/8TcbBJQEckwQNSWjvKEYKGIkpkyYzinKjqBOmofkeCbMQnO0vFRj42R6xjGdGKczOpmmWY1nIodiQMdKREWtNDNnxusxUCNAKW/s7+8Pf65py0VYgVvw9Xw89gP2Wp+11nd9+eZ+t/ba3+1hjDECAABAnTjc3QAAAIDGiBAFAABgAyEKAADABkIUAACADYQoAAAAGwhRAAAANhCiAAAAbCBEAQAA2ECIAgAAsIEQBQA/0MaNG+Xh4aGNGzfWedvly5fLw8NDBw8erNc2eXh46Nlnn63XfQJwRYgC8INt3rxZzz77rEpKStzdlOvK+vXrCUqAGxGiAPxgmzdv1nPPPUeIusrWr1+v5557rsp13333nWbMmHGVWwRcXwhRAPA95eXl7m5CvfD19ZWXl5e7mwE0aYQoAD/Is88+q6eeekqSFBoaKg8Pj0r3+Lz++uuKjIxU8+bN1apVKyUnJ+vIkSMu+xk4cKB69Oihzz//XHfffbdatGihdu3aad68eZWO+fLLL6t79+5q0aKFbrzxRkVFRWnVqlUuNTt37tS9994rf39/3XDDDRo8eLC2bNniUnPpfqS//e1v+tnPfqY2bdqoffv2NZ7v0aNHlZiYKD8/P7Vp00ZPPvmkzp49W2Vtfn6+hgwZooCAALVo0UJxcXH6+OOPa9z/JX/5y1901113yc/PTy1bttSwYcO0Z88ea/0jjzyiJUuWSJLV5x4eHtb6qu6JqkuffPzxx0pPT9dNN90kPz8/PfDAAzpx4kSt2g5cL/jfFAA/yIMPPqgvv/xSb7zxhn7961+rdevWkqSbbrpJkvTCCy9o5syZGjFihB599FGdOHFCL7/8sgYMGKCdO3cqMDDQ2tc333yjIUOG6MEHH9SIESP01ltv6ec//7nCw8N17733SpJ+//vf6/HHH9dDDz2kSZMm6cyZM/r000+Vn5+vUaNGSZL27Nmju+66S/7+/po6daqaNWum3/3udxo4cKD+9re/KTo62uUcfvazn+mmm27SrFmzarwS9d1332nw4ME6fPiwHn/8cYWEhGjFihXKzc2tVJubm6t7771XkZGRmj17thwOh5YtW6ZBgwbpww8/VN++fas9zooVKzR27FglJCToxRdf1LfffqtXXnlFsbGx2rlzpzp16qT//M//1LFjx5Sdna0VK1Zc8e9U1z6ZOHGibrzxRs2ePVsHDx7UwoULlZaWpjVr1lzxWMB1wwDAD/TSSy8ZSebAgQMuyw8ePGg8PT3NCy+84LL8s88+M15eXi7L4+LijCTz2muvWcvOnj1rgoODzfDhw61l999/v+nevXuN7UlMTDTe3t7mH//4h7Xs2LFjpmXLlmbAgAHWsmXLlhlJJjY21ly4cOGK57lw4UIjybz55pvWsvLycnPrrbcaSWbDhg3GGGOcTqcJCwszCQkJxul0WrXffvutCQ0NNT/+8Y8rteFS3506dcoEBgaa8ePHuxy7sLDQBAQEuCx/7LHHTHX/jEsys2fPtt0n8fHxLm1/8sknjaenpykpKbliPwHXC97OA9Bg3nnnHTmdTo0YMUInT560HsHBwQoLC9OGDRtc6m+44Qb99Kc/tZ57e3urb9+++uc//2ktCwwM1NGjR7Vt27Yqj1lRUaEPPvhAiYmJuuWWW6zlbdu21ahRo/TRRx+prKzMZZvx48fL09Pziuezfv16tW3bVg899JC1rEWLFkpNTXWp27Vrl/bv369Ro0bp66+/ts67vLxcgwcP1qZNm+R0Oqs8RnZ2tkpKSjRy5EiXPvP09FR0dHSlPqsNO32Smprq8vbgXXfdpYqKCh06dKjOxweaKt7OA9Bg9u/fL2OMwsLCqlzfrFkzl+ft27d3eeGWpBtvvFGffvqp9fznP/+5/vrXv6pv37669dZbdc8992jUqFG68847JUknTpzQt99+q9tvv73S8bp27Sqn06kjR46oe/fu1vLQ0NBanc+hQ4d06623Vmrj5cfav3+/JGns2LHV7qu0tFQ33nhjpeWXth00aFCV2/n7+9eqrd9np09uvvlml7pLbf3mm2/qfHygqSJEAWgwTqdTHh4e+stf/lLllZ4bbrjB5Xl1V4OMMdbvXbt21b59+5SZmamsrCy9/fbb+u1vf6tZs2ZV+3H/K2nevLmt7apz6SrTSy+9pIiIiCprLj/3y7ddsWKFgoODK62/Wp+4q83fArjeEaIA/GCXX5m5pHPnzjLGKDQ0VLfddlu9Hc/Pz09JSUlKSkrSuXPn9OCDD+qFF17Q9OnTddNNN6lFixbat29fpe2++OILORwOdejQwdZxO3bsqN27d8sY43LOlx+rc+fOki5eNYqPj6/TMS5t26ZNmytuW12/X64h+wS4nnFPFIAfzM/PT5IqTbb54IMPytPTU88991ylKxjGGH399dd1Ptbl23h7e6tbt24yxuj8+fPy9PTUPffco//93/91mWahqKhIq1atUmxsrK23xCRp6NChOnbsmN566y1r2bfffqulS5e61EVGRqpz586aP3++Tp8+XWk/NU0VkJCQIH9/f/3yl7/U+fPna9y2un6/XEP2CXA940oUgB8sMjJSkvTMM88oOTlZzZo107/927+pc+fOmjNnjqZPn66DBw8qMTFRLVu21IEDB/SnP/1JqampmjJlSp2Odc899yg4OFh33nmngoKCtHfvXi1evFjDhg1Ty5YtJUlz5sxRdna2YmNj9bOf/UxeXl763e9+p7Nnz1Y571RtjR8/XosXL9aYMWNUUFCgtm3basWKFWrRooVLncPh0Kuvvqp7771X3bt317hx49SuXTv93//9nzZs2CB/f3+9++67VR7D399fr7zyih5++GHdcccdSk5O1k033aTDhw/rvffe05133qnFixdL+le/P/7440pISJCnp6eSk5Or3G9D9QlwXXPfBwMBNCW/+MUvTLt27YzD4ag03cHbb79tYmNjjZ+fn/Hz8zNdunQxjz32mNm3b59VExcXV+XUBWPHjjUdO3a0nv/ud78zAwYMMD/60Y+Mj4+P6dy5s3nqqadMaWmpy3Y7duwwCQkJ5oYbbjAtWrQwd999t9m8ebNLzaWP82/btq3W53no0CFz3333mRYtWpjWrVubSZMmmaysLJcpDi7ZuXOnefDBB622duzY0YwYMcLk5ORUasPl00Ns2LDBJCQkmICAAOPr62s6d+5sHnnkEbN9+3ar5sKFC2bixInmpptuMh4eHi7THeiyKQ5+aJ9s2LChynMErmcexnCXIAAAQF1xTxQAAIANhCgAAAAbCFEAAAA2EKIAAABsIEQBAADYQIgCAACwgck2G5DT6dSxY8fUsmXLWn89AwAAcC9jjE6dOqWQkBA5HNVfbyJENaBjx47xfVQAADRSR44cUfv27atdT4hqQJe+guLIkSN8LxUA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dhdnof3LX/6iIUOG1HsDAQAArkV1vhJ18803KzMzs9LyX//61/XSIAAAgMaAeaIAAABsIEQBAADYQIgCAACwgRAFAABgQ61D1M0336y0tDR98MEHunDhQkO2CQAA4JpX6xC1YsUK+fj46LHHHlPr1q2VlJSklStXqqSkpAGbBwAAcG2qdYiKi4vTggULtH//fn388ceKiIjQyy+/rODgYA0aNEgLFy7UP//5z4ZsKwAAwDXD1j1R3bt31/Tp07VlyxYdPHhQI0eOVE5Ojnr06KEePXrovffeq+92AgAAXFPqPNnm5YKDgzV+/HiNHz9e3377rd5//335+PjUR9sAAACuWT84RH1fixYt9MADD9TnLgEAAK5JTHEAAABgAyEKAADABkIUAACADbZD1N///ne9//77+u677yRJxph6axQAAMC1rs4h6uuvv1Z8fLxuu+02DR06VF999ZUkKSUlRZMnT673BgIAAFyL6hyinnzySXl5eenw4cNq0aKFtTwpKUlZWVn12jgAAIBrVZ2nOPjggw/0/vvvq3379i7Lw8LCdOjQoXprGAAAwLWszleiysvLXa5AXVJcXMwkmwAA4LpR5xB111136bXXXrOee3h4yOl0at68ebr77rvrtXEAAADXqjq/nTdv3jwNHjxY27dv17lz5zR16lTt2bNHxcXF+vjjjxuijQAAANecOl+J6tGjh7788kvFxsbq/vvvV3l5uR588EHt3LlTnTt3bog2AgAAXHNsfXdeQECAnnnmmfpuCwAAQKNhK0SdOXNGn376qY4fPy6n0+my7r777quXhgEAAFzL6hyisrKyNGbMGJ08ebLSOg8PD1VUVNRLwwAAAK5ldb4nauLEifr3f/93ffXVV3I6nS4PAhQAALhe1DlEFRUVKT09XUFBQQ3RHgAAgEahziHqoYce0saNGxugKQAAAI1Hne+JWrx4sf793/9dH374ocLDw9WsWTOX9Y8//ni9NQ4AAOBaVecQ9cYbb+iDDz6Qr6+vNm7cKA8PD2udh4cHIQoAAFwX6hyinnnmGT333HOaNm2aHI46vxsIAADQJNQ5BZ07d05JSUkEKAAAcF2rcxIaO3as1qxZ0xBtAQAAaDTq/HZeRUWF5s2bp/fff189e/asdGP5f//3f9db4wAAAK5Vdb4S9dlnn6l3795yOBzavXu3du7caT127dpl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m88//9ykpqaawMBAU1hYaIwx5uGHHzbTpk2z6j/++GPj5eVl5s+fb/bu3Wtmz55tmjVrZj777DOr5le/+pUJDAw0//u//2s+/fRTc//995vQ0FDz3XffWTVDhgwxvXv3Nvn5+eajjz4yYWFhZuTIkdb6kpISExQUZB5++GGze/dus3r1atOiRQvzu9/97ir0CupLaWmpkWRKS0vd3RQ0MYwtNATGVePi9hBljDEvv/yyufnmm423t7fp27ev2bJli7UuLi7OjB071qX+zTffNLfddpvx9vY23bt3N++9957LeqfTaWbOnGmCgoKMj4+PGTx4sNm3b59Lzddff21GjhxpbrjhBuPv72/GjRtnTp065VLzySefmNjYWOPj42PatWtnfvWrX9XviaPBnTlzxsyePducOXPG3U1BE8PYQkNgXDUubp8nCgAAoDFy+4zlAAAAjREhCgAAwAZCFAAAgA2EKAAAABsIUQAAADYQotBgOnXqpKNHjzboMc6ePauEhARFRERoyZIlDXqs6vzqV79S586d5eHhUe/nu3Dhwgb7gs2r4WqMgV27dunPf/5zve7Ty6tuX+YwYsQI3XTTTbr11lvrtR1XsnHjRuvL1rdv364JEybUWJ+RkaFXX33V2nbTpk312p7nn3++XvdXHcZVZbX5+9fFs88+qzlz5khyHTfVefTRR7Vr1y5J0vLly3X48OF6a8vBgwf12muv1dv+6hMhClfdhQv1923uO3fuVHl5uXbt2qXHHnusVtsYY+R0OuutDYMHD1Zubq46duxYb/u8pLGHqOrU5xiw+2JXn22YMGGC3n///Xrbnx1RUVHKyMiosWbChAl69NFHJTXuEFWd63lc1ebv/0PacWncVOfVV1+1vlqNEAX8f7m5uerbt6969eqlPn366Ouvv9aTTz6p22+/XbGxsRo1apT1fyuHDh1SbGysunfvrv/8z//U96cg8/Ly0owZM9S7d2+98847WrZsmfr27avevXtr4MCBOnDggKSLAae6/V/uyJEj+ulPf6pPPvlEERERys/P19GjRzVkyBD17NlTffr00ZYtWyRdfMGIiYnRQw89pB49euj//u//1KlTJ/385z9XRESEunXrpg0bNkiS4uPjXV5cUlNTtWzZsmr7qE+fPrUKUB999JGioqLUs2dPDRs2TIWFhZKkRx55RK+//rpVd+utt+rgwYN66aWXdOzYMetK27lz5654jIZwLY+BU6dOadasWfrTn/6kiIgILVq0SJI0a9Ys9ejRQz169HB5Ye/UqZOmTZumqKgovfzyyzp48KDuvfde9ezZU7169dLGjRut2ueff14RERHq2bOnvvzyyxr7aNCgQWrVqlWt+/Tll1+2+vTRRx/V+fPntWvXLoWFham0tFROp1N333233nzzTavdVY3V7/v+VSlJWrRokcLDw9WrVy8lJSVJ+tfVhX379ikjI0NLlixRRESE3nrrrUr7+9Of/qRevXopPDxco0aN0qlTpyRJAwcO1EcffWTVXbq68uSTT6qiokIREREu7agO46p+x9X3//4bN25U//79NWLECN12220aMWKENm/erAEDBqhTp07WuDp48KBuueUWpaSkqHv37rrrrrt05MiRSvv+/lWp7777ThMmTFB4eLh69uypBQsWSPrXuFi5cqW2b9+ucePGKSIiQgcPHqy0v+r68ftX6j766CMNHDhQ0sWxlZ+fr4iICE2bNq1W/XHVuG2aT1zzTpw4YUJCQszevXuNMcaUlZWZ1atXm7i4OHPu3DlTUlJibrnlFvOLX/zCGGPMfffdZzIyMowxxqxbt85IMkeOHDHGGCPJ/M///I+175MnT1q/v/322yY5OdkYY8w777xT7f6rsmHDBjN48GDreWJiovnNb35jjDFm69atpmPHjubcuXNmw4YNxtvb23z++edWbceOHc1TTz1ljDFmx44dpn379ubs2bPmzTffNA8//LAxxpjTp0+bdu3amdOnT1+xvzp27Gid7+XOnDlj2rdvbwoKCowxxsyfP9+MGDHCGGPM2LFjzYoVK6zazp07mwMHDlxxn1dDYxgDy5YtMykpKdbzdevWmZiYGPPdd9+Z7777zvTp08esX7/eGHOxP2fOnGnV9u/f37z22mvGGGMuXLhgvvnmG6utb7zxhjHGmJdeesk8+uijV+yrAwcOmM6dO1+xLicnx/z0pz81FRUVxhhjHnvsMfPb3/7WGGPMiy++aEaPHm3mzZtnjcFL7a5qrH5//H//9w8++MD07t3b+uqQS309e/Zsqy+///vlvvrqKxMcHGwOHTpkjDEmLS3NTJ061Rhz8VskPvzwQ6vW09Ozyt9rwriq/3F1+Vjw8/MzBw4cMBUVFSYqKso89NBD5sKFC2bPnj2mU6dO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", + "image/png": "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ACIiIiK9o1YAevDgAebOnYu///5bW/UQERERaZ1aAahJkyZYsmQJHjx4oK16iIiIiLRO7VNgPXv2xL59+7RRCxEREVGDUPunMPr164dp06bh1KlT8Pf3h7m5ucL2119/XWPFEREREWmD2gEoOjoaALB8+XKlbRKJBDKZ7NmrIiIiItIitQNQza/CExERETVWz3QZfEVFhabqICIiImowagcgmUyGefPmoUWLFrCwsMBff/0FAJg5cya++OILjRdIREREpGlqB6CEhASkpKRg8eLFMDIyEts7duyIzz//XKPFEREREWmD2gFo8+bNWLduHYYNGwZDQ0Ox3dfXF+fOndNocURERETaoHYAunHjBry8vJTa5XI5qqurNVIUERERkTapHYC8vb2xf/9+pfZt27ahc+fOGimKiIiISJvUvgw+Pj4ekZGRuHHjBuRyObZv347z589j8+bN+Pnnn7VRIxEREZFGqT0DFBERgZ9++gl79+6Fubk54uPjkZOTg59++gm9e/fWRo1EREREGqX2DBAA9OjRA3v27NF0LUREREQNol4BCACysrKQk5MD4OG6IH9/f40VRURERKRNagegv//+G0OHDsXBgwdhY2MDACgqKkJQUBC2bNmCli1barpGIiIiIo1Sew3Q6NGjUV1djZycHNy5cwd37txBTk4O5HI5Ro8erY0aiYiIiDRK7Rmgffv24dChQ2jbtq3Y1rZtW3z66afo0aOHRosjIiIi0ga1Z4BcXV1V3vBQJpPBxcVFI0URERERaZPaAWjJkiWYMGECsrKyxLasrCxMnDgRS5cu1WhxRERERNqg9imwESNGoLy8HN26dUOTJg93f/DgAZo0aYKRI0di5MiRYt87d+5orlIiIiIiDVE7ACUlJWmhDCIiIqKGo3YAioyM1EYdRERERA1G7TVARERERI0dAxARERHpHQYgIiIi0jsMQERERKR36h2ALl68iN27d+P+/fsAAEEQ6jXO6tWrIZVKYWJigm7duiEzM7PWvmfOnMFbb70FqVQKiURS6xVp6oxJRERE+kftAFRYWIiwsDC0adMGr776KnJzcwEAo0aNwuTJk9Uaa+vWrYiNjcWsWbNw/Phx+Pr6Ijw8HAUFBSr7l5eXw9PTEwsXLoSTk5NGxiQiIiL9o3YAmjRpEpo0aYJr167BzMxMbB88eDB27dql1ljLly/H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fIX2/Px8ODk5qdzHyclJrf4A4OnpCXt7e1y8eFHl9unTp6O4uFh8XL9+Xc0jISIiosZEpwHIyMgI/v7+SE1NFdvkcjlSU1MRGBiocp/AwECF/gCwZ8+eWvsDwN9//43CwkI4Ozur3G5sbAwrKyuFBxEREb24dH4VWGxsLNavX49NmzYhJycHY8eORVlZGaKiogAAw4cPx/Tp08X+EydOxK5du7Bs2TKcO3cOs2fPRlZWFsaPHw8AKC0txZQpU3D48GFcuXIFqampiIiIgJeXF8LDw3VyjERERPR80fkaoMGDB+PWrVuIj49HXl4e/Pz8sGvXLnGh87Vr12Bg8L+cFhQUhK+//hoff/wxPvroI7Ru3Ro7duxAx44dAQCGhoY4efIkNm3ahKKiIri4uKBPnz6YN28ejI2NdXKMRERE9HzReQACgPHjx4szOI9LT09XanvnnXfwzjvvqOxvamqK3bt3a7I8IiIiesHo/BQYERERUUNjACIiIiK9wwBEREREeocBiIiIiPQOAxARERHpHQYgIiIi0jvPxWXwRETU+HVN2KvrEuolc0aYrksgHeAMEBEREekdBiAiIiLSOwxAREREpHcYgIiIiEjvMAARERGR3mEAIiIiIr3DAERERER6hwGIiIiI9A5vhEhERPptaVtdV1B/ced1XUGjxRkgIiIi0jsMQERERKR3GICIiIhI7zAAERERkd7hImgiIqJGque3PXVdQr38Puh3XZfAGSAiIiLSPwxAREREpHcYgIiIiEjvMAARERGR3mEAIiIiIr3DAERERER6hwGIiIiI9A4DEBEREekdBiAiIiLSOwxAREREpHcYgIiIiEjvMAARERGR3mEAIiIiIr3DAERERER6hwGIiIiI9A4DEBEREekdBiAiIiLSOwxAREREpHcYgIiIiEjvMAARERGR3mEAIiIiIr3DAERERER6hwGIiIiI9A4DEBEREekdBiAiIiLSOwxAREREpHcYgIiIiEjvMAARERGR3mEAIiIiIr3DAERERER6hwGIiIiI9A4DEBEREekdBiAiIiLSOwxAREREpHcYgIiIiEjvMAARERGR3mEAIiIiIr3DAERERER657kIQKtXr4ZUKoWJiQm6deuGzMzMJ/b/7rvv0K5dO5iYmKBTp07YuXOnwnZBEBAfHw9nZ2eYmpoiLCwMFy5c0OYhEBERUSOi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_1_freeze',\n", + " 'cgdrag_torch_implicit_4_grad',\n", + " 'cgdrag_torch_implicit_4_nograd',\n", + " 'cgdrag_torch_implicit_4_freeze',\n", + " 'cgdrag_torch_implicit_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + " 'cgdrag_torch_implicit_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvu0lEQVR4nO3deViV1f7//9cGA8QELRLKiRzKEbaBGqZhSuFQauWQVhqp6THLr5w6J/MchyZSyyy1PMeOVg5pqfWx4YMZ6kdNzdT0lKlN4pCCQwqKigXr94c/79wBCohsWD4f17Wvi732utf93jfrghdrr812GWOMAAAALOHj7QIAAABKEuEGAABYhXADAACsQrgBAABWIdwAAACrEG4AAIBVCDcAAMAqhBsAAGAVwg0AALAK4QaAvvrqK7Vq1UqVKlWSy+XS5s2bvV3SJbFixQq5XC6tWLHC26UAuIQqeLsAAN7122+/qUePHgoICNArr7yiwMBA1a5d29tlAUCxEW6Ay9xPP/2kXbt2afr06RowYIC3ywGAi8bLUsBl7sCBA5KkKlWqlNiYWVlZJTZWURhjdPLkSa+cG0DZQbgBLmMPPfSQYmNjJUk9evSQy+VS27ZtnceXLVumNm3aqFKlSqpSpYq6du2qbdu2eYwxZswYuVwufffdd+rTp4+qVq2q1q1ba/HixXK5XPrvf//r9F24cKFcLpfuuecejzEaNmyoXr16Ofdnzpypdu3aqVq1avL391ejRo30xhtv5Kk/PDxcd955p5YsWaLo6GhVrFhR//rXvyRJe/fuVbdu3VSpUiVVq1ZNw4cPV3Z2dqGuy9nntH37dvXs2VNBQUG6+uqrNWzYMJ06dcqjb2Fr3bBhg+Lj4xUSEqKKFSvq+uuv18MPP+zRZ968eYqKilLlypUVFBSkpk2b6tVXXy1UzQD+wMtSwGVs0KBBql69ul544QU9/vjjat68uUJDQyVJn3/+uTp27Kg6depozJgxOnnypCZPnqxbbrlFmzZtUnh4uMdYPXr0UP369fXCCy/IGKPWrVvL5XJp5cqVioiIkCStWrVKPj4+Wr16tXPcwYMHtX37dg0dOtRpe+ONN9S4cWN16dJFFSpU0EcffaQhQ4YoNzdXjz76qMd5d+zYod69e2vQoEEaOHCgbrzxRp08eVLt27fX7t279fjjj+u6667TrFmztGzZsiJdn549eyo8PFxJSUlat26dXnvtNR05ckTvvPNOkWo9cOCA7rjjDl1zzTV66qmnVKVKFaWmpmrRokXOOEuXLlXv3r3Vvn17jRs3TpK0bds2ffHFFxo2bFiR6gYuewbAZW358uVGknn//fc92t1ut6lWrZo5fPiw07Zlyxbj4+Nj+vbt67SNHj3aSDK9e/fOM3bjxo1Nz549nfs33XST6dGjh5Fktm3bZowxZtGiRUaS2bJli9PvxIkTecaKj483derU8WirXbu2kWSSk5M92idNmmQkmffee89py8rKMvXq1TOSzPLly893SZzn1KVLF4/2IUOGFKvWDz74wEgyX331VYHnHDZsmAkKCjK///77eWsDcGG8LAUgj/3792vz5s166KGHdNVVVzntERERuv322/Xpp5/mOWbw4MF52tq0aaNVq1ZJko4dO6YtW7bokUceUUhIiNO+atUqValSRU2aNHGOq1ixovN1RkaGDh06pNjYWP3888/KyMjwOMf111+v+Ph4j7ZPP/1U1157rbp37+60BQYG6pFHHinKZcizSvTYY4854xel1rP7mT7++GP99ttv+Z6rSpUqysrK0tKlS4tUI4C8CDcA8ti1a5ck6cYbb8zzWMOGDXXo0KE8m4avv/76PH3btGmj/fv368cff9SaNWvkcrkUExPjEXpWrVqlW265RT4+f/w4+uKLLxQXF+fs9bnmmmv09NNPS1K+4Sa/+uvVqyeXy+XRnt/zOZ/69et73K9bt658fHyUmppapFpjY2N17733auzYsQoJCVHXrl01c+ZMjz1AQ4YM0Q033KCOHTuqRo0aevjhh5WcnFykegGcQbgBUCLOXcE4q3Xr1pKklStXatWqVbrppptUqVIlJ9wcP35cX3/9tdq0aeMc89NPP6l9+/Y6dOiQJk6cqE8++URLly7V8OHDJUm5ubkXPO+l8uewVNhaXS6XFixYoLVr12ro0KH65Zdf9PDDDysqKkrHjx+XJFWrVk2bN2/W4sWL1aVLFy1fvlwdO3ZUv379Su35AbYg3ADI4+w/8duxY0eex7Zv366QkBBVqlTpguPUqlVLtWrV0qpVq7Rq1SonxNx6661KTU3V+++/r5ycHN16663OMR999JGys7O1ePFiDRo0SJ06dVJcXFyRQkzt2rX1008/yRjj0Z7f8zmfH374weP+jz/+qNzc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I4YPH66cnBy53W6POgrCvCrZeXXu93/FihVq1aqVevbsqRtuuEE9e/bUmjVrdOuttyo8PNyZV6mpqapTp4769++vxo0bq02bNtqzZ0+esc9dxTl58qQGDx6spk2bKiIiQi+//LKkP+bFnDlztGHDBiUkJMjtdis1NTXPeAVdx3NXtlavXq22bdtKOjO3vvzyS7ndbj311FOFuh6lxqDcOXjwoLnuuuvMtm3bjDHGZGZmmnnz5pnY2Fhz+vRpc/ToUVOnTh3z7LPPGmOM6dKli5k2bZoxxpgPP/zQSDJ79uwxxhgjyfznP/9xxj506JDz9cKFC819991njDFm0aJFBY6fn+XLl5v27ds797t162ZeffVVY4wx69evN7Vr1zanT582y5cvN35+fua7775z+tauXds8+eSTxhhjNm3aZGrUqGGys7PNe++9Zx588EFjjDHHjx831atXN8ePH7/g9apdu7bzfP/s1KlTpkaNGmbjxo3GGGNeeukl07NnT2OMMf369TOzZs1y+tatW9fs3LnzgmOWhvIwB2bOnGn69+/v3P/www9NTEyMOXnypDl58qRp3ry5+fTTT40xZ67nP//5T6dvq1atzDvvvGOMMeb33383R44ccWp99913jTHGTJgwwQwYMOCC12rnzp2mbt26F+yXkpJiHnjgAZOTk2OMMebRRx81r7/+ujHGmHHjxpn777/fjB8/3pmDZ+vOb66eO//P/fqzzz4zzZo1MxkZGcaYP6716NGjnWt57td/tn//fhMWFmZ27dpljDFm6NCh5m9/+5sxxpjY2FizatUqp6+vr2++X58P86rk59Wf50KlSpXMzp07TU5OjomOjjbdu3c3v//+u9m6dasJDw93xpZkPvnkE2OMMZMmTTL33nuvMabgufL000+bAQMGOPP37PU+d178eY6c63zX8dz5s2rVKhMbG5vnuZU1Xv/4BRTdunXrdPPNN6tBgwaSpMqVK2vdunXq2bOnrrjiCgUHB6tLly5O/5UrV+rdd9+VJHXt2jXPp6L36dPH+XrHjh0aOXKkDh06pJycHOejL1auXFng+IXxf//3f5o1a5akMysqVapU0Q8//CBJuummm9SwYUOP/v369ZMkNWvWTCEhIfrhhx/UrVs3/e1vf9PRo0e1cOFC3XnnnapUqVKR6viz7du3KywsTDfddJMkqX///ho3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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAHHCAYAAABEEKc/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgpklEQVR4nO3de1yP9/8/8Me7UpEOSjop5ZhDiloph4qIGdqMmM8kxoaQxjAkp0UbmjGxzWH7MsZ8DLO2pMyUTmpzbM4ZHSRK0fF9/f7w6/p4vyt6513vssf9dnvf1vt1va7X9bzeLuvhul7X9ZYIgiCAiIiIiERqqi6AiIiIqLFhQCIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIihd2+fRva2to4ffq0qkv51/Lw8ICHh4eqy1CItbU1Jk2apNIaysrKYGlpiS+//FKldVDjx4BEpICdO3dCIpGILw0NDVhYWGDSpEm4c+dOvW03JCQEEokEJiYmePz4cZXl1tbWeOONN+o09pdffomdO3cqtM6KFSvg4uKCvn37VlkWGxuLt956C6amptDU1ESbNm0wYsQIHDx4UOxz8+ZNmc9RXV0dVlZWePPNN5GWllal32effVZtHZ999hkkEglu3rypUP2VtmzZgjFjxsDKygoSieS5v7wfPnyIadOmwdjYGDo6OvD09MTZs2er7Xv48GH07t0b2trasLKywrJly1BeXv5SY77I3bt3ERISIvP5qUJcXBxCQkLw8OFDldZRk2bNmiEoKAirV69GcXGxqsuhRowBiagOVqxYge+++w4REREYNmwY/u///g/u7u71/j/cnJwcbNmyRaljKhqQ7t27h127duGDDz6osmzZsmXw9PTE+fPn8f777yMiIgLz589HYWEhRo8ejT179sj0Hz9+PL777jts374d77zzDk6cOIE+ffo02C/5tWvX4sSJE+jevTs0NDRq7CeVSjF8+HDs2bMHAQEBCAsLQ05ODjw8PHDlyhWZvr/88gt8fHxgYGCAL774Aj4+Pli1ahVmzZpV5zGr89tvv+G3334T39+9exfLly9vFAFp+fLl1Qak9PR0fPXVVw1flBx/f3/k5uZWOR6JZAhEVGs7duwQAAhJSUky7QsWLBAACPv27auX7S5btkwAIDg4OAgmJibC48ePZZa3a9dOGD58eJ3G7t69u+Du7l7r/uvXrxeaN28uPHr0SKZ9//79AgDh7bffFkpLS6usFxkZKRw5ckQQBEG4ceOGAED49NNPZfocPnxYACBMmzbtuf0qffrppwIA4caNG7Wu/1k3b94UpFKpIAiCoKOjI/j5+VXbb9++fQIAYf/+/WJbTk6OYGBgIIwfP16mb7du3QR7e3uhrKxMbFu8eLEgkUiES5cu1WnM2khKShIACDt27FB43ecpLCxUqP/L/pk0lDfeeEPo37+/qsugRoxnkIiUoH///gCAa9euybRfvnwZb7/9NgwNDaGtrQ0nJyccPnxYpk9ZWRmWL1+OTp06QVtbG0ZGRujXrx+ioqKqbCc4OBjZ2dm1OosklUoRHh6O7t27Q1tbGyYmJnj//ffx4MEDsY+1tTUuXLiAkydPipe7XjSv5dChQ3BxcUHLli1l2pcuXQpDQ0Ns374dzZo1q7Ket7f3Cy8DDhw4EABw48aNF+6fMrRr1w4SieSF/Q4cOAATExO89dZbYpuxsTHGjh2Ln376CSUlJQCAixcv4uLFi5g2bZrMGakZM2ZAEAQcOHBA4TFr8uwcpNjYWLz22msAnp4dqfyzfPbMYEJCAoYOHQp9fX20aNEC7u7uVeaQVV7KvXjxIt555x20atUK/fr1AwD89ddfmDRpEtq3bw9tbW2Ymppi8uTJuH//vsz68+fPBwDY2NiIdVReAq1uDtL169cxZswYGBoaokWLFujTpw9+/vlnmT6xsbGQSCT44YcfsHr1arRt2xba2toYNGgQrl69KtP3ypUrGD16NExNTaGtrY22bdti3LhxyM/Pl+k3ePBg/PHHH8jLy3vu50z/XjWfUyaiWqv8BdCqVSux7cKFC+jbty8sLCywcOFC6Ojo4IcffoCPjw9+/PFHvPnmmwCe/lIJDQ3Fe++9B2dnZxQUFCA5ORlnz57F4MGDZbbTv39/DBw4EGFhYZg+fTqaN29eY03vv/8+du7cCX9/f8yePRs3btzApk2bkJqaitOnT6NZs2YIDw/HrFmz0LJlSyxevBgAYGJiUuOYZWVlSEpKwvTp02Xar1y5gsuXL2Py5MnQ1dVV6LN7VmXANDIyqvMY9SE1NRW9e/eGmprsvymdnZ2xbds2/P3337Czs0NqaioAwMnJSaafubk52rZtKy5XZMza6Nq1K1asWIHg4GBMmzZNDOxubm4AgBMnTmDYsGFwdHTEsmXLoKamhh07dmDgwIE4deoUnJ2dZcYbM2YMOnXqhE8++QSCIAAAoqKicP36dfj7+8PU1BQXLlzAtm3bcOHCBZw5cwYSiQRvvfUW/v77b3z//ffYsGEDWrduDeBp8KtOdnY23Nzc8PjxY8yePRtGRkbYtWsXRo4ciQMHDoh/RyqtWbMGampqmDdvHvLz8xEWFoYJEyYgISEBAFBaWgpvb2+UlJRg1qxZMDU1xZ07d3D06FE8fPgQ+vr64liOjo4QBAFxcXF1nr9HrzgVn8EialIqL7EdP35cuHfvnnD79m3hwIEDgrGxsaClpSXcvn1b7Dto0CDBzs5OKC4uFtukUqng5uYmdOrUSWyzt7d/4eWxykts9+7dE06ePCkAENavXy8ul7/EdurUKQGAsHv3bplxIiMjq7Qrcont6tWrAgDhiy++kGn/6aefBADChg0bajVO5aWz5cuXC/fu3ROysrKE2NhYoVevXgIA4ccff5TpV1+X2J71vEtsOjo6wuTJk6u0//zzzwIAITIyUqaejIyMKn1fe+01oU+fPgqPWRN3d3eZP7eaLrFJpVKhU6dOgre3t3g5URAE4fHjx4KNjY0wePBgsa3yOKvuEp/8ZV1BEITvv/9eACD8/vvvYtvz/kzatWsn8xkHBgYKAIRTp06JbY8ePRJsbGwEa2troaKiQhAEQYiJiREACF27dhVKSkrEvp9//rkAQDh37pwgCIKQmppa5bJlTe7evSsAENauXfvCvvTvxEtsRHXg5eUFY2NjWFpa4u2334aOjg4OHz6Mtm3bAgDy8vJw4sQJjB07Fo8ePUJubi5yc3Nx//59eHt748qVK+JdbwYGBrhw4UKtJuYCwIABA+Dp6YmwsDA8efKk2j779++Hvr4+Bg8eLG47NzcXjo6OaNmyJWJiYuq035WXU549UwYABQUFAKDw2aNly5bB2NgYpqam8PDwwLVr17B27VqZy06NwZMnT6ClpVWlXVtbW1z+7H9r6vvsn1dtx3xZaWlpuHLlCt555x3cv39fPBaKioowaNAg/P7775BKpTLrVDcB/9mzlcXFxcjNzUWfPn0AoM533h07dgzOzs7iZTwAaNmyJaZNm4abN2/i4sWLMv39/f2hqakpvq88U3b9+nUAEM8Q/frrr9Xe7fmsymM4Nze3TrXTq4+X2IjqYPPmzejcuTPy8/Oxfft2/P777zK/7K5evQpBELB06VIsXbq02jFycnJgYWGBFStWYNSoUejcuTN69OiBoUOH4t1330XPnj1r3H5ISAjc3d0RERGBuXPnVll+5coV5Ofno02bNjVu+2UI//+ySyU9PT0AwKNHjxQaZ9q0aRgzZgzU1NRgYGCA7t27VxsaXqQ284heRvPmzaudE1R512JleKj8b019nw0ZtR3zZVUGbz8/vxr75Ofny4ReGxubKn3y8vKwfPly7N27t8rxIz+/p7Zu3boFFxeXKu1du3YVl/fo0UNst7KykulXWXPlvDobGxsEBQVh/fr12L17N/r374+RI0fiP//5j8zlNeB/x3B9HzvUdDEgEdWBs7OzOM/Ex8cH/fr1wzvvvIP09HS0bNlS/Bf5vHnz4O3tXe0YHTt2BPD0jNC1a9fw008/4bfffsPXX3+NDRs2ICIiAu+991616w4YMAAeHh4ICwur9l/7UqkUbdq0we7du6tdv6Y5IS9SOTfo2YneAGBrawsAOHfunELjderUCV5eXjUuf9HZlMqzBJX96ouZmRkyMzOrtFe2mZubi/0q2y0tLav0fXauT23HfFmVx+Knn34KBweHavvIT7ivLpyNHTsWcXFxmD9/PhwcHMTjfOjQoVXOQNUXdXX1atufDezr1q3DpEmTxL9Ps2fPRmhoKM6cOSOe4QX+dwxXzpMikseARPSS1NXVERoaCk9PT2zatAkLFy5E+/btATx9KN3zAkAlQ0ND+Pv7w9/fH4WFhRgwYABCQkJqDEjA07NIHh4e2Lp1a5VlHTp0wPHjx9G3b98XnolQ5F/QVlZWaN68eZW7zDp37owuXbrgp59+wueff17lF25dGRsbo0WLFkhPT692eXp6Olq0aFHvv+QcHBxw6tQpSKVSmUnVCQkJaNGiBTp37iz2A4Dk5GSZMHT37l38888/mDZtmsJj1lZNf44dOnQA8PQsX22Oxeo8ePAA0dHRWL58OYKDg8X26i4LK3I8tWvXrto/28uXL4vL68LOzg52dnZYsmQJ4uLi0LdvX0RERGDVqlVin8pjuPJsFZE8zkEiUgIPDw84OzsjPDwcxcXFaNOmjRheqjtLcO/ePfHnZ2+TBp7+a75jx44vvM3b3d0dHh4eWLt2bZUHVI4dOxYVFRVYuXJllfXKy8tlHuKno6NT66ceN2vWDE5OTkhOTq6ybPny5bh//z7ee++9ap8a/dtvv+Ho0aO12k4ldXV1DBkyBEeOHEFGRobMsoyMDBw5cgRDhgyp8cyCsrz99tvIzs6WeRp4bm4u9u/fjxEjRoiXBbt37w5bW1ts27YNFRUVYt8tW7ZAIpHg7bffVnjM2tLR0QGAKn+Wjo6O6NChAz777DMUFhZWWe/ZY7EmlZ+v/KXV8PDwWtdRnddffx2JiYmIj48X24qKirBt2zZYW1ujW7duLxzjWQUFBVWOPTs7O6ipqVX5+5SSkgKJRAJXV1eFtkH/HjyDRKQk8+fPx5gxY7Bz50588MEH2Lx5M/r16wc7OztMnToV7du3R3Z2NuLj4/HPP//gzz//BAB069YNHh4ecHR0hKGhIZKTk3HgwAEEBAS8cJuVT66W5+7ujvfffx+hoaFIS0vDkCFD0KxZM1y5cgX79+/H559/Lv6ydnR0xJYtW7Bq1Sp07NgRbdq0EZ9HVJ1Ro0Zh8eLFKCgoEOceAYCvry/OnTuH1atXIzU1FePHj0e7du1w//59REZGIjo6uk5PLv7kk0/Qp08f9O7dG9OmTYO1tTVu3ryJbdu2QSKR4JNPPpHpX/logx07drzwe7+OHDki/jmUlZXhr7/+Es8yjBw5UpwH9vbbb6NPnz7w9/fHxYsX0bp1a3z55ZeoqKjA8uXLZcb89NNPMXLkSAwZMgTjxo3D+fPnsWnTJrz33nsyZysUGbM2OnToAAMDA0REREBXVxc6OjpwcXGBjY0Nvv76awwbNgzdu3eHv78/LCwscOfOHcTExEBPTw9Hjhx57th6enoYMGAAwsLCUFZWBgsLC/z222/VPq/K0dERALB48WKMGzcOzZo1w4gRI8Tg9KyFCxfi+++/x7BhwzB79mwYGhpi165duHHjBn788ccqj0B4kRMnTiAgIABjxoxB586dUV5eju+++w7q6uoYPXq0TN+oqCj07du30T1SghoRld5DR9TE1PQkbUEQhIqKCqFDhw5Chw4dhPLyckEQBOHatWvCxIkTBVNTU6FZs2aChYWF8MYbbwgHDhwQ11u1apXg7OwsGBgYCM2bNxdsbW2F1atXyzyN+tnb/OW5u7sLAKp9VMC2bdsER0dHoXnz5oKurq5gZ2cnfPTRR8Ldu3fFPllZWcLw4cMFXV1dAcALb/nPzs4WNDQ0hO+++67a5dHR0cKoUaOENm3aCBoaGoKxsbEwYsQI4aeffhL7vOj2fXmXLl0SfH19xTHbtGkjjBs3TubJ1JW++OKLWt0mLwiC4OfnJwCo9iV/u3xeXp4wZcoUwcjISGjRooXg7u5e7XEgCILw3//+V3BwcBC0tLSEtm3bCkuWLKn26eKKjClP/jZ/QXj6uIVu3boJGhoaVfYhNTVVeOuttwQjIyNBS0tLaNeunTB27FghOjpa7PO84+yff/4R3nzzTcHAwEDQ19cXxowZI94qv2zZMpm+K1euFCwsLAQ1NTWZW/7lb/MXhKd/R95++23BwMBA0NbWFpydnYWjR4/K9Km8zV/+9v3K46hyP69fvy5MnjxZ6NChg6CtrS0YGhoKnp6ewvHjx2XWe/jwoaCpqSl8/fXXNXy6RIIgEQS5c6ZERC8wZcoU/P333zh16pSqS6li7NixuHnzJhITE1VdCjVS4eHhCAsLw7Vr15R2tyC9ehiQiEhhGRkZ6Ny5M6Kjo9G3b19VlyMSBAEmJib4v//7PwwZMkTV5VAjVFZWhg4dOmDhwoWYMWOGqsuhRowBiYiIiEgO72IjIiIiksOARERERCSHAYmIiIhIDgMSERERkRw+KLKOpFIp7t69C11dXX7ZIRERURMhCAIePXoEc3Pz5z6MlAGpju7evVvlyyiJiIioabh9+7bMFxjLY0CqI11dXQBPP+Bnv26BiIiIGq+CggJYWlqKv8drwoBUR5WX1fT09BiQiIiImpgXTY/hJG0iIiIiOQxIRERERHIYkIiIiIjkcA4SERE1WhUVFSgrK1N1GdSENGvWDOrq6i89DgMSERE1OoIgICsrCw8fPlR1KdQEGRgYwNTU9KWeU8iAREREjU5lOGrTpg1atGjBB/JSrQiCgMePHyMnJwcAYGZmVuexGJCIiKhRqaioEMORkZGRqsuhJqZ58+YAgJycHLRp06bOl9s4SZuIiBqVyjlHLVq0UHEl1FRVHjsvM3+NAYmIiBolXlajulLGscOARERERCSHAYmIiEiFYmNjIZFIXnjHnrW1NcLDwxukproKCQmBg4OD+H7SpEnw8fFRWT0vg5O0iYioyXBefbzBtpW42Euh/hEREZg/fz4ePHgADY2nv14LCwvRqlUr9O3bF7GxsWLf2NhYeHp64urVq3Bzc0NmZib09fUBADt37kRgYOAr8YiDzz//HIIgKHXMkJAQHDp0CGlpaUodVx7PIBERESmBp6cnCgsLkZycLLadOnUKpqamSEhIQHFxsdgeExMDKysrdOjQAZqami/9zB5lKi0tVdpY+vr6MDAwUNp4DYkBiYiISAm6dOkCMzOzKmeKRo0aBRsbG5w5c0am3dPTU/y58hJbbGws/P39kZ+fD4lEAolEgpCQEHG9x48fY/LkydDV1YWVlRW2bdv23JoePXqECRMmQEdHB2ZmZtiwYQM8PDwQGBgo9rG2tsbKlSsxceJE6OnpYdq0aQCABQsWoHPnzmjRogXat2+PpUuXVrkrbM2aNTAxMYGuri6mTJkiEwKBqpfYpFIpQkNDYWNjg+bNm8Pe3h4HDhyQ+VwkEgmio6Ph5OSEFi1awM3NDenp6QCenl1bvnw5/vzzT/Hz2blz53M/g7piQCIiIlIST09PxMTEiO9jYmLg4eEBd3d3sf3JkydISEgQA9Kz3NzcEB4eDj09PWRmZiIzMxPz5s0Tl69btw5OTk5ITU3FjBkzMH36dDE8VCcoKAinT5/G4cOHERUVhVOnTuHs2bNV+n322Wewt7dHamoqli5dCgDQ1dXFzp07cfHiRXz++ef46quvsGHDBnGdH374ASEhIfjkk0+QnJwMMzMzfPnll8/9fEJDQ/Htt98iIiICFy5cwNy5c/Gf//wHJ0+elOm3ePFirFu3DsnJydDQ0MDkyZMBAL6+vvjwww/RvXt38fPx9fV97jbrinOQGqGGvMaubIpesyciepV4enoiMDAQ5eXlePLkCVJTU+Hu7o6ysjJEREQAAOLj41FSUlJtQNLU1IS+vj4kEglMTU2rLH/99dcxY8YMAE/P8GzYsAExMTHo0qVLlb6PHj3Crl27sGfPHgwaNAgAsGPHDpibm1fpO3DgQHz44YcybUuWLBF/tra2xrx587B371589NFHAIDw8HBMmTIFU6ZMAQCsWrUKx48fr3IWqVJJSQk++eQTHD9+HK6urgCA9u3b448//sDWrVvh7u4u9l29erX4fuHChRg+fDiKi4vRvHlztGzZEhoaGtV+PsrEgERERKQkHh4eKCoqQlJSEh48eIDOnTvD2NgY7u7u8Pf3R3FxMWJjY9G+fXtYWVkpPH7Pnj3FnytDVOXXasi7fv06ysrK4OzsLLbp6+tXG6acnJyqtO3btw8bN27EtWvXUFhYiPLycujp6YnLL126hA8++EBmHVdXV5kzaM+6evUqHj9+jMGDB8u0l5aWolevXjXuZ+XXheTk5NTpM6srBiQiIiIl6dixI9q2bYuYmBg8ePBAPAtibm4OS0tLxMXFISYmBgMHDqzT+M2aNZN5L5FIIJVKX7puHR0dmffx8fGYMGECli9fDm9vb+jr62Pv3r1Yt25dnbdRWFgIAPj5559hYWEhs0xLS0vm/bP7WTl5XRn7qQjOQSIiIlIiT09PxMbGIjY2Fh4eHmL7gAED8MsvvyAxMbHay2uVNDU1UVFR8dJ1tG/fHs2aNUNSUpLYlp+fj7///vuF68bFxaFdu3ZYvHgxnJyc0KlTJ9y6dUumT9euXZGQkCDT9uxEdHndunWDlpYWMjIy0LFjR5mXpaVlrfdLWZ/Pi/AMEhERkRJ5enpi5syZKCsrk5lX4+7ujoCAAJSWlj43IFlbW6OwsBDR0dGwt7dHixYt6vS9dLq6uvDz88P8+fNhaGiINm3aYNmyZVBTU3vhIwU6deqEjIwM7N27F6+99hp+/vln/Pe//5XpM2fOHEyaNAlOTk7o27cvdu/ejQsXLqB9+/Y11jNv3jzMnTsXUqkU/fr1Q35+Pk6fPg09PT34+fnVar+sra1x48YNpKWloW3bttDV1a1yBkoZeAaJiIhIiTw9PfHkyRN07NgRJiYmYru7uzsePXokPg6gJm5ubvjggw/g6+sLY2NjhIWF1bmW9evXw9XVFW+88Qa8vLzQt29fdO3aFdra2s9db+TIkZg7dy4CAgLg4OCAuLg48e62Sr6+vli6dCk++ugjODo64tatW5g+ffpzx125ciWWLl2K0NBQdO3aFUOHDsXPP/8MGxubWu/T6NGjMXToUHh6esLY2Bjff/99rddVhERQ9iMu/yUKCgqgr6+P/Px8mUlrytCk72LTmqnqEupuXs23yhJRwykuLsaNGzdgY2Pzwl/kpJiioiJYWFhg3bp14t1nr6LnHUO1/f3NS2xERESvqNTUVFy+fBnOzs7Iz8/HihUrAACjRo1ScWWNHwMSERHRK+yzzz5Deno6NDU14ejoiFOnTqF169aqLqvRaxRzkDZv3gxra2toa2vDxcUFiYmJz+2/f/9+2NraQltbG3Z2djh27JjM8pCQENja2kJHRwetWrWCl5dXlZn2eXl5mDBhAvT09GBgYIApU6aItyASERG9Cnr16oWUlBQUFhYiLy8PUVFRsLOzU3VZTYLKzyDt27cPQUFBiIiIgIuLC8LDw+Ht7Y309HS0adOmSv+4uDiMHz8eoaGheOONN7Bnzx74+Pjg7Nmz6NGjBwCgc+fO2LRpE9q3b48nT55gw4YNGDJkCK5evQpjY2MAwIQJE5CZmYmoqCiUlZXB398f06ZNw549exp0/6nxGPhD3Z5Lomonxp5QdQlERK8clU/SdnFxwWuvvYZNmzYBePogKEtLS8yaNQsLFy6s0t/X1xdFRUU4evSo2NanTx84ODiIj3GXVzkh6/jx4xg0aBAuXbqEbt26ISkpSXx6aGRkJF5//XX8888/1T6GvaYxOUlbVlOepD3QyuLFnRohBiR61XCSNr0sZUzSVuklttLSUqSkpMDL63/f36WmpgYvLy/Ex8dXu058fLxMfwDw9vausX9paSm2bdsGfX192Nvbi2MYGBjIPFrdy8sLampqVS7FERER0b+PSi+x5ebmoqKiQuY5EQBgYmKCy5cvV7tOVlZWtf2zsrJk2o4ePYpx48bh8ePHMDMzQ1RUlDgpLSsrq8rlOw0NDRgaGlYZp1JJSQlKSkrE9wUFBbXbSSIiImpyGsUk7frg6emJtLQ0xMXFYejQoRg7dmyNX+hXG6GhodDX1xdfijwWnYiIiJoWlQak1q1bQ11dHdnZ2TLt2dnZMDU1rXYdU1PTWvXX0dFBx44d0adPH3zzzTfQ0NDAN998I44hH5bKy8uRl5dX43YXLVqE/Px88XX79m2F9pWIiIiaDpUGpMpnMkRHR4ttUqkU0dHRcHV1rXYdV1dXmf4AEBUVVWP/Z8etvETm6uqKhw8fIiUlRVx+4sQJSKVSuLi4VLu+lpYW9PT0ZF5EREQvKzY2FhKJBA8fPnxuP2tra4SHhzdITapU28+jvqn8Nv+goCD4+fnByckJzs7OCA8PR1FREfz9/QEAEydOhIWFBUJDQwE8/XI8d3d3rFu3DsOHD8fevXuRnJyMbdu2AXj6GPXVq1dj5MiRMDMzQ25uLjZv3ow7d+5gzJgxACB+/8vUqVMRERGBsrIyBAQEYNy4cbW6g42IiFTksy4Nty0Fv34oIiIC8+fPx4MHD6Ch8fTXa2FhIVq1aoW+ffsiNjZW7BsbGwtPT09cvXoVbm5uyMzMhL6+PgBg586dCAwMVHlA+LdTeUDy9fXFvXv3EBwcjKysLDg4OCAyMlKciJ2RkQE1tf+d6HJzc8OePXuwZMkSfPzxx+jUqRMOHTokPgNJXV0dly9fxq5du5CbmwsjIyO89tprOHXqFLp37y6Os3v3bgQEBGDQoEFQU1PD6NGjsXHjxobdeSIiemV4enqisLAQycnJ6NOnDwDg1KlTMDU1RUJCAoqLi8VbzmNiYmBlZYUOHToAQI3TO5qq0tJSaGpqqrqMl9IoJmkHBATg1q1bKCkpQUJCgsxlrtjYWOzcuVOm/5gxY5Ceno6SkhKcP38er7/+urhMW1sbBw8exJ07d1BSUoK7d+/ip59+wmuvvSYzhqGhIfbs2YNHjx4hPz8f27dvR8uWLet1P4mI6NXVpUsXmJmZVTlTNGrUKNjY2ODMmTMy7Z6enuLPlZeUYmNj4e/vj/z8fEgkEkgkEoSEhIjrPX78GJMnT4auri6srKzEqyc18fDwwOzZs/HRRx/B0NAQpqamMuMBT09EjBo1Ci1btoSenh7Gjh1bZa7vqlWr0KZNG+jq6uK9997DwoUL4eDgIC6fNGkSfHx8sHr1apibm6NLl6dn+r777js4OTlBV1cXpqameOedd6rMAT527Bg6d+6M5s2bw9PTEzdv3nzBJ90wGkVAIiIiehV4enoiJiZGfB8TEwMPDw+4u7uL7U+ePEFCQoIYkJ7l5uaG8PBw6OnpITMzE5mZmZg3b564fN26dXByckJqaipmzJiB6dOnIz39+ZcCd+3aBR0dHSQkJCAsLAwrVqxAVFQUgKfzc0eNGoW8vDycPHkSUVFRuH79Onx9fcX1d+/ejdWrV2Pt2rVISUmBlZUVtmzZUmU70dHRSE9PR1RUlPgw57KyMqxcuRJ//vknDh06hJs3b2LSpEniOrdv38Zbb72FESNGIC0tTQxfjYHKL7ERERG9Kjw9PREYGIjy8nI8efIEqampcHd3R1lZmfhtD/Hx8SgpKak2IGlqakJfXx8SiaTay26vv/46ZsyYAQBYsGABNmzYgJiYGPGMTXV69uyJZcuWAQA6deqETZs2ITo6GoMHD0Z0dDTOnTuHGzduiI+v+fbbb9G9e3ckJSXhtddewxdffIEpU6aIc4ODg4Px22+/Vfn+Uh0dHXz99dcyl9YmT54s/ty+fXts3LgRr732GgoLC9GyZUts2bIFHTp0wLp16wA8PQt37tw5rF279sUfdj3jGSQiIiIl8fDwQFFREZKSknDq1Cl07twZxsbGcHd3F+chxcbGon379rCyslJ4/J49e4o/V4aoFz3j79l1AMDMzExc59KlS7C0tJR5tl+3bt1gYGCAS5cuAQDS09Ph7OwsM4b8ewCws7OrMu8oJSUFI0aMgJWVFXR1deHu7g7g6WW9yu3L3z3+orvSGwrPIBERESlJx44d0bZtW8TExODBgwdiIDA3N4elpSXi4uIQExODgQPr9uXYzZo1k3kvkUgglUqVvk5d6OjoyLwvKiqCt7c3vL29sXv3bhgbGyMjIwPe3t4oLS1V+vaVjWeQiIiIlMjT0xOxsbGIjY2Fh4eH2D5gwAD88ssvSExMrPbyWiVNTU1UVFQ0QKVPH3tz+/ZtmYcfX7x4EQ8fPkS3bt0APL3slZSUJLOe/PvqXL58Gffv38eaNWvQv39/2NraVjnb1bVrVyQmJsq0PTuZXZUYkIiIiJTI09MTf/zxB9LS0sQzSADg7u6OrVu3orS09LkBydraGoWFhYiOjkZubi4eP35cb7V6eXnBzs4OEyZMwNmzZ5GYmIiJEyfC3d1d/EL3WbNm4ZtvvsGuXbtw5coVrFq1Cn/99RckEslzx7aysoKmpia++OILXL9+HYcPH8bKlStl+nzwwQe4cuUK5s+fj/T0dOzZs6fKneuqwoBERESkRJ6ennjy5Ak6duwo8+Xq7u7uePTokfg4gJq4ubnhgw8+gK+vL4yNjREWFlZvtUokEvz0009o1aoVBgwYAC8vL7Rv3x779u0T+0yYMAGLFi3CvHnz0Lt3b9y4cQOTJk0Sn+lUE2NjY+zcuRP79+9Ht27dsGbNGnz22WcyfaysrPDjjz/i0KFDsLe3R0REBD755JN62VdFSQRBEFRdRFNUUFAAfX195OfnK/1rR5xXH1fqeA0pUWumqkuos4FWFqouoU5OjD2h6hKIlKq4uBg3btyAjY3NC38Jk2oMHjwYpqam+O6771RdSrWedwzV9vc3J2kTERFRjR4/foyIiAh4e3tDXV0d33//PY4fPy4+S+lVxYBERERENZJIJDh27BhWr16N4uJidOnSBT/++CO8vLxUXVq9YkAiIiKiGjVv3hzHjzfdqR91xUnaRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhERkQrFxsZCIpHg4cOHz+1nbW2N8PBwhcYWBAHTpk2DoaEhJBIJ0tLS6lznvw2fg0RERE3GwB8GNti2FP0an4iICMyfPx8PHjyAhsbTX6+FhYVo1aoV+vbti9jYWLFvbGwsPD09cfXqVbi5uSEzMxP6+voAgJ07dyIwMPCFgak2IiMjsXPnTsTGxqJ9+/Zo3br1S4/5b8EzSERERErg6emJwsJCJCcni22nTp2CqakpEhISUFxcLLbHxMTAysoKHTp0gKamJkxNTSGRSJRe07Vr12BmZgY3NzeYmpqKwe1ZpaWlSt/uq4ABiYiISAm6dOkCMzOzKmeKRo0aBRsbG5w5c0am3dPTU/y58hJbbGws/P39kZ+fD4lEAolEgpCQEHG9x48fY/LkydDV1YWVlRW2bdtWYz2TJk3CrFmzkJGRAYlEAmtrawCAh4cHAgICEBgYiNatW8Pb2xsAcP78eQwbNgwtW7aEiYkJ3n33XeTm5orjSaVShIaGwsbGBs2bN4e9vT0OHDggs73Kmp99VX4eJSUlmDdvHiwsLKCjowMXFxeZz6qxYUAiIiJSEk9PT8TExIjvY2Ji4OHhAXd3d7H9yZMnSEhIEAPSs9zc3BAeHg49PT1kZmYiMzMT8+bNE5evW7cOTk5OSE1NxYwZMzB9+nSkp6dXW8vnn3+OFStWoG3btsjMzERSUpK4bNeuXdDU1MTp06cRERGBhw8fYuDAgejVqxeSk5MRGRmJ7OxsjB07VlwnNDQU3377LSIiInDhwgXMnTsX//nPf3Dy5Elxe5U1Z2ZmYs6cOWjTpg1sbW0BAAEBAYiPj8fevXvx119/YcyYMRg6dCiuXLnyEp94/eEcJCIiIiXx9PREYGAgysvL8eTJE6SmpsLd3R1lZWWIiIgAAMTHx6OkpKTagKSpqQl9fX1IJBKYmppWWf76669jxowZAIAFCxZgw4YNiImJQZcuXar01dfXh66uLtTV1auM1alTJ4SFhYnvV61ahV69euGTTz4R27Zv3w5LS0v8/fffaNeuHT755BMcP34crq6uAID27dvjjz/+wNatW+Hu7g59fX1xHtXBgwexdetWHD9+HKampsjIyMCOHTuQkZEBc3NzAMC8efMQGRmJHTt2yGy3sWBAIiIiUhIPDw8UFRUhKSkJDx48QOfOnWFsbAx3d3f4+/ujuLhYnDBtZWWl8Pg9e/YUf64MUTk5OQqP4+joKPP+zz//RExMDFq2bFml77Vr11BWVobHjx9j8ODBMstKS0vRq1cvmbbU1FS8++672LRpE/r27QsAOHfuHCoqKtC5c2eZviUlJTAyMlK4/obAgERERKQkHTt2RNu2bRETE4MHDx7A3d0dAGBubg5LS0vExcUhJiYGAwfW7W68Zs2aybyXSCSQSqUKj6OjoyPzvrCwECNGjMDatWur9DUzM8P58+cBAD///DMsLCxklmtpaYk/Z2VlYeTIkXjvvfcwZcoUmfHV1dWRkpICdXV1mfWrC2WNAQMSERGREnl6eiI2NhYPHjzA/PnzxfYBAwbgl19+QWJiIqZPn17j+pqamqioqGiIUkW9e/fGjz/+CGtr62rvdOvWrRu0tLSQkZEhhj55xcXFGDVqFGxtbbF+/XqZZb169UJFRQVycnLQv3//etkHZeMkbSIiIiXy9PTEH3/8gbS0NJkw4e7ujq1bt6K0tLTa+UeVrK2tUVhYiOjoaOTm5uLx48f1XvPMmTORl5eH8ePHIykpCdeuXcOvv/4Kf39/VFRUQFdXF/PmzcPcuXOxa9cuXLt2DWfPnsUXX3yBXbt2AQDef/993L59Gxs3bsS9e/eQlZWFrKwslJaWonPnzpgwYQImTpyIgwcP4saNG0hMTERoaCh+/vnnet+/umBAIiIiUiJPT088efIEHTt2hImJidju7u6OR48eiY8DqImbmxs++OAD+Pr6wtjYWGYydX0xNzfH6dOnUVFRgSFDhsDOzg6BgYEwMDCAmtrTqLBy5UosXboUoaGh6Nq1K4YOHYqff/4ZNjY2AICTJ08iMzMT3bp1g5mZmfiKi4sDAOzYsQMTJ07Ehx9+iC5dusDHxwdJSUl1movVECSCIAiqLqIpKigogL6+PvLz86Gnp6fUsZ1XH1fqeA0pUWumqkuos4FWFi/u1Agp+rRfosauuLgYN27cgI2NDbS1tVVdDjVBzzuGavv7m2eQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiBol3kNEdaWMY4cBiYiIGpXKp0U3xPN/6NVUeezIP3lcEXySNhERNSrq6uowMDAQv2OsRYsWkEgkKq6KmgJBEPD48WPk5OTAwMCgyteaKIIBiYiIGp3Kb5+vyxexEhkYGIjHUF0xIBERUaMjkUhgZmaGNm3aoKysTNXlUBPSrFmzlzpzVIkBiYiIGi11dXWl/LIjUhQnaRMRERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchpFQNq8eTOsra2hra0NFxcXJCYmPrf//v37YWtrC21tbdjZ2eHYsWPisrKyMixYsAB2dnbQ0dGBubk5Jk6ciLt378qMYW1tDYlEIvNas2ZNvewfERERNS0qD0j79u1DUFAQli1bhrNnz8Le3h7e3t41Pl4+Li4O48ePx5QpU5CamgofHx/4+Pjg/PnzAJ5+Qd3Zs2exdOlSnD17FgcPHkR6ejpGjhxZZawVK1YgMzNTfM2aNate95WIiIiaBokgCIIqC3BxccFrr72GTZs2AQCkUiksLS0xa9YsLFy4sEp/X19fFBUV4ejRo2Jbnz594ODggIiIiGq3kZSUBGdnZ9y6dQtWVlYAnp5BCgwMRGBgYJ3qLigogL6+PvLz86Gnp1enMWrivPq4UsdrSIlaM1VdQp0NtLJQdQl1cmLsCVWXQETUZNT297dKzyCVlpYiJSUFXl5eYpuamhq8vLwQHx9f7Trx8fEy/QHA29u7xv4AkJ+fD4lEAgMDA5n2NWvWwMjICL169cKnn36K8vLyGscoKSlBQUGBzIuIiIheTSr9Lrbc3FxUVFTAxMREpt3ExASXL1+udp2srKxq+2dlZVXbv7i4GAsWLMD48eNlkuLs2bPRu3dvGBoaIi4uDosWLUJmZibWr19f7TihoaFYvny5IrtHRERETdQr/WW1ZWVlGDt2LARBwJYtW2SWBQUFiT/37NkTmpqaeP/99xEaGgotLa0qYy1atEhmnYKCAlhaWtZf8URERKQyKg1IrVu3hrq6OrKzs2Xas7OzYWpqWu06pqamtepfGY5u3bqFEydOvHCekIuLC8rLy3Hz5k106dKlynItLa1qgxMRERG9elQ6B0lTUxOOjo6Ijo4W26RSKaKjo+Hq6lrtOq6urjL9ASAqKkqmf2U4unLlCo4fPw4jI6MX1pKWlgY1NTW0adOmjntDRERErwqVX2ILCgqCn58fnJyc4OzsjPDwcBQVFcHf3x8AMHHiRFhYWCA0NBQAMGfOHLi7u2PdunUYPnw49u7di+TkZGzbtg3A03D09ttv4+zZszh69CgqKirE+UmGhobQ1NREfHw8EhIS4OnpCV1dXcTHx2Pu3Ln4z3/+g1atWqnmgyAiIqJGQ+UBydfXF/fu3UNwcDCysrLg4OCAyMhIcSJ2RkYG1NT+d6LLzc0Ne/bswZIlS/Dxxx+jU6dOOHToEHr06AEAuHPnDg4fPgwAcHBwkNlWTEwMPDw8oKWlhb179yIkJAQlJSWwsbHB3LlzZeYYERER0b+Xyp+D1FTxOUjV43OQGh6fg0REVHtN4jlIRERERI0RAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkKB6Tbt2/jn3/+Ed8nJiYiMDAQ27ZtU2phRERERKqicEB65513EBMTAwDIysrC4MGDkZiYiMWLF2PFihVKL5CIiIiooSkckM6fPw9nZ2cAwA8//IAePXogLi4Ou3fvxs6dO5VdHxEREVGDUzgglZWVQUtLCwBw/PhxjBw5EgBga2uLzMxM5VZHREREpAIKB6Tu3bsjIiICp06dQlRUFIYOHQoAuHv3LoyMjJReIBEREVFDUzggrV27Flu3boWHhwfGjx8Pe3t7AMDhw4fFS29ERERETZmGoit4eHggNzcXBQUFaNWqldg+bdo0tGjRQqnFEREREamCwgEJANTV1WXCEQBYW1srox4iIiIileODIomIiIjkMCARERERyWFAIiIiIpJT64A0ceJE/PjjjygsLKzPeoiIiIhUrtYBqWPHjvjkk09gbGyMYcOGYcuWLbhz50591kZERESkErUOSMHBwUhJScGVK1cwYsQIHDp0CB06dICjoyNWrFiBtLS0eiyTiIiIqOEoPAepbdu2mDFjBn799Vfcu3cPCxYsQHp6OgYOHIh27dohICAAFy5cqI9aiYiIiBrES03S1tXVxdixY7F7927cu3cP27dvh7q6OuLj45VVHxEREVGDq9ODIqujrq6OQYMGYdCgQcoakoiIiEgleJs/ERERkRwGJCIiIiI5DEhEREREchiQiIiIiOTUaZJ2dHQ0oqOjkZOTA6lUKrNs+/btSimMiIiISFUUDkjLly/HihUr4OTkBDMzM0gkkvqoi4iIiEhlFA5IERER2LlzJ9599936qIeIiIhI5RSeg1RaWgo3N7f6qIWIiIioUVA4IL333nvYs2dPfdRCRERE1CgoHJCKi4uxfv16uLu7Y9asWQgKCpJ51cXmzZthbW0NbW1tuLi4IDEx8bn99+/fD1tbW2hra8POzg7Hjh0Tl5WVlWHBggWws7ODjo4OzM3NMXHiRNy9e1dmjLy8PEyYMAF6enowMDDAlClTUFhYWKf6iYiI6NWicED666+/4ODgADU1NZw/fx6pqaniKy0tTeEC9u3bh6CgICxbtgxnz56Fvb09vL29kZOTU23/uLg4jB8/HlOmTEFqaip8fHzg4+OD8+fPAwAeP36Ms2fPYunSpTh79iwOHjyI9PR0jBw5UmacCRMm4MKFC4iKisLRo0fx+++/Y9q0aQrXT0RERK8eiSAIgioLcHFxwWuvvYZNmzYBAKRSKSwtLTFr1iwsXLiwSn9fX18UFRXh6NGjYlufPn3g4OCAiIiIareRlJQEZ2dn3Lp1C1ZWVrh06RK6deuGpKQkODk5AQAiIyPx+uuv459//oG5ufkL6y4oKIC+vj7y8/Ohp6dXl12vkfPq40odryElas1UdQl1NtDKQtUl1MmJsSdUXQIRUZNR29/fL/WgyH/++Qf//PNPndcvLS1FSkoKvLy8/leQmhq8vLwQHx9f7Trx8fEy/QHA29u7xv4AkJ+fD4lEAgMDA3EMAwMDMRwBgJeXF9TU1JCQkFDtGCUlJSgoKJB5ERER0atJ4YAklUqxYsUK6Ovro127dmjXrh0MDAywcuXKKg+NfJHc3FxUVFTAxMREpt3ExARZWVnVrpOVlaVQ/+LiYixYsADjx48Xk2JWVhbatGkj009DQwOGhoY1jhMaGgp9fX3xZWlpWat9JCIioqZH4ecgLV68GN988w3WrFmDvn37AgD++OMPhISEoLi4GKtXr1Z6kXVVVlaGsWPHQhAEbNmy5aXGWrRokcwk9IKCAoYkIiKiV5TCAWnXrl34+uuvZSY99+zZExYWFpgxY4ZCAal169ZQV1dHdna2THt2djZMTU2rXcfU1LRW/SvD0a1bt3DixAmZ64ympqZVJoGXl5cjLy+vxu1qaWlBS0ur1vtGRERETZfCl9jy8vJga2tbpd3W1hZ5eXkKjaWpqQlHR0dER0eLbVKpFNHR0XB1da12HVdXV5n+ABAVFSXTvzIcXblyBcePH4eRkVGVMR4+fIiUlBSx7cSJE5BKpXBxcVFoH4iIiOjVo3BAsre3F+84e9amTZtgb2+vcAFBQUH46quvsGvXLly6dAnTp09HUVER/P39AQATJ07EokWLxP5z5sxBZGQk1q1bh8uXLyMkJATJyckICAgA8DQcvf3220hOTsbu3btRUVGBrKwsZGVlobS0FADQtWtXDB06FFOnTkViYiJOnz6NgIAAjBs3rlZ3sBEREdGrTeFLbGFhYRg+fDiOHz8unrWJj4/H7du3ZR7YWFu+vr64d+8egoODkZWVBQcHB0RGRooTsTMyMqCm9r8c5+bmhj179mDJkiX4+OOP0alTJxw6dAg9evQAANy5cweHDx8GADg4OMhsKyYmBh4eHgCA3bt3IyAgAIMGDYKamhpGjx6NjRs3Klw/ERERvXrq9Byku3fvYvPmzbh8+TKAp2dkZsyY8a86+8LnIFWPz0FqeHwOEhFR7dX297fCZ5AAwNzcvFHdrUZERESkTLUKSH/99Rd69OgBNTU1/PXXX8/t27NnT6UURkRERKQqtQpIDg4O4sMVHRwcIJFIUN2VOYlEgoqKCqUXSURERNSQahWQbty4AWNjY/FnIiIioldZrQJSu3btxJ9v3boFNzc3aGjIrlpeXo64uDiZvkRERERNkcLPQfL09Kz2gZD5+fnw9PRUSlFEREREqqRwQBIEARKJpEr7/fv3oaOjo5SiiIiIiFSp1rf5v/XWWwCeTsSeNGmSzPeSVVRU4K+//oKbm5vyKyQiIiJqYLUOSPr6+gCenkHS1dVF8+bNxWWampro06cPpk6dqvwKiYiIiBpYrQPSjh07AADW1taYN28eL6cRERHRK0vhJ2kvW7asPuogIiIiajTq9FUjBw4cwA8//ICMjAyUlpbKLDt79qxSCiMiIiJSFYXvYtu4cSP8/f1hYmKC1NRUODs7w8jICNevX8ewYcPqo0YiIiKiBqVwQPryyy+xbds2fPHFF9DU1MRHH32EqKgozJ49G/n5+fVRIxEREVGDUjggZWRkiLfzN2/eHI8ePQIAvPvuu/j++++VWx0RERGRCigckExNTcUnaVtZWeHMmTMAnn5HW3VfYEtERETU1CgckAYOHIjDhw8DAPz9/TF37lwMHjwYvr6+ePPNN5VeIBEREVFDU/gutm3btkEqlQIAZs6cCSMjI8TFxWHkyJF4//33lV4gERERUUNTKCCVl5fjk08+weTJk9G2bVsAwLhx4zBu3Lh6KY6IiIhIFRS6xKahoYGwsDCUl5fXVz1EREREKqfwHKRBgwbh5MmT9VELERERUaOg8BykYcOGYeHChTh37hwcHR2rfCfbyJEjlVYcERERkSooHJBmzJgBAFi/fn2VZRKJBBUVFS9fFREREZEKKRyQKu9gIyIiInpVKTwH6VnFxcXKqoOIiIio0VA4IFVUVGDlypWwsLBAy5Ytcf36dQDA0qVL8c033yi9QCIiIqKGpnBAWr16NXbu3ImwsDBoamqK7T169MDXX3+t1OKIiIiIVEHhgPTtt99i27ZtmDBhAtTV1cV2e3t7XL58WanFEREREamCwgHpzp076NixY5V2qVSKsrIypRRFREREpEoKB6Ru3brh1KlTVdoPHDiAXr16KaUoIiIiIlVS+Db/4OBg+Pn54c6dO5BKpTh48CDS09Px7bff4ujRo/VRIxEREVGDUvgM0qhRo3DkyBEcP34cOjo6CA4OxqVLl3DkyBEMHjy4PmokIiIialAKn0ECgP79+yMqKkrZtRARERE1CgqfQWrfvj3u379fpf3hw4do3769UooiIiIiUiWFA9LNmzer/b61kpIS3LlzRylFEREREalSrS+xHT58WPz5119/hb6+vvi+oqIC0dHRsLa2VmpxRERERKpQ64Dk4+MDAJBIJPDz85NZ1qxZM1hbW2PdunVKLY6IiIhIFWodkKRSKQDAxsYGSUlJaN26db0VRURERKRKCt/FduPGjfqog4iIiKjRqFVA2rhxI6ZNmwZtbW1s3LjxuX1nz56tlMKIiIiIVKVWAWnDhg2YMGECtLW1sWHDhhr7SSQSBiQiIiJq8moVkJ69rMZLbERERPSqU/g5SERERESvOgYkIiIiIjkMSERERERyVB6QNm/eDGtra2hra8PFxQWJiYnP7b9//37Y2tpCW1sbdnZ2OHbsmMzygwcPYsiQITAyMoJEIkFaWlqVMTw8PCCRSGReH3zwgTJ3i4iIiJowhQJSeXk5VqxYgX/++UcpG9+3bx+CgoKwbNkynD17Fvb29vD29kZOTk61/ePi4jB+/HhMmTIFqamp8PHxgY+PD86fPy/2KSoqQr9+/bB27drnbnvq1KnIzMwUX2FhYUrZJyIiImr6FApIGhoa+PTTT1FeXq6Uja9fvx5Tp06Fv78/unXrhoiICLRo0QLbt2+vtv/nn3+OoUOHYv78+ejatStWrlyJ3r17Y9OmTWKfd999F8HBwfDy8nrutlu0aAFTU1Pxpaenp5R9IiIioqZP4UtsAwcOxMmTJ196w6WlpUhJSZEJMmpqavDy8kJ8fHy168THx1cJPt7e3jX2f57du3ejdevW6NGjBxYtWoTHjx8rPAYRERG9mhT+qpFhw4Zh4cKFOHfuHBwdHaGjoyOzfOTIkbUaJzc3FxUVFTAxMZFpNzExweXLl6tdJysrq9r+WVlZCuwB8M4776Bdu3YwNzfHX3/9hQULFiA9PR0HDx6scZ2SkhKUlJSI7wsKChTaJhERETUdCgekGTNmAHh6eUyeRCJBRUXFy1dVz6ZNmyb+bGdnBzMzMwwaNAjXrl1Dhw4dql0nNDQUy5cvb6gSiYiISIUUvsQmlUprfCkSjlq3bg11dXVkZ2fLtGdnZ8PU1LTadUxNTRXqX1suLi4AgKtXr9bYZ9GiRcjPzxdft2/ffqltEhERUeP1Urf5FxcX13ldTU1NODo6Ijo6WmyTSqWIjo6Gq6trteu4urrK9AeAqKioGvvXVuWjAMzMzGrso6WlBT09PZkXERERvZoUDkgVFRVYuXIlLCws0LJlS1y/fh0AsHTpUnzzzTcKjRUUFISvvvoKu3btwqVLlzB9+nQUFRXB398fADBx4kQsWrRI7D9nzhxERkZi3bp1uHz5MkJCQpCcnIyAgACxT15eHtLS0nDx4kUAQHp6OtLS0sR5SteuXcPKlSuRkpKCmzdv4vDhw5g4cSIGDBiAnj17KvpxEBER0StI4YC0evVq7Ny5E2FhYdDU1BTbe/Toga+//lqhsXx9ffHZZ58hODgYDg4OSEtLQ2RkpDgROyMjA5mZmWJ/Nzc37NmzB9u2bYO9vT0OHDiAQ4cOoUePHmKfw4cPo1evXhg+fDgAYNy4cejVqxciIiIAPD1zdfz4cQwZMgS2trb48MMPMXr0aBw5ckTRj4KIiIheURJBEARFVujYsSO2bt2KQYMGQVdXF3/++Sfat2+Py5cvw9XVFQ8ePKivWhuVgoIC6OvrIz8/X+mX25xXH1fqeA0pUWumqkuos4FWFqouoU5OjD2h6hKIiJqM2v7+VvgM0p07d9CxY8cq7VKpFGVlZYoOR0RERNToKByQunXrhlOnTlVpP3DgAHr16qWUooiIiIhUSeHnIAUHB8PPzw937tyBVCrFwYMHkZ6ejm+//RZHjx6tjxqJiIiIGpTCZ5BGjRqFI0eO4Pjx49DR0UFwcDAuXbqEI0eOYPDgwfVRIxEREVGDUvgMEgD0798fUVFRyq6FiIiIqFGoU0ACgOTkZFy6dAnA03lJjo6OSiuKiIiISJUUDkj//PMPxo8fj9OnT8PAwAAA8PDhQ7i5uWHv3r1o27atsmskIiIialAKz0F67733UFZWhkuXLiEvLw95eXm4dOkSpFIp3nvvvfqokYiIiKhBKXwG6eTJk4iLi0OXLl3Eti5duuCLL75A//79lVocERERkSoofAbJ0tKy2gdCVlRUwNzcXClFEREREamSwgHp008/xaxZs5CcnCy2JScnY86cOfjss8+UWhwRERGRKih8iW3SpEl4/PgxXFxcoKHxdPXy8nJoaGhg8uTJmDx5stg3Ly9PeZUSERERNRCFA1J4eHg9lEFERETUeCgckPz8/OqjDiIiIqJGQ+E5SERERESvOgYkIiIiIjkMSERERERyGJCIiIiI5NQ5IF29ehW//vornjx5AgAQBEFpRRERERGpksIB6f79+/Dy8kLnzp3x+uuvIzMzEwAwZcoUfPjhh0ovkIiIiKihKRyQ5s6dCw0NDWRkZKBFixZiu6+vLyIjI5VaHBEREZEqKPwcpN9++w2//vor2rZtK9PeqVMn3Lp1S2mFEREREamKwmeQioqKZM4cVcrLy4OWlpZSiiIiIiJSJYUDUv/+/fHtt9+K7yUSCaRSKcLCwuDp6anU4oiIiIhUQeFLbGFhYRg0aBCSk5NRWlqKjz76CBcuXEBeXh5Onz5dHzUSERERNSiFzyD16NEDf//9N/r164dRo0ahqKgIb731FlJTU9GhQ4f6qJGIiIioQSl8BgkA9PX1sXjxYmXXQkRERNQo1CkgFRcX46+//kJOTg6kUqnMspEjRyqlMCIiIiJVUTggRUZGYuLEicjNza2yTCKRoKKiQimFEREREamKwnOQZs2ahTFjxiAzMxNSqVTmxXBERERErwKFA1J2djaCgoJgYmJSH/UQERERqZzCAentt99GbGxsPZRCRERE1DgoPAdp06ZNGDNmDE6dOgU7Ozs0a9ZMZvns2bOVVhwRERGRKigckL7//nv89ttv0NbWRmxsLCQSibhMIpEwIBE1Mc6rj6u6hDpJXOyl6hKI6BWmcEBavHgxli9fjoULF0JNTeErdERERESNnsIJp7S0FL6+vgxHRERE9MpSOOX4+flh37599VELERERUaOg8CW2iooKhIWF4ddff0XPnj2rTNJev3690oojIqrRZ11UXUHdzUtXdQVE9AIKB6Rz586hV69eAIDz58/LLHt2wjYRERFRU6VwQIqJiamPOoiIiIgaDc60JiIiIpJTqzNIb731Fnbu3Ak9PT289dZbz+178OBBpRRGREREpCq1Ckj6+vri/CJ9ff16LYiIiIhI1WoVkHbs2IEVK1Zg3rx52LFjR33XRET0Shv4w0BVl1BnJ8aeUHUJRA2i1nOQli9fjsLCwvqshYiIiKhRqHVAEgShPusgIiIiajQUuoutPp5ztHnzZlhbW0NbWxsuLi5ITEx8bv/9+/fD1tYW2trasLOzw7Fjx2SWHzx4EEOGDIGRkREkEgnS0tKqjFFcXIyZM2fCyMgILVu2xOjRo5Gdna3M3SIiIqImTKGA1LlzZxgaGj73pYh9+/YhKCgIy5Ytw9mzZ2Fvbw9vb2/k5ORU2z8uLg7jx4/HlClTkJqaCh8fH/j4+Mg8sLKoqAj9+vXD2rVra9zu3LlzceTIEezfvx8nT57E3bt3X3h3HhEREf17KPSgyOXLlyv1Lrb169dj6tSp8Pf3BwBERETg559/xvbt27Fw4cIq/T///HMMHToU8+fPBwCsXLkSUVFR2LRpEyIiIgAA7777LgDg5s2b1W4zPz8f33zzDfbs2YOBA59OlNyxYwe6du2KM2fOoE+fPkrbPyIiImqaFApI48aNQ5s2bZSy4dLSUqSkpGDRokVim5qaGry8vBAfH1/tOvHx8QgKCpJp8/b2xqFDh2q93ZSUFJSVlcHLy0tss7W1hZWVFeLj42sMSCUlJSgpKRHfFxQU1HqbRERE1LTU+hKbsucf5ebmoqKiAiYmJjLtJiYmyMrKqnadrKwshfrXNIampiYMDAwUGic0NBT6+vriy9LSstbbJCIioqaFd7HV0qJFi5Cfny++bt++reqSiIiIqJ7U+hKbVCpV6oZbt24NdXX1KnePZWdnw9TUtNp1TE1NFepf0xilpaV4+PChzFmkF42jpaUFLS2tWm+HiIiImi6VfVmtpqYmHB0dER0dLbZJpVJER0fD1dW12nVcXV1l+gNAVFRUjf2r4+joiGbNmsmMk56ejoyMDIXGISIioleXQpO0lS0oKAh+fn5wcnKCs7MzwsPDUVRUJN7VNnHiRFhYWCA0NBQAMGfOHLi7u2PdunUYPnw49u7di+TkZGzbtk0cMy8vDxkZGbh79y6Ap+EHeHrmyNTUFPr6+pgyZQqCgoJgaGgIPT09zJo1C66urryDjYiIiACoOCD5+vri3r17CA4ORlZWFhwcHBAZGSlOxM7IyICa2v9Ocrm5uWHPnj1YsmQJPv74Y3Tq1AmHDh1Cjx49xD6HDx8WAxbw9M47AFi2bBlCQkIAABs2bICamhpGjx6NkpISeHt748svv2yAPSYiIqKmQCL822df11FBQQH09fWRn58PPT09pY7tvPq4UsdrSIlaM1VdQp0NtLJQdQl18rJfHtpUjzcea6rBL6ulpq62v79VNgeJiIiIqLFiQCIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKSw4BEREREJIcBiYiIiEiOhqoLICKifwfn1cdVXUKdJS72UnUJ1MB4BomIiIhIDgMSERERkRxeYiMiInqRz7qouoK6m5eu6gqaJJ5BIiIiIpLDgEREREQkhwGJiIiISA7nIBEREb3CBv4wUNUl1MmJsSdUun2eQSIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKSw4BEREREJIcBiYiIiEgOAxIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKS0ygC0ubNm2FtbQ1tbW24uLggMTHxuf33798PW1tbaGtrw87ODseOHZNZLggCgoODYWZmhubNm8PLywtXrlyR6WNtbQ2JRCLzWrNmjdL3jYiIiJoelQekffv2ISgoCMuWLcPZs2dhb28Pb29v5OTkVNs/Li4O48ePx5QpU5CamgofHx/4+Pjg/PnzYp+wsDBs3LgRERERSEhIgI6ODry9vVFcXCwz1ooVK5CZmSm+Zs2aVa/7SkRERE2DygPS+vXrMXXqVPj7+6Nbt26IiIhAixYtsH379mr7f/755xg6dCjmz5+Prl27YuXKlejduzc2bdoE4OnZo/DwcCxZsgSjRo1Cz5498e233+Lu3bs4dOiQzFi6urowNTUVXzo6OvW9u0RERNQEqDQglZaWIiUlBV5eXmKbmpoavLy8EB8fX+068fHxMv0BwNvbW+x/48YNZGVlyfTR19eHi4tLlTHXrFkDIyMj9OrVC59++inKy8trrLWkpAQFBQUyLyIiIno1aahy47m5uaioqICJiYlMu4mJCS5fvlztOllZWdX2z8rKEpdXttXUBwBmz56N3r17w9DQEHFxcVi0aBEyMzOxfv36arcbGhqK5cuXK7aDRERE1CSpNCCpUlBQkPhzz549oampiffffx+hoaHQ0tKq0n/RokUy6xQUFMDS0rJBaiUiIqKGpdJLbK1bt4a6ujqys7Nl2rOzs2FqalrtOqamps/tX/lfRcYEABcXF5SXl+PmzZvVLtfS0oKenp7Mi4iIiF5NKg1ImpqacHR0RHR0tNgmlUoRHR0NV1fXatdxdXWV6Q8AUVFRYn8bGxuYmprK9CkoKEBCQkKNYwJAWloa1NTU0KZNm5fZJSIiInoFqPwSW1BQEPz8/ODk5ARnZ2eEh4ejqKgI/v7+AICJEyfCwsICoaGhAIA5c+bA3d0d69atw/Dhw7F3714kJydj27ZtAACJRILAwECsWrUKnTp1go2NDZYuXQpzc3P4+PgAeDrROyEhAZ6entDV1UV8fDzmzp2L//znP2jVqpVKPgciIiJqPFQekHx9fXHv3j0EBwcjKysLDg4OiIyMFCdZZ2RkQE3tfye63NzcsGfPHixZsgQff/wxOnXqhEOHDqFHjx5in48++ghFRUWYNm0aHj58iH79+iEyMhLa2toAnl4u27t3L0JCQlBSUgIbGxvMnTtXZo4RERER/XupPCABQEBAAAICAqpdFhsbW6VtzJgxGDNmTI3jSSQSrFixAitWrKh2ee/evXHmzJk61UpERESvPpU/KJKIiIiosWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZGcRhGQNm/eDGtra2hra8PFxQWJiYnP7b9//37Y2tpCW1sbdnZ2OHbsmMxyQRAQHBwMMzMzNG/eHF5eXrhy5YpMn7y8PEyYMAF6enowMDDAlClTUFhYqPR9IyIioqZH5QFp3759CAoKwrJly3D27FnY29vD29sbOTk51faPi4vD+PHjMWXKFKSmpsLHxwc+Pj44f/682CcsLAwbN25EREQEEhISoKOjA29vbxQXF4t9JkyYgAsXLiAqKgpHjx7F77//jmnTptX7/hIREVHjp/KAtH79ekydOhX+/v7o1q0bIiIi0KJFC2zfvr3a/p9//jmGDh2K+fPno2vXrli5ciV69+6NTZs2AXh69ig8PBxLlizBqFGj0LNnT3z77be4e/cuDh06BAC4dOkSIiMj8fXXX8PFxQX9+vXDF198gb179+Lu3bsNtetERETUSKk0IJWWliIlJQVeXl5im5qaGry8vBAfH1/tOvHx8TL9AcDb21vsf+PGDWRlZcn00dfXh4uLi9gnPj4eBgYGcHJyEvt4eXlBTU0NCQkJSts/IiIiapo0VLnx3NxcVFRUwMTERKbdxMQEly9frnadrKysavtnZWWJyyvbntenTZs2Mss1NDRgaGgo9pFXUlKCkpIS8X1+fj4AoKCg4Ln7WBcVxUVKH7OhFAgVqi6hzsofl6u6hDp52WOwqR5vPNZU42WOt6Z6rAE83lShPn6/PjuuIAjP7afSgNSUhIaGYvny5VXaLS0tVVBN46Wv6gJeyjVVF1An+v5N+1Ovq6a9103zWAN4vDVNTfN4q+9j7dGjR9DXr3kbKg1IrVu3hrq6OrKzs2Xas7OzYWpqWu06pqamz+1f+d/s7GyYmZnJ9HFwcBD7yE8CLy8vR15eXo3bXbRoEYKCgsT3UqkUeXl5MDIygkQiqcXe0ssoKCiApaUlbt++DT09PVWXQ684Hm/UUHisNTxBEPDo0SOYm5s/t59KA5KmpiYcHR0RHR0NHx8fAE+DR3R0NAICAqpdx9XVFdHR0QgMDBTboqKi4OrqCgCwsbGBqakpoqOjxUBUUFCAhIQETJ8+XRzj4cOHSElJgaOjIwDgxIkTkEqlcHFxqXa7Wlpa0NLSkmkzMDCo455TXenp6fF/ItRgeLxRQ+Gx1rCed+aoksovsQUFBcHPzw9OTk5wdnZGeHg4ioqK4O/vDwCYOHEiLCwsEBoaCgCYM2cO3N3dsW7dOgwfPhx79+5FcnIytm3bBgCQSCQIDAzEqlWr0KlTJ9jY2GDp0qUwNzcXQ1jXrl0xdOhQTJ06FRERESgrK0NAQADGjRv3wkRJRERErz6VByRfX1/cu3cPwcHByMrKgoODAyIjI8VJ1hkZGVBT+9/Ndm5ubtizZw+WLFmCjz/+GJ06dcKhQ4fQo0cPsc9HH32EoqIiTJs2DQ8fPkS/fv0QGRkJbW1tsc/u3bsREBCAQYMGQU1NDaNHj8bGjRsbbseJiIio0ZIIL5rGTdQIlJSUIDQ0FIsWLapyqZNI2Xi8UUPhsdZ4MSARERERyVH5k7SJiIiIGhsGJCIiIiI5DEhEREREchiQiIiIiOQwIFGj9vvvv2PEiBEwNzeHRCLBoUOHVF0S/UusWbNGfK4akbJVVFRg6dKlsLGxQfPmzdGhQwesXLnyhd8PRg1H5c9BInqeoqIi2NvbY/LkyXjrrbdUXQ79SyQlJWHr1q3o2bOnqkuhV9TatWuxZcsW7Nq1C927d0dycjL8/f2hr6+P2bNnq7o8AgMSNXLDhg3DsGHDVF0G/YsUFhZiwoQJ+Oqrr7Bq1SpVl0OvqLi4OIwaNQrDhw8HAFhbW+P7779HYmKiiiujSrzERkT0jJkzZ2L48OHw8vJSdSn0CnNzc0N0dDT+/vtvAMCff/6JP/74g/8gbER4BomI6P/bu3cvzp49i6SkJFWXQq+4hQsXoqCgALa2tlBXV0dFRQVWr16NCRMmqLo0+v8YkIiIANy+fRtz5sxBVFSUzPc2EtWHH374Abt378aePXvQvXt3pKWlITAwEObm5vDz81N1eQR+1Qg1IRKJBP/973/h4+Oj6lLoFXTo0CG8+eabUFdXF9sqKiogkUigpqaGkpISmWVEL8PS0hILFy7EzJkzxbZVq1bh//7v/3D58mUVVkaVeAaJiAjAoEGDcO7cOZk2f39/2NraYsGCBQxHpFSPHz+GmprsNGB1dXVIpVIVVUTyGJCoUSssLMTVq1fF9zdu3EBaWhoMDQ1hZWWlwsroVaOrq4sePXrItOno6MDIyKhKO9HLGjFiBFavXg0rKyt0794dqampWL9+PSZPnqzq0uj/4yU2atRiY2Ph6elZpd3Pzw87d+5s+ILoX8XDwwMODg4IDw9XdSn0inn06BGWLl2K//73v8jJyYG5uTnGjx+P4OBgaGpqqro8AgMSERERURV8DhIRERGRHAYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclhQCIiIiKSw4BEREREJIcBiYjoJYSEhMDBwUHVZYhu3rwJiUSCtLQ0VZdC1KQxIBFRndy+fRuTJ0+Gubk5NDU10a5dO8yZMwf3799XST2TJk2CRCLBBx98UGXZzJkzIZFIMGnSpCr9JRIJNDU10bFjR6xYsQLl5eU1bkMikeDQoUP1UD0RNTYMSESksOvXr8PJyQlXrlzB999/j6tXryIiIgLR0dFwdXVFXl6eSuqytLTE3r178eTJE7GtuLgYe/bsqfa7+4YOHYrMzExcuXIFH374IUJCQvDpp5/We52lpaX1vg0iejkMSESksJkzZ0JTUxO//fYb3N3dYWVlhWHDhuH48eO4c+cOFi9eLPa1trbGypUrMX78eOjo6MDCwgKbN2+WGe/hw4d47733YGxsDD09PQwcOBB//vmnuLzyMtZ3330Ha2tr6OvrY9y4cXj06JHMOL1794alpSUOHjwoth08eBBWVlbo1atXlf3Q0tKCqakp2rVrh+nTp8PLywuHDx+udp+tra0BAG+++SYkEon4vtLzavPw8EBAQAACAwPRunVreHt7AwDOnz+PYcOGoWXLljAxMcG7776L3Nxccb3IyEj069cPBgYGMDIywhtvvIFr167JbDcxMRG9evWCtrY2nJyckJqaKrP8wYMHmDBhAoyNjdG8eXN06tQJO3bsqHYfieh/GJCISCF5eXn49ddfMWPGDDRv3lxmmampKSZMmIB9+/bh2a95/PTTT2Fvb4/U1FQsXLgQc+bMQVRUlLh8zJgxyMnJwS+//IKUlBT07t0bgwYNkjkTde3aNRw6dAhHjx7F0aNHcfLkSaxZs6ZKfZMnT5YJANu3b4e/v3+t9q158+Y1nt1JSkoCAOzYsQOZmZni+9rWtmvXLmhqauL06dOIiIjAw4cPMXDgQPTq1QvJycmIjIxEdnY2xo4dK65TVFSEoKAgJCcnIzo6GmpqanjzzTchlUoBAIWFhXjjjTfQrVs3pKSkICQkBPPmzZPZ7tKlS3Hx4kX88ssvuHTpErZs2YLWrVvX6vMg+lcTiIgUcObMGQGA8N///rfa5evXrxcACNnZ2YIgCEK7du2EoUOHyvTx9fUVhg0bJgiCIJw6dUrQ09MTiouLZfp06NBB2Lp1qyAIgrBs2TKhRYsWQkFBgbh8/vz5gouLi/jez89PGDVqlJCTkyNoaWkJN2/eFG7evCloa2sL9+7dE0aNGiX4+flV6S8IgiCVSoWoqChBS0tLmDdvXo37Xt1+16Y2d3d3oVevXjLrrVy5UhgyZIhM2+3btwUAQnp6erXbv3fvngBAOHfunCAIgrB161bByMhIePLkidhny5YtAgAhNTVVEARBGDFihODv71/jPhFR9TRUGc6IqOkSnjlD9CKurq5V3oeHhwMA/vzzTxQWFsLIyEimz5MnT2QuJ1lbW0NXV1d8b2ZmhpycnCrbMjY2xvDhw7Fz504IgoDhw4fXeMbk6NGjaNmyJcrKyiCVSvHOO+8gJCSk1vulSG2Ojo4y7//880/ExMSgZcuWVca7du0aOnfujCtXriA4OBgJCQnIzc0VzxxlZGSgR48euHTpEnr27AltbW1xXfnPevr06Rg9ejTOnj2LIUOGwMfHB25ubgrvI9G/DQMSESmkY8eOkEgkuHTpEt58880qyy9duoRWrVrB2Ni4VuMVFhbCzMwMsbGxVZYZGBiIPzdr1kxmmUQiEQODvMmTJyMgIAAAqsx3epanpye2bNkCTU1NmJubQ0Ojbv9LrE1tOjo6Mu8LCwsxYsQIrF27tsp4ZmZmAIARI0agXbt2+Oqrr2Bubg6pVIoePXooNMl72LBhuHXrFo4dO4aoqCgMGjQIM2fOxGeffVbrMYj+jRiQiEghRkZGGDx4ML788kvMnTtXZh5SVlYWdu/ejYkTJ0IikYjtZ86ckRnjzJkz6Nq1K4CnE6uzsrKgoaFRZeJzXQ0dOhSlpaWQSCTihOjq6OjooGPHjrUet1mzZqioqFBGiejduzd+/PFHWFtbVxvM7t+/j/T0dHz11Vfo378/AOCPP/6Q6dO1a1d89913KC4uFs8iyX/WwNOzan5+fvDz80P//v0xf/58BiSiF+AkbSJS2KZNm1BSUgJvb2/8/vvvuH37NiIjIzF48GBYWFhg9erVMv1Pnz6NsLAw/P3339i8eTP279+POXPmAAC8vLzg6uoKHx8f/Pbbb7h58ybi4uKwePFiJCcn16k+dXV1XLp0CRcvXoS6uvpL728la2trREdHIysrCw8ePHipsWbOnIm8vDyMHz8eSUlJuHbtGn799Vf4+/ujoqICrVq1gpGREbZt24arV6/ixIkTCAoKkhnjnXfegUQiwdSpU3Hx4kUcO3asSvAJDg7GTz/9hKtXr+LChQs4evSoGE6JqGYMSESksE6dOiE5ORnt27fH2LFj0aFDB0ybNg2enp6Ij4+HoaGhTP8PP/wQycnJ6NWrF1atWoX169eLZ3YkEgmOHTuGAQMGwN/fH507d8a4ceNw69YtmJiY1LlGPT096OnpvdR+ylu3bh2ioqJgaWlZ7WMDFGFubo7Tp0+joqICQ4YMgZ2dHQIDA2FgYAA1NTWoqalh7969SElJQY8ePTB37twqz2hq2bIljhw5gnPnzqFXr15YvHhxlUt2mpqaWLRoEXr27IkBAwZAXV0de/fufanaif4NJIIiMy2JiBRkbW2NwMBABAYGqroUIqJa4xkkIiIiIjkMSERERERyeImNiIiISA7PIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJ+X+G8xZ6JTmS0AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_1_freeze',\n", + " 'resnet_torch_4_grad',\n", + " 'resnet_torch_4_nograd',\n", + " 'resnet_torch_4_freeze',\n", + " 'resnet_torch_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + " 'resnet_torch_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_1k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU, 1000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ { "data": { - "image/png": "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zMzU4MGDlZGRoY4dO6pjx45asWJFddYJAABQIVX6EL/f8/Pz06hRozRq1CidOnVKq1evloeHR3UMDQAAUCnVEm7O5+Xlpbvuuqu6hwUAAKgQ3goOAACMQrgBAABGIdwAAACjXFK42bNnj1avXq1ffvlFkmRZVrUUBQAAUFVVCjfHjh1TTEyMrr/+evXp00eHDx+WJI0YMUJ/+ctfqrVAAACAyqhSuHnsscdUr1497d+/X15eXvb2uLg4rVq1qtLjzZ07V4GBgfL09FRkZKQ2b95cbt/ly5crPDxcjRs31lVXXSWbzaaFCxdW5TAAAICBqvRW8I8++kirV69Wy5YtHdrbt2+vffv2VWqs9PR0JSYmKjU1VZGRkUpJSVFsbKx2796t5s2bl+rftGlTTZ48WR06dJC7u7s+/PBDJSQkqHnz5oqNja3K4QAAAINU6cpNQUGBwxWbc44fP17pD++bNWuWRo0apYSEBAUFBSk1NVVeXl6aP39+mf179Oihu+66SzfeeKPatm2rRx55RCEhIVq/fn1VDgUAABimSuGme/fueuutt+zPXVxcVFJSounTp+u2226r8DhFRUXaunWrYmJifivI1VUxMTHauHHjRbe3LEsZGRnavXu3br311jL7FBYWKj8/3+EBAADMVaXbUtOnT1evXr20ZcsWFRUV6a9//at27typ48eP67PPPqvwODk5OSouLpavr69Du6+vr3bt2lXudnl5efL391dhYaHc3Nz08ssv6/bbby+zb3JysqZOnVrhmgAAQN1WpSs3HTt21Pfff69u3brpzjvvVEFBge6++259+eWXatu2bXXXWMrVV1+t7du364svvtAzzzyjxMRErVu3rsy+kyZNUl5env1x4MCBy14fAABwnip/t5S3t7cmT558STv38fGRm5ubsrOzHdqzs7Pl5+dX7naurq5q166dJMlms+m7775TcnKyevToUaqvh4cHX+IJAMAVpMrh5vTp0/r666915MgRlZSUOLzWv3//Co3h7u6usLAwZWRkaMCAAZKkkpISZWRkaNy4cRWupaSkRIWFhRXuDwAAzFWlcLNq1SoNHz5cOTk5pV5zcXFRcXFxhcdKTExUfHy8wsPDFRERoZSUFBUUFCghIUGSNHz4cPn7+ys5OVnS2TU04eHhatu2rQoLC7Vy5UotXLhQr7zySlUOBQAAGKZK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cdlsNgUFBWnt2rWSpJiYGIdf+n/+85+VlpZW7jnq0qVLhYLN+vXrFR4erpCQEPXt29f+DfMPPPCAFi1aZO/Xrl07ZWZmasaMGfrpp5/sV6aKioouuo/LoTbPgZMnTyopKUnvvfeebDabXnzxRUlSUlKSOnbsqI4dOzr8wQ0MDNTEiRMVHh6ul156SZmZmbrjjjsUEhKi0NBQrVu3zt532rRpstlsCgkJ0ffff3/Bc9SzZ081bdq0wuf0pZdesp/TkSNH6tdff9X27dvVvn175eXlqaSkRLfddpveffdde91lzdXznX8VR5JefPFFBQcHKzQ0VHFxcZJ++9/47t27lZqaqrlz58pms2np0qWlxnvvvfcUGhqq4OBgDRkyRCdPnpQk9ejRQ+vXr7f3O3c14rHHHlNxcbFsNptDHeVhXlXvvDr/33/dunXq2rWrBg0apOuvv16DBg3Shg0bdOuttyowMNA+rzIzM9WmTRuNGDFCN910k7p3764DBw6UGvv8qzi//PKLRo8ereDgYIWEhOiFF16Q9Nu8WLx4sbZs2aKEhATZbDZlZmaWGq+883j+la3169erR48eks7Orc8//1w2m00TJ06s0PmoMRbqnKNHj1otWrSwvvvuO8uyLCs/P9965513rOjoaKuoqMjKzc212rRpYz399NOWZVlW//79rdTUVMuyLOv999+3JFkHDhywLMuyJFlvvPGGfeycnBz7z8uWLbPuu+8+y7Isa/ny5eWOX5a1a9davXr1sj8fMGCANXv2bMuyLGvz5s1W69atraKiImvt2rWWu7u79e2339r7tm7d2powYYJlWZa1bds2q2XLllZhYaH17rvvWsOGDbMsy7J+/vlny9/f3/r5558ver5at25tP97fO336tNWyZUtr69atlmVZ1syZM61BgwZZlmVZ8fHx1sKFC+1927Zta+3du/eiY9aEujAH0tLSrBEjRtifv//++1ZUVJT1yy+/WL/88ovVpUsXa+XKlZZlnT2fTz75pL1v165drbfeesuyLMs6c+aMdeLECXutb7/9tmVZljVjxgxr5MiRFz1Xe/futdq2bXvRfhkZGdb9999vFRcXW5ZlWWPHjrVefvlly7Is6/nnn7eGDh1qTZ8+3T4Hz9Vd1lw9f/6f//NHH31kderUycrLy7Ms67dzPWXKFPu5PP/n3zt8+LDl5+dn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", + "image/png": "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", "text/plain": [ "
" ] @@ -514,19 +802,1208 @@ } ], "source": [ - "summary_labels = [\n", - " \"full loop\",\n", - " \"module creation\",\n", - " \"module deletion\",\n", - " \"array allocation\",\n", - " \"array deallocation\",\n", - " \"tensor creation\",\n", - " \"tensor deletion\",\n", - " \"forward pass\",\n", - " \"Overall mean\",\n", + "filtered_labels = [\n", + " 'resnet_torch_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_1_freeze',\n", + " 'resnet_torch_4_grad',\n", + " 'resnet_torch_4_nograd',\n", + " 'resnet_torch_4_freeze',\n", + " 'resnet_torch_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + " 'resnet_torch_8_freeze'\n", "]\n", "\n", - "rb.plot_summary_means(summary_data, summary_labels)" + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_4_\": \"4\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FTorch with/without gradients and/or frozen models on an A100 GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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swdJSUnYunUrAEAikSAwMBArVqyAvb09bG1tERwcDHNzc/j4+AB4PNE7ISEBnp6eMDAwQHx8PGbOnIl3330XLVu2VMnnQERERE2HygOSr68vcnJyEBISgszMTDg4OCAyMlKcZJ2eng41tX8OdLm5uWH37t1YtGgRFixYAHt7e0RERKBbt25in7lz56KoqAiTJk1CXl4e+vXrh8jISGj//0MBtbS0sGfPHixZsgSlpaWwtbXFzJkzZeYYERER0b+XRBAEQdVFNEcFBQWQSqXIz89X+nykPiuPKnW8F02i1lRVl9B0zb6k6gr+tbjf1o77bB24zza6+v7+VvmNIomIiIiaGgYkIiIiIjkMSERERERyGJCIiIiI5DAgEREREclR+WX+RKQ8A78bqOoSmqxjo46pugQiakYYkIiIiFSEf9TUTtV/1PAUGxEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISA4DEhEREZEcBiQiIiIiOQxIRERERHIYkIiIiIjkMCARERERyWFAIiIiIpLDgEREREQkhwGJiIiISI7CAenmzZu4deuW+DoxMRGBgYHYunWrUgsjIiIiUhWFA9I777yDmJgYAEBmZiYGDx6MxMRELFy4EMuWLVN6gURERESNTeGAdP78efTp0wcA8N1336Fbt26Ii4vDrl27sH37dmXXR0RERNToFA5I5eXl0NLSAgAcPXoUr732GgCgc+fOyMjIUG51RERERCqgcEB66aWXEB4ejuPHjyMqKgpDhgwBANy5cwetW7dWeoFEREREjU3hgLR69Wps2bIFHh4eGDNmDHr27AkA+Pnnn8VTb0RERETNWQtFV/Dw8MDdu3dRUFCAli1biu2TJk2Crq6uUosjIiIiUgWFAxIAqKury4QjALCxsVFGPUREREQqxxtFEhEREclhQCIiIiKSw4BEREREJKfeAcnPzw8//PADCgsLG7IeIiIiIpWrd0Dq0KEDVq1aBWNjYwwdOhRffPEFbt++3ZC1EREREalEvQNSSEgIkpOTceXKFYwYMQIRERFo3749nJycsGzZMpw5c6YByyQiIiJqPArPQWrXrh2mTJmCw4cPIycnBx999BEuXbqEgQMHwtraGtOmTcOFCxcaolYiIiKiRvFck7QNDAwwatQo7Nq1Czk5Ofj6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BwcHREZGipOs09PToab2z1QpNzc37N69G4sWLcKCBQtgb2+PiIgIdOvWTewzd+5cFBUVYdKkScjLy0O/fv0QGRkp1qqrq4v9+/dj8eLFKCoqgpmZGYYMGYJFixbxKBEREREpfh+kiooKrFq1CuHh4cjKysLly5dhZ2eH4OBg2NjYYMKECQ1Va5PC+yCpDu+pUjveU6V2vA+S6nCfrR332do1q/sgAcDKlSuxfft2rFmzBpqammJ7t27d8OWXXz5btURERERNiMIBaefOndi6dSvGjh0LdXV1sb1nz564ePGiUosjIiIiUgWFA9Lt27fRoUOHau2VlZUoLy9XSlFEREREqqRwQOratSuOHz9erf3777+Ho6OjUooiIiIiUiWFr2ILCQmBv78/bt++jcrKSuzfvx+XLl3Czp07ZR4gS0RERNRcKXwEaeTIkfjll19w9OhR6OnpISQkBKmpqfjll18wePDghqiRiIiIqFE9032Q+vfvj6ioKGXXQkRERNQkPPONIpOSkpCamgrg8bwkJycnpRVFREREpEoKB6Rbt25hzJgxOHHiBIyMjAAAeXl5cHNzw549e9CuXTtl10hERETUqBSeg/T++++jvLwcqampyM3NRW5uLlJTU1FZWYn333+/IWokIiIialQKH0H67bffEBcXh06dOoltnTp1wqZNm9C/f3+lFkdERESkCgofQbK0tKzxhpAVFRUwNzdXSlFEREREqqRwQFq7di2mT5+OpKQksS0pKQkzZszAJ598otTiiIiIiFRB4VNs48aNw8OHD+Hi4oIWLR6v/ujRI7Ro0QLjx4/H+PHjxb65ubnKq5SIiIiokSgckMLCwhqgDCIiIqKmQ+GA5O/v3xB1EBERETUZCs9BIiIiInrRMSARERERyWFAIiIiIpLDgEREREQk55kD0tWrV3H48GEUFxcDAARBUFpRRERERKqkcEC6d+8evLy80LFjR7z66qvIyMgAAEyYMAGzZs1SeoFEREREjU3hgDRz5ky0aNEC6enp0NXVFdt9fX0RGRmp1OKIiIiIVEHh+yAdOXIEhw8fRrt27WTa7e3tcePGDaUVRkRERKQqCh9BKioqkjlyVCU3NxdaWlpKKYqIiIhIlRQOSP3798fOnTvF1xKJBJWVlVizZg08PT2VWhwRERGRKih8im3NmjUYNGgQkpKSUFZWhrlz5+LChQvIzc3FiRMnGqJGIiIiokal8BGkbt264fLly+jXrx9GjhyJoqIivPHGG0hJSUH79u0bokYiIiKiRqXwESQAkEqlWLhwobJrISIiImoSnikglZSU4OzZs8jOzkZlZaXMstdee00phRERERGpisIBKTIyEn5+frh79261ZRKJBBUVFUopjIiIiEhVFJ6DNH36dLz99tvIyMhAZWWlzBfDEREREb0IFA5IWVlZCAoKgomJSUPUQ0RERKRyCgekt956C7GxsQ1QChEREVHToPAcpM2bN+Ptt9/G8ePH0b17d2hoaMgs//DDD5VWHBEREZEqKByQvv32Wxw5cgTa2tqIjY2FRCIRl0kkEgYkIiIiavYUDkgLFy7E0qVLMW/ePKipKXyGjoiIiKjJUzjhlJWVwdfXl+GIiIiIXlgKpxx/f3/s3bu3IWohIiIiahIUPsVWUVGBNWvW4PDhw+jRo0e1Sdrr169XWnFEREREqqBwQDp37hwcHR0BAOfPn5dZ9uSEbSIiIqLmSuGAFBMT0xB1EBERETUZnGlNREREJKdeR5DeeOMNbN++HYaGhnjjjTfq7Lt//36lFEZERESkKvUKSFKpVJxfJJVKG7QgIiIiIlWrV0Datm0bli1bhtmzZ2Pbtm0NXRMRERGRStV7DtLSpUtRWFjYIEV89tlnsLGxgba2NlxcXJCYmFhn/3379qFz587Q1tZG9+7dcejQIZnlgiAgJCQEZmZm0NHRgZeXF65cuSIuv379OiZMmABbW1vo6Oigffv2WLx4McrKyhpk+4iIiKh5qXdAEgShQQrYu3cvgoKCsHjxYpw+fRo9e/aEt7c3srOza+wfFxeHMWPGYMKECUhJSYGPjw98fHxkbjmwZs0abNy4EeHh4UhISICenh68vb1RUlICALh48SIqKyuxZcsWXLhwARs2bEB4eDgWLFjQINtIREREzYtEqGfyUVNTQ1ZWFoyNjZVagIuLC3r37o3NmzcDACorK2FpaYnp06dj3rx51fr7+vqiqKgIBw4cENtefvllODg4IDw8HIIgwNzcHLNmzcLs2bMBAPn5+TAxMcH27dsxevToGutYu3YtvvjiC/z999/1qrugoABSqRT5+fkwNDRUdLPr1GflUaWO96JJ1Jqq6hKarIFWFqouock6NupYg47P/bZ23Gdrx322dg21z9b397dCl/l37NgR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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_1_freeze',\n", + " 'cgdrag_torch_implicit_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + " 'cgdrag_torch_implicit_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7Oxs9O3bFykpKViwYAGWLl2q8QKJiIiIapvaAenChQtwc3MDAHzzzTfo1KkTEhMTsWfPHuzcuVPT9RERERHVOrUD0rNnz2BgYAAAOHbsGIYMGQIAaN++Pe7du6fZ6oiIiIi0QO2A9MYbbyAyMhInTpxAbGws+vXrBwC4e/cuzMzMNF4gERERUW1TOyCtWrUK27Ztg7e3N0aOHAknJycAwPfffy+eeiMiIiJ6nTVQdwdvb288ePAAhYWFaNKkidg+ceJENGzYUKPFEREREWmD2gEJAHR1dRXCEQDY29troh4iIiIireOFIomIiIiUMCARERERKWFAIiIiIlJS7YA0ZswYHDp0CEVFRTVZDxEREZHWVTsgtWnTBitXroS5uTn69++PrVu3IisrqyZrIyIiItKKageksLAwnD17FteuXcPgwYMRHR2N1q1bw8XFBUuXLkV6enoNlklERERUe9Reg9SiRQtMnjwZP//8M+7fv49PPvkEV69eRe/evdGyZUtMnToVFy9erIlaiYiIiGrFKy3Sbty4MYYPH449e/bg/v372L59O3R1dZGUlKSp+oiIiIhq3UtdKFIVXV1d9OnTB3369NHUkERERERawbf5ExERESlhQCIiIiJSwoBEREREpKROBKQtW7bA3t4ehoaGcHd3R0pKSpX9Dxw4gPbt28PQ0BCdO3fGkSNHFLYLgoCwsDBYWVnByMgIvr6+uHbtmsqxSktL4ezsDIlEwksVEBEREYCXXKQdFxeHuLg45ObmQi6XK2zbvn27WmPt378fISEhiIyMhLu7OyIiIuDn54erV6+iefPmFfonJiZi5MiRCA8Px6BBg7B37174+/vj3Llz6NSpEwBg9erV2LhxI3bt2gUHBweEhobCz88Ply5dgqGhocJ4c+bMgbW1Nc6fP6/ms0BERET1ldozSEuWLMHbb7+NuLg4PHjwAI8ePVK4qWvdunWYMGECgoKC0LFjR0RGRqJhw4aVBq0NGzagX79+mD17Njp06IBly5ahW7du2Lx5M4AXs0cRERFYuHAhhg4dii5dumD37t24e/cuoqOjFcb66aefcPToUXz22Wdq101ERET1l9ozSJGRkdi5cydGjx79yg9eVlaGs2fPYt68eWKbjo4OfH19K72WUlJSEkJCQhTa/Pz8xPCTkZGB7Oxs+Pr6itulUinc3d2RlJSEESNGAABycnIwYcIEREdHo2HDhq98LERERFR/qD2DVFZWBk9PT408+IMHDyCTyWBhYaHQbmFhgezsbJX7ZGdnV9m//GtVfQRBwNixY/HRRx/B1dW1WrWWlpaisLBQ4UZERET1k9oB6cMPP8TevXtropZas2nTJjx+/Fhh5urvhIeHQyqVijdbW9sarJCIiIi0Se1TbCUlJYiKisKxY8fQpUsX6OnpKWxft25dtcdq1qwZdHV1kZOTo9Cek5MDS0tLlftYWlpW2b/8a05ODqysrBT6ODs7AwCOHz+OpKQkGBgYKIzj6uqKUaNGYdeuXRUed968eQqn9goLCxmSiIiI6im1Z5B+/fVXODs7Q0dHBxcuXEBaWpp4U/dt8vr6+nBxcUFcXJzYJpfLERcXBw8PD5X7eHh4KPQHgNjYWLG/g4MDLC0tFfoUFhYiOTlZ7LNx40acP38e6enpSE9PFy8TsH//fqxYsULl4xoYGMDExEThRkRERPWT2jNI8fHxGi0gJCQEgYGBcHV1hZubGyIiIlBcXIygoCAAwJgxY2BjY4Pw8HAAwPTp0+Hl5YW1a9di4MCB2LdvH1JTUxEVFQUAkEgkCA4OxvLly+Ho6Ci+zd/a2hr+/v4AADs7O4UaGjVqBABo3bo1WrRoodHjIyIiotfPK31Y7R9//AEArxQqAgICcP/+fYSFhSE7OxvOzs6IiYkRF1lnZmZCR+fPiS5PT0/s3bsXCxcuxPz58+Ho6Ijo6GjxGkjAi2sbFRcXY+LEicjPz0fPnj0RExNT4RpIRERERKpIBEEQ1NlBLpdj+fLlWLt2LYqKigAAjRs3xsyZM7FgwQKFMFOfFRYWQiqVoqCgQOOn29xWHNPoePVNisEUbZdQZ/W2s9F2CXXW8eHHa3R8vm4rx9ds5fiarVxNvWar+/tb7RmkBQsW4Msvv8Snn36KHj16AABOnjyJxYsXo6SkpNI1PERERESvC7UD0q5du/DFF19gyJAhYluXLl1gY2ODyZMnMyARERHRa0/t82F5eXlo3759hfb27dsjLy9PI0URERERaZPaAcnJyUn83LO/2rx5M5ycnDRSFBEREZE2qX2KbfXq1Rg4cCCOHTsmXlcoKSkJd+7cEa8nRERERPQ6U3sGycvLC7///jveeecd5OfnIz8/H++++y6uXr2KXr161USNRERERLXqpa6DZG1tzcXYREREVG9VKyD9+uuv6NSpE3R0dPDrr79W2bdLly4aKYyIiIhIW6oVkJydnZGdnY3mzZvD2dkZEokEqq4vKZFIIJPJNF4kERERUW2qVkDKyMiAubm5+D0RERFRfVatgNSyZUvx+9u3b8PT0xMNGiju+vz5cyQmJir0JSIiInodqf0uNh8fH5UXhCwoKICPj49GiiIiIiLSJrUDkiAIkEgkFdofPnwIY2NjjRRFREREpE3Vfpv/u+++C+DFQuyxY8fCwMBA3CaTyfDrr7/C09NT8xUSERER1bJqBySpVArgxQxS48aNYWRkJG7T19fHm2++iQkTJmi+QiIiIqJaVu2AtGPHDgCAvb09Zs2axdNpREREVG+pfSXtRYsW1UQdRERERHXGS33UyMGDB/HNN98gMzMTZWVlCtvOnTunkcKIiIiItEXtd7Ft3LgRQUFBsLCwQFpaGtzc3GBmZoabN2+if//+NVEjERERUa1SOyB9/vnniIqKwqZNm6Cvr485c+YgNjYWH3/8MQoKCmqiRiIiIqJapXZAyszMFN/Ob2RkhMePHwMARo8eja+//lqz1RERERFpgdoBydLSUryStp2dHU6fPg3gxWe0qfoAWyIiIqLXjdoBqXfv3vj+++8BAEFBQZgxYwb69u2LgIAAvPPOOxovkIiIiKi2qf0utqioKMjlcgDAlClTYGZmhsTERAwZMgT/93//p/ECiYiIiGqbWgHp+fPnWLlyJcaNG4cWLVoAAEaMGIERI0bUSHFERERE2qDWKbYGDRpg9erVeP78eU3VQ0RERKR1aq9B6tOnD3755ZeaqIWIiIioTlB7DVL//v0xd+5c/Pbbb3BxcanwmWxDhgzRWHFERERE2qB2QJo8eTIAYN26dRW2SSQSyGSyV6+KiIiISIvUDkjl72AjIiIiqq/UXoP0VyUlJZqqg4iIiKjOUDsgyWQyLFu2DDY2NmjUqBFu3rwJAAgNDcWXX36p8QKJiIiIapvaAWnFihXYuXMnVq9eDX19fbG9U6dO+OKLLzRaHBEREZE2qB2Qdu/ejaioKIwaNQq6urpiu5OTE65cuaLR4oiIiIi0Qe2AlJWVhTZt2lRol8vlePbsmUaKIiIiItImtQNSx44dceLEiQrtBw8eRNeuXTVSFBEREZE2qf02/7CwMAQGBiIrKwtyuRzffvstrl69it27d+Pw4cM1USMRERFRrVJ7Bmno0KH44YcfcOzYMRgbGyMsLAyXL1/GDz/8gL59+9ZEjURERES1Su0ZJADo1asXYmNjNV0LERERUZ2g9gxSq1at8PDhwwrt+fn5aNWqlUaKIiIiItImtQPSrVu3VH7eWmlpKbKysjRSFBEREZE2VfsU2/fffy9+//PPP0MqlYr3ZTIZ4uLiYG9vr9HiiIiIiLSh2gHJ398fACCRSBAYGKiwTU9PD/b29li7dq1GiyMiIiLShmoHJLlcDgBwcHDAmTNn0KxZsxorioiIiEib1H4XW0ZGRk3UQURERFRnVCsgbdy4ERMnToShoSE2btxYZd+PP/5YI4URERERaUu1AtL69esxatQoGBoaYv369ZX2k0gkDEhERET02qvW2/wzMjJgZmYmfl/Z7ebNmy9VxJYtW2Bvbw9DQ0O4u7sjJSWlyv4HDhxA+/btYWhoiM6dO+PIkSMK2wVBQFhYGKysrGBkZARfX19cu3ZNoc+QIUNgZ2cHQ0NDWFlZYfTo0bh79+5L1U9ERET1i9rXQdK0/fv3IyQkBIsWLcK5c+fg5OQEPz8/5ObmquyfmJiIkSNHYvz48UhLS4O/vz/8/f1x4cIFsc/q1auxceNGREZGIjk5GcbGxvDz80NJSYnYx8fHB9988w2uXr2KQ4cO4caNG3j//fdr/HiJiIio7pMIgiBoswB3d3d0794dmzdvBvDi3XK2traYNm0a5s6dW6F/QEAAiouLFT4Y980334SzszMiIyMhCAKsra0xc+ZMzJo1CwBQUFAACwsL7Ny5EyNGjFBZx/fffw9/f3+UlpZCT0/vb+suLCyEVCpFQUEBTExMXubQK+W24phGx6tvUgymaLuEOqu3nY22S6izjg8/XqPj83VbOb5mK8fXbOVq6jVb3d/fWp1BKisrw9mzZ+Hr6yu26ejowNfXF0lJSSr3SUpKUugPAH5+fmL/jIwMZGdnK/SRSqVwd3evdMy8vDzs2bMHnp6elYaj0tJSFBYWKtyIiIioftJqQHrw4AFkMhksLCwU2i0sLJCdna1yn+zs7Cr7l3+tzpiffPIJjI2NYWZmhszMTHz33XeV1hoeHg6pVCrebG1tq3eQRERE9NpRKyA9f/4cS5cuxR9//FFT9dSq2bNnIy0tDUePHoWuri7GjBmDys44zps3DwUFBeLtzp07tVwtERER1Ra1AlKDBg2wZs0aPH/+XCMP3qxZM+jq6iInJ0ehPScnB5aWlir3sbS0rLJ/+dfqjNmsWTO0bdsWffv2xb59+3DkyBGcPn1a5eMaGBjAxMRE4UZERET1k9qn2Hr37o1ffvlFIw+ur68PFxcXxMXFiW1yuRxxcXHw8PBQuY+Hh4dCfwCIjY0V+zs4OMDS0lKhT2FhIZKTkysds/xxgRdrjYiIiOifTe2PGunfvz/mzp2L3377DS4uLjA2NlbYPmTIELXGCwkJQWBgIFxdXeHm5oaIiAgUFxcjKCgIADBmzBjY2NggPDwcADB9+nR4eXlh7dq1GDhwIPbt24fU1FRERUUBeHGxyuDgYCxfvhyOjo5wcHBAaGgorK2txQ/cTU5OxpkzZ9CzZ080adIEN27cQGhoKFq3bl1liCIiIqJ/BrUD0uTJkwEA69atq7BNIpFAJpOpNV5AQADu37+PsLAwZGdnw9nZGTExMeIi68zMTOjo/DnR5enpib1792LhwoWYP38+HB0dER0djU6dOol95syZg+LiYkycOBH5+fno2bMnYmJiYGhoCABo2LAhvv32WyxatAjFxcWwsrJCv379sHDhQhgYGKj7lBAREVE9o/XrIL2ueB0k7eE1VSrHa6pUjtdB0h6+ZivH12zlXuvrIP31ytRERERE9YXaAUkmk2HZsmWwsbFBo0aNxM9fCw0NxZdffqnxAomIiIhqm9oBacWKFdi5cydWr14NfX19sb1Tp0744osvNFocERERkTaoHZB2796NqKgojBo1Crq6umK7k5MTrly5otHiiIiIiLRB7YCUlZWFNm3aVGiXy+V49uyZRooiIiIi0ia1A1LHjh1x4sSJCu0HDx5E165dNVIUERERkTapfR2ksLAwBAYGIisrC3K5HN9++y2uXr2K3bt34/DhwzVRIxEREVGtUnsGaejQofjhhx9w7NgxGBsbIywsDJcvX8YPP/yAvn371kSNRERERLVK7RkkAOjVqxdiY2M1XQsRERFRnfBSAQkAUlNTcfnyZQAv1iW5uLhorCgiIiIibVI7IP3xxx8YOXIkTp06BVNTUwBAfn4+PD09sW/fPrRo0ULTNRIRERHVKrXXIH344Yd49uwZLl++jLy8POTl5eHy5cuQy+X48MMPa6JGIiIiolql9gzSL7/8gsTERLRr105sa9euHTZt2oRevXpptDgiIiIibVB7BsnW1lblBSFlMhmsra01UhQRERGRNqkdkNasWYNp06YhNTVVbEtNTcX06dPx2WefabQ4IiIiIm1Q+xTb2LFj8eTJE7i7u6NBgxe7P3/+HA0aNMC4ceMwbtw4sW9eXp7mKiUiIiKqJWoHpIiIiBoog4iIiKjuUDsgBQYG1kQdRERERHWG2muQiIiIiOo7BiQiIiIiJQxIREREREoYkIiIiIiUvHRAun79On7++Wc8ffoUACAIgsaKIiIiItImtQPSw4cP4evri7Zt22LAgAG4d+8eAGD8+PGYOXOmxgskIiIiqm1qB6QZM2agQYMGyMzMRMOGDcX2gIAAxMTEaLQ4IiIiIm1Q+zpIR48exc8//4wWLVootDs6OuL27dsaK4yIiIhIW9SeQSouLlaYOSqXl5cHAwMDjRRFREREpE1qB6RevXph9+7d4n2JRAK5XI7Vq1fDx8dHo8URERERaYPap9hWr16NPn36IDU1FWVlZZgzZw4uXryIvLw8nDp1qiZqJCIiIqpVas8gderUCb///jt69uyJoUOHori4GO+++y7S0tLQunXrmqiRiIiIqFapPYMEAFKpFAsWLNB0LURERER1wksFpJKSEvz666/Izc2FXC5X2DZkyBCNFEZERESkLWoHpJiYGIwZMwYPHjyosE0ikUAmk2mkMCIiIiJtUXsN0rRp0zBs2DDcu3cPcrlc4cZwRERERPWB2gEpJycHISEhsLCwqIl6iIiIiLRO7YD0/vvvIyEhoQZKISIiIqob1F6DtHnzZgwbNgwnTpxA586doaenp7D9448/1lhxRERERNqgdkD6+uuvcfToURgaGiIhIQESiUTcJpFIGJCIiIjotad2QFqwYAGWLFmCuXPnQkdH7TN0RERERHWe2gmnrKwMAQEBDEdERERUb6mdcgIDA7F///6aqIWIiIioTlD7FJtMJsPq1avx888/o0uXLhUWaa9bt05jxRERERFpg9oB6bfffkPXrl0BABcuXFDY9tcF20RERESvK7UDUnx8fE3UQURERFRncKU1ERERkZJqzSC9++672LlzJ0xMTPDuu+9W2ffbb7/VSGFERERE2lKtgCSVSsX1RVKptEYLIiIiItK2ap1i27FjB9avX48nT55gx44dVd5expYtW2Bvbw9DQ0O4u7sjJSWlyv4HDhxA+/btYWhoiM6dO+PIkSMK2wVBQFhYGKysrGBkZARfX19cu3ZN3H7r1i2MHz8eDg4OMDIyQuvWrbFo0SKUlZW9VP1ERERUv1R7DdKSJUtQVFSk8QL279+PkJAQLFq0COfOnYOTkxP8/PyQm5ursn9iYiJGjhyJ8ePHIy0tDf7+/vD391d4R93q1auxceNGREZGIjk5GcbGxvDz80NJSQkA4MqVK5DL5di2bRsuXryI9evXIzIyEvPnz9f48REREdHrRyIIglCdjjo6OsjOzkbz5s01WoC7uzu6d++OzZs3AwDkcjlsbW0xbdo0zJ07t0L/gIAAFBcX4/Dhw2Lbm2++CWdnZ0RGRkIQBFhbW2PmzJmYNWsWAKCgoAAWFhbYuXMnRowYobKONWvWYOvWrbh582a16i4sLIRUKkVBQQFMTEzUPewqua04ptHx6psUgynaLqHO6m1no+0S6qzjw4/X6Ph83VaOr9nK8TVbuZp6zVb397da72LT9HWOysrKcPbsWfj6+v5ZkI4OfH19kZSUpHKfpKQkhf4A4OfnJ/bPyMhAdna2Qh+pVAp3d/dKxwRehKimTZtWur20tBSFhYUKNyIiIqqf1LoOUtu2bf82JOXl5VV7vAcPHkAmk8HCwkKh3cLCAleuXFG5T3Z2tsr+2dnZ4vbytsr6KLt+/To2bdqEzz77rNJaw8PDsWTJkqoPiIiIiOoFtQLSkiVL6t272LKystCvXz8MGzYMEyZMqLTfvHnzEBISIt4vLCyEra1tbZRIREREtUytgDRixAiNrkFq1qwZdHV1kZOTo9Cek5MDS0tLlftYWlpW2b/8a05ODqysrBT6ODs7K+x39+5d+Pj4wNPTE1FRUVXWamBgAAMDg2odFxEREb3eqr0GqSY+Z01fXx8uLi6Ii4sT2+RyOeLi4uDh4aFyHw8PD4X+ABAbGyv2d3BwgKWlpUKfwsJCJCcnK4yZlZUFb29vuLi4YMeOHdDR4UXFiYiI6IVqzyBV881uagsJCUFgYCBcXV3h5uaGiIgIFBcXIygoCAAwZswY2NjYIDw8HAAwffp0eHl5Ye3atRg4cCD27duH1NRUcQZIIpEgODgYy5cvh6OjIxwcHBAaGgpra2v4+/sD+DMctWzZEp999hnu378v1lPZzBURERH9c1Q7IMnl8hopICAgAPfv30dYWBiys7Ph7OyMmJgYcZF1ZmamwuyOp6cn9u7di4ULF2L+/PlwdHREdHQ0OnXqJPaZM2cOiouLMXHiROTn56Nnz56IiYmBoaEhgBczTtevX8f169fRokULhXpqKggSERHR66Pa10EiRbwOkvbwmiqV4zVVKsfrIGkPX7OV42u2cq/VdZCIiIiI/gkYkIiIiIiUMCARERERKWFAIiIiIlLCgERERESkhAGJiIiISAkDEhEREZESBiQiIiIiJQxIREREREoYkIiIiIiUMCARERERKWFAIiIiIlLCgERERESkhAGJiIiISAkDEhEREZESBiQiIiIiJQxIREREREoYkIiIiIiUMCARERERKWFAIiIiIlLCgERERESkhAGJiIiISAkDEhEREZESBiQiIiIiJQxIREREREoYkIiIiIiUMCARERERKWFAIiIiIlLCgERERESkhAGJiIiISAkDEhEREZESBiQiIiIiJQxIREREREoYkIiIiIiUMCARERERKWFAIiIiIlLCgERERESkhAGJiIiISAkDEhEREZESBiQiIiIiJQxIREREREoYkIiIiIiUMCARERERKWFAIiIiIlLCgERERESkhAGJiIiISAkDEhEREZESrQekLVu2wN7eHoaGhnB3d0dKSkqV/Q8cOID27dvD0NAQnTt3xpEjRxS2C4KAsLAwWFlZwcjICL6+vrh27ZpCnxUrVsDT0xMNGzaEqamppg+JiIiIXnNaDUj79+9HSEgIFi1ahHPnzsHJyQl+fn7Izc1V2T8xMREjR47E+PHjkZaWBn9/f/j7++PChQtin9WrV2Pjxo2IjIxEcnIyjI2N4efnh5KSErFPWVkZhg0bhkmTJtX4MRIREdHrR6sBad26dZgwYQKCgoLQsWNHREZGomHDhti+fbvK/hs2bEC/fv0we/ZsdOjQAcuWLUO3bt2wefNmAC9mjyIiIrBw4UIMHToUXbp0we7du3H37l1ER0eL4yxZsgQzZsxA586da+MwiYiI6DWjtYBUVlaGs2fPwtfX989idHTg6+uLpKQklfskJSUp9AcAPz8/sX9GRgays7MV+kilUri7u1c6ZnWVlpaisLBQ4UZERET1k9YC0oMHDyCTyWBhYaHQbmFhgezsbJX7ZGdnV9m//Ks6Y1ZXeHg4pFKpeLO1tX2l8YiIiKju0voi7dfFvHnzUFBQIN7u3Lmj7ZKIiIiohmgtIDVr1gy6urrIyclRaM/J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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_grad',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_1_freeze',\n", + " 'cgdrag_torch_implicit_8_grad',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + " 'cgdrag_torch_implicit_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_100k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAHHCAYAAACfqw0dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABujklEQVR4nO3deVhU1f8H8PewI8vggmyioOKuYKAILoBiuKRSpmimiKTf3BJxSVNRUaPIhUwTbUNL08x+ZGYUIpgpsYnmguaOloMiAoKyOHN/f/hwa2JAZgQH8P16nnlgzv3ccz934jYfzz1zRiIIggAiIiIiUouOthMgIiIiaohYRBERERFpgEUUERERkQZYRBERERFpgEUUERERkQZYRBERERFpgEUUERERkQZYRBERERFpgEUUERERkQZYRBGR2m7cuAEjIyMcO3ZM26nQU1ixYgUkEom201DL5MmT4eDgoO00MG7cOIwdO1bbaZCWsYgiUkNMTAwkEon40NPTg52dHSZPnoy//vqrzo5b8WZnZWWFBw8eVNru4OCAl156SaO+P/74Y8TExKi1T3h4ONzd3dG3b99K244ePYqxY8fCzs4OBgYGkEqlcHd3R3h4OHJycpRivb29lV7PZs2aoVevXvj888+hUCiU4rp166Yyl9zcXEgkEqxYsUKtc6iQmpqKGTNmwNXVFfr6+k8sKj777DN07twZRkZGcHJywkcffVTjYykUCkRGRsLR0RFGRkbo0aMHvv76a5WxWVlZGDJkCExNTdGsWTNMnDgRd+7ceao+a+Ldd99FbGysxvvXhr///hsrVqzAyZMntZpHdd5++23s27cPp06d0nYqpE0CEdXYF198IQAQwsPDhS+//FL45JNPhODgYEFXV1do166d8PDhwzo57vLlywUAAgBh7dq1lba3adNGGD58uEZ9d+3aVfDy8qpx/O3btwV9fX1h165dlbYtW7ZMACC0bdtWeOedd4RPP/1U2LRpkxAUFCSYm5sLbdu2VYr38vISWrVqJXz55ZfCl19+Kaxfv15wcXERAAhvv/22UlzXrl1V5nPnzh0BgLB8+fIan8O/LV++XNDX1xdcXV2FDh06CNX9bzE6OloAIIwePVrYtm2bMHHiRAGA8N5779XoWIsWLRIACFOnThW2bdsmDB8+XAAgfP3110pxN27cEFq0aCG0a9dO+PDD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jxYvXozOnTvj9ddfV2ufgoIC8XHjxo06zJCIiIi0SatFVIsWLaCrq4ucnByl9pycHFhbW6vcx9rautr4ip/q9KnK4cOHsXfvXujp6UFPTw+DBg0Sc16+fLnKfQwNDWFubq70ICIiosZJq0WUgYEBXF1dkZCQILYpFAokJCTAw8ND5T4eHh5K8QAQHx8vxjs6OsLa2lopprCwECkpKVX2qcq+fftw6tQpnDx5EidPnsSnn34KADh69ChmzpxZ436IiIiocdL6EgehoaEIDAyEm5sbevfujaioKBQXFyMoKAgAMGnSJNjZ2SEiIgIAMGfOHHh5eWHdunUYPnw4du/ejfT0dGzbtg3A44mGISEhWL16NZycnMQlDmxtbeHv7y8eNzs7G3l5ecjOzoZcLsfJkycBAO3bt4epqSnatWunlGdubi4AoHPnzjX+dB4RERE1XlovogICAnDnzh2EhYVBJpPBxcUFcXFx4sTw7Oxs6Oj8M2Dm6emJXbt2YenSpXjnnXfg5OSE2NhYcY0oAFi4cCGKi4sxbdo05Ofno1+/foiLixPXiAKAsLAwbN++XXzes2dPAEBiYiK8vb3r+KyJiEgJP1VbNX6itt7S+jpRjRnXidKOVEPebq0W/4esNbxuq8brthq8Zp+5mr5/89N5RERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpgEUVERESkARZRRERERBpQu4i6ceMGbt68KT5PTU1FSEgItm3bpnESmzdvhoODA4yMjODu7o7U1NRq4/fu3YtOnTrByMgI3bt3x8GDB5W2C4KAsLAw2NjYwNjYGL6+vrh48aJSzJo1a+Dp6YkmTZrAwsKi0jFOnTqF8ePHw97eHsbGxujcuTM+/PBDjc+RiIiIGhe1i6jXXnsNiYmJAACZTIbBgwcjNTUVS5YsQXh4uNoJ7NmzB6GhoVi+fDlO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BgYGYnu3bt3w6aef1mpyRERERPWV2kXUjh07sG3bNkyYMAG6urpiu7OzM86fP1+ryRERERHVV2oXUX/99Rfat29fqV2hUKC8vLxWkiIiIiKq79Quorp06YKjR49Wav/222/Rs2fPWkmKiIiIqL5Te4mDsLAwBAYG4q+//oJCocB3332HCxcuYMeOHThw4EBd5EhERERU76g9EjVq1Cj88MMPOHToEExMTBAWFoasrCz88MMPGDx4cF3kSERERFTvqD0SBQD9+/dHfHx8bedCRERE1GCoPRLVtm1b3L17t1J7fn4+2rZtWytJEREREdV3ahdR165dU/n9eKWlpfjrr79qJSkiIiKi+q7Gt/P2798v/v7zzz9DKpWKz+VyORISEuDg4FCryRERERHVVzUuovz9/QEAEokEgYGBStv09fXh4OCAdevW1WpyRERERPVVjYsohUIBAHB0dERaWhpatGhRZ0kRERER1Xdqfzrv6tWrdZEHERERUYNSoyJq48aNmDZtGoyMjLBx48ZqY996661aSYyIiIioPqtREbVhwwZMmDABRkZG2LBhQ5VxEomERRQRERE9F2pURP37Fh5v5xERERFpsE4UEREREbGIIiIiItIIiygiIiIiDbCIIiIiItKAWkXUo0ePEB4ejps3b9ZVPkREREQNglpFlJ6eHj744AM8evSoVpPYvHkzHBwcYGRkBHd3d6SmplYbv3fvXnTq1AlGRkbo3r07Dh48qLRdEASEhYXBxsYGxsbG8PX1xcWLF5Vi8vLyMGHCBJibm8PCwgLBwcEoKipSivn555/Rp08fmJmZwdLSEqNHj8a1a9dq5ZyJiIioYVP7dt7AgQNx5MiRWktgz549CA0NxfLly3HixAk4OzvDz88Pt2/fVhl//PhxjB8/HsHBwcjMzIS/vz/8/f1x5swZMSYyMhIbN25EdHQ0UlJSYGJiAj8/P5SUlIgxEyZMwNmzZxEfH48DBw7g119/xbRp08TtV69exahRozBw4ECcPHkSP//8M3Jzc/HKK6/U2rkTERFRwyURBEFQZ4fo6GisXLkSEyZMgKurK0xMTJS2jxw5Uq0E3N3d0atXL2zatAnA4+/os7e3x+zZs7Fo0aJK8QEBASguLsaBAwfEtj59+sDFxQXR0dEQBAG2traYN28e5s+fDwAoKCiAlZUVYmJiMG7cOGRlZaFL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_1_freeze',\n", + " 'resnet_torch_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + " 'resnet_torch_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/venhkkiCC8whk9EL73g4GBcvHgRx44d03YqKh08eBBDhw7FqVOn0LVrV22nU6V79+6hadOmiIyMxJQpU7SdDmmIv78/JBIJfvzxR22nQv8QFlpE9EKys7PRrl07xMXFoU+fPtpOR8ns2bNx8+ZN7NixQ9upVOvAgQOYMmUKLl68WOUaXVS/ZWZmomvXrsjIyECXLl20nQ79Q1hoEREREWkI7zokIiIi0hAWWkREREQawkKLiIiISENYaBERERFpCBcs1SK5XI6///4bjRs35peLEhER1ROCIODevXuwsbGBjk71Y1YstLTo77//hp2dnbbTICIioudw/fp1tGzZstoYFlpaVPllstevX1f4+hIiIiKqu4qKimBnZ1ftl8JXYqGlRZWXC83MzFhoERER1TM1mfbDyfBEREREGsJCi4iIiEhDWGgRERERaQjnaBERUYMml8tRXl6u7TSonjEwMHjm0g01wUKLiIgarPLycmRlZUEul2s7FapndHR04OjoCAMDgxfqh4UWERE1SIIgICcnB7q6urCzs6uV0Ql6OVQuKJ6TkwN7e/sXWlSchRYRETVIjx49wv3792FjY4NGjRppOx2qZywsLPD333/j0aNH0NfXf+5+WN4TEVGDVFFRAQAvfOmHXk6Vn5vKz9HzYqFFREQNGr9Llp5HbX1uWGgRERERaQgLLSIionouISEBEokEBQUF1cY5ODggMjLyH8npeS1atAjOzs7i87Fjx8Lf319r+bwoToYnIqKXSq9lh//R46XM96lxbFRUFGbPno27d+9CT+/xn+ji4mI0adIEffr0QUJCghibkJAAb29vXL58GR4eHsjJyYFUKgUAREdHIyQk5JmFV33wxRdfQBCEWu1z0aJF2LdvHzIyMmq1X1U4okVERFRHeHt7o7i4GKmpqWLbsWPHYGVlheTkZJSVlYnt8fHxsLe3R5s2bWBgYAArK6s6Mx+tNheIlUqlMDc3r7X+/mkstIiIiOqI9u3bw9raWmnkavjw4XB0dMQff/yh0O7t7S3+XnnpMCEhAUFBQSgsLIREIoFEIsGiRYvE/e7fv49x48ahcePGsLe3x6ZNm6rN6d69exg1ahRMTExgbW2N1atXw8vLCyEhIWKMg4MDlixZgtGjR8PMzAwTJ04EAHz44Ydo164dGjVqhNatW2PBggV4+PChQv+fffYZLC0t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Qb9+/TB79mwWWkTPwMnwRKQ169atw4MHD+Dr64vffvsN169fR0xMDAYNGgRbW1ssW7ZMIf748eOIiIjAxYsXsX79euzZswfTp08HAPj4+MDd3R3+/v44dOgQrl69isTERMyfPx+pqanPlZ+uri4yMzPx559/QldX94VfbyUHBwfExcVBJpPh7t27L9TXlClTkJ+fj5EjR+LEiRO4cuUKfv31VwQFBaGiogJNmjRBs2bNsGnTJly+fBlHjhxBaGioQh/vvvsuJBIJJkyYgD///BMHDx5UKqDCwsLw008/4fLlyzh37hz2798vFrlEVDUWWkSkNU5OTkhNTUXr1q0xYsQItGnTBhMnToS3tzeSkpLQtGlThfiZM2ciNTUVPXr0wNKlS7Fq1SpxpEkikeDgwYPo378/goKC0K5dOwQGBuLatWuwtLR87hzNzMxgZmb2Qq/zaStXrkRsbCzs7OxULhehDhsbGxw/fhwVFRV49dVX0bVrV4SEhMDc3Bw6OjrQ0dHBzp07kZaWhi5dumDGjBlKa3yZmpriv//9L86cOYMePXpg/vz5SpciDQwMMG/ePHTr1g39+/eHrq4udu7c+UK5E70MJII6M1GJiLTEwcEBISEhCAkJ0XYqREQ1xhEtIiIiIg1hoUVERESkIbx0SERERKQhHNEiIiIi0hAWWkREREQawkKLiIiISENYaBERERFpCAstIiIiIg1hoUVERESkISy0iIiIiDSEhRYRERGRhrDQIiIiItKQ/wM9vVpH19BbsgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_grad',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_1_freeze',\n", + " 'resnet_torch_8_grad',\n", + " 'resnet_torch_8_nograd',\n", + " 'resnet_torch_8_freeze'\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_options_gpu_100k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"_grad\": \"With gradient\", \"_nograd\": \"With nograd\", \"_freeze\": \"With freeze\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FTorch with InferenceMode and NoGradMode on Sapphire Rapids CPUs" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# Create labels matching the order of tests in run_benchmarks.sh\n", + "\n", + "cpu_infer_labels = []\n", + "\n", + "cpu_tests_infer = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "cpu_tests_nograd = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "cpu_n_threads = [\"1\", \"4\", \"8\"]\n", + "\n", + "for threads in cpu_n_threads:\n", + " for test in cpu_tests_infer:\n", + " cpu_infer_labels.append(f\"{test}_{threads}_infer\")\n", + "for threads in cpu_n_threads:\n", + " for test in cpu_tests_nograd:\n", + " cpu_infer_labels.append(f\"{test}_{threads}_nograd\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading: ../../results/sapphire_infer/output_1k/slurm-37447583.out\n", + "Reading: ../../results/sapphire_infer/output_10k/slurm-37449094.out\n" + ] + } + ], + "source": [ + "benchmarks_infer_1k = rb.read_slurm_walltime(filepath_infer_1k, cpu_infer_labels)\n", + "benchmarks_infer_10k = rb.read_slurm_walltime(filepath_infer_10k, cpu_infer_labels)\n", + "\n", + "# Scale by number of iterations\n", + "for key, value in benchmarks_infer_1k.items():\n", + " benchmarks_infer_1k[key] = value / 1000\n", + "\n", + "for key, value in benchmarks_infer_10k.items():\n", + " benchmarks_infer_10k[key] = value / 10000" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_infer',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_4_infer',\n", + " 'cgdrag_torch_implicit_4_nograd',\n", + " 'cgdrag_torch_implicit_8_infer',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_1k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU, 1000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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a2vrl94qpzwYgIiISKtkMhkcHR1Ru3ZtlJSU6LsceoNUr179lY/8lGIAIiIinTA0NNTaHysibataj2YlIiIiqgQMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkaB6Bbt27h9u3b4vvExERMnDgRa9as0WphRERERLqicQD68MMPcejQIQBARkYGunTpgsTERMyYMQNz5szReoFERERE2qZxALp48SJatmwJANi2bRu8vLwQHx+PzZs3IyYmRtv1EREREWmdxgGopKQExsbGAICDBw/ivffeAwB4eHggPT1du9URERER6YDGAahp06ZYvXo1jh49igMHDqBbt24AgDt37sDGxkbrBRIRERFpm8YBaNGiRfjuu+/QoUMHDBw4ED4+PgCAXbt2iafGiIiIiKqyapqu0KFDB9y7dw/5+fmoWbOm2D5y5EiYmZlptTgiIiIiXdA4AAGAoaGhUvgBAFdXV23UQ0RERKRzer8R4sqVK+Hq6goTExO0atUKiYmJZfa9dOkS3n//fbi6ukImk2HZsmUqfSIjIyGTyZReHh4eOtwDIiIiet3oNQBt3boVkyZNwqxZs3DmzBn4+PggKCgIWVlZavs/fPgQDRo0wMKFC+Hg4FDmuE2bNkV6err4OnbsmK52gYiIiF5Deg1A0dHRGDFiBMLCwuDp6YnVq1fDzMwM69evV9v/rbfewpIl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jM8++0zrBRIRERFpm8YB6NNPP0W1atVw8+ZNmJmZie0DBgxAbGysVosjIiIi0gWN7wO0f/9+7Nu3D3Xr1lVqd3d3x7///qu1woiIiIh0ReMjQIWFhUpHfkrl5OTA2NhYK0URERER6ZLGAahdu3bYtGmT+F4mk0GhUGDx4sXo2LGjVosjIiIi0gWNT4EtXrwYnTt3RlJSEoqLizF16lRcunQJOTk5OH78uC5qJCIiItIqjY8AeXl54e+//0bbtm0RHByMwsJC9O3bF2fPnkXDhg11USMRERGRVml8BAgArKysMGPGDG3XQkRERFQpKhSAioqKcP78eWRlZUGhUCgte++997RSGBEREZGuaByAYmNjMWTIENy7d09lmUwmg1wu10phRERERLqi8RygcePG4YMPPkB6ejoUCoXSi+GHiIiIXgcaB6DMzExMmjQJ9vb2uqiHiIiISOc0DkD9+vXD4cOHdVAKERERUeXQeA7QihUr8MEHH+Do0aNo1qwZqlevrrR8/PjxWiuOiIiISBc0DkA//vgj9u/fDxMTExw+fBgymUxcJpPJGICIiIioytM4AM2YMQOzZ8/G9OnTYWCg8Rk0IiIiIr3TOMEUFxdjwIABDD9ERET02tI4xYSGhmLr1q26qIWIiIioUmh8Ckwul2Px4sXYt28fvL29VSZBR0dHa604IiIiIl3QOABduHABfn5+AICLFy8qLXt2QjQRERFRVaVxADp06JAu6iAiIiKqNJzJTERERJJTriNAffv2RUxMDCwtLdG3b98X9t2xY4dWCiMiIiLSlXIFICsrK3F+j5WVlU4LIiIiItK1cgWgDRs2YM6cOZg8eTI2bNig65qIiIiIdKrcc4Bmz56NgoICXdZCREREVCnKHYAEQdBlHURERESVRqOrwHifHyIiInoTaHQfoEaNGr00BOXk5LxSQURERES6plEAmj17Nq8CIyIioteeRgEoJCQEtWvX1lUtRERERJWi3HOAOP+HiIiI3hS8CoyIiIgkp9ynwBQKhS7rICIiIqo0fBgqERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUkOAxARERFJDgMQERERSU41fRdARFVfy/kH9V2CViXOCNR3CUSkZzwCRERERJLDI0BEJD1RjfVdgXZNvqLvCoheOzwCRERERJLDAERERESSwwBEREREksMARERERJLDAERERESSUyUC0MqVK+Hq6goTExO0atUKiYmJL+z/888/w8PDAyYmJmjWrBn27t2rtHzo0KGQyWRKr27duulyF4iIiOg1ovcAtHXrVkyaNAmzZs3CmTNn4OPjg6CgIGRlZantHx8fj4EDB+Ljjz/G2bNn0bt3b/Tu3RsXL15U6tetWzekp6eLrx9//LEydoeIiIheA3oPQNHR0RgxYgTCwsLg6emJ1atXw8zMDOvXr1fbf/ny5ejWrRumTJmCJk2aYO7cuWjevDlWrFih1M/Y2BgODg7iq2bNmpWxO0RERPQa0GsAKi4uxunTpxEY+L/b0hsYGCAwMBAJCQlq10lISFDqDwBBQUEq/Q8fPozatWujcePGGDVqFLKzs8us4/Hjx8jPz1d6ERER0ZtLrwHo3r17kMvlsLe3V2q3t7dHRkaG2nUyMjJe2r9bt27YtGkT4uLisGjRIhw5cgTdu3eHXC5XO+aCBQtgZWUlvpydnV9xz4iIiKgqeyMfhRESEiL+3KxZM3h7e6Nhw4Y4fPgwOnfurNI/PDwckyZNEt/n5+czBBEREb3B9HoEyNbWFoaGhsjMzFRqz8zMhIODg9p1HBwcNOoPAA0aNICtrS2uXbumdrmxsTEsLS2VXkRERPTm0msAMjIygr+/P+Li4sQ2hUKBuLg4BAQEqF0nICBAqT8AHDhwoMz+AHD79m1kZ2fD0dFRO4UTERHRa03vV4FNmjQJ33//PTZu3IiUlBSMGjUKhYWFCAsLAwAMGTIE4eHhYv8JEyYgNjYWS5cuxV9//YXIyEgkJSVh7NixAICCggJMmTIFJ06cwI0bNxAXF4fg4GC4ubkhKChIL/tIREREVYve5wANGDAAd+/eRUREBDIyMuDr64vY2FhxovPNmzdhYPC/nNa6dWts2bIFX3zxBT7//HO4u7tj586d8PLyAgAYGhri/Pnz2LhxI3Jzc+Hk5ISuXbti7ty5MDY21ss+EhERUdUiEwRB0HcRVU1+fj6srKyQl5enk/lALecf1PqY+pRoPEbfJWjX5Cv6rqDK4Xe2iuN3lgiAZn+/9X4KjIiIiKiyMQARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkVNN3AURERNrWcv5BfZegVYkzAvVdwhuHR4CIiIhIchiAiIiISHJ4CoyIiKiqi2qs7wq0a/IVfVfAI0BEREQkPQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDlVIgCtXLkSrq6uMDExQatWrZCYmPjC/j///DM8PDxgYmKCZs2aYe/evUrLBUFAREQEHB0dYWpqisDAQFy9elWXu0BERESvEb0HoK1bt2LSpEmYNWsWzpw5Ax8fHwQFBSErK0tt//j4eAwcOBAff/wxzp49i969e6N37964ePGi2Gfx4sX4+uuvsXr1apw8eRLm5uYICgpCUVFRZe0WERERVWF6D0DR0dEYMWIEwsLC4OnpidWrV8PMzAzr169X23/58uXo1q0bpkyZgiZNmmDu3Llo3rw5VqxYAeDp0Z9ly5bhiy++QHBwMLy9vbFp0ybcuXMHO3furMQ9IyIioqpKrwGouLgYp0+fRmBgoNhmYGCAwMBAJCQkqF0nISFBqT8ABAUFif2vX7+OjIwMpT5WVlZo1apVmWMSERGRtFTT58bv3bsHuVwOe3t7pXZ7e3v89ddfatfJyMhQ2z8jI0NcXtpWVp/nPX78GI8fPxbf5+XlAQDy8/M12JvykxcV6mRcfckX5PouQbt09Ht/nfE7W8XxO6uC39kqTkff2dK/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OOFYHXNzc7i5uZV73OrVq0Mul2ujRDRv3hy//PILXF1d1Qav7OxsXLlyBd9//z3atWsHADh27JhSnyZNmuCHH35AUVGReBTo+c8aeHpULDQ0FKGhoWjXrh2mTJnCAET0EpwETUQqVqxYgcePHyMoKAh//vknbt26hdjYWHTp0gV16tTB/PnzlfofP34cixcvxt9//42VK1fi559/xoQJEwAAgYGBCAgIQO/evbF//37cuHED8fHxmDFjBpKSkipUn6GhIVJSUnD58mUYGhq+8v6WcnV1RVxcHDIyMnD//v1XGmvMmDHIycnBwIEDcerUKaSmpmLfvn0ICwuDXC5HzZo1YWNjgzVr1uDatWv4448/MGnSJKUxPvzwQ8hkMowYMQKXL1/G3r17VYJNREQEfvvtN1y7dg2XLl3Cnj17xPBJRGVjACIiFe7u7khKSkKDBg3Qv39/NGzYECNHjkTHjh2RkJCAWrVqKfX/7LPPkJSUBD8/P8ybNw/R0dHikRmZTIa9e/finXfeQVhYGBo1aoSQkBD8+++/sLe3r3CNlpaWsLS0fKX9fN7SpUtx4MABODs7q72sXhNOTk44fvw45HI5unbtimbNmmHixImwtraGgYEBDAwM8NNPP+H06dPw8vLCp59+qnKPIgsLC+zevRsXLlyAn58fZsyYoXJKzcjICOHh4fD29sY777wDQ0ND/PTTT69UO5EUyARNZjoSET3H1dUVEydOxMSJE/VdChFRufEIEBEREUkOAxARERFJDk+BERERkeTwCBARERFJDgMQERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUnO/wPvoWu5s2PkugAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_infer',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_4_infer',\n", + " 'cgdrag_torch_implicit_4_nograd',\n", + " 'cgdrag_torch_implicit_8_infer',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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TdMlqBfncpSLx20Nx+OWCEDlP79Vus2/TZs2MDExeemrsp49e4aEhAR4ePzvThEtLS14eHggNja23HViY2Pl+gOAp6dnhf3Lk5CQgOLiYrlx2rZti2bNmr10nKKiIuTl5cm9iIiI6O2k0oMig4KC1HYXW1ZWFkpLS2FmZibXbmZmhhs3bpS7Tnp6ern909PTK73d9PR06OrqwtjYWKVxgoODERQUVOntEBERUe2lUkAaM2YMGjduXF211GgLFy6En5+f+D4vLw9WVlYarIiIiIiqS6UDkrq/Z61hw4bQ1tZWunssIyMD5ubm5a5jbm6uUv+Kxnj27BlycnLkziK9ahw9PT3o6elVejtERERUe2nsLjZdXV04OjoiOjpabJPJZIiOjoaLi0u567i4uMj1B4CoqKgK+5fH0dERderUkRsnJSUFd+7cUWkcIiIientV+gySTCZT+8b9/Pzg4+ODLl26wMnJCaGhoSgoKICvry8AYPz48bC0tERwcDAAYNasWXB1dcXatWsxYMAA7N27F/Hx8di6das4ZnZ2Nu7cuYMHDx4AeB5+gOdnjszNzWFkZIRJkybBz88PJiYmMDQ0xIwZM+Di4lLpO9iIiIjo7abSHCR1Gz16NB49egR/f3+kp6fDwcEBkZGR4kTsO3fuQEvrfye5unXrhj179mDx4sX44osvYGNjg/DwcNja2op9Dh8+LAYs4Pm8KQAICAhAYGAgAGD9+vXQ0tLC8OHDUVRUBE9PT3z99ddvYI+JiIioNqj0c5BIHp+DVHl8nsw/A4/bGo7HLRGAanoOEhEREdE/AQMSERERkQIGJCIiIiIFDEhEREREChiQiIiIiBQwIBEREREpYEAiIiIiUsCARERERKSAAYmIiIhIAQMSERERkQIGJCIiIiIFDEhEREREChiQiIiIiBQwIBEREREpYEAiIiIiUsCARERERKSAAYmIiIhIAQMSERERkQIGJCIiIiIFDEhEREREChiQiIiIiBQwIBEREREpYEAiIiIiUsCARERERKSAAYmIiIhIAQMSERERkQIdTRdAREREarDmHU1XoF5zUzS6eQYkIiL6R3JacULTJahVnJ6mK3i78BIbERERkQIGJCIiIiIFDEhEREREChiQiIiIiBQwIBEREREpYEAiIiIiUsCARERERKSAAYmIiIhIAQMSERERkQIGJCIiIiIF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1vjxxx8RFxen4cpqP15iIyJ6wbRp0zBgwAB4eHhouhSiV+rWrRuio6Px+++/AwB+++03/PLLL/wHqhrwDBIR0f/bu3cvLl26hIsXL2q6FKJKWbBgAfLy8tC2bVtoa2ujtLQUK1aswLhx4zRdWq3HgEREBODu3buYNWsWoqKi5L63kagm++mnn7B7927s2bMHHTp0QFJSEmbPng0LCwv4+PhourxajV81QtVOIpHg3//+N7y8vDRdClGFwsPDMXToUGhra4ttpaWlkEgk0NLSQlFRkdwyoprAysoKCxYswLRp08S25cuX41//+hdu3LihwcpqP55BIiIC4O7ujitXrsi1+fr6om3btpg/fz7DEdVIT58+hZaW/HRibW1tyGQyDVX09mBAomqRn5+Pmzdviu9v376NpKQkmJiYoFmzZhqsjKh89evXh62trVybvr4+TE1NldqJaopBgwZhxYoVaNasGTp06IDExESsW7cOEydO1HRptR4vsVG1OH36NHr16qXU7uPjgx07drz5goiqwM3NDQ4ODggNDdV0KUTlevLkCZYsWYJ///vfyMzMhIWFBby9veHv7w9dXV1Nl1erMSARERERKeBzkIiIiIgUMCARERERKWBAIiIiIlLAgERERESkgAGJiIiISAEDEhEREZECBiQiIiIiBQxIRESvITAwEA4ODpouQ5SWlgaJRIKkpCRNl0JUqzEgEVGV3L17FxMnToSFhQV0dXXRvHlzzJo1C48fP9ZIPRMmTIBEIsHHH3+stGzatGmQSCSYMGGCUn+JRAJdXV20bt0aS5cuRUlJSYXbkEgkCA8Pr4bqiaimYUAiIpX98ccf6NKlC1JTU/Hjjz/i5s2bCAsLQ3R0NFxcXJCdna2RuqysrLB37178/fffYlthYSH27NlT7ncA9uvXDw8fPkRqaio+++wzBAYGYvXq1dVe57Nnz6p9G0T0ehiQiEhl06ZNg66uLo4fPw5XV1c0a9YM/fv3x4kTJ3D//n0sWrRI7GttbY1ly5bB29sb+vr6sLS0xObNm+XGy8nJweTJk9GoUSMYGhqid+/e+O2338TlZZexfvjhB1hbW8PIyAhjxozBkydP5Mbp3LkzrKyscPDgQbHt4MGDaNasGTp16qS0H3p6ejA3N0fz5s3xySefwMPDA4cPHy53n62trQEAQ4cOhUQiEd+XeVltbm5u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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_infer',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_4_infer',\n", + " 'resnet_torch_4_nograd',\n", + " 'resnet_torch_8_infer',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_1k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU, 1000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IpHA1NRUpn358uUwNzdHmzZtsGrVKpSWllY4RlFREfLz82VeRERE9G7S0eTGs7OzUVZWBisrK5l2KysrXL9+Xek6GRkZSvtnZGQo7V9YWIjZs2fD399fJilOnToVbdu2hZmZGeLi4jB37lw8fPgQa9euVTpOWFgYFi1apMruERER0VtKowGpupWUlGDo0KEQBAFbtmyRWRYUFCT+uXXr1tDV1cVHH32EsLAw6OnpKYw1d+5cmXXy8/NhZ2dXfcUTERGRxmg0INWrVw/a2trIzMyUac/MzIS1tbXSdaytrSvVvzwc3blzB7/99tsr5wl5eHigtLQUaWlpeO+99xSW6+npKQ1ORERE9O7R6BwkXV1duLm5ITY2VmyTSqWIjY2Fp6en0nU8PT1l+gNATEyMTP/ycHTjxg0cO3YM5ubmr6wlOTkZWlpasLS0rOLeEBER0btC45fYgoKCEBAQgHbt2sHd3R3r169HQUEBAgMDAQCjR49G/fr1ERYWBgCYNm0aunbtijVr1sDX1xd79uxBQkICIiIiALwIR4MHD0ZSUhKioqJQVlYmzk8yMzODrq4u4uPjcfbsWXTr1g116tRBfHw8ZsyYgf/85z+oW7euZj4IIiIiqjE0HpCGDRuGR48eISQkBBkZGXB1dUV0dLQ4ETs9PR1aWv93oqtjx47YvXs3FixYgHnz5sHBwQGRkZFwcnICANy/fx8HDx4EALi6usps6/jx4/Dy8oKenh727NmD0NBQFBUVoXHjxpgxY4bMHCMiIiL699L4c5DeVnwOUuXxOUhERFRTvBXPQSIiIiKqiRiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJUTkg3b17F/fu3RPfnzt3DtOnT0dERIRaCyMiIiLSFJUD0ogRI3D8+HEAQEZGBnr2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9i//X1XGBAAPDw+UlpYiLS1N6XI9PT0YGxvLvIiIiOjdpNGApKurCzc3N8TGxoptUqkUsbGx8PT0VLqOp6enTH8AiImJEfs3btwY1tbWMn3y8/Nx9uzZCscEgOTkZGhpacHS0vJ1domIiIjeARq/xBYUFISAgAC0a9cO7u7uWL9+PQoKChAYGAgAGD16NOrXr4+wsDAAwLRp09C1a1esWbMGvr6+2LNnDxISEhAREQEAkEgkmD59OpYuXQoHBwc0btwYwcHBsLW1hZ+fH4AXE73Pnj2Lbt26oU6dOoiPj8eMGTPwn//8B3Xr1tXI50BEREQ1h8YD0rBhw/Do0SOEhIQgIyMDrq6uiI6OFidZp6enQ0vr/050dezYEbt378aCBQswb948ODg4IDIyEk5OTmKfWbNmoaCgABMnTkRubi46d+6M6Oho6OvrA3hxuWzPnj0IDQ1FUVERGjdujBkzZsjMMSIiIqJ/L4kgCIKmi3gb5efnw8TEBHl5eWqfj+S+7Jhax9O0c3qTNF2Ces1M1XQFNRKP2xqOx60CHrM1XDUds5X9/tb4gyKJiIiIahoGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhIDgMSERERkRwGJCIiIiI5DEhEREREchiQiIiIiOQwIBERERHJYUAiIiIiksOARERERCSHAYmIiIhITo0ISJs3b4a9vT309fXh4eGBc+fOvbT/vn374OjoCH19fTg7O+Pw4cMyywVBQEhICGxsbGBgYABvb2/cuHFDpk9OTg5GjhwJY2NjmJqaYty4cXj69Kna942IiIjePhoPSHv37kVQUBAWLlyIpKQkuLi4wMfHB1lZWUr7x8XFwd/fH+PGjcOF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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_infer',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_4_infer',\n", + " 'resnet_torch_4_nograd',\n", + " 'resnet_torch_8_infer',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# FTorch with InferenceMode and NoGradMode on an A100 GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# Create labels matching the order of tests in run_benchmarks.sh\n", + "\n", + "gpu_infer_labels = []\n", + "\n", + "gpu_tests_infer = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "gpu_tests_nograd = [\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "gpu_n_threads = [\"1\", \"8\"]\n", + "\n", + "for threads in gpu_n_threads:\n", + " for test in gpu_tests_infer:\n", + " gpu_infer_labels.append(f\"{test}_{threads}_infer\")\n", + "for threads in gpu_n_threads:\n", + " for test in gpu_tests_nograd:\n", + " gpu_infer_labels.append(f\"{test}_{threads}_nograd\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading: ../../results/ampere_infer/output_10k/slurm-37521108.out\n", + "Reading: ../../results/ampere_infer/output_100k/slurm-37521956.out\n" + ] + } + ], + "source": [ + "benchmarks_infer_gpu_10k = rb.read_slurm_walltime(filepath_infer_gpu_10k, gpu_infer_labels)\n", + "benchmarks_infer_gpu_100k = rb.read_slurm_walltime(filepath_infer_gpu_100k, gpu_infer_labels)\n", + "\n", + "# Scale by number of iterations\n", + "for key, value in benchmarks_infer_gpu_10k.items():\n", + " benchmarks_infer_gpu_10k[key] = value / 10000\n", + "\n", + "for key, value in benchmarks_infer_gpu_100k.items():\n", + " benchmarks_infer_gpu_100k[key] = value / 100000" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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XS6X4/nz5xopioiIiEib1A5IdevWxR9//KHUvmfPHri6umqkKCIiIiJtUvsy/+DgYPj7++PBgweQy+XYu3cvrly5gi1btuDgwYMlUSMRERFRqVL7CFL37t1x4MABHDt2DCYmJggODkZiYiIOHDiA9u3bl0SNRERERKVK7SNIANCqVSuEh4druhYiIiKi94LaR5CqV6+Ox48fK7VnZGSgevXqGimKiIiISJvUDki3b99W+X1reXl5ePDggUaKIiIiItKmYp9i279/v/j/R44cgbm5ufi8oKAAERERcHR01GhxRERERNpQ7IDk6+sLAJDJZPD391dYpqenB0dHRyxbtkyjxRERERFpQ7EDklwuBwA4OTnh7NmzqFy5cokVRURERKRNal/FduvWrZKog4iIiOi9UayAtHr1agwfPhyGhoZYvXr1a/uOHTtWI4URERERaUuxAtKKFSvQv39/GBoaYsWKFUX2k8lkDEhERET0wStWQHr1tBpPsREREVFZp/Z9kIiIiIjKOgYkIiIiIgkGJCIiIiIJBiQiIiIiCbUC0osXLzBnzhzcv3+/pOohIiIi0jq1AlK5cuWwZMkSvHjxoqTqISIiItI6tU+xtW3bFr///ntJ1EJERET0XlD7q0Y6deqEyZMn4+LFi3Bzc4OJiYnC8m7dummsOCIiIiJtUDsgjRw5EgCwfPlypWUymQwFBQXvXhURERGRFqkdkORyeUnUQURERPTeeKfL/HNzczVVBxEREdF7Q+2AVFBQgLlz58LOzg6mpqa4efMmAGDGjBn48ccfNV4gERERUWlTOyDNnz8fmzZtwuLFi6Gvry+2169fH+vXr9docURERETaoHZA2rJlC9atW4f+/ftDV1dXbG/UqBEuX76s0eKIiIiItEHtgPTgwQPUrFlTqV0ul+P58+caKYqIiIhIm9QOSHXr1sUff/yh1L5nzx64urpqpCgiIiIibVL7Mv/g4GD4+/vjwYMHkMvl2Lt3L65cuYItW7bg4MGDJVEjERERUalS+whS9+7dceDAARw7dgwmJiYIDg5GYmIiDhw4gPbt25dEjURERESlSu0jSADQqlUrhIeHa7oWIiIiovfCWwUkAIiNjUViYiKAl/OS3NzcNFYUERERkTapHZDu37+Pvn374vTp07CwsAAAZGRkoHnz5tixYweqVq2q6RqJiIiISpXac5CG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Ozu7JGshIiIiei8UOyAJglCSdRARERG9N9S6io33OSIiIqL/ArXug1SrVq03hqT09PR3KoiIiIhI29QKSLNnz+ZVbERERFTmqRWQ/Pz8UKVKlZKqhYiIiOi9UOw5SJx/RERERP8VvIqNiIiISKLYp9jkcnlJ1kFERET03uCX1RIRERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJMCARERERSTAgEREREUkwIBERERFJaD0grV27Fo6OjjA0NIS7uztiYmJe23/37t2oXbs2DA0N0aBBAxw6dEhhuSAICA4Oho2NDYyMjODl5YVr164p9Jk/fz6aN28OY2NjWFhYaHqXiIiI6AOn1YC0c+dOBAUFYebMmTh37hwaNWoEb29vpKSkqOwfGRmJvn37YsiQIYiPj4evry98fX1x6dIlsc/ixYuxevVqhISEIDo6GiYmJvD29kZubq7YJz8/H7169cKIESNKfB+JiIjow6PVgLR8+XIMGzYMAQEBqFu3LkJCQmBsbIwNGzao7L9q1Sp07NgREydORJ06dTB37lw0btwYa9asAfDy6NHKlSsxffp0dO/eHQ0bNsSWLVvw8OFDhIaGiuPMnj0bX375JRo0aFAau0lEREQfGK0FpPz8fMTFxcHLy+vfYnR04OXlhaioKJXrREVFKfQHAG9vb7H/rVu3kJSUpNDH3Nwc7u7uRY5JREREJFVOWxtOS0tDQUEBrKysFNqtrKxw+fJlleskJSWp7J+UlCQuL2wrqs/bysvLQ15envg8KyvrncYjIiKi95fWJ2l/KBYuXAhzc3PxYW9vr+2SiIiIqIRoLSBVrlwZurq6SE5OVmhPTk6GtbW1ynWsra1f27/wT3XGLK4pU6YgMzNTfNy7d++dxiMiIqL3l9YCkr6+Ptzc3BARESG2yeVyREREwMPDQ+U6Hh4eCv0BIDw8XOzv5OQE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p06Fs7MzQkNDUb9+fbHPpEmTkJOTg+HDhyMjIwMtW7ZEWFgYDA0NxT7btm3D6NGj0a5dO+jo6OB///sfVq9eXXo7TkRERO8trd8Hiaik5eXlYeHChZgyZYrSaVIiIk3g+0zZw4BEREREJKH1rxohIiIiet8wIBERERFJMCARERERSTAgEREREUkwIFGZderUKXTt2hW2traQyWQIDQ3VdklEVIYUFBRgxowZcHJygpGREWrUqIG5c+e+8Tu+6MOg9fsgEZWUnJwcNGrUCIMHD0bPnj21XQ4RlTGLFi3Cd999h82bN6NevXqIjY1FQEAAzM3NMXbsWG2XR++IAYnKrE6dOqFTp07aLoOIyqjIyEh0794dPj4+AABHR0f8/PPPiImJ0XJlpAk8xUZERPQWmjdvjoiICFy9ehUAcP78efz555/8h1kZwSNIREREb2Hy5MnIyspC7dq1oauri4KCAsyfPx/9+/fXdmmkAQxIREREb2HXrl3Ytm0btm/fjnr16iEhIQGBgYGwtbWFv7+/tsujd8SARERE9BYmTpyIyZMnw8/PDwDQoEED3LlzBwsXLmRAKgM4B4mIiOgtPH36FDo6ih+jurq6kMvlWqqINIlHkKjMys7OxvXr18Xnt27dQkJCAipWrIhq1appsTIiKgu6du2K+fPno1q1aqhXrx7i4+OxfPlyDB48WNulkQbIBN7RisqokydPok2bNkrt/v7+2LRpU+kXRERlypMnTzBjxgz8+uuvSElJga2tLfr27Yvg4GDo6+truzx6RwxIRERERBKcg0REREQkwYBEREREJMGARERERCTBgEREREQkwYBEREREJMGARERERCTBgEREREQkwYBERPQOZs2aBRcXF22XIbp9+zZkMhkSEhK0XQrRB40BiYjeyr179zB48GDY2tpCX18fDg4OGDduHB4/fqyVegYNGgSZTIYvvvhCadmoUaMgk8kwaNAgpf4ymQz6+vqoWbMm5syZgxcvXhS5DZlMhtDQ0BKonojeNwxIRKS2mzdvokmTJrh27Rp+/vlnXL9+HSEhIYiIiICHhwfS09O1Upe9vT127NiBZ8+eiW25ubnYvn27yu/f69ixIx49eoRr165h/PjxmDVrFpYsWVLidebn55f4Nojo3TAgEZHaRo0aBX19fRw9ehSenp6oVq0aOnXqhGPHjuHBgweYNm2a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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_infer',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_8_infer',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_gpu_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'cgdrag_torch_implicit_1_infer',\n", + " 'cgdrag_torch_implicit_1_nograd',\n", + " 'cgdrag_torch_implicit_8_infer',\n", + " 'cgdrag_torch_implicit_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_gpu_100k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nUuXLmHQoEEIDg7G/PnzX1ivq6sLY2NjuQcREb2ali1bhq1btyIjI0NuPCMjA71795Yb6927N65evYry8vJKt9WsWTOkp6cjPT0dpqamKC0tlVveo0cPuefl5eVYvHgxHB0dYWZmBiMjIxw+fBi3b98GAFy/fh2lpaVwdXUV1zEzM5MLbs9zcnKCvb099u3bh82bN2Ps2LEKN7ZnZGRAS0tLbpvNmjXDa6+9Jr4GGRkZcssBwM3NTe75+fPnERkZKRcaJ02ahPv37+PRo0eV9qcuagtROjo6cHFxQWJiojgmk8mQmJio8IJWcHNzk6sHgISEBLHezs4OFhYWcjWFhYVITk6ucptVuXjxIgYMGICAgIB6eQqRiIjqt379+sHT0xNz585Vaj17e3sAwOXL//tkoKamJtq3b4/27dtX+qk8Q0NDuefLly/HmjVr8PHHH+P48eNIT0+Hp6enQvhSRlBQEDZs2IB9+/ZVeimvthQVFWHRokViaExPT8cff/yBq1evip+yry/UOsXBzJkzERAQgB49eqBnz55YvXo1iouLERgYCAAYN24crK2txZvzZsyYAXd3d6xcuRJeXl7YtWsXUlNTsWnTJgDPrhGHhIRgyZIlsLe3F6c4sLKygo+Pj7jf27dvIy8vD7dv30Z5eTnS09MBAO3bt4eRkREuXLiAgQMHwtPTEzNnzhTvp9LU1ESLFi3+vReIiIgatM8++wzOzs5yZ3g6deokd5M2AJw6dQodOnSApqYmunXrho4dO2LFihUYPXp0lfdFVefUqVPw9vbG+++/D+DZSYorV67AwcEBANCuXTtoa2sjOTkZrVu3BvDspvArV67A3d290m2+9957CA0NhZOTk7id53Xq1AlPnz5FcnIyevXqBQB48OABLl++LNZ36tQJycnJcuv99ttvcs+7d++Oy5cvo3379kof979NrSFqzJgxyMnJQUREBKRSKZydnREfHy/eGH779m25X55evXph586dmD9/Pj755BPY29sjLi5OnCMKAObMmYPi4mIEBwcjPz8fffr0QXx8vFx6jYiIwNatW8Xn3bp1AwAcP34c/fv3x759+5CTk4Nvv/0W3377rVjXpk0b3Lx5s65eDiIiamQcHR3h7++PtWvXimOzZs3C66+/jsWLF2PMmDFISkrC+vXrxfucJBIJtmzZgsGDB6N3796YO3cu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Jk3kPqWmo6ODN954A5MmTar9DomIiIjqoRqHqC1btgAAbG1tERoaykt3RERE9EpT+rvzFixYUBd9EBERETUoSocoANi3bx/27NmD27dvo7S0VG7Z2bNna6UxIiIiovpM6U/nrV27FoGBgTA3N8e5c+fQs2dPNGvWDH/99ReGDRtWFz0SERER1TtKh6gvvvgCmzZtwrp166Cjo4M5c+YgISEB06dPR0FBQV30SERERFTvKB2ibt++LU5loK+vj4cPHwIAxo4di++++652uyMiIiKqp5QOURYWFuKM5a1bt8Zvv/0GALhx40alX0pMRERE1BgpHaIGDhyIAwcOAAACAwPx0UcfYfDgwRgzZgzeeuutWm+QiIiIqD5S+tN5mzZtgkwmAwBMmTIFzZo1w+nTp/Hmm2/iP//5T603SERERFQfKRWinj59ik8//RRBQUFo1aoVAMDX1xe+vr510hwRERFRfaXU5TwtLS1ER0fj6dOnddUPERERUYOg9D1RgwYNws8//1wXvRARERE1GErfEzVs2DCEhYXhjz/+gIuLi8J36L355pu11hwRERFRfaV0iPrwww8BAKtWrVJYJpFIUF5e/vJdEREREdVzSoeoik/mEREREb3KlL4n6nklJSW11QcRERFRg6J0iCovL8fixYthbW0NIyMj/PXXXwCA8PBwfPPNN7XeIBEREVF9pHSIWrp0KWJjYxEdHQ0dHR1xvEuXLvj6669rtTkiIiKi+krpELVt2zZs2rQJ/v7+0NTUFMednJzw559/1mpzRERERPWV0iHq7t27aN++vcK4TCZDWVlZrTRFREREVN8pHaIcHBxw8uRJhfF9+/ahW7dutdIUERERUX2n9BQHERERCAgIwN27dyGTyfD999/j8uXL2LZtGw4ePFgXPRIRERHVO0qfifL29saPP/6Io0ePwtDQEBEREcjIyMCPP/6IwYMH10WPRERERPWO0meiAKBv375ISEio7V6IiIiIGgylz0S1bdsWDx48UBjPz89H27Zta6UpIiIiovpO6RB18+bNSr8f78mTJ7h7926tNEVERERU39X4ct6BAwfE/3348GGYmJiIz8vLy5GYmAhbW9tabY6IiIiovqpxiPLx8QEASCQSBAQEyC3T1taGra0tVq5cWavNEREREdVXNQ5RMpkMAGBnZ4czZ86gefPmddYUERERUX2n9Kfzbty4URd9EBERETUoNQpRa9euRXBwMPT09LB27dpqa6dPn14rjRERERHVZzUKUZ9//jn8/f2hp6eHzz//vMo6iUTCEEVERESvhBqFqOcv4fFyHhEREZEK80QREREREUMUERERkUoYooiIiIhUwBBFREREpAKlQtTTp08RGRmJO3fu1FU/RERERA2CUiFKS0sLy5cvx9OnT+uqHyIiIqIGQenLeQMHDsTPP/9cF70QERERNRhKh6hhw4YhLCwMoaGh+O6773DgwAG5h7I2bNgAW1tb6OnpwdXVFSkpKdXW7927Fx07doSenh4cHR1x6NAhueWCICAiIgKWlpbQ19eHh4cHrl69KleTl5cHf39/GBsbw9TUFBMmTEBRUZHCdlasWIEOHTpAV1cX1tbWWLp0qdLHR0RERI2T0t+d9+GHHwIAVq1apbBMIpGgvLy8xtvavXs3Zs6ciZiYGLi6umL16tXw9PTE5cuX0bJlS4X606dPw8/PD1FRURgxYgR27twJHx8fnD17Fl26dAEAREdHY+3atdi6dSvs7OwQHh4OT09PXLp0CXp6egAAf39/3L9/HwkJCSgrK0NgYCCCg4Oxc+dOcV8zZszAkSNHsGLFCjg6OiIvLw95eXlKvVZERETUeEkEQRDUtXNXV1e8/vrrWL9+PQBAJpPBxsYG06ZNQ1hYmEL9mDFjUFxcjIMHD4pjb7zxBpydnRETEwNBEGBlZYVZs2YhNDQUAFBQUABzc3PExsbC19cXGRkZcHBwwJkzZ9CjRw8AQHx8PIYPH447d+7AysoKGRkZ6Nq1Ky5cuIDXXntN5eMrLCyEiYkJCgoKYGxsrPJ2KtNz6dFa3R4BKbpT1N1C4xJ6Wd0d0Evi+0zt4ntMHaij95ma/v1+qSkOSkpKVF63tLQUaWlp8PDw+F8zGhrw8PBAUlJSpeskJSXJ1QOAp6enWH/jxg1IpVK5GhMTE7i6uoo1SUlJMDU1FQMUAHh4eEBDQwPJyckAgB9//BFt27bFwYMHYWdnB1tbW0ycOPGFZ6KePHmCwsJCuQcRERE1TkqHqPLycixevBjW1tYwMjLCX3/9BQAIDw/HN998U+Pt5Obmory8HObm5nLj5ubmkEqlla4jlUqrra/4+aKaf14q1NLSgpmZmVjz119/4datW9i7dy+2bduG2NhYpKWl4Z133qn2mKKiomBiYiI+bGxsqq0nIiKihkvpELV06VLExsYiOjoaOjo64niXLl3w9ddf12pz6iKTyfDkyRNs27YNffv2Rf/+/fHNN9/g+PHjuHy56lOHc+fORUFBgfjIzMz8F7smIiKif5PSIWrbtm3YtGkT/P39oampKY47OTnhzz//rPF2mjdvDk1NTWRlZcmNZ2VlwcLCotJ1LCwsqq2v+PmimuzsbLnlT58+RV5enlhjaWkJLS0tdOjQQazp1KkTAOD27dtVHpOuri6MjY3lHkRERNQ4KR2i7t69i/bt2yuMy2QylJWV1Xg7Ojo6cHFxQWJiotw2EhMT4ebmVuk6bm5ucvUAkJCQINbb2dnBwsJCrqawsBDJyclijZubG/Lz85GWlibWHDt2DDKZDK6urgCA3r174+nTp7h+/bpYc+XKFQBAmzZtanyMRERE1HgpHaIcHBxw8uRJhfF9+/ahW7duSm1r5syZ+Oqrr7B161ZkZGRg8uTJKC4uRmBgIABg3LhxmDt3rlg/Y8YMxMfHY+XKlfjzzz+xcOFCpKamYurUqQCeTbEQEhKCJUuW4MCBA/jjjz8wbtw4WFlZwcfHB8CzM0pDhw7FpEmTkJKSglOnTmHq1Knw9fWFlZUVgGc3mnfv3h1BQUE4d+4c0tLS8J///AeDBw+WOztFREREry6l54mKiIhAQEAA7t69C5lMhu+//x6XL1/Gtm3b5KYeqIkxY8YgJycHERERkEqlcHZ2Rnx8vHhj+O3bt6Gh8b+c16tXL+zcuRPz58/HJ598Ant7e8TFxYlzRAHAnDlzUFxcjODgYOTn56NPnz6Ij48X54gCgB07dmDq1KkYNGgQNDQ0MGrUKKxdu1ZcrqGhgR9//BHTpk1Dv379YGhoiGHDhmHlypXKvlxERETUSKk0T9TJkycRGRmJ8+fPo6ioCN27d0dERASGDBlSFz02WJwnqmHhHC61jPNENXh8n6ldfI+pA2qeJ0rpM1EA0LdvXyQkJKjcHBEREVFDp1KIAoDU1FRkZGQAeHaflIuLS601RURERFTfKR2i7ty5Az8/P5w6dQqmpqYAgPz8fPTq1Qu7du1Cq1atartHIiIionpH6U/nTZw4EWVlZcjIyBC/lDcjIwMymQwTJ06six6JiIiI6h2lz0T9/PPPOH36tNwX87722mtYt24d+vbtW6vNEREREdVXSp+JsrGxqXRSzfLycnGeJSIiIqLGTukQtXz5ckybNg2pqaniWGpqKmbMmIEVK1bUanNERERE9ZXSl/PGjx+PR48ewdXVFVpaz1Z/+vQptLS0EBQUhKCgILE2Ly+v9jolIiIiqkeUDlGrV6+ugzaIiIiIGhalQ1RAQEBd9EFERETUoCh9TxQRERERMUQRERERqYQhioiIiEgFDFFEREREKlA5RF27dg2HDx/G48ePAQCCINRaU0RERET1ndIh6sGDB/Dw8ECHDh0wfPhw3L9/HwAwYcIEzJo1q9YbJCIiIqqPlA5RH330EbS0tHD79m0YGBiI42PGjEF8fHytNkdERERUXyk9T9SRI0dw+PBhtGrVSm7c3t4et27dqrXGiIiIiOozpc9EFRcXy52BqpCXlwddXd1aaYqIiIiovlM6RPXt2xfbtm0Tn0skEshkMkRHR2PAgAG12hwRERFRfaX05bzo6GgMGjQIqampKC0txZw5c3Dx4kXk5eXh1KlTddEjERERUb2j9JmoLl264MqVK+jTpw+8vb1RXFyMt99+G+fOnUO7du3qokciIiKiekfpM1EAYGJignnz5tV2L0REREQNhkohqqSkBL///juys7Mhk8nklr355pu10hgRERFRfaZ0iIqPj8e4ceOQm5ursEwikaC8vLxWGiMiIiKqz5S+J2ratGl49913cf/+fchkMrkHAxQRERG9KpQOUVlZWZg5cybMzc3roh8iIiKiBkHpEPXOO+/gxIkTddAKERERUcOh9D1R69evx7vvvouTJ0/C0dER2tracsunT59ea80RERER1VdKh6jvvvsOR44cgZ6eHk6cOAGJRCIuk0gkDFFERET0SlA6RM2bNw+LFi1CWFgYNDSUvhpIRERE1CgonYJKS0sxZswYBigiIiJ6pSmdhAICArB79+666IWIiIiowVD6cl55eTmio6Nx+PBhdO3aVeHG8lWrVtVac0RERET1ldIh6o8//kC3bt0AABcuXJBb9vxN5kRERESNmdIh6vjx43XRBxEREVGDwrvDiYiIiFRQozNRb7/9NmJjY2FsbIy333672trvv/++VhojIiIiqs9qFKJMTEzE+51MTEzqtCEiIiKihqBGIWrLli2IjIxEaGgotmzZUtc9EREREdV7Nb4natGiRSgqKqrLXoiIiIgajBqHKEEQ6rIPIiIiogZFqU/ncR4oIiIi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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_infer',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_8_infer',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_gpu_10k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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+8TLfEREREQ1nZayK3Tv3h0ZGRnIyclBnTp1xPExY8agVq1aFdocERERUVWldIgCAE1NTbkABQB2dnYV0Q8RERFRtcDJNomIiIhUwBBFREREpAKGKCIiIiIVlDtEDRs2DLt370Zubm5l9kNERERULZQ7RDVp0gRfffUV6tevj759+2LNmjW4f/9+ZfZGREREVGWVO0QFBQUhMTER169fR//+/bFnzx40btwYzs7OWLhwIc6dO1eJbRIRERFVLUrfE9WgQQN89tlnOHDgAB4+fIgvvvgCV69eRc+ePWFra4vx48fj0qVLldErERERUZXxRjeW165dG4MHD8aWLVvw8OFDrF+/HpqamoiNja2o/oiIiIiqJJUm2yyJpqYm3N3d4e7uXlGbJCIiIqqyOMUBERERkQoYooiIiIhUwBBFREREpAKGKCIiIiIVqHRjeUxMDGJiYpCeng6ZTCa3bP369RXSGBEREVFVpnSIWrBgARYuXIh27drB0tISEomkMvoiIiIiqtKUDlHh4eGIiIjA0KFDK6MfIiIiompB6XuiCgoK0KlTp8rohYiIiKjaUDpEjRo1Clu3bq2MXoiIiIiqDaUv5+Xn52Pt2rU4dOgQWrduDW1tbbnly5cvr7DmiIiIiKoqpUPUhQsX4OTkBABISkqSW8abzImIiOi/QukQdeTIkcrog4iIiKhaeaPJNu/du4d79+5VVC9ERERE1YbSIUomk2HhwoUwNjaGra0tbG1tYWJigkWLFilMvElERERUUyl9OW/OnDn46aef8PXXX6Nz584AgD///BPz589Hfn4+goODK7xJIiIioqpG6RC1ceNGrFu3Du+//7441rp1a1hbW+Ozzz5jiCIiIqL/BKUv52VmZqJZs2YK482aNUNmZmaFNEVERERU1Skdotq0aYNVq1YpjK9atQpt2rSpkKaIiIiIqjqlL+eFhobCy8sLhw4dgqurKwAgNjYWqamp2L9/f4U3SERERFQVKX0mys3NDdeuXcOAAQOQlZWFrKwsDBw4EFevXkXXrl0ro0ciIiKiKkeleaKsrKwQHByM3bt3Y/fu3Vi8eDGsrKxUamD16tWws7ODnp4eXFxcEB8fX2b9zp070axZM+jp6cHR0VHh7JcgCAgKCoKlpSX09fXh4eGB69evy9VkZmbC398fRkZGMDExwciRI5GbmytXc+DAAXTs2BG1a9dG/fr18cEHH+D27dsqHSMRERHVPOUKURcuXBDngLpw4UKZD2Vs374dU6ZMwbx583DmzBm0adMGnp6eSE9PL7H+1KlT8PPzw8iRI3H27Fn4+PjAx8dH7utnQkNDsXLlSoSHhyMuLg4GBgbw9PREfn6+WOPv749Lly4hOjoakZGROH78OMaMGSMuT0lJgbe3N3r27Ilz587hwIEDyMjIwMCBA5U6PiIiIqq5JIIgCK8r0tDQgFQqhZmZGTQ0NCCRSFDSahKJBEVFReXeuYuLC9q3by/eqC6TyWBjY4MJEyZg5syZCvVDhgxBXl4eIiMjxbGOHTvCyckJ4eHhEAQBVlZWmDp1KqZNmwYAyM7Ohrm5OSIiIuDr64vk5GS0aNECp0+fRrt27QAAUVFReO+993Dv3j1YWVlh165d8PPzw7Nnz6Ch8SJn/vbbb/D29sazZ88UvnS5NDk5OTA2NkZ2djaMjIzK/bqUR4fgQxW6PQLidcepu4WaZdpVdXdAb4jvMxWL7zGVoJLeZ8r7+7tcZ6JSUlJQv3598b9v3bqFlJQUhcetW7fK3WBBQQESExPh4eHxbzMaGvDw8EBsbGyJ68TGxsrVA4Cnp6dYn5KSAqlUKldjbGwMFxcXsSY2NhYmJiZigAIADw8PaGhoIC4uDgDg7OwMDQ0NbNiwAUVFRcjOzsbmzZvh4eFRZoB69uwZcnJy5B5ERERUM5UrRNna2kIikQAA7ty5A2tra/ErX4of1tbWuHPnTrl3nJGRgaKiIpibm8uNm5ubQyqVlriOVCots774z9fVmJmZyS3X0tKCqampWGNvb4+DBw9i9uzZ0NXVhYmJCe7du4cdO3aUeUwhISEwNjYWHzY2NmXWExERUfWl9I3lPXr0KHFSzezsbPTo0aNCmlI3qVSK0aNHIyAgAKdPn8axY8ego6ODQYMGlXgZs9isWbOQnZ0tPlJTU99i10RERPQ2KT1PlCAI4lmplz169AgGBgbl3k69evWgqamJtLQ0ufG0tDRYWFiUuI6FhUWZ9cV/pqWlwdLSUq7GyclJrHn1xvXnz58jMzNTXH/16tUwNjZGaGioWPPzzz/DxsYGcXFx6NixY4n96erqQldX93WHTkRERDVAuUNU8SfTJBIJhg8fLhcWioqKcOHCBXTq1KncO9bR0YGzszNiYmLg4+MD4MWN5TExMRg/fnyJ67i6uiImJgaTJ08Wx6Kjo8VJP+3t7WFhYYGYmBgxNOXk5CAuLg5jx44Vt5GVlYXExEQ4OzsDAA4fPgyZTAYXFxcAwJMnT8QbyotpamqKPRIRERGVO0QZGxsDeHEmqnbt2tDX1xeX6ejooGPHjhg9erRSO58yZQoCAgLQrl07dOjQAWFhYcjLy0NgYCAAYNiwYbC2tkZISAgAYNKkSXBzc8M333wDLy8vbNu2DQkJCVi7di2AFwFv8uTJWLx4MRwcHGBvb4+5c+fCyspKDGrNmzdHnz59MHr0aISHh6OwsBDjx4+Hr6+vONeVl5cXVqxYgYULF8LPzw+PHz/G7NmzYWtri7Zt2yp1jERERFQzlTtEbdiwAQBgZ2eHadOmKXXprjRDhgzBw4cPERQUBKlUCicnJ0RFRYk3ht+9e1fujFCnTp2wdetWfPnll5g9ezYcHBywZ88etGrVSqyZMWMG8vLyMGbMGGRlZaFLly6IioqCnp6eWLNlyxaMHz8e7u7u0NDQwAcffICVK1eKy3v27ImtW7ciNDQUoaGhqFWrFlxdXREVFSUXHomIiOi/q1zzRJFqOE9U9cI5XCoY54mq9vg+U7H4HlMJ1DxPlNI3lgPArl27sGPHDty9excFBQVyy86cOaPKJomIiIiqFaWnOFi5ciUCAwNhbm6Os2fPokOHDqhbty5u3bqFvn37VkaPRERERFWO0iHq+++/x9q1a/Hdd99BR0cHM2bMQHR0NCZOnIjs7OzK6JGIiIioylE6RN29e1ecykBfXx+PHz8GAAwdOhS//PJLxXZHREREVEUpHaIsLCzEGcsbNmyIv/76C8CL763jPepERET0X6F0iOrZsyf27dsHAAgMDMTnn3+OXr16YciQIRgwYECFN0hERERUFSn96by1a9eKs3aPGzcOdevWxalTp/D+++/jk08+qfAGiYiIiKoipULU8+fP8dVXX2HEiBFo0KABAMDX1xe+vr6V0hwRERFRVaXU5TwtLS2Ehobi+fPnldUPERERUbWg9D1R7u7uOHbsWGX0QkRERFRtKH1PVN++fTFz5kxcvHgRzs7OCt+h9/7771dYc0RERERVldIh6rPPPgMALF++XGGZRCJBUVHRm3dFREREVMUpHaKKP5lHRERE9F+m9D1RL8vPz6+oPoiIiIiqFaVDVFFRERYtWgRra2sYGhri1q1bAIC5c+fip59+qvAGiYiIiKoipUNUcHAwIiIiEBoaCh0dHXG8VatWWLduXYU2R0RERFRVKR2iNm3ahLVr18Lf3x+amprieJs2bXDlypUKbY6IiIioqlI6RN2/fx9NmjRRGJfJZCgsLKyQpoiIiIiqOqVDVIsWLXDixAmF8V27dqFt27YV0hQRERFRVaf0FAdBQUEICAjA/fv3IZPJ8Ouvv+Lq1avYtGkTIiMjK6NHIiIioipH6TNR3t7e+O2333Do0CEYGBggKCgIycnJ+O2339CrV6/K6JGIiIioylH6TBQAdO3aFdHR0RXdCxEREVG1ofSZqEaNGuHRo0cK41lZWWjUqFGFNEVERERU1Skdom7fvl3i9+M9e/YM9+/fr5CmiIiIiKq6cl/O27dvn/jfBw4cgLGxsfi8qKgIMTExsLOzq9DmiIiIiKqqcocoHx8fAIBEIkFAQIDcMm1tbdjZ2eGbb76p0OaIiIiIqqpyhyiZTAYAsLe3x+nTp1GvXr1Ka4qIiIioqlP603kpKSmV0QcRERFRtVKuELVy5UqMGTMGenp6WLlyZZm1EydOrJDGiIiIiKqycoWoFStWwN/fH3p6elixYkWpdRKJhCGKiIiI/hPKFaJevoTHy3lEREREKswTRUREREQMUUREREQqYYgiIiIiUgFDFBEREZEKlApRz58/x8KFC3Hv3r3K6oeIiIioWlAqRGlpaWHp0qV4/vx5ZfVDREREVC0ofTmvZ8+eOHbsWGX0QkRERFRtKP21L3379sXMmTNx8eJFODs7w8DAQG75+++/X2HNEREREVVVSoeozz77DACwfPlyhWUSiQRFRUVv3hURERFRFad0iJLJZJXRBxEREVG18kZTHOTn51dUH0RERETVitIhqqioCIsWLYK1tTUMDQ1x69YtAMDcuXPx008/VXiDRERERFWR0iEqODgYERERCA0NhY6OjjjeqlUrrFu3TukGVq9eDTs7O+jp6cHFxQXx8fFl1u/cuRPNmjWDnp4eHB0dsX//frnlgiAgKCgIlpaW0NfXh4eHB65fvy5Xk5mZCX9/fxgZGcHExAQjR45Ebm6uwnaWLVuGpk2bQldXF9bW1ggODlb6+IiIiKhmUjpEbdq0CWvXroW/vz80NTXF8TZt2uDKlStKbWv79u2YMmUK5s2bhzNnzqBNmzbw9PREenp6ifWnTp2Cn58fRo4cibNnz8LHxwc+Pj5ISkoSa0JDQ7Fy5UqEh4cjLi4OBgYG8PT0lLv06O/vj0uXLiE6OhqRkZE4fvw4xowZI7evSZMmYd26dVi2bBmuXLmCffv2oUOHDkodHxEREdVcEkEQBGVW0NfXx5UrV2Bra4vatWvj/PnzaNSoES5fvowOHToonNEpi4uLC9q3b49Vq1YBeHHTuo2NDSZMmICZM2cq1A8ZMgR5eXmIjIwUxzp27AgnJyeEh4dDEARYWVlh6tSpmDZtGgAgOzsb5ubmiIiIgK+vL5KTk9GiRQucPn0a7dq1AwBERUXhvffew71792BlZYXk5GS0bt0aSUlJeOedd5R5eeTk5OTA2NgY2dnZMDIyUnk7JekQfKhCt0dAvO44dbdQs0y7qu4O6A3xfaZi8T2mElTS+0x5f38rfSaqRYsWOHHihML4rl270LZt23Jvp6CgAImJifDw8Pi3GQ0NeHh4IDY2tsR1YmNj5eoBwNPTU6xPSUmBVCqVqzE2NoaLi4tYExsbCxMTEzFAAYCHhwc0NDQQFxcHAPjtt9/QqFEjREZGwt7eHnZ2dhg1ahQyMzPLPKZnz54hJydH7kFEREQ1k9JTHAQFBSEgIAD379+HTCbDr7/+iqtXr2LTpk1yZ4heJyMjA0VFRTA3N5cbNzc3L/WyoFQqLbFeKpWKy4vHyqoxMzOTW66lpQVTU1Ox5tatW7hz5w527tyJTZs2oaioCJ9//jkGDRqEw4cPl3pMISEhWLBgwesOnYiIiGoApc9EeXt747fffsOhQ4dgYGCAoKAgJCcn47fffkOvXr0qo8e3TiaT4dmzZ9i0aRO6du2K7t2746effsKRI0dw9Wrppw5nzZqF7Oxs8ZGamvoWuyYiIqK3SekzUQDQtWtXREdHv9GO69WrB01NTaSlpcmNp6WlwcLCosR1LCwsyqwv/jMtLQ2WlpZyNU5OTmLNqzeuP3/+HJmZmeL6lpaW0NLSQtOmTcWa5s2bAwDu3r1b6n1Surq60NXVLfO4iYiIqGZQebLNhIQEbN68GZs3b0ZiYqLS6+vo6MDZ2RkxMTHimEwmQ0xMDFxdXUtcx9XVVa4eAKKjo8V6e3t7WFhYyNXk5OQgLi5OrHF1dUVWVpZcz4cPH4ZMJoOLiwsAoHPnznj+/Dlu3rwp1ly7dg0AYGtrq/SxEhERUc2j9Jmoe/fuwc/PDydPnoSJiQkAICsrC506dcK2bdvQoEGDcm9rypQpCAgIQLt27dChQweEhYUhLy8PgYGBAIBhw4bB2toaISEhAF5MO+Dm5oZvvvkGXl5e2LZtGxISErB27VoAL767b/LkyVi8eDEcHBxgb2+PuXPnwsrKCj4+PgBenFHq06cPRo8ejfDwcBQWFmL8+PHw9fWFlZUVgBc3mr/77rsYMWIEwsLCIJPJMG7cOPTq1Uvu7BQRERH9dyl9JmrUqFEoLCxEcnIyMjMzkZmZieTkZMhkMowaNUqpbQ0ZMgTLli1DUFAQnJyccO7cOURFRYk3ht+9excPHjwQ6zt16oStW7di7dq1aNOmDXbt2oU9e/agVatWYs2MGTMwYcIEjBkzBu3bt0dubi6ioqKgp6cn1mzZsgXNmjWDu7s73nvvPXTp0kUMYsCLTwn+9ttvqFevHrp16wYvLy80b94c27ZtU/blIiIiohpKpXmiTp06pTCdQWJiIrp27YonT55UaIPVGeeJql44h0sF4zxR1R7fZyoW32MqQXWbJ8rGxgaFhYUK40VFReLlMCIiIqKaTukQtXTpUkyYMAEJCQniWEJCAiZNmoRly5ZVaHNEREREVZXSN5YPHz4cT548gYuLC7S0Xqz+/PlzaGlpYcSIERgxYoRY+7oZvomIiIiqK6VDVFhYWCW0QURERFS9KB2iAgICKqMPIiIiompF5ck2iYiIiP7LGKKIiIiIVMAQRURERKQChigiIiIiFagcom7cuIEDBw7g6dOnAAAlJz4nIiIiqtaUDlGPHj2Ch4cHmjZtivfee0/8bruRI0di6tSpFd4gERERUVWkdIj6/PPPoaWlhbt376JWrVri+JAhQxAVFVWhzRERERFVVUrPE3Xw4EEcOHAADRo0kBt3cHDAnTt3KqwxIiIioqpM6TNReXl5cmegimVmZkJXV7dCmiIiIiKq6pQOUV27dsWmTZvE5xKJBDKZDKGhoejRo0eFNkdERERUVSl9OS80NBTu7u5ISEhAQUEBZsyYgUuXLiEzMxMnT56sjB6JiIiIqhylz0S1atUK165dQ5cuXeDt7Y28vDwMHDgQZ8+eRePGjSujRyIiIqIqR+kzUQBgbGyMOXPmVHQvRERERNWGSiEqPz8fFy5cQHp6OmQymdyy999/v0IaIyIiIqrKlA5RUVFRGDZsGDIyMhSWSSQSFBUVVUhjRERERFWZ0vdETZgwAR9++CEePHgAmUwm92CAIiIiov8KpUNUWloapkyZAnNz88roh4iIiKhaUDpEDRo0CEePHq2EVoiIiIiqD6XviVq1ahU+/PBDnDhxAo6OjtDW1pZbPnHixAprjoiIiKiqUjpE/fLLLzh48CD09PRw9OhRSCQScZlEImGIIiIiov8EpUPUnDlzsGDBAsycORMaGkpfDSQiIiKqEZROQQUFBRgyZAgDFBEREf2nKZ2EAgICsH379srohYiIiKjaUPpyXlFREUJDQ3HgwAG0bt1a4cby5cuXV1hzRERERFWV0iHq4sWLaNu2LQAgKSlJbtnLN5kTERER1WRKh6gjR45URh9ERERE1QrvDiciIiJSQbnORA0cOBAREREwMjLCwIEDy6z99ddfK6QxIiIioqqsXCHK2NhYvN/J2Ni4UhsiIiIiqg7KFaI2bNiAhQsXYtq0adiwYUNl90RERERU5ZX7nqgFCxYgNze3MnshIiIiqjbKHaIEQajMPoiIiIiqFaU+ncd5oIiIiIheUGqeqKZNm742SGVmZr5RQ0RERETVgVIhasGCBfx0HhERERGUDFG+vr4wMzOrrF6IiIiIqo1y3xPF+6GIiIiI/lUlPp23evVq2NnZQU9PDy4uLoiPjy+zfufOnWjWrBn09PTg6OiI/fv3K/QaFBQES0tL6Ovrw8PDA9evX5eryczMhL+/P4yMjGBiYoKRI0eWOoXDjRs3ULt2bZiYmLzRcRIREVHNUe4QJZPJKuVS3vbt2zFlyhTMmzcPZ86cQZs2beDp6Yn09PQS60+dOgU/Pz+MHDkSZ8+ehY+PD3x8fJCUlCTWhIaGYuXKlQgPD0dcXBwMDAzg6emJ/Px8scbf3x+XLl1CdHQ0IiMjcfz4cYwZM0Zhf4WFhfDz80PXrl0r/NiJiIio+lL7FxAvX74co0ePRmBgIFq0aIHw8HDUqlUL69evL7H+22+/RZ8+fTB9+nQ0b94cixYtwrvvvotVq1YBeHEWKiwsDF9++SW8vb3RunVrbNq0CX///Tf27NkDAEhOTkZUVBTWrVsHFxcXdOnSBd999x22bduGv//+W25/X375JZo1a4bBgwdX6utARERE1YtaQ1RBQQESExPh4eEhjmloaMDDwwOxsbElrhMbGytXDwCenp5ifUpKCqRSqVyNsbExXFxcxJrY2FiYmJigXbt2Yo2Hhwc0NDQQFxcnjh0+fBg7d+7E6tWr3/xgiYiIqEZR6tN5FS0jIwNFRUUwNzeXGzc3N8eVK1dKXEcqlZZYL5VKxeXFY2XVvHppUktLC6ampmLNo0ePMHz4cPz8888wMjIq1/E8e/YMz549E5/n5OSUaz0iIiKqftR+Oa+qGj16ND766CN069at3OuEhITA2NhYfNjY2FRih0RERKROag1R9erVg6amJtLS0uTG09LSYGFhUeI6FhYWZdYX//m6mldvXH/+/DkyMzPFmsOHD2PZsmXQ0tKClpYWRo4ciezsbGhpaZV6v9asWbOQnZ0tPlJTU8vzMhAREVE1pNYQpaOjA2dnZ8TExIhjMpkMMTExcHV1LXEdV1dXuXoAiI6OFuvt7e1hYWEhV5OTk4O4uDixxtXVFVlZWUhMTBRrDh8+DJlMBhcXFwAv7ps6d+6c+Fi4cCFq166Nc+fOYcCAASX2pqurCyMjI7kHERER1UxqvScKAKZMmYKAgAC0a9cOHTp0QFhYGPLy8hAYGAgAGDZsGKytrRESEgIAmDRpEtzc3PDNN9/Ay8sL27ZtQ0JCAtauXQvgxaSgkydPxuLFi+Hg4AB7e3vMnTsXVlZW8PHxAQA0b94cffr0wejRoxEeHo7CwkKMHz8evr6+sLKyEmtelpCQAA0NDbRq1eotvTJERERUlak9RA0ZMgQPHz5EUFAQpFIpnJycEBUVJd4YfvfuXWho/HvCrFOnTti6dSu+/PJLzJ49Gw4ODtizZ49cuJkxYwby8vIwZswYZGVloUuXLoiKioKenp5Ys2XLFowfPx7u7u7Q0NDABx98gJUrV769AyciIqJqTSJU5lTk/3E5OTkwNjZGdnZ2hV/a6xB8qEK3R0C87jh1t1CzTLuq7g7oDfF9pmLxPaYSVNL7THl/f/PTeUREREQqYIgiIiIiUgFDFBEREZEKGKKIiIiIVMAQRURERKQChigiIiIiFTBEEREREamAIYqIiIhIBQxRRERERCpgiCIiIiJSAUMUERERkQoYooiIiIhUwBBFREREpAKGKCIiIiIVMEQRERERqYAhioiIiEgFDFFEREREKmCIIiIiIlIBQxQRERGRChiiiIiIiFTAEEVERESkAoYoIiIiIhUwRBERERGpgCGKiIiISAUMUUREREQqYIgiIiIiUgFDFBEREZEKGKKIiIiIVMAQRURERKQChigiIiIiFTBEEREREamAIYqIiIhIBQxRRERERCpgiCIiIiJSAUMUERERkQoYooiIiIhUwBBFREREpAKGKCIiIiIVMEQRERERqYAhioiIiEgFDFFEREREKmCIIiIiIlIBQxQRERGRCqpEiFq9ejXs7Oygp6cHFxcXxMfHl1m/c+dONGvWDHp6enB0dMT+/fvllguCgKCgIFhaWkJfXx8eHh64fv26XE1mZib8/f1hZGQEExMTjBw5Erm5ueLyo0ePwtvbG5aWljAwMICTkxO2bNlScQdNRERE1ZraQ9T27dsxZcoUzJs3D2fOnEGbNm3g6emJ9PT0EutPnToFPz8/jBw5EmfPnoWPjw98fHyQlJQk1oSGhmLlypUIDw9HXFwcDAwM4Onpifz8fLHG398fly5dQnR0NCIjI3H8+HGMGTNGbj+tW7fG7t27ceHCBQQGBmLYsGGIjIysvBeDiIiIqg2JIAiCOhtwcXFB+/btsWrVKgCATCaDjY0NJkyYgJkzZyrUDxkyBHl5eXJhpmPHjnByckJ4eDgEQYCVlRWmTp2KadOmAQCys7Nhbm6OiIgI+Pr6Ijk5GS1atMDp06fRrl07AEBUVBTee+893Lt3D1ZWViX26uXlBXNzc6xfv75cx5aTkwNjY2NkZ2fDyMhIqdfldToEH6rQ7REQrztO3S3ULNOuqrsDekN8n6lYfI+pBJX0PlPe399qPRNVUFCAxMREeHh4iGMaGhrw8PBAbGxsievExsbK1QOAp6enWJ+SkgKpVCpXY2xsDBcXF7EmNjYWJiYmYoACAA8PD2hoaCAuLq7UfrOzs2Fqalrq8mfPniEnJ0fuQURERDWTWkNURkYGioqKYG5uLjdubm4OqVRa4jpSqbTM+uI/X1djZmYmt1xLSwumpqal7nfHjh04ffo0AgMDSz2ekJAQGBsbiw8bG5tSa4mIiKh6U/s9UdXBkSNHEBgYiB9//BEtW7YstW7WrFnIzs4WH6mpqW+xSyIiInqb1Bqi6tWrB01NTaSlpcmNp6WlwcLCosR1LCwsyqwv/vN1Na/euP78+XNkZmYq7PfYsWPo378/VqxYgWHDhpV5PLq6ujAyMpJ7EBERUc2k1hClo6MDZ2dnxMTEiGMymQwxMTFwdXUtcR1XV1e5egCIjo4W6+3t7WFhYSFXk5OTg7i4OLHG1dUVWVlZSExMFGsOHz4MmUwGFxcXcezo0aPw8vLCkiVL5D65R0RERKSl7gamTJmCgIAAtGvXDh06dEBYWBjy8vLEe4+GDRsGa2trhISEAAAmTZoENzc3fPPNN/Dy8sK2bduQkJCAtWvXAgAkEgkmT56MxYsXw8HBAfb29pg7dy6srKzg4+MDAGjevDn69OmD0aNHIzw8HIWFhRg/fjx8fX3FT+YdOXIE/fr1w6RJk/DBBx+I90rp6OiUeXM5ERER/TeoPUQNGTIEDx8+RFBQEKRSKZycnBAVFSXeGH737l1oaPx7wqxTp07YunUrvvzyS8yePRsODg7Ys2cPWrVqJdbMmDEDeXl5GDNmDLKystClSxdERUVBT09PrNmyZQvGjx8Pd3d3aGho4IMPPsDKlSvF5Rs3bsSTJ08QEhIiBjgAcHNzw9GjRyvxFSEiIqLqQO3zRNVknCeqeuEcLhWM80RVe3yfqVh8j6kE/+V5ooiIiIiqK4YoIiIiIhUwRBERERGpgCGKiIiISAUMUUREREQqYIgiIiIiUgFDFBEREZEKGKKIiIiIVMAQRURERKQChigiIiIiFTBEEREREamAIYqIiIhIBQxRRERERCpgiCIiIiJSAUMUERERkQoYooiIiIhUwBBFREREpAKGKCIiIiIVMEQRERERqYAhioiIiEgFDFFEREREKmCIIiIiIlIBQxQRERGRChiiiIiIiFTAEEVERESkAoYoIiIiIhUwRBERERGpgCGKiIiISAUMUUREREQqYIgiIiIiUgFDFBEREZEKGKKIiIiIVMAQRURERKQChigiIiIiFTBEEREREamAIYqIiIhIBQxRRERERCpgiCIiIiJSAUMUERERkQoYooiIiIhUwBBFREREpAKGKCIiIiIVVIkQtXr1atjZ2UFPTw8uLi6Ij48vs37nzp1o1qwZ9PT04OjoiP3798stFwQBQUFBsLS0hL6+Pjw8PHD9+nW5mszMTPj7+8PIyAgmJiYYOXIkcnNz5WouXLiArl27Qk9PDzY2NggNDa2YAyYiIqJqT+0havv27ZgyZQrmzZuHM2fOoE2bNvD09ER6enqJ9adOnYKfnx9GjhyJs2fPwsfHBz4+PkhKShJrQkNDsXLlSoSHhyMuLg4GBgbw9PREfn6+WOPv749Lly4hOjoakZGROH78OMaMGSMuz8nJQe/evWFra4vExEQsXboU8+fPx9q1ayvvxSAiIqJqQyIIgqDOBlxcXNC+fXusWrUKACCTyWBjY4MJEyZg5syZCvVDhgxBXl4eIiMjxbGOHTvCyckJ4eHhEAQBVlZWmDp1KqZNmwYAyM7Ohrm5OSIiIuDr64vk5GS0aNECp0+fRrt27QAAUVFReO+993Dv3j1YWVlhzZo1mDNnDqRSKXR0dAAAM2fOxJ49e3DlypVyHVtOTg6MjY2RnZ0NIyOjN3qdXtUh+FCFbo+AeN1x6m6hZpl2Vd0d0Bvi+0zF4ntMJaik95ny/v5W65mogoICJCYmwsPDQxzT0NCAh4cHYmNjS1wnNjZWrh4APD09xfqUlBRIpVK5GmNjY7i4uIg1sbGxMDExEQMUAHh4eEBDQwNxcXFiTbdu3cQAVbyfq1ev4p9//nnDIyciIqLqTkudO8/IyEBRURHMzc3lxs3NzUs92yOVSkusl0ql4vLisbJqzMzM5JZraWnB1NRUrsbe3l5hG8XL6tSpo9Dbs2fP8OzZM/F5dnY2gBeJtqIV5edV+Db/63KEInW3ULNUws89vV18n6lYfI+pBJX0PlP8e/t1F+vUGqJqmpCQECxYsEBh3MbGRg3dkLKM1d1ATTOXryjRy/gvohJU8vvM48ePYWxc+j7UGqLq1asHTU1NpKWlyY2npaXBwsKixHUsLCzKrC/+My0tDZaWlnI1Tk5OYs2rN64/f/4cmZmZctspaT8v7+NVs2bNwpQpU8TnMpkMmZmZqFu3LiQSSYnrUNWQk5MDGxsbpKamVvj9a0REfI+pXgRBwOPHj2FlZVVmnVpDlI6ODpydnRETEwMfHx8AL4JHTEwMxo8fX+I6rq6uiImJweTJk8Wx6OhouLq6AgDs7e1hYWGBmJgYMTTl5OQgLi4OY8eOFbeRlZWFxMREODs7AwAOHz4MmUwGFxcXsWbOnDkoLCyEtra2uJ933nmnxEt5AKCrqwtdXV25MRMTE6VfF1IfIyMjvsERUaXhe0z1UdYZKJGgZtu2bRN0dXWFiIgI4fLly8KYMWMEExMTQSqVCoIgCEOHDhVmzpwp1p88eVLQ0tISli1bJiQnJwvz5s0TtLW1hYsXL4o1X3/9tWBiYiLs3btXuHDhguDt7S3Y29sLT58+FWv69OkjtG3bVoiLixP+/PNPwcHBQfDz8xOXZ2VlCebm5sLQoUOFpKQkYdu2bUKtWrWEH3744S28KvS2ZWdnCwCE7OxsdbdCRDUQ32NqJrWHKEEQhO+++05o2LChoKOjI3To0EH466+/xGVubm5CQECAXP2OHTuEpk2bCjo6OkLLli2F33//XW65TCYT5s6dK5ibmwu6urqCu7u7cPXqVbmaR48eCX5+foKhoaFgZGQkBAYGCo8fP5arOX/+vNClSxdBV1dXsLa2Fr7++uuKPXCqMvgGR0SVie8xNZPa54kiqgqePXuGkJAQzJo1S+GSLBHRm+J7TM3EEEVERESkArV/7QsRERFRdcQQRURERKQChigiIiIiFTBEEREREamAIYr+044fP47+/fvDysoKEokEe/bsUXdLRFSDFBUVYe7cubC3t4e+vj4aN26MRYsWvfY72ah64Hfn0X9aXl4e2rRpgxEjRmDgwIHqboeIapglS5ZgzZo12LhxI1q2bImEhAQEBgbC2NgYEydOVHd79IYYoug/rW/fvujbt6+62yCiGurUqVPw9vaGl5cXAMDOzg6//PIL4uPj1dwZVQReziMiIqoknTp1QkxMDK5duwYAOH/+PP7880/+z1sNwTNRRERElWTmzJnIyclBs2bNoKmpiaKiIgQHB8Pf31/drVEFYIgiIiKqJDt27MCWLVuwdetWtGzZEufOncPkyZNhZWWFgIAAdbdHb4ghioiIqJJMnz4dM2fOhK+vLwDA0dERd+7cQUhICENUDcB7ooiIiCrJkydPoKEh/6tWU1MTMplMTR1RReKZKPpPy83NxY0bN8TnKSkpOHfuHExNTdGwYUM1dkZENUH//v0RHByMhg0bomXLljh79iyWL1+OESNGqLs1qgASgTN+0X/Y0aNH0aNHD4XxgIAAREREvP2GiKhGefz4MebOnYv//e9/SE9Ph5WVFfz8/BAUFAQdHR11t0dviCGKiIiISAW8J4qIiIhIBQxRRERERCpgiCIiIiJSAUMUERERkQoYooiIiIhUwBBFREREpAKGKCIiIiIVMEQREVWy+fPnw8nJSd1tiG7fvg2JRIJz586puxWiao0hiogqTWpqKkaMGAErKyvo6OjA1tYWkyZNwqNHj9TSz/DhwyGRSPDpp58qLBs3bhwkEgmGDx+uUC+RSKCjo4MmTZpg4cKFeP78ean7kEgk2LNnTyV0T0RVDUMUEVWKW7duoV27drh+/Tp++eUX3LhxA+Hh4YiJiYGrqysyMzPV0peNjQ22bduGp0+fimP5+fnYunVrid+X2KdPHzx48ADXr1/H1KlTMX/+fCxdurTS+ywoKKj0fRDRm2GIIqJKMW7cOOjo6ODgwYNwc3NDw4YN0bdvXxw6dAj379/HnDlzxFo7OzssWrQIfn5+MDAwgLW1NVavXi23vaysLIwaNQr169eHkZERevbsifPnz4vLiy+Zbd68GXZ2djA2Noavry8eP34st513330XNjY2+PXXX8WxX3/9FQ0bNkTbtm0VjkNXVxcWFhawtbXF2LFj4eHhgX379pV4zHZ2dgCAAQMGQCKRiM+LldVb9+7dMX78eEyePBn16tWDp6cnACApKQl9+/aFoaEhzM3NMXToUGRkZIjrRUVFoUuXLjAxMUHdunXRr18/3Lx5U26/8fHxaNu2LfT09NCuXTucPXtWbvk///wDf39/1K9fH/r6+nBwcMCGDRtKPEYi+hdDFBFVuMzMTBw4cACfffYZ9PX15ZZZWFjA398f27dvx8tf3bl06VK0adMGZ8+excyZMzFp0iRER0eLyz/88EOkp6fjjz/+QGJiIt599124u7vLndG6efMm9uzZg8jISERGRuLYsWP4+uuvFfobMWKEXEhYv349AgMDy3Vs+vr6pZ4lOn36NABgw4YNePDggfi8vL1t3LgROjo6OHnyJMLDw5GVlYWePXuibdu2SEhIQFRUFNLS0jB48GBxnby8PEyZMgUJCQmIiYmBhoYGBgwYAJlMBgDIzc1Fv3790KJFCyQmJmL+/PmYNm2a3H7nzp2Ly5cv448//kBycjLWrFmDevXqlev1IPpPE4iIKthff/0lABD+97//lbh8+fLlAgAhLS1NEARBsLW1Ffr06SNXM2TIEKFv376CIAjCiRMnBCMjIyE/P1+upnHjxsIPP/wgCIIgzJs3T6hVq5aQk5MjLp8+fbrg4uIiPg8ICBC8vb2F9PR0QVdXV7h9+7Zw+/ZtQU9PT3j48KHg7e0tBAQEKNQLgiDIZDIhOjpa0NXVFaZNm1bqsZd03OXpzc3NTWjbtq3ceosWLRJ69+4tN5aamioAEK5evVri/h8+fCgAEC5evCgIgiD88MMPQt26dYWnT5+KNWvWrBEACGfPnhUEQRD69+8vBAYGlnpMRFQyLXUGOCKq2YSXzjS9jqurq8LzsLAwAMD58+eRm5uLunXrytU8ffpU7tKVnZ0dateuLT63tLREenq6wr7q168PLy8vREREQBAEeHl5lXrmJTIyEoaGhigsLIRMJsNHH32E+fPnl/u4lOnN2dlZ7vn58+dx5MgRGBoaKmzv5s2baNq0Ka5fv46goCDExcUhIyNDPAN19+5dtGrVCsnJyWjdujX09PTEdV99rceOHYsPPvgAZ86cQe/eveHj44NOnTopfYxE/zUMUURU4Zo0aQKJRILk5GQMGDBAYXlycjLq1KmD+vXrl2t7ubm5sLS0xNGjRxWWmZiYiP+tra0tt0wikYih4lUjRozA+PHjAUDh/quX9ejRA2vWrIGOjg6srKygpaXa22Z5ejMwMJB7npubi/79+2PJkiUK27O0tAQA9O/fH7a2tvjxxx9hZWUFmUyGVq1aKXVjet++fXHnzh3s378f0dHRcHd3x7hx47Bs2bJyb4Pov4ghiogqXN26ddGrVy98//33+Pzzz+Xui5JKpdiyZQuGDRsGiUQijv/1119y2/jrr7/QvHlzAC9uBpdKpdDS0lK4WVtVffr0QUFBASQSiXgTd0kMDAzQpEmTcm9XW1sbRUVFFdEi3n33XezevRt2dnYlhrdHjx7h6tWr+PHHH9G1a1cAwJ9//ilX07x5c2zevBn5+fni2ahXX2vgxdm5gIAABAQEoGvXrpg+fTpDFNFr8MZyIqoUq1atwrNnz+Dp6Ynjx48jNTUVUVFR6NWrF6ytrREcHCxXf/LkSYSGhuLatWtYvXo1du7ciUmTJgEAPDw84OrqCh8fHxw8eBC3b9/GqVOnMGfOHCQkJKjUn6amJpKTk3H58mVoamq+8fEWs7OzQ0xMDKRSKf7555832ta4ceOQmZkJPz8/nD59Gjdv3sSBAwcQGBiIoqIi1KlTB3Xr1sXatWtx48YNHD58GFOmTJHbxkcffQSJRILRo0fj8uXL2L9/v0I4CgoKwt69e3Hjxg1cunQJkZGRYoAlotIxRBFRpXBwcEBCQgIaNWqEwYMHo3HjxhgzZgx69OiB2NhYmJqaytVPnToVCQkJaNu2LRYvXozly5eLZ4gkEgn279+Pbt26ITAwEE2bNoWvry/u3LkDc3NzlXs0MjKCkZHRGx3nq7755htER0fDxsamxCkTlGFlZYWTJ0+iqKgIvXv3hqOjIyZPngwTExNoaGhAQ0MD27ZtQ2JiIlq1aoXPP/9cYQ4rQ0ND/Pbbb7h48SLatm2LOXPmKFwe1NHRwaxZs9C6dWt069YNmpqa2LZt2xv1TvRfIBGUufOTiKgS2NnZYfLkyZg8ebK6WyEiKjeeiSIiIiJSAUMUERERkQp4OY+IiIhIBTwTRURERKQChigiIiIiFTBEEREREamAIYqIiIhIBQxRRERERCpgiCIiIiJSAUMUERERkQoYooiIiIhUwBBFREREpIL/AwofKuSV5IDtAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " 'resnet_torch_1_infer',\n", + " 'resnet_torch_1_nograd',\n", + " 'resnet_torch_8_infer',\n", + " 'resnet_torch_8_nograd',\n", + "]\n", + "\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_infer_gpu_100k,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"_infer\": \"InferenceMode\", \"_nograd\": \"NoGradMode\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " bar_width=0.3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# (Old) FTorch and Forpy on Icelake CPUs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Output files here assume the current default form of run_benchmarks.sh, e.g.:\n", + "\n", + "```bash\n", + "nrun=1000\n", + "\n", + "for n in {1,4,8};\n", + "do\n", + " export OMP_NUM_THREADS=$n\n", + "\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_forpy ../cgdrag_model run_emulator_davenet $nrun 10 | tee cgdrag_forpy_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 --explicit_reshape | tee cgdrag_torch_explicit_$n.out;date\n", + " date;/usr/bin/time ./benchmarker_cgdrag_torch ../cgdrag_model saved_cgdrag_model_cpu.pt $nrun 10 | tee cgdrag_torch_implicit_$n.out;date\n", + "\n", + " date;/usr/bin/time -v ./benchmarker_resnet_forpy ../resnet_model resnet18 $nrun 10 | tee resnet_forpy_$n.out;date\n", + " date;/usr/bin/time -v ./benchmarker_resnet_torch ../resnet_model saved_resnet18_model_cpu.pt $nrun 10 | tee resnet_torch_$n.out;date\n", + "\n", + "done\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# Create labels matching the order of tests in run_benchmarks.sh\n", + "\n", + "cpu_tests = [\n", + " \"cgdrag_forpy\",\n", + " \"cgdrag_torch_explicit\",\n", + " \"cgdrag_torch_implicit\",\n", + " \"resnet_forpy\",\n", + " \"resnet_torch\",\n", + "]\n", + "\n", + "cpu_n_threads = [\"1\", \"4\", \"8\"]\n", + "cpu_labels = []\n", + "\n", + "for threads in cpu_n_threads:\n", + " for test in cpu_tests:\n", + " cpu_labels.append(f\"{test}_{threads}\")\n", + "\n", + "\n", + "gpu_tests = [\n", + " \"cgdrag_forpy_gpu\",\n", + " \"cgdrag_torch_explicit_gpu\",\n", + " \"cgdrag_torch_implicit_gpu\",\n", + " \"resnet_forpy_gpu\",\n", + " \"resnet_torch_gpu\",\n", + "]\n", + "\n", + "gpu_n_threads = [\"1\", \"8\"]\n", + "gpu_labels = []\n", + "\n", + "for threads in gpu_n_threads:\n", + " for test in gpu_tests:\n", + " gpu_labels.append(f\"{test}_{threads}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading: ../../results/icelake_nograd/output_1000_fix/slurm-34050567.out\n", + "Reading: ../../results/icelake_nograd/output_10000_fix/slurm-34051232.out\n" + ] + } + ], + "source": [ + "benchmarks_nograd_fix_1k = rb.read_slurm_walltime(filepath_nograd_fix_1k, cpu_labels)\n", + "benchmarks_nograd_fix_10k = rb.read_slurm_walltime(filepath_nograd_fix_10k, cpu_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "benchmarks_nograd_fix = {}\n", + "\n", + "for key, value in benchmarks_nograd_fix_1k.items():\n", + " benchmarks_nograd_fix[key + \"_1k\"] = value / 1000\n", + "\n", + "for key, value in benchmarks_nograd_fix_10k.items():\n", + " benchmarks_nograd_fix[key + \"_10k\"] = value / 10000" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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qlULMpnMFHURERERmYzBAWjVqlXYsGEDhg4daop6iIiIiEzO4GOASkpK0LZtW1PUQkRERFQuDA5AI0eOxJYtW0xRCxEREVG5MHgXWFFREdasWYODBw+iRYsWqFq1qsbyJUuWGK04IiIiIlMwOACdO3cOvr6+AIDz589rLOMB0URERFQZGByADh06ZIo6iIiIiMrNK10I8fbt27h9+7axaiEiIiIqFwYHILVajc8++wwODg7w9PSEp6cnHB0dMWfOHK2LIhIRERFVRAbvApsxYwa+/fZbzJ8/H2+//TYA4OjRo5g1axaKioowb948oxdJREREZEwGB6CNGzfim2++wbvvviu2tWjRArVr10ZYWBgDEBEREVV4Bu8Cu3//Pry9vbXavb29cf/+faMURURERGRKBgcgHx8frFixQqt9xYoV8PHxMUpRRERERKZk8C6whQsXomfPnjh48CACAgIAAImJibh16xb27dtn9AKJiIiIjM3gGaAOHTrgzz//RL9+/ZCbm4vc3Fy89957SEtLQ/v27U1RIxEREZFRGTwDBADu7u482JmIiIgqLb0C0Llz59CsWTNYWFjg3Llzz+3bokULoxRGREREZCp6BSBfX19kZGSgZs2a8PX1hUwmgyAIWv1kMhlUKpXRiyQiIiIyJr0C0LVr1+Di4iL+TERERFSZ6RWAPD09xZ9v3LiBtm3bokoVzVUfP36M48ePa/QlIiIiqogMPgusU6dOOi94mJeXh06dOhmlKCIiIiJTMjgACYIAmUym1Z6TkwNbW1ujFEVERERkSnqfBv/ee+8BeHKg8/Dhw6FQKMRlKpUK586dQ9u2bY1fIREREZGR6R2AHBwcADyZAapWrRqsra3FZZaWlvjHP/6BUaNGGb9CIiIiIiPTOwCtX78eAODl5YXJkydzdxcRERFVWgZfCToqKsoUdRARERGVm5e6FcbOnTuxfft23Lx5EyUlJRrLTp8+bZTCiIiIiEzF4LPAli1bhtDQULi6uiIlJQVt2rSBk5MTrl69iuDgYFPUSERERGRUBgegr7/+GmvWrMHy5cthaWmJTz75BHFxcZgwYQLy8vJMUSMRERGRURkcgG7evCme7m5tbY0HDx4AAIYOHYoffvjBuNURERERmYDBAcjNzU28EnTdunVx4sQJAE/uEabrBqlEREREFY3BAahz587Ys2cPACA0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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix.keys() if (\n", + " \"cgdrag\" in label and \"10k\" not in label and (\"forpy\" in label or \"torch_implicit\" in label)\n", + " )\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU only, 1000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_4_\": \"4\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + " save_path=\"plots/cgdrag_1000.jpg\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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w0NbtmzRq6++atOfodu503fP09NTP/30k1avXq3//ve/WrZsmT777DM1adJEK1assFg/8+c0c74U7g8EIORb/v7+8vHxueNdVkNCQrR///4s7be2hYSESPrnX7E3H/k4ffr0HY843OzLL79UTEyM3nzzTXPb1atXs9w0Lrd15aRy5cr69NNPdf78efn6+prb27Rpo4ULF+qTTz7RkCFDcl33nYSEhOjGjRv6888/sxyl2r9/v9LT082f4e3GWLVqVZaJwJmnNe60vjW6deumuLg4nThxQgsWLFCrVq1yPJJnKy4uLqpevbo2bdqUZdlvv/2mcuXK3fb0ZKlSpeTv75/t+hs2bLA4XRoeHq4PPvhASUlJqlq1qsV2MpdbO2Zu5XQko3z58jIMQ2XLltVDDz1k9biStGbNGqWkpOjrr7/WY489Zm4/cOBAruu4Veb3as+ePVmW7d69W8WLF5eXl5fVtbq4uKhp06Zq2rSppkyZotdff13Dhg3T6tWrLf5BceDAAbm4uNz1ZwLH4BQY8i0XFxe1a9dO3333Xbb/c8/8l1rz5s2VmJiobdu2mZedPXtWn376qUX/qKgoFSxYUO+8847FEQZr7zTr6uqa5QjFO++8Y3EJrzV15SQyMlKGYWjz5s0W7U899ZSqV6+ucePGWVwKnenChQsaNmxYLvfmf6KjoyVJ06dPz7JsxowZFn1y0rJlS6Wnp2cZ46233pLJZLrj+tbo0qWLTCaTBgwYoL/++st8CsXennrqKW3cuNHiO7lnzx79+OOPevrpp++4/pNPPqnvv//e4rLxhIQE7d2712L9tm3bqmDBgnr33XfNbYZhaNasWSpVqpTq1atn9Zi5lRkWbg31HTp0kKurq0aNGpXlZ8AwDKWkpNxx7MwjJzevn5aWZrGfN9eRm1NiJUuWVHh4uObPn29R886dO7VixQq1bNnyjmPc6uzZs1naMsPkracbN2/erIcfftjiHyrI/zgChHzt9ddf14oVK9SwYUP17t1bVapU0YkTJ/TFF1/ol19+kZ+fn1555RV98sknevzxx/X888+bLzcvU6aMzp49a/5XpL+/vwYNGqTx48erdevWatmypbZu3aoffvjBqkPXrVu31scffyxfX19VrVpViYmJWrVqVZbLtnNbV07q16+vYsWKadWqVWrSpIm5vWDBgvr6668VFRWlxx57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16uvvqr4+HjzVdkVK1bUxIkTs4z59NNPq2fPnpKkMWPGaOXKlXrnnXf07rvvqkOHDurfv7+WLFmijh07SpLmzZun7t27O+RWAhwBAgDACTVu3Fjbtm0zv6ZNm6akpCRFRkZaBJJHH31UFy9e1NGjR81tERER2Y55602MIyMjzUeAPDw89Oyzz2rOnDmSpC1btmjnzp3q3r27jfcsdzgCBACAE/Ly8rrrK768vLzuar2ePXsqPDxcR48e1dy5c9WkSROFhITc1Vj3iiNAAABAklSlShUlJibq5lsErlu3ToULF1bp0qXvuP6vv/6a5X2VKlXM76tXr65atWpp9uzZWrBggXr06GG74q1EAAIAAJKkvn376siRI3r++ee1e/duLVmyRCNGjFBcXJzFUxly8sUXX2jOnDnau3evRowYoQ0bNmS58qtnz56aMGGCDMNQ+/bt7bUrd0QAAgAAkqRSpUpp6dKl2rBhg8LCwvSf//xHzz33nF577bVcrT9q1CgtWrRINWrU0EcffaSFCxeqatWqFn26dOmiAgUKqEuXLg69gzZzgAAAsKH74QrYefPm5bisYcOG2rBhQ47L16xZk+OyoKAgrVix4rbbPnPmjK5evarnnnvuTmXaFQEIAADY3fXr15WSkqLXXntN//rXv/TII484tB5OgQEAALtbt26dSpYsqY0bN1rcPNFROAIEAADu2c1XjmWnUaNGd+yTlzgCBAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNMhAAEAAIdYs2aNTCaTzp07l+fb5j5AAADY0uRKebu9QXusXqV79+6aP3++1eutXr1ajRo1snq9/IgABACAE2rRooXmzp1rfp+WliZXV1e5urpKkgYMGKDU1FSLPkWLFs31+Onp6TKZTLl6irwj5M+qAACAXbm7uyswMND8KlOmjEqVKmV+7+npadHH3d1dPXv2VJEiRVSoUCFFR0dr37595vHmzZsnPz8/ffvtt6patarc3d11+PBhXbt2Ta+++qqCg4Pl7u6uChUq6MMPP7SoZfPmzapVq5YKFSqkevXqac8e649qWYsABAAA7qh79+7atGmTvv32WyUmJsowDLVs2VLXr18397l8+bLeeOMNffDBB9q1a5dKlCihbt26aeHChZo2bZqSkpL03nvvydvb22LsYcOG6c0339SmTZtUoEAB9ejRw+77wykwAACc0Pfff28RRKKjo/XFF19k23ffvn369ttvtW7dOtWrV0+S9Omnnyo4OFiLFy/W008/LemfJ76/++67CgsLkyTt3btXn3/+uVauXKmoqChJUrly5bKMP27cODVs2FCSNHjwYLVq1UpXr16Vh4eH7Xb4FgQgAACcUOPGjTVz5kzzey8vrxz7JiUlqUCBAqpbt665rVixYqpUqZKSkpLMbW5ubqpRo4b5/bZt2+Tq6moONzm5eZ2SJUtKkk6dOqUyZcrkfoesRAACAMAJeXl5qUKFCjYd09PTUyaTyeJ9bhQsWND858z1MzIybFrbrZgDBAAAbqtKlSq6ceOGfvvtN3NbSkqK9uzZo6pVq+a4XvXq1ZWRkaG1a9fmRZlWIQABAIDbqlixotq2batevXrpl19+0fbt2/Xvf/9bpUqVUtu2bXNcLzQ0VDExMerRo4cWL16sAwcOaM2aNfr888/zsPrsEYAAAMAdzZ07VxEREWrdurUiIyNlGIaWLl1qcfoqOzNnztRTTz2lvn37qnLlyurVq5cuXbqUR1XnzGQYhuHoIvKb1NRU+fr66vz58/Lx8bH5+HXGrbL5mPnRhmFRji4BAOzm6tWrOnDggMqWLWvXq5Vg6XafuzW/vzkCBAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAA3AOuJcpbtvq8uRM07GdyJUdXkDcG2f+pxQDyn8zLvy9fvpzrOx7j3l2+fFmS7nj5/Z0QgAAAuAuurq7y8/PTqVOnJEmFChWyeAwEbMswDF2+fFmnTp2Sn5+fXF1d72k8AhAAAHcpMDBQkswhCPbn5+dn/tzvBQEIAIC7ZDKZVLJkSZUoUULXr193dDkPvIIFC97zkZ9MBCAAAO6Rq6urzX4xI29wFRgAAHA6BCAAAOB0CEAAAMDpEIAAAIDTIQABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp0MAAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOnkiwA0Y8YMhYaGysPDQ3Xr1tWGDRty7Dt79mw1aNBARYoUUZEiRRQVFZWlv2EYio+PV8mSJeXp6amoqCjt27fP3rsBAADuEw4PQJ999pni4uI0YsQIbdmyRWFhYWrevLlOnTqVbf81a9aoS5cuWr16tRITExUcHKxmzZrp2LFj5j4TJ07UtGnTNGvWLP3222/y8vJS8+bNdfXq1bzaLQAAkI+ZDMMwHFlA3bp1Vbt2bU2fPl2SlJGRoeDgYD3//PMaPHjwHddPT09XkSJFNH36dHXr1k2GYSgoKEgvvfSSBg0aJEk6f/68AgICNG/ePHXu3PmOY6ampsrX11fnz5+Xj4/Pve1gNuqMW2XzMfOjDe79HF1C3hi0x9EVAABk3e9vhx4BSktL0+bNmxUVFWVuc3FxUVRUlBITE3M1xuXLl3X9+nUVLVpUknTgwAElJydbjOnr66u6devmekwAAPBgK+DIjZ85c0bp6ekKCAiwaA8ICNDu3btzNcarr76qoKAgc+BJTk42j3HrmJnLbnXt2jVdu3bN/D41NTXX+wAAAO4/Dp8DdC8mTJigRYsW6ZtvvpGHh8ddjzN+/Hj5+vqaX8HBwTasEgAA5DcODUDFixeXq6urTp48adF+8uRJBQYG3nbdyZMna8KECVqxYoVq1Khhbs9cz5oxhwwZovPnz5tfR44cuZvdAQAA9wmHBiA3NzdFREQoISHB3JaRkaGEhARFRkbmuN7EiRM1ZswYLVu2TLVq1bJYVrZsWQUGBlqMmZqaqt9++y3HMd3d3eXj42PxAgAADy6HzgGSpLi4OMXExKhWrVqqU6eOpk6dqkuXLik2NlaS1K1bN5UqVUrjx4+XJL3xxhuKj4/XggULFBoaap7X4+3tLW9vb5lMJg0cOFBjx45VxYoVVbZsWQ0fPlxBQUFq166do3YTAADkIw4PQJ06ddLp06cVHx+v5ORkhYeHa9myZeZJzIcPH5aLy/8OVM2cOVNpaWl66qmnLMYZMWKERo4cKUl65ZVXdOnSJfXu3Vvnzp1T/fr1tWzZsnuaJwQAAB4cDr8PUH7EfYBsg/sAAQDy0n1zHyAAAABHIAABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp0MAAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNMhAAEAAKdDAAIAAE6HAAQAAJwOAQgAADgdAhAAAHA6BCAAAOB0CEAAAMDpEIAAAIDTIQABAACnQwACAABOhwAEAACcjtUB6MiRIzp69Kj5/YYNGzRw4EC9//77Ni0MAADAXqwOQM8884xWr14tSUpOTtbjjz+uDRs2aNiwYRo9erTNCwQAALA1qwPQzp07VadOHUnS559/rmrVqmn9+vX69NNPNW/ePFvXBwAAYHNWB6Dr16/L3d1dkrRq1So98cQTkqTKlSvrxIkTtq0OAADADqwOQA8//LBmzZqln3/+WStXrlSLFi0kScePH1exYsVsXiAAAICtWR2A3njjDb333ntq1KiRunTporCwMEnSt99+az41BgAAkJ8VsHaFRo0a6cyZM0pNTVWRIkXM7b1791ahQoVsWhwAAIA9WB2AJMnV1dUi/EhSaGioLeoBAACwO26ECAAAnA4BCAAAOB0CEAAAcDq5DkDdunXTV199pYsXL9qzHgAAALvLdQCqUKGCXn/9dfn7+ys6OlozZ87UsWPH7FkbAACAXeQ6AMXHx2vz5s3at2+f2rRpo8WLF6t8+fKKiIjQ6NGjtW3bNjuWCQAAYDtWzwEqXbq0+vbtq+XLl+v06dN69dVXtWfPHjVp0kQhISHq37+/du3aZY9aAQAAbOKeJkEXLlxYHTt21KeffqrTp09rzpw5cnV1VWJioq3qAwAAsLm7uhFidlxdXdW0aVM1bdrUVkMCAADYBZfBAwAAp0MAAgAATocABAAAnA4BCAAAOJ27mgSdkJCghIQEnTp1ShkZGRbL5syZY5PCAAAA7MXqADRq1CiNHj1atWrVUsmSJWUymexRFwAAgN1YHYBmzZqlefPm6dlnn7VHPQAAAHZn9RygtLQ01atXzx61AAAA5AmrA1DPnj21YMECe9QCAACQJ6w+BXb16lW9//77WrVqlWrUqKGCBQtaLJ8yZYrNigMAALAHqwPQjh07FB4eLknauXOnxTImRAMAgPuB1QFo9erV9qgDAAAgz9zTjRCPHj2qo0eP2qoWAACAPGF1AMrIyNDo0aPl6+urkJAQhYSEyM/PT2PGjMlyU0QAAID8yOpTYMOGDdOHH36oCRMm6NFHH5Uk/fLLLxo5cqSuXr2qcePG2bxIAAAAW7I6AM2fP18ffPCBnnjiCXNbjRo1VKpUKfXt25cABAAA8j2rT4GdPXtWlStXztJeuXJlnT171iZFAQAA2JPVASgsLEzTp0/P0j59+nSFhYVZXcCMGTMUGhoqDw8P1a1bVxs2bMix765du/Tkk08qNDRUJpNJU6dOzdJn5MiRMplMFq/sAhsAAHBeVp8Cmzhxolq1aqVVq1YpMjJSkpSYmKgjR45o6dKlVo312WefKS4uTrNmzVLdunU1depUNW/eXHv27FGJEiWy9L98+bLKlSunp59+Wi+++GKO4z788MNatWqV+X2BAnf10HsAAPCAsvoIUMOGDbV37161b99e586d07lz59ShQwft2bNHDRo0sGqsKVOmqFevXoqNjVXVqlU1a9YsFSpUSHPmzMm2f+3atTVp0iR17txZ7u7uOY5boEABBQYGml/Fixe3qi4AAPBgu6tDI0FBQfc82TktLU2bN2/WkCFDzG0uLi6KiopSYmLiPY29b98+BQUFycPDQ5GRkRo/frzKlCmTY/9r167p2rVr5vepqan3tH0AAJC/5SoA7dixQ9WqVZOLi4t27Nhx2741atTI1YbPnDmj9PR0BQQEWLQHBARo9+7duRojO3Xr1tW8efNUqVIlnThxQqNGjVKDBg20c+dOFS5cONt1xo8fr1GjRt31NgEAwP0lVwEoPDxcycnJKlGihMLDw2UymWQYRpZ+JpNJ6enpNi/SGtHR0eY/16hRQ3Xr1lVISIg+//xzPffcc9muM2TIEMXFxZnfp6amKjg42O61AgAAx8hVADpw4ID8/f3Nf7aF4sWLy9XVVSdPnrRoP3nypAIDA22yDUny8/PTQw89pP379+fYx93d/bZzigAAwIMlV5OgQ0JCzE96P3TokEqVKmV+DEbmq1SpUjp06FCuN+zm5qaIiAglJCSY2zIyMpSQkGC+uswWLl68qD///FMlS5a02ZgAAOD+ZvVVYI0bN872hofnz59X48aNrRorLi5Os2fP1vz585WUlKQ+ffro0qVLio2NlSR169bNYpJ0Wlqatm3bpm3btiktLU3Hjh3Ttm3bLI7uDBo0SGvXrtXBgwe1fv16tW/fXq6ururSpYu1uwoAAB5QVl8FZhiG+WjQzVJSUuTl5WXVWJ06ddLp06cVHx+v5ORkhYeHa9myZeaJ0YcPH5aLy/8y2vHjx1WzZk3z+8mTJ2vy5Mlq2LCh1qxZI+mfJ9R36dJFKSkp8vf3V/369fXrr7+aT+EBAADkOgB16NBB0j8Tnbt3724xZyY9PV07duxQvXr1rC6gf//+6t+/f7bLMkNNptDQ0GwnX99s0aJFVtcAAACcS64DkK+vr6R/jgAVLlxYnp6e5mVubm7617/+pV69etm+QgAAABvLdQCaO3eupH+OwgwaNMjq010AAAD5hdVzgEaMGGGPOgAAAPLMXT0K48svv9Tnn3+uw4cPKy0tzWLZli1bbFIYAACAvVh9Gfy0adMUGxurgIAAbd26VXXq1FGxYsX0119/WdyFGQAAIL+yOgC9++67ev/99/XOO+/Izc1Nr7zyilauXKkXXnhB58+ft0eNAAAANmV1ADp8+LD5cndPT09duHBBkvTss89q4cKFtq0OAADADqwOQIGBgeY7QZcpU0a//vqrpH+eEXane/QAAADkB1YHoCZNmujbb7+VJMXGxurFF1/U448/rk6dOql9+/Y2LxAAAMDWrL4K7P3331dGRoYkqV+/fipWrJjWr1+vJ554Qv/3f/9n8wIBAABszaoAdOPGDb3++uvq0aOHSpcuLUnq3LmzOnfubJfiAAAA7MGqU2AFChTQxIkTdePGDXvVAwAAYHdWzwFq2rSp1q5da49aAAAA8oTVc4Cio6M1ePBg/f7774qIiMjyTLAnnnjCZsUBAADYg9UBqG/fvpKkKVOmZFlmMpmUnp5+71UBAADYkdUBKPMKMAAAgPuV1XOAbnb16lVb1QEAAJBnrA5A6enpGjNmjEqVKiVvb2/99ddfkqThw4frww8/tHmBAAAAtmZ1ABo3bpzmzZuniRMnys3NzdxerVo1ffDBBzYtDgAAwB6sDkAfffSR3n//fXXt2lWurq7m9rCwMO3evdumxQEAANiD1QHo2LFjqlChQpb2jIwMXb9+3SZFAQAA2JPVAahq1ar6+eefs7R/+eWXqlmzpk2KAgAAsCerL4OPj49XTEyMjh07poyMDH399dfas2ePPvroI33//ff2qBEAAMCmrD4C1LZtW3333XdatWqVvLy8FB8fr6SkJH333Xd6/PHH7VEjAACATVl9BEiSGjRooJUrV9q6FgAAgDxh9RGgcuXKKSUlJUv7uXPnVK5cOZsUBQAAYE9WB6CDBw9m+7yva9eu6dixYzYpCgAAwJ5yfQrs22+/Nf95+fLl8vX1Nb9PT09XQkKCQkNDbVocAACAPeQ6ALVr107SP098j4mJsVhWsGBBhYaG6s0337RpcQAAAPaQ6wCU+RT4smXLauPGjSpevLjdigIAALAnq68CO3DggD3qAAAAyDO5CkDTpk1T79695eHhoWnTpt227wsvvGCTwgAAAOwlVwHorbfeUteuXeXh4aG33norx34mk4kABAAA8r1cBaCbT3txCgwAANzvrL4PEAAAwP2OAAQAAJwOAQgAADgdAhAAAHA6VgWgGzduaPTo0Tp69Ki96gEAALA7qwJQgQIFNGnSJN24ccNe9QAAANid1afAmjRporVr19qjFgAAgDxh9aMwoqOjNXjwYP3++++KiIiQl5eXxfInnnjCZsUBAADYg9UBqG/fvpKkKVOmZFlmMpmUnp5+71UBAADYkdUBKPOp8AAAAPere7oM/urVq7aqAwAAIM9YHYDS09M1ZswYlSpVSt7e3vrrr78kScOHD9eHH35o8wIBAABszeoANG7cOM2bN08TJ06Um5ubub1atWr64IMPbFocAACAPVgdgD766CO9//776tq1q1xdXc3tYWFh2r17t02LAwAAsAerA9CxY8dUoUKFLO0ZGRm6fv26TYoCAACwJ6sDUNWqVfXzzz9naf/yyy9Vs2ZNmxQFAABgT1ZfBh8fH6+YmBgdO3ZMGRkZ+vrrr7Vnzx599NFH+v777+1RIwAAgE1ZfQSobdu2+u6777Rq1Sp5eXkpPj5eSUlJ+u677/T444/bo0YAAACbsvoIkCQ1aNBAK1eutHUtAAAAeeKuApAkbdq0SUlJSZL+mRcUERFhs6IAAADsyeoAdPToUXXp0kXr1q2Tn5+fJOncuXOqV6+eFi1apNKlS9u6RgAAAJuyeg5Qz549df36dSUlJens2bM6e/askpKSlJGRoZ49e9qjRgAAAJuy+gjQ2rVrtX79elWqVMncVqlSJb3zzjtq0KCBTYsDAACwB6uPAAUHB2d7w8P09HQFBQXZpCgAAAB7sjoATZo0Sc8//7w2bdpkbtu0aZMGDBigyZMn27Q4AAAAezAZhmFYs0KRIkV0+fJl3bhxQwUK/HMGLfPPXl5eFn3Pnj1ru0rzUGpqqnx9fXX+/Hn5+PjYfPw641bZfMz8aIN7P0eXkDcG7XF0BQAAWff72+o5QFOnTr3bugAAAPIFqwNQTEyMTQuYMWOGJk2apOTkZIWFhemdd95RnTp1su27a9cuxcfHa/PmzTp06JDeeustDRw48J7GBAAAzsfqOUC29NlnnykuLk4jRozQli1bFBYWpubNm+vUqVPZ9r98+bLKlSunCRMmKDAw0CZjAgAA5+PQADRlyhT16tVLsbGxqlq1qmbNmqVChQppzpw52favXbu2Jk2apM6dO8vd3d0mYwIAAOfjsACUlpamzZs3Kyoq6n/FuLgoKipKiYmJ+WZMAADw4LnrZ4HdqzNnzig9PV0BAQEW7QEBAdq9e3eejnnt2jVdu3bN/D41NfWutg8AAO4Pd30EaP/+/Vq+fLmuXLkiSbLyavp8Zfz48fL19TW/goODHV0SAACwI6sDUEpKiqKiovTQQw+pZcuWOnHihCTpueee00svvZTrcYoXLy5XV1edPHnSov3kyZM5TnC215hDhgzR+fPnza8jR47c1fYBAMD9weoA9OKLL6pAgQI6fPiwChUqZG7v1KmTli1blutx3NzcFBERoYSEBHNbRkaGEhISFBkZaW1Z9zSmu7u7fHx8LF4AAODBZfUcoBUrVmj58uUqXbq0RXvFihV16NAhq8aKi4tTTEyMatWqpTp16mjq1Km6dOmSYmNjJUndunVTqVKlNH78eEn/THL+448/zH8+duyYtm3bJm9vb1WoUCFXYwIAAFgdgC5dumRx5CfT2bNnc7w0PSedOnXS6dOnFR8fr+TkZIWHh2vZsmXmScyHDx+Wi8v/DlIdP35cNWvWNL+fPHmyJk+erIYNG2rNmjW5GhMAAMDqZ4G1bNlSERERGjNmjAoXLqwdO3YoJCREnTt3VkZGhr788kt71ZpneBaYbfAsMABAXrLrs8AmTpyopk2batOmTUpLS9Mrr7yiXbt26ezZs1q3bt1dFw0AAJBXrJ4EXa1aNe3du1f169dX27ZtdenSJXXo0EFbt25V+fLl7VEjAACATd3VjRB9fX01bNgwW9cCAACQJ+4qAF29elU7duzQqVOnlJGRYbHsiSeesElhAAAA9mJ1AFq2bJm6deumM2fOZFlmMpmUnp5uk8IAAADsxeo5QM8//7yefvppnThxQhkZGRYvwg8AALgfWB2ATp48qbi4OO6rAwAA7ltWB6CnnnrKfNNBAACA+5HVc4CmT5+up59+Wj///LOqV6+uggULWix/4YUXbFYcAACAPVgdgBYuXKgVK1bIw8NDa9askclkMi8zmUwEIAAAkO9ZHYCGDRumUaNGafDgwRbP6QIAALhfWJ1g0tLS1KlTJ8IPAAC4b1mdYmJiYvTZZ5/ZoxYAAIA8YfUpsPT0dE2cOFHLly9XjRo1skyCnjJlis2KAwAAsAerA9Dvv/+umjVrSpJ27txpsezmCdEAAAD5ldUBaPXq1faoAwAAIM8wkxkAADidXB0B6tChg+bNmycfHx916NDhtn2//vprmxQGAABgL7kKQL6+vub5Pb6+vnYtCAAAwN5yFYDmzp2r0aNHa9CgQZo7d669awIAALCrXM8BGjVqlC5evGjPWgAAAPJErgOQYRj2rAMAACDPWHUVGPf5AQAADwKr7gP00EMP3TEEnT179p4KAgAAsDerAtCoUaO4Cgx4gNUZt8rRJeSJDcOiHF0CAAezKgB17txZJUqUsFctAAAAeSLXc4CY/wMAAB4UXAUGAACcTq5PgWVkZNizDgAAgDzDw1ABAIDTIQABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp0MAAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNMp4OgCACDPTa7k6AryxqA9jq4AyLc4AgQAAJwOAQgAADgdAhAAAHA6BCAAAOB0CEAAAMDpEIAAAIDTIQABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp5MvAtCMGTMUGhoqDw8P1a1bVxs2bLht/y+++EKVK1eWh4eHqlevrqVLl1os7969u0wmk8WrRYsW9twFAABwH3F4APrss88UFxenESNGaMuWLQoLC1Pz5s116tSpbPuvX79eXbp00XPPPaetW7eqXbt2ateunXbu3GnRr0WLFjpx4oT5tXDhwrzYHQAAcB9weACaMmWKevXqpdjYWFWtWlWzZs1SoUKFNGfOnGz7v/3222rRooVefvllValSRWPGjNEjjzyi6dOnW/Rzd3dXYGCg+VWkSJG82B0AAHAfcGgASktL0+bNmxUVFWVuc3FxUVRUlBITE7NdJzEx0aK/JDVv3jxL/zVr1qhEiRKqVKmS+vTpo5SUlBzruHbtmlJTUy1eAADgweXQAHTmzBmlp6crICDAoj0gIEDJycnZrpOcnHzH/i1atNBHH32khIQEvfHGG1q7dq2io6OVnp6e7Zjjx4+Xr6+v+RUcHHyPewYAAPKzAo4uwB46d+5s/nP16tVVo0YNlS9fXmvWrFHTpk2z9B8yZIji4uLM71NTUwlBAAA8wBx6BKh48eJydXXVyZMnLdpPnjypwMDAbNcJDAy0qr8klStXTsWLF9f+/fuzXe7u7i4fHx+LFwAAeHA5NAC5ubkpIiJCCQkJ5raMjAwlJCQoMjIy23UiIyMt+kvSypUrc+wvSUePHlVKSopKlixpm8IBAMB9zeFXgcXFxWn27NmaP3++kpKS1KdPH126dEmxsbGSpG7dumnIkCHm/gMGDNCyZcv05ptvavfu3Ro5cqQ2bdqk/v37S5IuXryol19+Wb/++qsOHjyohIQEtW3bVhUqVFDz5s0dso8AACB/cfgcoE6dOun06dOKj49XcnKywsPDtWzZMvNE58OHD8vF5X85rV69elqwYIFee+01DR06VBUrVtTixYtVrVo1SZKrq6t27Nih+fPn69y5cwoKClKzZs00ZswYubu7O2QfAQBA/mIyDMNwdBH5TWpqqnx9fXX+/Hm7zAeqM26VzcfMjza493N0CXlj0B5HV2AzfDcfMA/QdxPIDWt+fzv8FBgAAEBeIwABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp+PwZ4EBAHAnTvOYlmFRji7BaXAECAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNMhAAEAAKdDAAIAAE6H+wABAJBfTK7k6AryxqA9jq6AI0AAAMD5EIAAAIDTIQABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp0MAAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNMhAAEAAKdDAAIAAE6HAAQAAJwOAQgAADgdAhAAAHA6BCAAAOB0CEAAAMDpEIAAAIDTIQABAACnQwACAABOhwAEAACcDgEIAAA4HQIQAABwOgQgAADgdAhAAADA6RCAAACA0yEAAQAAp0MAAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNPJFwFoxowZCg0NlYeHh+rWrasNGzbctv8XX3yhypUry8PDQ9WrV9fSpUstlhuGofj4eJUsWVKenp6KiorSvn377LkLAADgPuLwAPTZZ58pLi5OI0aM0JYtWxQWFqbmzZvr1KlT2fZfv369unTpoueee05bt25Vu3bt1K5dO+3cudPcZ+LEiZo2bZpmzZql3377TV5eXmrevLmuXr2aV7sFAADyMYcHoClTpqhXr16KjY1V1apVNWvWLBUqVEhz5szJtv/bb7+tFi1a6OWXX1aVKlU0ZswYPfLII5o+fbqkf47+TJ06Va+99pratm2rGjVq6KOPPtLx48e1ePHiPNwzAACQXzk0AKWlpWnz5s2Kiooyt7m4uCgqKkqJiYnZrpOYmGjRX5KaN29u7n/gwAElJydb9PH19VXdunVzHBMAADiXAo7c+JkzZ5Senq6AgACL9oCAAO3evTvbdZKTk7Ptn5ycbF6e2ZZTn1tdu3ZN165dM78/f/68JCk1NdWKvcm99KuX7DJufpNqpDu6hLxhp++JI/DdfMDw3bzv8N2812H/GdcwjDv2dWgAyi/Gjx+vUaNGZWkPDg52QDUPDl9HF5BXhjvNnj4wnOZvjO/mfcdp/sbs/N28cOGCfH1vvw2HBqDixYvL1dVVJ0+etGg/efKkAgMDs10nMDDwtv0z/3vy5EmVLFnSok94eHi2Yw4ZMkRxcXHm9xkZGTp79qyKFSsmk8lk9X7hnxQeHBysI0eOyMfHx9HlAGZ8N5Ff8d28d4Zh6MKFCwoKCrpjX4cGIDc3N0VERCghIUHt2rWT9E/4SEhIUP/+/bNdJzIyUgkJCRo4cKC5beXKlYqMjJQklS1bVoGBgUpISDAHntTUVP3222/q06dPtmO6u7vL3d3dos3Pz++e9g3/8PHx4QcZ+RLfTeRXfDfvzZ2O/GRy+CmwuLg4xcTEqFatWqpTp46mTp2qS5cuKTY2VpLUrVs3lSpVSuPHj5ckDRgwQA0bNtSbb76pVq1aadGiRdq0aZPef/99SZLJZNLAgQM1duxYVaxYUWXLltXw4cMVFBRkDlkAAMC5OTwAderUSadPn1Z8fLySk5MVHh6uZcuWmScxHz58WC4u/7tYrV69elqwYIFee+01DR06VBUrVtTixYtVrVo1c59XXnlFly5dUu/evXXu3DnVr19fy5Ytk4eHR57vHwAAyH9MRm6mSgNWunbtmsaPH68hQ4ZkOb0IOBLfTeRXfDfzFgEIAAA4HYffCRoAACCvEYAAAIDTIQABAACnQwACAABOhwAEm/rpp5/Upk0bBQUFyWQyafHixY4uCchiwoQJ5nuGAY6Wnp6u4cOHq2zZsvL09FT58uU1ZsyYXD3PCnfP4fcBwoPl0qVLCgsLU48ePdShQwdHlwNksXHjRr333nuqUaOGo0sBJElvvPGGZs6cqfnz5+vhhx/Wpk2bFBsbK19fX73wwguOLu+BRQCCTUVHRys6OtrRZQDZunjxorp27arZs2dr7Nixji4HkCStX79ebdu2VatWrSRJoaGhWrhwoTZs2ODgyh5snAID4DT69eunVq1aKSoqytGlAGb16tVTQkKC9u7dK0navn27fvnlF/4xaWccAQLgFBYtWqQtW7Zo48aNji4FsDB48GClpqaqcuXKcnV1VXp6usaNG6euXbs6urQHGgEIwAPvyJEjGjBggFauXMkzAZHvfP755/r000+1YMECPfzww9q2bZsGDhyooKAgxcTEOLq8BxaPwoDdmEwmffPNN2rXrp2jS4GTW7x4sdq3by9XV1dzW3p6ukwmk1xcXHTt2jWLZUBeCg4O1uDBg9WvXz9z29ixY/XJJ59o9+7dDqzswcYRIAAPvKZNm+r333+3aIuNjVXlypX16quvEn7gUJcvX5aLi+WUXFdXV2VkZDioIudAAIJNXbx4Ufv37ze/P3DggLZt26aiRYuqTJkyDqwMzqxw4cKqVq2aRZuXl5eKFSuWpR3Ia23atNG4ceNUpkwZPfzww9q6daumTJmiHj16OLq0BxqnwGBTa9asUePGjbO0x8TEaN68eXlfEJCDRo0aKTw8XFOnTnV0KXByFy5c0PDhw/XNN9/o1KlTCgoKUpcuXRQfHy83NzdHl/fAIgABAACnw32AAACA0yEAAQAAp0MAAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQABwGyNHjlR4eLijyzA7ePCgTCaTtm3b5uhSgPsaAQhAto4cOaIePXooKChIbm5uCgkJ0YABA5SSkuKQerp37y6TyaT//Oc/WZb169dPJpNJ3bt3z9LfZDLJzc1NFSpU0OjRo3Xjxo0ct2EymbR48WI7VA8gvyEAAcjir7/+Uq1atbRv3z4tXLhQ+/fv16xZs5SQkKDIyEidPXvWIXUFBwdr0aJFunLlirnt6tWrWrBgQbbPmmvRooVOnDihffv26aWXXtLIkSM1adIku9eZlpZm920AuDcEIABZ9OvXT25ublqxYoUaNmyoMmXKKDo6WqtWrdKxY8c0bNgwc9/Q0FCNGTNGXbp0kZeXl0qVKqUZM2ZYjHfu3Dn17NlT/v7+8vHxUZMmTbR9+3bz8szTTB9//LFCQ0Pl6+urzp0768KFCxbjPPLIIwoODtbXX39tbvv6669VpkwZ1axZM8t+uLu7KzAwUCEhIerTp4+ioqL07bffZrvPoaGhkqT27dvLZDKZ32e6XW2NGjVS//79NXDgQBUvXlzNmzeXJO3cuVPR0dHy9vZWQECAnn32WZ05c8a83rJly1S/fn35+fmpWLFiat26tf7880+L7W7YsEE1a9aUh4eHatWqpa1bt1os//vvv9W1a1f5+/vL09NTFStW1Ny5c7PdRwD/QwACYOHs2bNavny5+vbtK09PT4tlgYGB6tq1qz777DPd/BjBSZMmKSwsTFu3btXgwYM1YMAArVy50rz86aef1qlTp/TDDz9o8+bNeuSRR9S0aVOLI0l//vmnFi9erO+//17ff/+91q5dqwkTJmSpr0ePHha/4OfMmaPY2Nhc7Zunp2eOR2c2btwoSZo7d65OnDhhfp/b2ubPny83NzetW7dOs2bN0rlz59SkSRPVrFlTmzZt0rJly3Ty5El17NjRvM6lS5cUFxenTZs2KSEhQS4uLmrfvr0yMjIkSRcvXlTr1q1VtWpVbd68WSNHjtSgQYMstjt8+HD98ccf+uGHH5SUlKSZM2eqePHiufo8AKdmAMBNfv31V0OS8c0332S7fMqUKYYk4+TJk4ZhGEZISIjRokULiz6dOnUyoqOjDcMwjJ9//tnw8fExrl69atGnfPnyxnvvvWcYhmGMGDHCKFSokJGammpe/vLLLxt169Y1v4+JiTHatm1rnDp1ynB3dzcOHjxoHDx40PDw8DBOnz5ttG3b1oiJicnS3zAMIyMjw1i5cqXh7u5uDBo0KMd9z26/c1Nbw4YNjZo1a1qsN2bMGKNZs2YWbUeOHDEkGXv27Ml2+6dPnzYkGb///rthGIbx3nvvGcWKFTOuXLli7jNz5kxDkrF161bDMAyjTZs2RmxsbI77BCB7BRwZvgDkX8ZNR3juJDIyMsv7qVOnSpK2b9+uixcvqlixYhZ9rly5YnG6JzQ0VIULFza/L1mypE6dOpVlW/7+/mrVqpXmzZsnwzDUqlWrHI94fP/99/L29tb169eVkZGhZ555RiNHjsz1fllTW0REhMX77du3a/Xq1fL29s4y3p9//qmHHnpI+/btU3x8vH777TedOXPGfOTn8OHDqlatmpKSklSjRg15eHiY1731s+7Tp4+efPJJbdmyRc2aNVO7du1Ur149q/cRcDYEIAAWKlSoIJPJpKSkJLVv3z7L8qSkJBUpUkT+/v65Gu/ixYsqWbKk1qxZk2WZn5+f+c8FCxa0WGYymcyB4FY9evRQ//79JSnLfKObNW7cWDNnzpSbm5uCgoJUoMDd/S8vN7V5eXlZvL948aLatGmjN954I8t4JUuWlCS1adNGISEhmj17toKCgpSRkaFq1apZNYk6Ojpahw4d0tKlS7Vy5Uo1bdpU/fr10+TJk3M9BuCMCEAALBQrVkyPP/643n33Xb344osW84CSk5P16aefqlu3bjKZTOb2X3/91WKMX3/9VVWqVJH0z8Tl5ORkFShQIMvE4rvVokULpaWlyWQymSccZ8fLy0sVKlTI9bgFCxZUenq6LUrUI488oq+++kqhoaHZBq+UlBTt2bNHs2fPVoMGDSRJv/zyi0WfKlWq6OOPP9bVq1fNR4Fu/aylf46KxcTEKCYmRg0aNNDLL79MAALugEnQALKYPn26rl27pubNm+unn37SkSNHtGzZMj3++OMqVaqUxo0bZ9F/3bp1mjhxovbu3asZM2boiy++0IABAyRJUVFRioyMVLt27bRixQodPHhQ69ev17Bhw7Rp06a7qs/V1VVJSUn6448/5Orqes/7myk0NFQJCQlKTk7W33//fU9j9evXT2fPnlWXLl20ceNG/fnnn1q+fLliY2OVnp6uIkWKqFixYnr//fe1f/9+/fjjj4qLi7MY45lnnpHJZFKvXr30xx9/aOnSpVmCTXx8vJYsWaL9+/dr165d+v77783hE0DOCEAAsqhYsaI2bdqkcuXKqWPHjipfvrx69+6txo0bKzExUUWLFrXo/9JLL2nTpk2qWbOmxo4dqylTppiPzJhMJi1dulSPPfaYYmNj9dBDD6lz5846dOiQAgIC7rpGHx8f+fj43NN+3urNN9/UypUrFRwcnO1l9dYICgrSunXrlJ6ermbNmql69eoaOHCg/Pz85OLiIhcXFy1atEibN29WtWrV9OKLL2a5R5G3t7e+++47/f7776pZs6aGDRuW5ZSam5ubhgwZoho1auixxx6Tq6urFi1adE+1A87AZFgz0xEAbhEaGqqBAwdq4MCBji4FAHKNI0AAAMDpEIAAAIDT4RQYAABwOhwBAgAATocABAAAnA4BCAAAOB0CEAAAcDoEIAAA4HQIQAAAwOkQgAAAgNMhAAEAAKdDAAIAAE7n/wEq7ZUgpwEPqwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix.keys() if (\n", + " \"cgdrag\" in label and \"10k\" in label and (\"forpy\" in label or \"torch_implicit\" in label)\n", + " )\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (CPU only, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_4_\": \"4\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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btyIFStWwNjYWGz38PDAl19+qdXiiIiIiHRB4wC0efNmJCUlYfz48ZDL5WK7l5cXLly4oNXiiIiIiHRB4wB048YNtG/fvka7UqnE/fv3tVIUERERkS5pHIA6d+6MY8eO1WjfvXs3unXrppWiiIiIiHRJ48vgY2JiEBERgRs3bkCpVGLPnj24ePEiNm/ejP379+uiRiIiIiKt0ngGKDg4GPv27cOhQ4dgbm6OmJgY5OTkYN++fRg0aJAuaiQiIiLSKo1ngACgb9++SE1N1XYtRERERA1C4xmgtm3boqSkpEb7rVu30LZtW60URURERKRLGgegq1evqv28r4qKCty4cUMrRRERERHpUp1Pge3du1f8+8GDB2FpaSk+r6qqQlpaGlxdXbVaHBEREZEu1DkAhYSEAHj4ie8REREq24yMjODq6oqVK1dqtTgiIiIiXahzAKr+FPjnn38eJ06cgI2Njc6KIiIiItIlja8Cu3Llii7qICIiImowdQpAn376KV599VWYmpri008/fWzft956SyuFEREREelKnQLQxx9/jPHjx8PU1BQff/xxrf1kMhkDEBERETV6dQpA/zztxVNgRERE1NRpfB8gIiIioqaOAYiIiIgkhwGIiIiIJIcBiIiIiCRHowD04MEDLF68GNevX9dVPUREREQ6p1EAMjQ0xIcffogHDx5otYi1a9fC1dUVpqam8PX1RWZm5mP779q1C+7u7jA1NYWnpycOHDigsn3RokVwd3eHubk5WrZsicDAQPz8889arZmIiIiaLo1PgQ0YMABHjx7VWgE7d+5EdHQ0YmNjcerUKXh5eSEoKAiFhYVq+6enpyMsLAyTJk1CdnY2QkJCEBISgvPnz4t9OnTogDVr1uDcuXP48ccf4erqisGDB6OoqEhrdRMREVHTJRMEQdBkh8TERMTFxWH8+PHw8fGBubm5yvaXX35ZowJ8fX3Rs2dPrFmzBsDDzxxzdnbGm2++iTlz5tToHxoaivLycuzfv19s6927N7y9vZGYmKj2NcrKymBpaYlDhw5h4MCBT6ypun9paSksLCw0Op666LXskNbHbIwyTabpu4SGMeuivisgIiJo9vNb488Cmzp1KgBg1apVNbbJZDJUVVXVeazKykqcPHkSc+fOFdsMDAwQGBiIjIwMtftkZGQgOjpapS0oKAjJycm1vkZSUhIsLS3h5eVV59qIiIjo2aVxAKr+VHhtKC4uRlVVFezt7VXa7e3tceHCBbX7KBQKtf0VCoVK2/79+zFu3DjcvXsXrVu3Rmpqaq2fYF9RUYGKigrxeVlZWX0Oh4iIiJqIp7oM/t69e9qqQ+v69++P06dPIz09HUOGDMHYsWNrXVcUHx8PS0tL8eHs7NzA1RIREVFD0jgAVVVVYcmSJXByckLz5s3x+++/AwAWLlyIr776SqOxbGxsIJfLUVBQoNJeUFAABwcHtfs4ODjUqb+5uTnat2+P3r1746uvvoKhoWGt9c2dOxelpaXiIz8/X6PjICIioqZF4wC0bNkybNy4EStWrICxsbHY7uHhgS+//FKjsYyNjeHj44O0tDSxTalUIi0tDX5+fmr38fPzU+kPAKmpqbX2/+e4/zzN9U8mJiawsLBQeRAREdGzS+MAtHnzZiQlJWH8+PGQy+Viu5eXV63rdh4nOjoaX3zxBTZt2oScnBy88cYbKC8vR1RUFAAgPDxcZZH0jBkzkJKSgpUrV+LChQtYtGgRsrKyMH36dABAeXk55s2bh59++gnXrl3DyZMnMXHiRNy4cQNjxozRuD4iIiJ69mi8CPrGjRto3759jXalUon79+9rXEBoaCiKiooQExMDhUIBb29vpKSkiAud8/LyYGDwv5zm7++Pbdu2YcGCBZg3bx7c3NyQnJwMDw8PAIBcLseFCxewadMmFBcXw9raGj179sSxY8fQpUsXjesjIiKiZ4/GAahz5844duwYXFxcVNp3796Nbt261auI6dOnizM4jzpy5EiNtjFjxtQ6m2Nqaoo9e/bUqw4iIiKSBo0DUExMDCIiInDjxg0olUrs2bMHFy9exObNm1VuTkhERETUWGm8Big4OBj79u3DoUOHYG5ujpiYGOTk5GDfvn0YNGiQLmokIiIi0iqNZ4AAoG/fvkhNTdV2LUREREQNol4BCACysrKQk5MD4OG6IB8fH60VRURERKRLGgeg69evIywsDMePH4eVlRUA4NatW/D398eOHTvw3HPPabtGIiIiIq3SeA3Q5MmTcf/+feTk5ODmzZu4efMmcnJyoFQqMXnyZF3USERERKRVGs8AHT16FOnp6ejYsaPY1rFjR6xevRp9+/bVanFEREREuqDxDJCzs7PaGx5WVVXB0dFRK0URERER6ZLGAejDDz/Em2++iaysLLEtKysLM2bMwEcffaTV4oiIiIh0QSYIgqDJDi1btsTdu3fx4MEDGBo+PINW/Xdzc3OVvjdv3tRepQ2orKwMlpaWKC0t1ckHo/ZadkjrYzZGmSbT9F1Cw5h1Ud8VEBERNPv5rfEaoISEhPrWRURERNQoaByAIiIidFEHERERUYPReA0QERERUVPHAERERESSwwBEREREksMARERERJJT7wB06dIlHDx4EH///TcAQMOr6YmIiIj0RuMAVFJSgsDAQHTo0AEvvfQS/vzzTwDApEmT8M4772i9QCIiIiJt0zgAvf322zA0NEReXh6aNWsmtoeGhiIlJUWrxRERERHpgsb3Afr+++9x8OBBPPfccyrtbm5uuHbtmtYKIyIiItIVjWeAysvLVWZ+qt28eRMmJiZaKYqIiIhIlzQOQH379sXmzZvF5zKZDEqlEitWrED//v21WhwRERGRLmh8CmzFihUYOHAgsrKyUFlZiXfffRe//PILbt68iePHj+uiRiIiIiKt0ngGyMPDA7/99hv69OmD4OBglJeXY9SoUcjOzka7du10USMRERGRVmk8AwQAlpaWmD9/vrZrISIiImoQ9QpA9+7dw9mzZ1FYWAilUqmy7eWXX9ZKYURERES6onEASklJQXh4OIqLi2tsk8lkqKqq0kphRERERLqi8RqgN998E2PGjMGff/4JpVKp8mD4ISIioqZA4wBUUFCA6Oho2Nvb66IeIiIiIp3TOACNHj0aR44c0UEpRERERA1D4zVAa9aswZgxY3Ds2DF4enrCyMhIZftbb72lteKIiIiIdEHjALR9+3Z8//33MDU1xZEjRyCTycRtMpmMAYiIiIgaPY0D0Pz58xEXF4c5c+bAwEDjM2hEREREeqdxgqmsrERoaCjDDxERETVZGqeYiIgI7Ny5Uxe1EBERETUIjU+BVVVVYcWKFTh48CC6du1aYxH0qlWrtFYcERERkS5oHIDOnTuHbt26AQDOnz+vsu2fC6KJiIiIGiuNA9Dhw4d1UQcRERFRg+FKZiIiIpKcOs0AjRo1Chs3boSFhQVGjRr12L579uzRSmFEREREulKnAGRpaSmu77G0tNRpQURERES6VqcAtGHDBixevBizZs3Chg0bdF0TERERkU7VeQ1QXFwc7ty5o8taiIiIiBpEnQOQIAi6rIOIiIiowWh0FRjv80NERETPAo0CUIcOHdCqVavHPupj7dq1cHV1hampKXx9fZGZmfnY/rt27YK7uztMTU3h6emJAwcOiNvu37+P9957D56enjA3N4ejoyPCw8Pxxx9/1Ks2IiIievZodCPEuLg4rV8FtnPnTkRHRyMxMRG+vr5ISEhAUFAQLl68CDs7uxr909PTERYWhvj4eAwfPhzbtm1DSEgITp06BQ8PD9y9exenTp3CwoUL4eXlhb/++gszZszAyy+/jKysLK3WTkRERE2TTKjj4h4DAwMoFAq1oeRp+Pr6omfPnlizZg0AQKlUwtnZGW+++SbmzJlTo39oaCjKy8uxf/9+sa13797w9vZGYmKi2tc4ceIEevXqhWvXrqFNmzZPrKmsrAyWlpYoLS2FhYVFPY+sdr2WHdL6mI1Rpsk0fZfQMGZd1HcFREQEzX5+1/kUmC7W/1RWVuLkyZMIDAz8X0EGBggMDERGRobafTIyMlT6A0BQUFCt/QGgtLQUMpkMVlZWardXVFSgrKxM5UFERETPLr1eBVZcXIyqqirY29urtNvb20OhUKjdR6FQaNT/3r17eO+99xAWFlZrGoyPj4elpaX4cHZ2rsfREBERUVNR5wCkVCq1fvpL1+7fv4+xY8dCEASsW7eu1n5z585FaWmp+MjPz2/AKomIiKihafxp8NpkY2MDuVyOgoIClfaCggI4ODio3cfBwaFO/avDz7Vr1/DDDz889lygiYkJTExM6nkURERE1NTo9dPgjY2N4ePjg7S0NLFNqVQiLS0Nfn5+avfx8/NT6Q8AqampKv2rw09ubi4OHToEa2tr3RwAERERNUl6nQECgOjoaERERKBHjx7o1asXEhISUF5ejqioKABAeHg4nJycEB8fDwCYMWMGAgICsHLlSgwbNgw7duxAVlYWkpKSADwMP6NHj8apU6ewf/9+VFVVieuDWrVqBWNjY/0cKBERETUaeg9AoaGhKCoqQkxMDBQKBby9vZGSkiIudM7Ly4OBwf8mqvz9/bFt2zYsWLAA8+bNg5ubG5KTk+Hh4QEAuHHjBvbu3QsA8Pb2Vnmtw4cPo1+/fg1yXERERNR41fk+QFLC+wBpB+8DREREDUkn9wEiIiIielYwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5Oj9ozCIqPGQzF3K5wfquwQi0jPOABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQY6rsAIqIG91FHfVfQMGZd1HcFRI0WZ4CIiIhIchiAiIiISHIYgIiIiEhyGICIiIhIchiAiIiISHIYgIiIiEhyGICIiIhIchiAiIiISHIYgIiIiEhyGICIiIhIchiAiIiISHIYgIiIiEhyGICIiIhIchiAiIiISHIYgIiIiEhyDPVdABER0ZP0WnZI3yU0iMz5gfouQTI4A0RERESSwwBEREREksMARERERJKj9wC0du1auLq6wtTUFL6+vsjMzHxs/127dsHd3R2mpqbw9PTEgQMHVLbv2bMHgwcPhrW1NWQyGU6fPq3D6omIiKgp0msA2rlzJ6KjoxEbG4tTp07By8sLQUFBKCwsVNs/PT0dYWFhmDRpErKzsxESEoKQkBCcP39e7FNeXo4+ffpg+fLlDXUYRERE1MToNQCtWrUKU6ZMQVRUFDp37ozExEQ0a9YM69evV9v/k08+wZAhQzB79mx06tQJS5YsQffu3bFmzRqxz4QJExATE4PAQK6kJyIiIvX0FoAqKytx8uRJlaBiYGCAwMBAZGRkqN0nIyOjRrAJCgqqtX9dVVRUoKysTOVBREREzy69BaDi4mJUVVXB3t5epd3e3h4KhULtPgqFQqP+dRUfHw9LS0vx4ezs/FTjERERUeOm90XQjcHcuXNRWloqPvLz8/VdEhEREemQ3u4EbWNjA7lcjoKCApX2goICODg4qN3HwcFBo/51ZWJiAhMTk6cag4iIiJoOvc0AGRsbw8fHB2lpaWKbUqlEWloa/Pz81O7j5+en0h8AUlNTa+1PREREpI5ePwssOjoaERER6NGjB3r16oWEhASUl5cjKioKABAeHg4nJyfEx8cDAGbMmIGAgACsXLkSw4YNw44dO5CVlYWkpCRxzJs3byIvLw9//PEHAODixYsAHs4ePe1MERERET0b9BqAQkNDUVRUhJiYGCgUCnh7eyMlJUVc6JyXlwcDg/9NUvn7+2Pbtm1YsGAB5s2bBzc3NyQnJ8PDw0Pss3fvXjFAAcC4ceMAALGxsVi0aFHDHBgREVF9fNRR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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix.keys() if (\"resnet\" in label and \"10k\" not in label)\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU only, 1000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_4_\": \"4\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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3NC/f39YWVlh7969qFu3LgAgPz8fP//8sziTkJubi9zcXOTl5SEkJASXLl0S7xqztbXFH3/8gUuXLlXo2G+88QY6der0zFmgnTt3wsbGBl27dhWPnZubC19fX9SoUQOHDh2q1HmX/U/0yZkuACgoKAAArWd/Zs6cCXt7ezg5OaFjx464cuUKFi1ahH79+lWqPk3++ecfnD59GsOHD0ft2rXF9latWqFr1644cOCA2j5PL/Du0KED8vLyxPPUZODAgTA3N1eZBfrpp5+Qm5uLd955RwdnUr6HDx/C1NRU4zZzc/PnzhY+fPgQZmZmGvct2/7krxXtW5F+L0oQBPzwww/o1asXBEFQeb+HhITg7t27arOpERERapcWzczMYGT0+MePQqFAXl4eatSogaZNm2qcja2IAwcOQC6X46OPPlJp/+STTyAIAv773/+qtAcHB6NRo0bi61atWsHa2hp///232GZra4vff/9dnJV6llq1aiE3N7dStZNhMABRtbd69WokJiZi165dePPNN5Gbm6vyj/3ly5chCAJmzJgBe3t7la+ZM2cCeHxHF/D4jrI7d+6gSZMm8PLywqRJk3D27NlnHn/WrFnIzMxETEyMxu2XLl3C3bt34eDgoHb8+/fvi8euLOGp9QvW1tYAHq9P0Ma7776LxMREJCcn48SJE8jOzsann36qdT3Puj38+vXrAICmTZuqbWvWrBlyc3NRWFio0v7k+hbgf4HvyfVTT7O1tUWvXr1U7nTbsmULXF1dxbVN+mJhYaF2B1aZoqKi564jsrCwQHFxscZ9y7Y/+WtF+1ak34vKycnBnTt3EBsbq/Zej4yMBAC193uDBg3UxlEqlVixYgU8PDxgZmaGOnXqwN7eHmfPnsXdu3crVdv169fh4uKi9h+DssuCZe/NMk+/74DH770n33eLFy/G+fPn4ebmBj8/P8yaNUslID1JEISX7llKUmds6AKInsfPz09cBxEWFobXX38db7/9Ni5evIgaNWpAqVQCACZOnIiQkBCNYzRu3BjA4xmdK1euYM+ePTh48CC++eYbrFixAjExMRg1apTGfd944w107NgRixcv1ng7ulKphIODg8Y1KQBgb2+v9TkD/1ub83QQ8PT0BACcO3dOq/E8PDwQHBxc7vbnzRaULUwu66crcrlcY/vTwe9pw4YNw86dO3Hs2DF4eXlh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wMBAbN26FdOnT8dnn30GDw8PxMfHo2XLlgAAuVyOCxcuYNOmTcjNzYWdnR1ee+01HDlyBC1atNC6PiIiInr1VDgA2djYAHg8A1SzZk1YWFiI20xNTdGuXTuMHj26UkWMGzcO48aN07jt8OHDam0DBgwodzbH3Nwcu3fvrlQdREREJA0VDkAbN24EALi7u2PixImVutxFREREVB1ovQZo5syZ+qiDiIiIqMpoHYAAYNeuXfj+++9x48YNlJSUqGw7efKkTgojIiIi0hetb4P/8ssvERkZCUdHR5w6dQp+fn6ws7PD33//jdDQUH3USERERKRTWgegNWvWIDY2Fl999RVMTU3x6aefIjExER999BHu3r2rjxqJiIiIdErrAHTjxg3xdncLCwvcu3cPADB06FBs27ZNt9URERER6YHWAcjJyUl8EnS9evXw22+/AXj8GWGaPiCViIiIqLrROgB17twZe/fuBQBERkbi448/RteuXTFo0CD07dtX5wUSERER6ZrWd4HFxsZCqVQCAMaOHQs7OzscO3YMvXv3xnvvvafzAomIiIh0TasA9OjRIyxYsAAjRoxA3bp1AQCDBw/G4MGD9VIcERERkT5odQnM2NgYixcvxqNHj/RVDxEREZHeab0GqEuXLvjll1/0UQsRERFRldB6DVBoaCimTJmCc+fOwdfXV+0zwXr37q2z4oiIiIj0QesANGbMGADA8uXL1bbJZDIoFIoXr4qIiIhIj7QOQGV3gBERERG9rLReA/SkoqIiXdVBREREVGW0DkAKhQJz586Fq6sratSogb///hsAMGPGDKxfv17nBRIRERHpmtYBaP78+YiLi8PixYthamoqtrds2RLffPONTosjIiIi0getA9C3336L2NhYDBkyBHK5XGz39vbGhQsXdFocERERkT5oHYBu3bqFxo0bq7UrlUqUlpbqpCgiIiIifdI6ADVv3hxHjhxRa9+1axdat26tk6KIiIiI9Enr2+Cjo6MRERGBW7duQalUYvfu3bh48SK+/fZb7N+/Xx81EhEREemU1jNAffr0wb59+5CUlAQrKytER0cjPT0d+/btQ9euXfVRIxEREZFOaT0DBAAdOnRAYmKirmshIiIiqhJazwA1bNgQeXl5au137txBw4YNdVIUERERkT5pHYCuXbum8fO+iouLcevWLZ0URURERKRPFb4EtnfvXvH3P/30E2xsbMTXCoUCycnJcHd312lxRERERPpQ4QAUFhYG4PEnvkdERKhsMzExgbu7O5YtW6bT4oiIiIj0ocIBqOxT4Bs0aIDjx4+jTp06eiuKiIiISJ+0vgvs6tWr+qiDiIiIqMpUKAB9+eWXePfdd2Fubo4vv/zymX0/+ugjnRRGREREpC8VCkArVqzAkCFDYG5ujhUrVpTbTyaTMQARERFRtVehAPTkZS9eAiMiIqKXndbPASIiIiJ62TEAERERkeQwABEREZHkMAARERGR5GgVgB49eoQ5c+bg5s2b+qqHiIiISO+0CkDGxsZYsmQJHj16pK96iIiIiPRO60tgnTt3xi+//KKPWoiIiIiqhNYfhREaGoopU6bg3Llz8PX1hZWVlcr23r1766w4IiIiIn3QOgCNGTMGALB8+XK1bTKZDAqF4sWrIiIiItIjrQNQ2afCExEREb2sXug2+KKiIl3VQURERFRltA5ACoUCc+fOhaurK2rUqIG///4bADBjxgysX79e5wUSERER6ZrWAWj+/PmIi4vD4sWLYWpqKra3bNkS33zzjU6LIyIiItIHrQPQt99+i9jYWAwZMgRyuVxs9/b2xoULF3RaHBEREZE+aB2Abt26hcaNG6u1K5VKlJaW6qQoIiIiIn3SOgA1b94cR44cUWvftWsXWrdurZOiiIiIiPRJ69vgo6OjERERgVu3bkGpVGL37t24ePEivv32W+zfv18fNRIRERHplNYzQH369MG+ffuQlJQEKysrREdHIz09Hfv27UPXrl31USMRERGRTmk9AwQAHTp0QGJioq5rISIiIqoSlQpAAJCWlob09HQAj9cF+fr66qwoIiIiIn3SOgDdvHkT4eHhOHr0KGxtbQEAd+7cQWBgILZv3466devqukYiIiIindJ6DdCoUaNQWlqK9PR05OfnIz8/H+np6VAqlRg1apQ+aiQiIiLSKa1ngH755RccO3YMTZs2FduaNm2Kr776Ch06dNBpcURERET6oPUMkJubm8YHHioUCri4uOikKCIiIiJ90joALVmyBB9++CHS0tLEtrS0NIwfPx5Lly7VaXFERERE+iATBEHQZodatWrhwYMHePToEYyNH19BK/u9lZWVSt/8/HzdVVqFCgoKYGNjg7t378La2lrn4/vNT9L5mNVRqtlYQ5dQNSZeNHQFREQE7X5+a70GaOXKlZWti4iIiKha0DoARURE6KMOIiIioiqj9RogfVi9ejXc3d1hbm4Of39/pKamPrP/zp074enpCXNzc3h5eeHAgQPittLSUkyePBleXl6wsrKCi4sLhg0bhtu3b+v7NIiIiOglYfAAtGPHDkRFRWHmzJk4efIkvL29ERISguzsbI39jx07hvDwcIwcORKnTp1CWFgYwsLCcP78eQDAgwcPcPLkScyYMQMnT54UP6y1d+/eVXlaREREVI1pvQha1/z9/fHaa69h1apVAAClUgk3Nzd8+OGHmDJlilr/QYMGobCwUOWT59u1awcfHx/ExMRoPMbx48fh5+eH69evo169es+tiYugdYOLoImIqCpp8/PboDNAJSUlOHHiBIKDg8U2IyMjBAcHIyUlReM+KSkpKv0BICQkpNz+AHD37l3IZDLxozueVlxcjIKCApUvIiIienVVOgBdvnwZP/30Ex4+fAgAqMxEUm5uLhQKBRwdHVXaHR0dkZmZqXGfzMxMrfoXFRVh8uTJCA8PLzcNLly4EDY2NuKXm5ub1udCRERELw+tA1BeXh6Cg4PRpEkTvPnmm/jnn38AACNHjsQnn3yi8wJfRGlpKQYOHAhBELB27dpy+02dOhV3794VvzIyMqqwSiIiIqpqWgegjz/+GMbGxrhx4wYsLS3F9kGDBiEhIUGrserUqQO5XI6srCyV9qysLDg5OWncx8nJqUL9y8LP9evXkZiY+MxrgWZmZrC2tlb5IiIioleX1gHo4MGDWLRoEerWravS7uHhgevXr2s1lqmpKXx9fZGcnCy2KZVKJCcnIyAgQOM+AQEBKv0BIDExUaV/Wfi5dOkSkpKSYGdnp1VdRERE9GrT+kGIhYWFKjM/ZfLz82FmZqZ1AVFRUYiIiEDbtm3h5+eHlStXorCwEJGRkQCAYcOGwdXVFQsXLgQAjB8/HkFBQVi2bBl69OiB7du3Iy0tDbGxsQAeh5/+/fvj5MmT2L9/PxQKhbg+qHbt2jA1NdW6RiIiInq1aD0D1KFDB3z77bfia5lMBqVSicWLF6NTp05aFzBo0CAsXboU0dHR8PHxwenTp5GQkCAudL5x44a4zggAAgMDsXXrVsTGxsLb2xu7du1CfHw8WrZsCQC4desW9u7di5s3b8LHxwfOzs7i17Fjx7Suj4iIiF49Wj8H6Pz58+jSpQvatGmDn3/+Gb1798Yff/yB/Px8HD16FI0aNdJXrVWGzwHSDT4HiIiIqpJenwPUsmVL/PXXX3j99dfRp08fFBYWol+/fjh16tQrEX6IiIjo1af1GiAAsLGxwbRp03RdCxEREVGVqFQAKioqwtmzZ5GdnQ2lUqmyjZ+5RURERNWd1gEoISEBw4YNQ25urto2mUwGhUKhk8KIiIiI9EXrNUAffvghBgwYgH/++QdKpVLli+GHiIiIXgZaB6CsrCxERUWpfR4XERER0ctC6wDUv39/HD58WA+lEBEREVUNrdcArVq1CgMGDMCRI0fg5eUFExMTle0fffSRzoojIiIi0getA9C2bdtw8OBBmJub4/Dhw5DJZOI2mUzGAERERETVntYBaNq0aZg9ezamTJkCIyOtr6ARERERGZzWCaakpASDBg1i+CEiIqKXltYpJiIiAjt27NBHLURERERVQutLYAqFAosXL8ZPP/2EVq1aqS2CXr58uc6KIyIiItIHrQPQuXPn0Lp1awCPPxn+SU8uiCYiIiKqrrQOQIcOHdJHHURERERVhiuZiYiISHIqNAPUr18/xMXFwdraGv369Xtm3927d+ukMCIiIiJ9qVAAsrGxEdf32NjY6LUgIiIiIn2rUADauHEj5syZg4kTJ2Ljxo36romIiIhIryq8Bmj27Nm4f/++PmshIiIiqhIVDkCCIOizDiIiIqIqo9VdYHzODxEREb0KtHoOUJMmTZ4bgvLz81+oICIiIiJ90yoAzZ49m3eBERER0UtPqwA0ePBgODg46KsWIiIioipR4TVAXP9DRERErwreBUZERESSU+FLYEqlUp91EBEREVUZfhgqERERSQ4DEBEREUkOAxARERFJDgMQERERSQ4DEBEREUmOVg9CJKJXm9/8JEOXUCVSpwUbugQiMjDOABEREZHkMAARERGR5DAAERERkeQwABEREZHkcBE0EUnP0qaGrqBqTLxo6AqIqi3OABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkGDwA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix.keys() if (\"resnet\" in label and \"10k\" in label)\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (CPU only, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=cpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + " ylim=0.,\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_4_\": \"4\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# (Old) FTorch and Forpy on A100 GPUs" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading: ../../results/ampere_nograd/output_10000_fix/slurm-34050397.out\n", + "Reading: ../../results/ampere_nograd/output_100000_fix/slurm-34051212.out\n" + ] + } + ], + "source": [ + "benchmarks_nograd_fix_gpu_10k = rb.read_slurm_walltime(filepath_nograd_fix_gpu_10k, gpu_labels)\n", + "benchmarks_nograd_fix_gpu_100k = rb.read_slurm_walltime(filepath_nograd_fix_gpu_100k, gpu_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "benchmarks_nograd_fix_gpu = {}\n", + "\n", + "for key, value in benchmarks_nograd_fix_gpu_10k.items():\n", + " benchmarks_nograd_fix_gpu[key + \"_10k\"] = value / 10000\n", + "\n", + "for key, value in benchmarks_nograd_fix_gpu_100k.items():\n", + " benchmarks_nograd_fix_gpu[key + \"_100k\"] = value / 100000" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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0KFDER8fjw4dOsDDwwPLli3D8ePH67BNIiIiovqj91Vsbdu2xdSpUzF16lTcuHED33//Pfbs2YP+/fujRYsWGDp0KKZMmYInn3yyLvolqhu8QqX+GfgKFSKi6jzUSdotWrTASy+9hO3btyM/Px+bNm2CsbExUlJSaqs/IiIionpXa/dBMjY2xoABAzBgwIDampKIiIjIIHiZPxEREZEGBiQiIiIiDQxIRERERBoYkIiIiIg0PNBJ2klJSUhKSkJeXh5UKpXask2bNtVKY0RERESGondAWrp0KZYtWwZPT0/Y2tpCIpHURV9EREREBqN3QIqNjcWWLVswduzYuuiHiIiIyOD0PgepvLwcPj4+ddELERERUYOgd0CaOHEiduzYURe9EBERETUIeh9iKy0tRVxcHA4dOoRu3bqhadOmasvXrl1ba80RERERGYLeAem3336Du7s7AODkyZNqy3jCNhERET0K9A5IR44cqYs+iIiIiBqMh7pR5OXLl3H58uXa6oWIiIioQdA7IKlUKixbtgwymQyOjo5wdHSEpaUlli9frnXTSCIiIqLGSO9DbAsXLsQnn3yCt956C08//TQA4JdffsGSJUtQWlqKlStX1nqTRERERPVJ74C0detWfPzxx3j++efFsW7dusHe3h5Tp05lQCIiIqJGT+9DbIWFhXB1ddUad3V1RWFhYa00RURERGRIegek7t27Y/369Vrj69evR/fu3WulKSIiIiJD0vsQ26pVqxAYGIhDhw7B29sbAJCSkoJLly5h//79td4gERERUX3Tew+Sn58fzpw5g+HDh6OoqAhFRUUYMWIETp8+jT59+tRFj0RERET1Su89SABgZ2fHk7GJiIjokVWjgPTbb7+ha9euMDIywm+//VZtbbdu3WqlMSIiIiJDqdEhNnd3dxQUFIj/3aNHD7i7u2s9evTo8UBNbNiwAU5OTpBKpfDy8kJaWlq19bt374arqyukUinc3Ny0zn0SBAFRUVGwtbWFmZkZ/P39cfbsWbUaJycnSCQStcdbb731QP0TERHRo6VGASknJwfW1tbif//999/IycnRevz99996N7Br1y5ERERg8eLFyMzMRPfu3REQEIC8vDyd9cnJyRg9ejQmTJiArKwsBAUFISgoSO2Lc1etWoV169YhNjYWqampMDc3R0BAAEpLS9XmWrZsGa5duyY+ZsyYoXf/RERE9OipUUBydHSERCIBAFy4cAH29vbi14xUPuzt7XHhwgW9G1i7di0mTZqEsLAwdOnSBbGxsWjWrBk2bdqks/69997DwIEDMWfOHHTu3BnLly9Hz549xVsPCIKAmJgYLFq0CMOGDUO3bt2wbds2XL16FfHx8WpztWjRAnK5XHyYm5vr3T8RERE9evS+iq1fv346bwhZXFyMfv366TVXeXk5MjIy4O/v/29DRkbw9/dHSkqKznVSUlLU6gEgICBArM/JyYFCoVCrkclk8PLy0przrbfeQuvWrdGjRw+sXr0ad+/erbLXsrIyKJVKtQcRERE9mvS+ik0QBHFv0n9dv35d7z0wBQUFqKiogI2Njdq4jY0NTp06pXMdhUKhs16hUIjLK8eqqgGA1157DT179kSrVq2QnJyM+fPn49q1a1i7dq3O142OjsbSpUv12j4iIiJqnGockEaMGAEAkEgkGDduHExNTcVlFRUV+O233+Dj41P7HdaRiIgI8b+7desGExMT/O9//0N0dLTatlWaP3++2jpKpRIODg710isRERHVrxoHJJlMBuDeHqQWLVrAzMxMXGZiYoKnnnoKkyZN0uvFraysYGxsjNzcXLXx3NxcyOVynevI5fJq6yt/5ubmwtbWVq3G3d29yl68vLxw9+5dnD9/Hk888YTWclNTU53BiYiIiB49NQ5ImzdvBnDv8vjZs2fXygnNJiYm8PDwQFJSEoKCggAAKpUKSUlJmD59us51vL29kZSUhPDwcHEsMTFR/NoTZ2dnyOVyJCUliYFIqVQiNTUVU6ZMqbKX48ePw8jICG3atHno7SIiIqLGTe9zkBYvXlyrDURERCA0NBSenp7o3bs3YmJiUFJSgrCwMABASEgI7O3tER0dDQCYOXMm/Pz8sGbNGgQGBmLnzp1IT09HXFwcgHuHAMPDw7FixQq4uLjA2dkZkZGRsLOzE0NYSkoKUlNT0a9fP7Ro0QIpKSl4/fXX8corr6Bly5a1un1ERETU+DzQV418+eWX+OKLL3Dx4kWUl5erLcvMzNRrruDgYOTn5yMqKgoKhQLu7u5ISEgQT7K+ePEijIz+vdjOx8cHO3bswKJFi7BgwQK4uLggPj4eXbt2FWvmzp2LkpISTJ48GUVFRfD19UVCQgKkUimAe4fLdu7ciSVLlqCsrAzOzs54/fXX1c4xIiIioseXRBAEQZ8V1q1bh4ULF2LcuHGIi4tDWFgY/vrrLxw7dgzTpk17bL6jTalUQiaTobi4GBYWFrU6d++Vh2p1Prq/NNNphm7h8TP7tKE7aNT4OVG/+BlhAHX0GVHT39963wfpgw8+QFxcHN5//32YmJhg7ty5SExMxGuvvYbi4uKHapqIiIioIdA7IF28eFG8nN/MzAw3btwAAIwdOxaff/557XZHREREZAB6ByS5XC7eSbtdu3b49ddfAdy7g7WeR+uIiIiIGiS9A1L//v2xd+9eAEBYWBhef/11PPvsswgODsbw4cNrvUEiIiKi+qb3VWxxcXFQqVQAgGnTpqF169ZITk7G888/j//973+13iARERFRfdMrIN29exdvvvkmxo8fj7Zt2wIARo0ahVGjRtVJc0RERESGoNchtiZNmmDVqlXVfus9ERERUWOn9zlIAwYMwI8//lgXvRARERE1CHqfgzRo0CDMmzcPv//+Ozw8PLS+k+3555+vteaIiIiIDEHvgDR16lQAwNq1a7WWSSQSVFRUPHxXRERERAakd0CqvIKNiIiI6FGl9zlI/1VaWlpbfRARERE1GHoHpIqKCixfvhz29vZo3rw5/v77bwBAZGQkPvnkk1pvkIiIiKi+6R2QVq5ciS1btmDVqlUwMTERx7t27YqPP/64VpsjIiIiMgS9A9K2bdsQFxeHMWPGwNjYWBzv3r07Tp06VavNERERERmC3gHpypUr6Nixo9a4SqXCnTt3aqUpIiIiIkPSOyB16dIFP//8s9b4l19+iR49etRKU0RERESGpPdl/lFRUQgNDcWVK1egUqnw9ddf4/Tp09i2bRv27dtXFz0SERER1Su99yANGzYM3377LQ4dOgRzc3NERUUhOzsb3377LZ599tm66JGIiIioXum9BwkA+vTpg8TExNruhYiIiKhB0HsPUvv27XH9+nWt8aKiIrRv375WmiIiIiIyJL0D0vnz53V+31pZWRmuXLlSK00RERERGVKND7Ht3btX/O8DBw5AJpOJzysqKpCUlAQnJ6dabY6IiIjIEGockIKCggAAEokEoaGhasuaNm0KJycnrFmzplabIyIiIjKEGgcklUoFAHB2dsaxY8dgZWVVZ00RERERGZLeV7Hl5OTURR9EREREDUaNAtK6deswefJkSKVSrFu3rtra1157rVYaIyIi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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix_gpu.keys() if (\n", + " (\"cgdrag_forpy\" in label or \"cgdrag_torch_implicit\" in label) and \"100k\" not in label\n", + " )\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix_gpu,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ywH8dcTp0qVLuHTpElq3bi3phx/KS0RERHq/D1JjxfsgPV14jxM94H2QnghfJ+oXXyP04Fm+DxIRERFRQ8SARERERKSGAYmIiIhIDQMSERERkRoGJCIiIiI1DEhEREREahiQiIiIiNQwIBERERGpYUAiIiIiUsOARERERKSGAYmIiIhIDQMSERERkRoGJCIiIiI1DEhEREREahiQiIiIiNQwIBERERGpYUAiIiIiUsOARERERKSGAYmIiIhIDQMSERERkRoGJCIiIiI1DEhEREREahiQiIiIiNQwIBERERGpYUAiIiIiUsOARERERKSGAYmIiIhIDQMSERERkRoGJCIiIiI1DEhEREREahiQiIiIiNQwIBERERGpYUAiIiIiUsOARERERKSGAYmIiIhIDQMSERERkRoGJCIiIiI1DEhEREREahiQiIiIiNQwIBERERGpYUAiIiIiUqP3gLRu3To4OztDLpfDx8cHaWlp1dbv3LkTbm5ukMvl6NKlC/bv3y9ZLggCoqOjYW9vDzMzMwQEBODixYuSmmXLlsHPzw9NmjSBlZVVbe8SERERNXJ6DUg7duxAZGQkFixYgNOnT8Pd3R2BgYHIy8vTWn/8+HGMGjUKEyZMQEZGBoKDgxEcHIxz586JNbGxsVi9ejXi4uKQmpoKc3NzBAYGorS0VKwpLy/HiBEj8Oabb9b5PhIREVHjo9eAtHLlSkyaNAlhYWHo1KkT4uLi0KRJE3z++eda6z/++GMMGDAA77zzDjp27IglS5age/fuWLt2LYC/jh6tWrUK8+fPx9ChQ9G1a1ds3rwZN27cQEJCgjjPokWL8Pbbb6NLly71sZtERETUyOgtIJWXl+PUqVMICAj4uxkDAwQEBCAlJUXrOikpKZJ6AAgMDBTrs7KyoFQqJTWWlpbw8fGpcs6aKisrQ3FxseRBRERETye9BaRbt26hoqICtra2knFbW1solUqt6yiVymrrK7/qMmdNxcTEwNLSUnw4Ojo+0XxERETUcOn9Iu3GYs6cOSgqKhIf165d03dLREREVEf0FpBatmwJQ0ND5ObmSsZzc3NhZ2endR07O7tq6yu/6jJnTZmamsLCwkLyICIioqeT3gKSiYkJPD09kZycLI6pVCokJyfD19dX6zq+vr6SegBISkoS611cXGBnZyepKS4uRmpqapVzEhEREakz0ufG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix_gpu.keys() if (\n", + " (\"cgdrag_forpy\" in label or \"cgdrag_torch_implicit\" in label) and \"100k\" in label\n", + " )\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix_gpu,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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mTP1/PPPy9PTU2PHjpV0LVTcyJUrV7R161YNGjTIbvy3337Tb7/9pv79+2cJV2b88ccfcnJyko+Pz23PlVt27NghSWrUqJHdeHBwsIoUKaIdO3boX//6103X9/DwUI0aNezGGzdubFverFkznThxQqdPn86yneu1q1atcnjOnPr0009tP4cDBw6UJFWqVEmSlJSUpAcffNAWRMqUKaP//ve/6tevn1JTUzV8+HC7uSZPniwXFxeNGjVKly9flouLi3799VctX75cnTt3VsWKFZWUlKQPPvhALVq00K+//qqAgADVqFFDkyZNUmRkpAYOHGj7B0rTpk2z7dkwDHXs2FHr1q1Tv379VL9+fX333XcaPXq0Tpw4oXfeeceu/qefftLXX3+twYMHq3jx4po1a5aeeuopHT16VKVKlZIkPffcc/ryyy81dOhQ1axZU+fOndNPP/2khIQENWzY0DZXzZo15e7uro0bN9r+PuMek9+HwoDC5PrpvLVr1xpnzpwxjh07Znz55ZdGmTJlDFdXV+PYsWO22jZt2hh16tSxu37DarUaTZs2NapUqWIbq1ev3i1PxV0/nXfmzBnjhx9+MCQZM2bMsC3/5+m8DRs2GJKMzz77zG6e1atXZxl35HTewYMHDUnGe++9Zzf+zTffGJKMmTNn2o1brVbjzJkzdo8rV67Ylrdo0cKoXr26bVlCQoLxwgsvGJKMxx9/3K4ur07n/d3NTucNGTLEcHJyynZZmTJljG7dut107g4dOmS5Jswwrp2+lGSMGTPGMIz/ncr65JNPstSOHj3akGT7mcrpnDdy/efq7250Oq9fv36Gv7+/cfbsWbvxbt26Gd7e3rZTouvWrbNdF/fP087p6elZTusdOnTIcHV1NSZNmmQbu9npvN69exsVKlSwPV++fLkhyZgyZYpd3dNPP21YLBbj4MGDtjFJhouLi93Yrl27svxMe3t7250ivZmqVasa7du3z1Et7j6czgNMCA0NVZkyZRQYGKinn35aHh4eWrFihcqXLy9JSk5O1vfff68uXbrowoULOnv2rM6ePatz584pLCxMBw4csH2az8fHR3v37tWBAwdytO2HH35YrVq1UlRUlP76669sa5YtWyZvb2+1bdvWtu2zZ88qODhYnp6eWrdunan9PnfunCT7I26SlJqaKklZjkKlpKSoTJkydo9/fuJq3759tmU1atTQe++9pw4dOmQ5TZTf/vrrr2xPU0qSm5vbDf9f/H19V1fXbNe9vvzvf+a0Nid1t8swDH311Vd6/PHHZRiG3c9UWFiYUlJSspzq6t27d5Yjpa6uripS5NqvnczMTJ07d06enp6qVq1alvVzatWqVXJyctILL7xgN/7iiy/KMAz997//tRsPDQ21HV2TpLp168rLy0t//PGHbczHx0ebN2/WyZMnb7n9EiVK6OzZs6Z6R+HH6TzAhDlz5qhq1apKSUnR/Pnz9eOPP9r9Mjt48KAMw9D48eM1fvz4bOc4ffq0ypUrp0mTJqlTp06qWrWqateurXbt2qlnz56qW7fuDbc/ceJEtWjRQtHR0RoxYkSW5QcOHFBKSorKli17w23fDuMf15oUL15cknTx4kW7cU9PT9v1ImvWrNH06dOzzBUUFKQPP/xQFovFdtuAG/V9M3l9vyN3d3dlZGRkuyw9Pf2W11W5u7vr8uXL2a57ffnf/8xpbU7qbteZM2d0/vx5zZs3T/Pmzcu25p8/UxUrVsxSY7Va9e677+r999/XoUOHlJmZaVt2/VSao44cOaKAgADbz+B1109xHjlyxG7879eZXVeiRAm7awWjoqLUu3dvBQYGKjg4WI8++qh69eql+++/P8u6hmEUunttIfcQogATGjdubLtmJTw8XM2aNdMzzzyj/fv3y9PT03aPo1GjRiksLCzbOSpXrizp2pGl33//Xd98843WrFmjjz76SO+8846io6PVv3//bNd9+OGH1bJlS0VFRem5557Lstxqtaps2bL67LPPsl2/TJkyDu+z9L9fdH//hSNJ1atXlyTt2bPHbrxo0aIKDQ2VJB0/fjzbOT08PGw1N3KzIz3X75t1/ehLXvH391dmZqZOnz5tF/IyMjJ07tw5BQQE3HL9devWZfmle+rUKUmyre/v7283/nenTp1SyZIlbYE9p3Perus/z//617/Uu3fvbGv+GfqzC3Cvv/66xo8fr759+2ry5MkqWbKkihQpouHDh9vdFywvOTk5ZTv+938YdOnSRc2bN9d//vMfW/h/88039fXXX6t9+/Z26/3555+qUqVKnvaMgosQBdwmJycnTZs2Ta1atdLs2bM1ZswY279YnZ2dbxkQJKlkyZKKiIhQRESELl68qIcfflgTJ068YYiSrh2NatmypT744IMsyypV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atRQXFycDMOwjW3cuFHFixdX+fLlb7n+zz//nOV5jRo1bM/r1KmjRo0a6cMPP9TixYvVt2/f3GveQYQoAACQawYPHqxjx47p+eef1759+/TNN99owoQJGjlypO16qJtZtmyZ5s+fr99++00TJkzQli1bsnwir3///nrjjTdkGIaeeOKJvNqVWyJEAQCAXFOuXDmtWrVKW7ZsUb169fTcc8+pX79+GjduXI7Wf+2117RkyRLVrVtXn3zyiT7//HPVrFnTrqZ79+4qWrSounfvLjc3t7zYjRzhmigAAAqggv6J4IULF95wWYsWLbRly5YbLl+/fv0NlwUEBGjNmjU33fbZs2eVnp6ufv363arNPEWIAgAAhcKVK1d07tw5jRs3Tg8++KAaNmyYr/1wOg8AABQKGzdulL+/v7Zu3Wp3g878wpEoAABQIPz9E33Zadmy5S1r7iSORAEAAJhAiAIAADCBEAUAAGACIQoAAMAEQhQAAIAJhCgAAAATCFEAAKDQWr9+vSwWi86fP3/Ht819ogAAKIjeqnZntzdqv0Plffr00aJFixzezLp169SyZUuH1yuICFEAAMCUdu3aacGCBbbnGRkZcnJykpOTkyRp2LBhSk1NtaspWbJkjufPzMyUxWJRkSIF88RZwewKAAAUeK6urvLz87M97rvvPpUrV8723N3d3a7G1dVV/fv3V4kSJVSsWDG1b99eBw4csM23cOFC+fj4aMWKFapZs6ZcXV119OhRXb58WS+//LICAwPl6uqqypUr6+OPP7brZdu2bWrUqJGKFSumpk2bav9+x46smUGIAgAAd0SfPn0UHx+vFStWKC4uToZh6NFHH9WVK1dsNZcuXdKbb76pjz76SHv37lXZsmXVq1cvff7555o1a5YSEhL0wQcfyNPT027usWPH6u2331Z8fLyKFi2qvn375vn+FIgQNWfOHAUFBcnNzU0hISHasmXLTeuXLVum6tWry83NTXXq1NGqVavslhuGocjISPn7+8vd3V2hoaF2Sffw4cPq16+fKlasKHd3d1WqVEkTJkxQRkaG3Ty//PKLmjdvLjc3NwUGBioqKir3dhoAgEJu5cqV8vT0tD06d+58w9oDBw5oxYoV+uijj9S8eXPVq1dPn332mU6cOKHly5fb6q5cuaL3339fTZs2VbVq1XT8+HF98cUXmj9/vp544gnd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TaSlpalevXrq27evnnzyyfxuB0AB8+abb2ru3LlatGiRatWqpfj4eEVERMjb21svvPBCfreHPEaIAm6iffv2at++fX63AaCA2rRpkzp16qQOHTpIkoKCgvT5559ry5Yt+dwZ7gRO5wEAYFLTpk0VGxur3377TZK0a9cu/fTTT/zj6x7BkSgAAEwaM2aMUlNTVb16dTk5OSkzM1NTp05Vjx498rs13AGEKAAATPriiy/02WefafHixapVq5Z27typ4cOHKyAgQL17987v9pDHCFEAAJg0evRojRkzRt26dZMk1alTR0eOHNG0adMIUfcArokCAMCkS5cuqUgR+1+lTk5Oslqt+dQR7iSORAE3cfHiRR08eND2/NChQ9q5c6dKliyp++67Lx87A1AQPP7445o6daruu+8+1apVSzt27NCMGTPUt2/f/G4Nd4DF4I5gwA2tX79erVq1yjLeu3dvLVy48M43BKBAuXDhgsaPH6///Oc/On36tAICAtS9e3dFRkbKxcUlv9tDHiNEAQAAmMA1UQAAACYQogAAAEwgRAEAAJhAiAIAADCBEAUAAGACIQoAAMAEQhQAAIAJhCgAyGMTJ05U/fr187sNm8OHD8tisWjnzp353QpQqBGiAOSZY8eOqW/fvgoICJCLi4sqVKigYcOG6dy5c/nST58+fWSxWPTcc89lWTZkyBBZLBb16dMnS73FYpGLi4sqV66sSZMm6erVqzfchsVi0fLly/OgewAFDSEKQJ74448/1KhRIx04cECff/65Dh48qOjoaMXGxqpJkyZKTk7Ol74CAwO1ZMkS/fXXX7ax9PR0LV68ONvvQ2zXrp1OnTqlAwcO6MUXX9TEiRM1ffr0PO8zIyMjz7cB4PYQogDkiSFDhsjFxUVr1qxRixYtdN9996l9+/Zau3atTpw4obFjx9pqg4KCNHnyZHXv3l0eHh4qV66c5syZYzff+fPn1b9/f5UpU0ZeXl5q3bq1du3aZVt+/ZTZp59+qqCgIHl7e6tbt266cOGC3TwNGzZUYGCgvv76a9vY119/rfvuu08NGjTIsh+urq7y8/NThQoVNGjQIIWGhmrFihXZ7nNQUJAk6YknnpDFYrE9v+5mvbVs2VJDhw7V8OHDVbp0aYWFhUmS9uzZo/bt28vT01O+vr7q2bOnzp49a1tv9erVatasmXx8fFSqVCk99thj+v333+22u2XLFjVo0EBubm5q1KiRduzYYbf8zz//VI8ePVSmTBm5u7urSpUqWrBgQbb7COB/CFEAcl1ycrK+++47DR48WO7u7nbL/Pz81KNHDy1dulR//+rO6dOnq169etqxY4fGjBmjYcOGKSYmxra8c+fOOn36tP773/9q27Ztatiwodq0aWN3ROv333/X8uXLtXLlSq1cuVI//PCD3njjjSz99e3b1y4kzJ8/XxERETnaN3d39xseJdq6daskacGCBTp16pTteU57W7RokVxcXLRx40ZFR0fr/Pnzat26tRo0aKD4+HitXr1aSUlJ6tKli22dtLQ0jRw5UvHx8YqNjVWRIkX0xBNPyGq1SpIuXryoxx57TDVr1tS2bds0ceJEjRo1ym6748eP16+//qr//ve/SkhI0Ny5c1W6dOkcvR7APc0AgFz2888/G5KM//znP9kunzFjhiHJSEpKMgzDMCpUqGC0a9fOrqZr165G+/btDcMwjA0bNhheXl5Genq6XU2lSpWMDz74wDAMw5gwYYJRrFgxIzU11bZ89OjRRkhIiO157969jU6dOhmnT582XF1djcOHDxuHDx823NzcjDNnzhidOnUyevfunaXeMAzDarUaMTExhqurqzFq1Kgb7nt2+52T3lq0aGE0aNDAbr3JkycbjzzyiN3YsWPHDEnG/v37s93+mTNnDEnG7t27DcMwjA8++MAoVaqU8ddff9lq5s6da0gyduzYYRiGYTz++ONGRETEDfcJQPaK5meAA3B3M/52pOlWmjRpkuX5zJkzJUm7du3SxYsXVapUKbuav/76y+7UVVBQkIoXL2577u/vr9OnT2fZVpkyZdShQwctXLhQhmGoQ4cONzzysnLlSnl6eurKlSuyWq165plnNHHixBzvlyO9BQcH2z3ftWuX1q1bJ09Pzyzz/f7776pataoOHDigyMhIbd68WWfPnrUdgTp69Khq166thIQE1a1bV25ubrZ1//laDxo0SE899ZS2b9+uRx55ROHh4WratKnD+wjcawhRAHJd5cqVZbFYlJCQoCeeeCLL8oSEBJUoUUJlypTJ0XwXL16Uv7+/1q9fn2WZj4+P7b+dnZ3tllksFluo+Ke+fftq6NChkpTl+qu/a9WqlebOnSsXFxcFBASoaFFzb5s56c3Dw8Pu+cWLF/X444/rzTffzDKfv7+/JOnxxx9XhQoV9OGHHyogIEBWq1W1a9d26ML09u3b68iRI1q1apViYmLUpk0bDRkyRG+99VaO5wDuRYQoALmuVKlSatu2rd5//32NGDHC7rqoxMREffbZZ+rVq5csFott/Oeff7ab4+eff1aNGjUkXbsYPDExUUWLFs1ysbZZ7dq1U0ZGhiwWi+0i7ux4eHiocuXKOZ7X2dlZmZmZudGiGjZsqK+++kpBQUHZhrdz585p//79+vDDD9W8eXNJ0k8//WRXU6NGDX366adKT0+3HY3652stXTs617t3b/Xu3VvNmzfX6NGjCVHALXBhOYA8MXv2bF2+fFlhYWH68ccfdezYMa1evVpt27ZVuXLlNHXqVLv6jRs3KioqSr/99pvmzJmjZcuWadiwYZKk0NBQNWnSROHh4VqzZo0OHz6sTZs2aezYsYqPjzfVn5OTkxISEvTrr7/Kycnptvf3uqCgIMXGxioxMVF//vnnbc01ZMgQJScnq3v37tq6dat+//13fffdd4qIiFBmZqZKlCihUqVKad68eTp48KC+//57jRw50m6OZ555RhaLRQMGDNCvv/6qVatWZQlHkZGR+uabb3Tw4EHt3btXK1eutAVYADdGiAKQJ6pUqaL4+Hjdf//96tKliypVqqSBAweqVatWiouLU8mSJe3qX3zxRcXHx6tBgwaaMmWKZsyYYTtCZLFYtGrVKj388MOKiIhQ1apV1a1bNx05ckS+vr6me/Ty8pKXl9dt7ec/vf3224qJiVFgYGC2t0xwREBAgDZu3KjMzEw98sgjqlOnjoYPHy4fHx8VKVJERYoU0ZIlS7Rt2zbVrl1bI0aMyHIPK09PT3377bfavXu3GjRooLFjx2Y5Peji4qJXXnlFdevW1cMPPywnJyctWbLktnoH7gUWw5ErPwEgDwQFBWn48OEaPnx4frcCADnGkSgAAAATCFEAAAAmcDoPAADABI5EAQAAmECIAgAAMIEQBQAAYAIhCgAAwARCFAAAgAmEKAAAABMIUQAAACYQogAAAEwgRAEAAJjw/yA2lJh4z+5ZAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix_gpu.keys() if (\"resnet\" in label and \"100k\" not in label)\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix_gpu,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ZtasWcjPz8eECROQk5OD7t27Izo6GkZGRlJNaGgotm7dKj3v2LEjAODo0aPo1asXvvnmG9y6dQtfffUVvvrqK6muWbNmuHbtWk29HERERFSPaPU+Uc863ifq2cJ7wGgB7xMlG/cRtY/7CC14Xu8TRURERFSfMUQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJoHGISk9Px40bN6TnCQkJmD59OjZu3FitjRERERHVZRqHqDfffBNHjx4FACiVSvTr1w8JCQmYN28eFi9eXO0NEhEREdVFGoeo5ORkdOnSBQCwe/dutG/fHqdOncL27dsRFRVV3f0RERER1Ukah6ji4mIYGhoCAA4fPoxXX30VANC6dWv8888/1dsdERERUR2lcYhq164dIiMjceLECcTExKB///4AgL///huNGjWq9gaJiIiI6iKNQ9Ty5cvx2WefoVevXggMDISrqysAYP/+/dJpPiIiIqJnnZ6mM/Tq1QtZWVnIy8vDCy+8II1PmDABJiYm1docERERUV0l6z5Rurq6agEKABwdHWFlZaXxstavXw9HR0cYGRnBw8MDCQkJldbv2bMHrVu3hpGREVxcXHDw4EG16UIIhIaGwtbWFsbGxvDx8UFqaqpazbJly+Dl5QUTExNYWlqWu560tDT4+fnBxMQEVlZWmDlzJh48eKDx9hEREdGzSas329y1axdCQkIQFhaGM2fOwNXVFb6+vsjMzCy3/tSpUwgMDMTYsWNx9uxZ+Pv7w9/fH8nJyVJNREQE1qxZg8jISMTHx8PU1BS+vr4oKCiQaoqKijBs2DBMnDix3PWUlJTAz88PRUVFOHXqFLZu3YqoqCiEhoZW7wtARERE9ZZCCCG0tXIPDw907twZ69atAwCoVCo4ODhg6tSpmD17dpn6ESNGID8/HwcOHJDGunbtCjc3N0RGRkIIATs7O7z//vuYMWMG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tBqiGjduDF1dXWRkZKiNZ2RkwMbGptx5bGxsKq0v/fmkmscvXH/w4AGys7OlmiNHjuCjjz6Cnp4e9PT0MHbsWOTm5kJPT6/C67UMDQ1hbm6u9iAiIqJnk1ZDlIGBAdzd3REbGyuNqVQqxMbGwtPTs9x5PD091eoBICYmRqp3cnKCjY2NWk1eXh7i4+OlGk9PT+Tk5CApKUmqOXLkCFQqFTw8PAA8vG7q3Llz0mPx4sVo0KABzp07h6FDh1bPC0BERET1lp62GwgJCUFQUBA6deqELl26YPXq1cjPz0dwcDAAYNSoUbC3t0d4eDgAYNq0afD29sbKlSvh5+eHnTt3IjExERs3bgQAKBQKTJ8+HUuXLoWzszOcnJywYMEC2NnZwd/fHwDQpk0b9O/fH+PHj0dkZCSKi4sxZcoUBAQEwM7OTqp5VGJiInR0dNC+fftaemWIiIioLtN6iBoxYgRu3bqF0NBQKJVKuLm5ITo6WrowPC0tDTo6/ztg5uXlhR07dmD+/PmYO3cunJ2dsXfvXrVwM2vWLOTn52PChAnIyclB9+7dER0dDSMjI6lm+/btmDJlCvr27QsdHR28/vrrWLNmTe1tOBEREdVrCiGE0HYTz6q8vDxYWFggNze32q+P6rLscLUuj54swXCytlt4/sy4pO0O6i3uI2of9xFaUEP7iKq+f/PTeUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERycAQRURERCQDQxQRERGRDAxRRERERDIwRBERERHJwBBFREREJANDFBEREZEMDFFEREREMjBEEREREcnAEEVEREQkA0MUERERkQwMUUREREQyMEQRERERyVAnQtT69evh6OgIIyMjeHh4ICEhodL6PXv2oHXr1jAyMoKLiwsOHjyoNl0IgdDQUNja2sLY2Bg+Pj5ITU1Vq8nOzsbIkSNhbm4OS0tLjB07Fnfv3pWmHzt2DEOGDIGtrS1MTU3h5uaG7du3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix_gpu.keys() if (\"resnet\" in label and \"100k\" in label)\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix_gpu,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (GPU, 100,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=gpu_n_threads,\n", + " xlabel=\"OpenMP threads\",\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# (Old) FTorch and Forpy on CPU and GPU" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "benchmarks_nograd_fix_gpu_cpu = {}\n", + "\n", + "for key, value in benchmarks_nograd_fix.items():\n", + " if (\"_8\" in key and \"10k\" in key):\n", + " benchmarks_nograd_fix_gpu_cpu[key] = value\n", + "for key, value in benchmarks_nograd_fix_gpu.items():\n", + " if (\"_8\" in key and \"100k\" not in key):\n", + " benchmarks_nograd_fix_gpu_cpu[key] = value" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix_gpu_cpu.keys() if (\n", + " \"cgdrag_torch_explicit\" in label or \"cgdrag_forpy\" in label\n", + " )\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix_gpu_cpu,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"cgdrag (10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=[\"CPU\", \"GPU\"],\n", + " xlabel=\"Device\",\n", + " # yscale=\"log\",\n", + " # ylim=(0.005, 0.1),\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAHHCAYAAABEEKc/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJwUlEQVR4nO3deVyU5f7/8fcAMiAKuIIoKi5JpkGBIKS54aHSkhZT65tLmnU0j4ZmLolpGidN8+uSxKm0RY+m9TUzD6W4nI5yJNfKo6ZpuSS4BSimCHP//vDHnGZAZAwYxNfz8ZgHzXVf93V/7omGd/dy3SbDMAwBAADAysXZBQAAAFQ2BCQAAAA7BCQAAAA7BCQAAAA7BCQAAAA7BCQAAAA7BCQAAAA7BCQAAAA7BCQAAAA7BCQAFebYsWPy8PDQli1bnF1KpbB48WKZTCb99NNPzi6l1F555RWZTCZnl6Fx48YpMjLS2WWgCiMgARWg8A9h4cvNzU0NGzbUwIEDdeLEiXLbbuEfMz8/P128eLHI8qZNm6pnz543NPZbb72lxYsXO7TO1KlTFRkZqXvuucfaduDAAb3wwguKjo6Wh4fHdQPD6tWrdffdd8vDw0ONGzfW5MmTlZ+fX+oa3n33Xd1+++3y8PBQy5YtNW/evGL7nThxQo8//rh8fX3l7e2tXr166fDhw39ozNK4kc+1rF28eFGvvPKKNm3a5NQ6SjJq1Cjt2bNHq1evdnYpqKoMAOVu0aJFhiRj6tSpxocffmj87W9/MwYPHmy4uroazZs3N3777bdy2e7kyZMNSYYk44033iiyvEmTJkaPHj1uaOw77rjD6NSpU6n7nzp1yqhWrZqxdOlSm/ZFixYZLi4uRps2bYzQ0FBDknHkyJFix1i7dq1hMpmMLl26GMnJycaIESMMFxcX47nnnitVDUlJSYYk49FHHzWSk5ONp556ypBk/PWvf7Xpd/78eaNly5ZG/fr1jddff92YPXu2ERgYaDRq1Mg4c+bMDY1ZnPz8fOO3334zLBaLtc3Rz7U8nD592pBkTJ48uciyK1eulNvvq6Mef/xxo2PHjs4uA1UUAQmoAIUB6ZtvvrFpf+mllwxJxvLly8tlu4UBKTQ01PDz8zMuXrxos7wiA9Ls2bMNT09P4/z58zbtZ8+eNXJycgzDMIyZM2eWGJBat25thISEGFeuXLG2TZw40TCZTMa+fftK3P7FixeNOnXqFNnfJ5980vDy8jLOnTtnbXv99dcNSUZ6erq1bd++fYarq6sxfvz4GxqztMojIF25csW4fPlyqfuXFJAqk5UrVxomk8n48ccfnV0KqiBOsQFO1LFjR0nSjz/+aNO+f/9+PfbYY6pdu7Y8PDwUHh5e5FTClStXNGXKFLVs2VIeHh6qU6eOOnTooHXr1hXZTkJCgjIzM7Vw4cLr1mSxWDRnzhzdcccd8vDwkJ+fn5599ln9+uuv1j5NmzbV3r17tXnzZutpw86dO5c47qpVqxQZGakaNWrYtNeuXVs1a9a8bl3/+c9/9J///EdDhw6Vm5ubtX3YsGEyDEMrV64scf2NGzfq7NmzGjZsmE378OHDlZubqy+++MLatnLlSrVr107t2rWztgUHB6tbt276+OOPb2jM4thfg3S9zzUrK0ujRo1SYGCgzGazWrRooddff10Wi8Xa56effpLJZNIbb7yhOXPmqHnz5jKbzfrPf/6jvLw8JSQkKCwsTD4+PvLy8lLHjh21ceNGm/Xr1asnSZoyZYq1jldeeUVS8dcg5efn69VXX7Vuq2nTppowYYIuX75s06/wlO6//vUvRUREyMPDQ82aNdMHH3xg06+0v9sxMTGSpM8++6zEzxm4EQQkwIkK/zDWqlXL2rZ37161b99e+/bt07hx4zRr1ix5eXkpLi5O//d//2ft98orr2jKlCnq0qWL5s+fr4kTJ6px48bauXNnke107NhRXbt21YwZM/Tbb7+VWNOzzz6rF198Uffcc4/+93//V4MGDdKSJUsUGxurK1euSJLmzJmjRo0aKTg4WB9++KE+/PBDTZw48ZpjXrlyRd98843uvvtuRz4eG7t27ZIkhYeH27QHBASoUaNG1uWOrh8WFiYXFxfrcovFom+//bZIP0mKiIjQjz/+qPPnzzs0ZmmV9LlevHhRnTp10kcffaT+/ftr7ty5uueeezR+/HjFx8cXGWvRokWaN2+ehg4dqlmzZql27drKycnRO++8o86dO+v111/XK6+8otOnTys2Nla7d++WJNWrV88apB9++GFrHY888sg16x4yZIgSEhJ09913680331SnTp2UmJiovn37Ful76NAhPfbYY+revbtmzZqlWrVqaeDAgdq7d6+1T2l/t318fNS8eXMu+kf5cPYhLOBWUHiK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dWobVJzCMHrlypUbHoOABABAOeOZnRWrLD5vAhIAAIAdAhIAAIAdLtIGAKCCRUxfX6HbS58Y41D/gQMH6v333y/SfvDgQbVo0aKsyqrUCEgAAKCI++67T4sWLbJpq1evnsPj5OXl3ZQXqXOKDQAAFGE2m63PMS18ubq6avPmzYqIiJDZbFaDBg00btw45efnW9fr3Lmznn/+eY0aNUp169ZVbGyspKsXTi9cuFD333+/PD091axZM61cudK6XteuXfX888/b1HD69Gm5u7sXeVB9RSAgAQCAUjlx4oQeeOABtWvXTnv27NHChQv17rvvatq0aTb93n//fbm7u2vLli1KSkqytk+aNEmPPvqo9uzZoyeffFJ9+/bVvn37JElDhgzR0qVLdfnyZWv/jz76SA0bNlTXrl0rZgd/h4AEAACKWLNmjWrUqGF99e7dW2+99ZYCAwM1f/58BQcHKy4uTlOmTNGsWbNsHqXSsmVLzZgxQ61atVKrVq2s7b1799aQIUN022236dVXX1V4eLjmzZsnSXrkkUckSZ999pm1/+LFizVw4ECnTJNAQAIAAEV06dJFu3fvtr7mzp2rffv2KSoqyiaw3HPPPbpw4YKOHz9ubQsLCyt2zKioqCLvC48geXh46KmnntJ7770nSdq5c6e+//57DRw4sIz3rHS4SBsAABTh5eV1w3eseXl53dB6Q4YMUWhoqI4fP65Fixapa9euatKkyQ2N9UdxBAkAAJTK7bffrrS0NBmGYW3bsmWLatasqUaNGl13/X//+99F3t9+++3W923btlV4eLj+9re/aenSpXr66afLrngHEZAAAECpDBs2TMeOHdOIESO0f/9+ffbZZ5o8ebLi4+Pl4nL9SLFixQq99957+uGHHzR58mSlp6cXuXNtyJAh+utf/yrDMPTwww+X165cFwEJAACUSsOGDbV27Vqlp6crJCREzz33nAYPHqyXX365VOtPmTJFy5Yt05133qkPPvhAf//739W6dWubPv369ZObm5v69esnDw+P8tiNUuEaJAAAKpijM1tXtMWLF19zWadOnZSenn7N5Zs2bbrmsoCAAH311VclbvvMmTO6dOmSBg8efL0yyxUBCQAAON2VK1d09uxZvfzyy2rfvr3uvvtup9bDKTYAAOB0W7ZsUYMGDfTNN9/YTC7pLBxBAgAA5e73d74Vp3Pn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cOFCedVaqTAPUtXCPEhOwDxIAJyg3OZBys3NLXbeoHPnzslsNjs6HAAAQKXjcEDq2LGjPvjgA+t7k8kki8WiGTNmqEuXLmVaHAAAgDM4fJH2jBkz1K1bN23fvl15eXkaO3as9u7dq3PnzmnLli3lUSMAAECFcvgIUps2bfTDDz+oQ4cO6tWrl3Jzc/XII49o165dat68eXnUCAAAUKEcPoIkXX222cSJE8u6FgAAgErhhgLSpUuX9O233+rUqVOyWCw2yx566KEyKQwAAMBZHA5IKSkp6t+/v86cOVNkmclkUkFBQZkUBgAA4CwOX4M0YsQI9e7dWydPnpTFYrF5EY4AAEBV4HBAyszMVHx8vHWmawAAgKrG4YD02GOPadOmTeVQCgAAQOXg8DVI8+fPV+/evfX111+rbdu2qlatms3yv/zlL2VWHAAAgDM4HJD+/ve/66uvvpKHh4c2bdokk8lkXWYymQhIAADgpudwQJo4caKmTJmicePGycXF4TN0AAAAlZ7DCScvL099+vQhHAEAgCrL4ZQzYMAALV++vDxqAQAAqBQcPsVWUFCgGTNm6Msvv9Sdd95Z5CLt2bNnl1lxAAAAzuBwQPruu+901113SZK+//57m2W/v2AbAADgZuVwQNq4cWN51AEAAFBpcKU1AACAnVIdQXrkkUe0ePFieXt765FHHimx76efflomhQEAADhLqQKSj4+P9foiHx+fci0IAADA2UoVkBYtWqSpU6dqzJgxWrRoUXnXBAAA4FSlvgZpypQpunDhQnnWAgAAUCmUOiAZhlGedQAAAFQaDt3FxjxHAADgVuDQPEi33XbbdUPSuXPn/lBBAAAAzuZQQJoyZQp3sQEAgCrPoYDUt29f1a9fv7xqAQAAqBRKfQ0S1x8BAIBbBXexAQAA2Cn1KTaLxVKedQAAAFQaPKwWAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADADgEJAADATqUISAsW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u+66S1999ZVee+017dq1S2lpaRo7dqzWrFmj9evXW/vyPXFrcvpEkUB5GDZsmEwmk9LT0+Xl5WVtv+OOO/T0009b39esWVP+/v7y9/fXggUL9NFHH+nzzz9XdHS0M8oGUEGGDRsmNzc3bd++3eY7olmzZurVq5fNk975nrg1cQQJVc65c+eUkpKi4cOH23zxFbrWM/Tc3NxUrVo15eXllXOFAJzp7Nmz+uqrr675HSHpmg8h53vi1kFAQpVz6NAhGYah4ODgUq+Tl5enxMREZWdnq2vXruVYHQBnK/yOaNWqlU173bp1VaNGDdWoUUMvvfRSkfX4nri1EJBQ5TgyOfxLL72kGjVqqHr16nr99df117/+VT169CjH6gBUVunp6dq9e7fuuOMOXb582drO98StiWuQUOW0bNlSJpNJ+/fvv27fF198UQMHDlSNGjXk5+dnc1jd29tbP//8c5F1srKy5Orqes1D8wAqtxYtWshkMunAgQM27c2aNZMkeXp62rTzPXFr4ggSqpzatWsrNjZWCxYsUG5ubpHlv7/ttm7dumrRooX8/f2LXHPQqlUr7d271+b/JCVp586dCgoKUrVq1cqlfgDlq06dOurevbvmz59f7HeEPb4nbk0EJFRJCxYsUEFBgSIiIvTJJ5/o4MGD2rdvn+bOnauoqKhSjfHkk0/KZDKpf//+2rFjhw4dOqT33ntPc+bM0ejRo8t5DwCUp7feekv5+fkKDw/X8uXLtW/fPh04cEAfffSR9u/fL1dX11KNw/dE1cUpNlRJzZo1086dOzV9+nSNHj1aJ0+eVL169RQWFqaFCxeWagxfX199/fXXGjdunB566CFlZ2erRYsWmj17tgYPHlzOewCgPDVv3ly7du3Sa6+9pvHjx+v48eMym81q3bq1xowZo2HDhpVqHL4nqi6T4cgVrQAAALcATrEBAADYISABAADYISABAADYISABAADYISABAADYISABAADYISABAADYISABwHVs2rRJJpPJ5jE1AKo2AhKAm9bAgQNlMplkMplUrVo1+fn5qXv37nrvvfdksVjKbDvR0dE6efKkfHx8ymxMAJUbAQnATe2+++7TyZMn9dNPP+kf//iHunTpopEjR6pnz57Kz88vk224u7sX+6BSAFUXAQnATc1sNsvf318NGzbU3XffrQkTJuizzz7TP/7xDy1evFiSlJWVpSFDhqhevXry9vZW165dtWfPHknSDz/8IJPJpP3799uM++abb6p58+aSij/FtmXLFnXu3FnVq1dXrVq1FBsbq19//VWSZLFYlJiYqKCgIHl6eiokJEQrV64s/w8DQJkhIAGocrp27aqQkBB9+umnkqTevXvr1KlT+sc//qEdO3bo7rvvVrdu3XTu3DnddtttCg8P15IlS2zGWLJkiZ544olix9+9e7e6deum1q1bKy0tTf/617/04IMPqqCgQJKUmJioDz74QElJSdq7d69eeOEF/c///I82b95cvjsOoMzwsFoAN62BAwcqKytLq1atKrKsb9+++vbbb5WcnKwePXro1KlTMpvN1uUtWrTQ2LFjNXToUM2ZM0fz58/XoUOHJF09qtSqVSvt27dPwcHB2rRpk7p06aJff/1Vvr6+euKJJ3T06FH961//KrLdy5cvq3bt2lq/fr2ioqKs7UOGDNHFixe1dOnSsv8gAJQ5N2cXAADlwTAMmUwm7dmzRxcuXFCdOnVslv/222/68ccfJV0NU2PGjNG///1vtW/fXkuWLNHdd9+t4ODgYsfevXu3evfuXeyyQ4cO6eLFi+revbtNe15enu66664y2DMAFYGABKBK2rdvn4KCgnThwgU1aNBAmzZtKtLH19dXkuTv76+uXbtq6dKlat++vZYuXao///nP1xzb09PzmssuXLggSfriiy/UsGFDm2W/P4IFoHIjIAGocjZs2KDvvvtOL7zwgho1aqSMjAy5ubmpadOm11znySef1NixY9WvXz8dPnxYffv2vWbfO++8U6mpqZoyZUqRZa1bt5bZbNbRo0fVqVOnstgdAE5AQAJwU7t8+bIyMjJUUFCgzMxMpaSkKDExUT179lT//v3l4uKiqKgoxcXFacaMGbrtttv0yy+/6IsvvtDDDz+s8PBwSdIjjzyiP//5z/rzn/+sLl26KCAg4JrbHD9+vNq2bathw4bpueeek7u7uzZu3KjevXurbt26GjNmjF544QVZLBZ16NBB2dnZ2rJli7y9vTVgwICK+mgA/AEEJAA3tZSUFDVo0EBubm6qVauWQkJCNHfuXA0YMEAuLldv1F27dq0mTpyoQYMG6fTp0/L399e9994rPz8/6zg1a9bUgw8+qI8//ljvvfdeidu87bbb9NVXX2nChAmKiIiQp6enIiMj1a9fP0nSq6++qnr16ikxMVGHDx+Wr6+vdQoCADcH7mIDAACwwzxIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdghIAAAAdv4fMzE217VvTB4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_labels = [\n", + " label for label in benchmarks_nograd_fix_gpu_cpu.keys() if (\"resnet\" in label)\n", + "]\n", + "rb.plot_walltimes(\n", + " benchmarks=benchmarks_nograd_fix_gpu_cpu,\n", + " labels=filtered_labels,\n", + " ylabel=\"Time per iteration / s\",\n", + " title=\"ResNet (10,000 iterations)\",\n", + "\n", + " legend_labels={\"forpy\": \"Forpy\", \"torch\": \"FTorch\"},\n", + " xticklabels=[\"CPU\", \"GPU\"],\n", + " xlabel=\"Device\",\n", + " # yscale=\"log\",\n", + " ylim=(0., 0.01),\n", + "\n", + " # legend_labels={\"_1_\": \"1\", \"_8_\": \"8\"},\n", + " # xticklabels=[\"Forpy\", \"FTorch\"],\n", + " # xlabel=\"PyTorch interface\",\n", + "\n", + " bar_width=0.35,\n", + ")" ] } ],