Files
TheRock/rocm-systems/projects/rocprofiler-systems/external/papi/ChangeLogs/ChangeLogP700.txt
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

4979 lines
237 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
2022-11-10 Giuseppe Congiu <gcongiu@icl.utk.edu>
* ChangeLogP700.txt, RELEASENOTES.txt, doc/Doxyfile-common,
man/man1/PAPI_derived_event_files.1, man/man1/papi_avail.1,
man/man1/papi_clockres.1, man/man1/papi_command_line.1,
man/man1/papi_component_avail.1, man/man1/papi_cost.1,
man/man1/papi_decode.1, man/man1/papi_error_codes.1,
man/man1/papi_event_chooser.1, man/man1/papi_hardware_avail.1,
man/man1/papi_hybrid_native_avail.1, man/man1/papi_mem_info.1,
man/man1/papi_multiplex_cost.1, man/man1/papi_native_avail.1,
man/man1/papi_version.1, man/man1/papi_xml_event_info.1,
man/man3/PAPIF_accum.3, man/man3/PAPIF_add_event.3,
man/man3/PAPIF_add_events.3, man/man3/PAPIF_add_named_event.3,
man/man3/PAPIF_assign_eventset_component.3,
man/man3/PAPIF_cleanup_eventset.3,
man/man3/PAPIF_create_eventset.3,
man/man3/PAPIF_destroy_eventset.3, man/man3/PAPIF_enum_dev_type.3,
man/man3/PAPIF_enum_event.3, man/man3/PAPIF_epc.3,
man/man3/PAPIF_event_code_to_name.3,
man/man3/PAPIF_event_name_to_code.3, man/man3/PAPIF_flips_rate.3,
man/man3/PAPIF_flops_rate.3, man/man3/PAPIF_get_clockrate.3,
man/man3/PAPIF_get_dev_attr.3, man/man3/PAPIF_get_dev_type_attr.3,
man/man3/PAPIF_get_dmem_info.3, man/man3/PAPIF_get_domain.3,
man/man3/PAPIF_get_event_info.3, man/man3/PAPIF_get_exe_info.3,
man/man3/PAPIF_get_granularity.3,
man/man3/PAPIF_get_hardware_info.3, man/man3/PAPIF_get_multiplex.3,
man/man3/PAPIF_get_preload.3, man/man3/PAPIF_get_real_cyc.3,
man/man3/PAPIF_get_real_nsec.3, man/man3/PAPIF_get_real_usec.3,
man/man3/PAPIF_get_virt_cyc.3, man/man3/PAPIF_get_virt_usec.3,
man/man3/PAPIF_ipc.3, man/man3/PAPIF_is_initialized.3,
man/man3/PAPIF_library_init.3, man/man3/PAPIF_lock.3,
man/man3/PAPIF_multiplex_init.3, man/man3/PAPIF_num_cmp_hwctrs.3,
man/man3/PAPIF_num_events.3, man/man3/PAPIF_num_hwctrs.3,
man/man3/PAPIF_perror.3, man/man3/PAPIF_query_event.3,
man/man3/PAPIF_query_named_event.3, man/man3/PAPIF_rate_stop.3,
man/man3/PAPIF_read.3, man/man3/PAPIF_read_ts.3,
man/man3/PAPIF_register_thread.3, man/man3/PAPIF_remove_event.3,
man/man3/PAPIF_remove_events.3,
man/man3/PAPIF_remove_named_event.3, man/man3/PAPIF_reset.3,
man/man3/PAPIF_set_cmp_domain.3,
man/man3/PAPIF_set_cmp_granularity.3, man/man3/PAPIF_set_debug.3,
man/man3/PAPIF_set_domain.3, man/man3/PAPIF_set_event_domain.3,
man/man3/PAPIF_set_granularity.3, man/man3/PAPIF_set_inherit.3,
man/man3/PAPIF_set_multiplex.3, man/man3/PAPIF_shutdown.3,
man/man3/PAPIF_start.3, man/man3/PAPIF_state.3,
man/man3/PAPIF_stop.3, man/man3/PAPIF_thread_id.3,
man/man3/PAPIF_thread_init.3, man/man3/PAPIF_unlock.3,
man/man3/PAPIF_unregister_thread.3, man/man3/PAPIF_write.3,
man/man3/PAPI_accum.3, man/man3/PAPI_add_event.3,
man/man3/PAPI_add_events.3, man/man3/PAPI_add_named_event.3,
man/man3/PAPI_addr_range_option_t.3, man/man3/PAPI_address_map_t.3,
man/man3/PAPI_all_thr_spec_t.3,
man/man3/PAPI_assign_eventset_component.3, man/man3/PAPI_attach.3,
man/man3/PAPI_attach_option_t.3, man/man3/PAPI_cleanup_eventset.3,
man/man3/PAPI_component_info_t.3, man/man3/PAPI_cpu_option_t.3,
man/man3/PAPI_create_eventset.3, man/man3/PAPI_debug_option_t.3,
man/man3/PAPI_destroy_eventset.3, man/man3/PAPI_detach.3,
man/man3/PAPI_disable_component.3,
man/man3/PAPI_disable_component_by_name.3,
man/man3/PAPI_dmem_info_t.3, man/man3/PAPI_domain_option_t.3,
man/man3/PAPI_enum_cmp_event.3, man/man3/PAPI_enum_dev_type.3,
man/man3/PAPI_enum_event.3, man/man3/PAPI_epc.3,
man/man3/PAPI_event_code_to_name.3, man/man3/PAPI_event_info_t.3,
man/man3/PAPI_event_name_to_code.3, man/man3/PAPI_exe_info_t.3,
man/man3/PAPI_flips_rate.3, man/man3/PAPI_flops_rate.3,
man/man3/PAPI_get_cmp_opt.3, man/man3/PAPI_get_component_index.3,
man/man3/PAPI_get_component_info.3, man/man3/PAPI_get_dev_attr.3,
man/man3/PAPI_get_dev_type_attr.3, man/man3/PAPI_get_dmem_info.3,
man/man3/PAPI_get_event_component.3,
man/man3/PAPI_get_event_info.3,
man/man3/PAPI_get_eventset_component.3,
man/man3/PAPI_get_executable_info.3,
man/man3/PAPI_get_hardware_info.3, man/man3/PAPI_get_multiplex.3,
man/man3/PAPI_get_opt.3, man/man3/PAPI_get_overflow_event_index.3,
man/man3/PAPI_get_real_cyc.3, man/man3/PAPI_get_real_nsec.3,
man/man3/PAPI_get_real_usec.3, man/man3/PAPI_get_shared_lib_info.3,
man/man3/PAPI_get_thr_specific.3, man/man3/PAPI_get_virt_cyc.3,
man/man3/PAPI_get_virt_nsec.3, man/man3/PAPI_get_virt_usec.3,
man/man3/PAPI_granularity_option_t.3, man/man3/PAPI_hl_read.3,
man/man3/PAPI_hl_region_begin.3, man/man3/PAPI_hl_region_end.3,
man/man3/PAPI_hl_stop.3, man/man3/PAPI_hw_info_t.3,
man/man3/PAPI_inherit_option_t.3, man/man3/PAPI_ipc.3,
man/man3/PAPI_is_initialized.3, man/man3/PAPI_itimer_option_t.3,
man/man3/PAPI_library_init.3, man/man3/PAPI_list_events.3,
man/man3/PAPI_list_threads.3, man/man3/PAPI_lock.3,
man/man3/PAPI_mh_cache_info_t.3, man/man3/PAPI_mh_info_t.3,
man/man3/PAPI_mh_level_t.3, man/man3/PAPI_mh_tlb_info_t.3,
man/man3/PAPI_mpx_info_t.3, man/man3/PAPI_multiplex_init.3,
man/man3/PAPI_multiplex_option_t.3, man/man3/PAPI_num_cmp_hwctrs.3,
man/man3/PAPI_num_components.3, man/man3/PAPI_num_events.3,
man/man3/PAPI_num_hwctrs.3, man/man3/PAPI_option_t.3,
man/man3/PAPI_overflow.3, man/man3/PAPI_perror.3,
man/man3/PAPI_preload_info_t.3, man/man3/PAPI_profil.3,
man/man3/PAPI_query_event.3, man/man3/PAPI_query_named_event.3,
man/man3/PAPI_rate_stop.3, man/man3/PAPI_read.3,
man/man3/PAPI_read_ts.3, man/man3/PAPI_register_thread.3,
man/man3/PAPI_remove_event.3, man/man3/PAPI_remove_events.3,
man/man3/PAPI_remove_named_event.3, man/man3/PAPI_reset.3,
man/man3/PAPI_set_cmp_domain.3,
man/man3/PAPI_set_cmp_granularity.3, man/man3/PAPI_set_debug.3,
man/man3/PAPI_set_domain.3, man/man3/PAPI_set_granularity.3,
man/man3/PAPI_set_multiplex.3, man/man3/PAPI_set_opt.3,
man/man3/PAPI_set_thr_specific.3, man/man3/PAPI_shlib_info_t.3,
man/man3/PAPI_shutdown.3, man/man3/PAPI_sprofil.3,
man/man3/PAPI_sprofil_t.3, man/man3/PAPI_start.3,
man/man3/PAPI_state.3, man/man3/PAPI_stop.3,
man/man3/PAPI_strerror.3, man/man3/PAPI_thread_id.3,
man/man3/PAPI_thread_init.3, man/man3/PAPI_unlock.3,
man/man3/PAPI_unregister_thread.3, man/man3/PAPI_write.3,
man/man3/PAPIf_hl_read.3, man/man3/PAPIf_hl_region_begin.3,
man/man3/PAPIf_hl_region_end.3, man/man3/PAPIf_hl_stop.3,
man/man3/RateInfo.3, man/man3/binary_tree_t.3,
man/man3/components_t.3, man/man3/local_components_t.3,
man/man3/reads_t.3, man/man3/regions_t.3, man/man3/threads_t.3,
man/man3/value_t.3, papi.spec, src/Makefile.in, src/configure,
src/configure.in, src/papi.h: release: preparation for release
commit - Update documentation - Update version
* src/validation_tests/papi_br_tkn.c: papi_br_tkn: add not taken
branch event to the right eventset The branch not taken event is
added to the eventset for branch taken. Add the not taken event to
the right eventset.
* man/man3/PAPIF_enum_dev_type.3, man/man3/PAPIF_get_dev_attr.3,
man/man3/PAPIF_get_dev_type_attr.3: sysdetect: add missing fortran
man pages Man pages for PAPIF_enum_dev_type,
PAPIF_get_dev_type_attr and PAPIF_get_dev_attr were missing.
2022-11-08 Giuseppe Congiu <gcongiu@icl.utk.edu>
* .../sysdetect/tests/query_device_simple_f.F: sysdetect: update test
to reflect 'list' argument removal Commit 482e8c5f1 removed the
'list' argument from papif_get_dev_attr fortran wrapper. However,
the test still passed 'dummy_list' to every call of the function.
This cause the len of the string to be read from the wrong argument
and the following 'strncpy' to segfault.
2022-11-02 Giuseppe Congiu <gcongiu@icl.utk.edu>
* man/man1/PAPI_derived_event_files.1, man/man1/papi_avail.1,
man/man1/papi_clockres.1, man/man1/papi_command_line.1,
man/man1/papi_component_avail.1, man/man1/papi_cost.1,
man/man1/papi_decode.1, man/man1/papi_error_codes.1,
man/man1/papi_event_chooser.1, man/man1/papi_hardware_avail.1,
man/man1/papi_hybrid_native_avail.1, man/man1/papi_mem_info.1,
man/man1/papi_multiplex_cost.1, man/man1/papi_native_avail.1,
man/man1/papi_version.1, man/man1/papi_xml_event_info.1,
man/man3/PAPIF_accum.3, man/man3/PAPIF_add_event.3,
man/man3/PAPIF_add_events.3, man/man3/PAPIF_add_named_event.3,
man/man3/PAPIF_assign_eventset_component.3,
man/man3/PAPIF_cleanup_eventset.3,
man/man3/PAPIF_create_eventset.3,
man/man3/PAPIF_destroy_eventset.3, man/man3/PAPIF_enum_event.3,
man/man3/PAPIF_epc.3, man/man3/PAPIF_event_code_to_name.3,
man/man3/PAPIF_event_name_to_code.3, man/man3/PAPIF_flips_rate.3,
man/man3/PAPIF_flops_rate.3, man/man3/PAPIF_get_clockrate.3,
man/man3/PAPIF_get_dmem_info.3, man/man3/PAPIF_get_domain.3,
man/man3/PAPIF_get_event_info.3, man/man3/PAPIF_get_exe_info.3,
man/man3/PAPIF_get_granularity.3,
man/man3/PAPIF_get_hardware_info.3, man/man3/PAPIF_get_multiplex.3,
man/man3/PAPIF_get_preload.3, man/man3/PAPIF_get_real_cyc.3,
man/man3/PAPIF_get_real_nsec.3, man/man3/PAPIF_get_real_usec.3,
man/man3/PAPIF_get_virt_cyc.3, man/man3/PAPIF_get_virt_usec.3,
man/man3/PAPIF_ipc.3, man/man3/PAPIF_is_initialized.3,
man/man3/PAPIF_library_init.3, man/man3/PAPIF_lock.3,
man/man3/PAPIF_multiplex_init.3, man/man3/PAPIF_num_cmp_hwctrs.3,
man/man3/PAPIF_num_events.3, man/man3/PAPIF_num_hwctrs.3,
man/man3/PAPIF_perror.3, man/man3/PAPIF_query_event.3,
man/man3/PAPIF_query_named_event.3, man/man3/PAPIF_rate_stop.3,
man/man3/PAPIF_read.3, man/man3/PAPIF_read_ts.3,
man/man3/PAPIF_register_thread.3, man/man3/PAPIF_remove_event.3,
man/man3/PAPIF_remove_events.3,
man/man3/PAPIF_remove_named_event.3, man/man3/PAPIF_reset.3,
man/man3/PAPIF_set_cmp_domain.3,
man/man3/PAPIF_set_cmp_granularity.3, man/man3/PAPIF_set_debug.3,
man/man3/PAPIF_set_domain.3, man/man3/PAPIF_set_event_domain.3,
man/man3/PAPIF_set_granularity.3, man/man3/PAPIF_set_inherit.3,
man/man3/PAPIF_set_multiplex.3, man/man3/PAPIF_shutdown.3,
man/man3/PAPIF_start.3, man/man3/PAPIF_state.3,
man/man3/PAPIF_stop.3, man/man3/PAPIF_thread_id.3,
man/man3/PAPIF_thread_init.3, man/man3/PAPIF_unlock.3,
man/man3/PAPIF_unregister_thread.3, man/man3/PAPIF_write.3,
man/man3/PAPI_accum.3, man/man3/PAPI_add_event.3,
man/man3/PAPI_add_events.3, man/man3/PAPI_add_named_event.3,
man/man3/PAPI_addr_range_option_t.3, man/man3/PAPI_address_map_t.3,
man/man3/PAPI_all_thr_spec_t.3,
man/man3/PAPI_assign_eventset_component.3, man/man3/PAPI_attach.3,
man/man3/PAPI_attach_option_t.3, man/man3/PAPI_cleanup_eventset.3,
man/man3/PAPI_component_info_t.3, man/man3/PAPI_cpu_option_t.3,
man/man3/PAPI_create_eventset.3, man/man3/PAPI_debug_option_t.3,
man/man3/PAPI_destroy_eventset.3, man/man3/PAPI_detach.3,
man/man3/PAPI_disable_component.3,
man/man3/PAPI_disable_component_by_name.3,
man/man3/PAPI_dmem_info_t.3, man/man3/PAPI_domain_option_t.3,
man/man3/PAPI_enum_cmp_event.3, man/man3/PAPI_enum_dev_type.3,
man/man3/PAPI_enum_event.3, man/man3/PAPI_epc.3,
man/man3/PAPI_event_code_to_name.3, man/man3/PAPI_event_info_t.3,
man/man3/PAPI_event_name_to_code.3, man/man3/PAPI_exe_info_t.3,
man/man3/PAPI_flips_rate.3, man/man3/PAPI_flops_rate.3,
man/man3/PAPI_get_cmp_opt.3, man/man3/PAPI_get_component_index.3,
man/man3/PAPI_get_component_info.3, man/man3/PAPI_get_dev_attr.3,
man/man3/PAPI_get_dev_type_attr.3, man/man3/PAPI_get_dmem_info.3,
man/man3/PAPI_get_event_component.3,
man/man3/PAPI_get_event_info.3,
man/man3/PAPI_get_eventset_component.3,
man/man3/PAPI_get_executable_info.3,
man/man3/PAPI_get_hardware_info.3, man/man3/PAPI_get_multiplex.3,
man/man3/PAPI_get_opt.3, man/man3/PAPI_get_overflow_event_index.3,
man/man3/PAPI_get_real_cyc.3, man/man3/PAPI_get_real_nsec.3,
man/man3/PAPI_get_real_usec.3, man/man3/PAPI_get_shared_lib_info.3,
man/man3/PAPI_get_thr_specific.3, man/man3/PAPI_get_virt_cyc.3,
man/man3/PAPI_get_virt_nsec.3, man/man3/PAPI_get_virt_usec.3,
man/man3/PAPI_granularity_option_t.3, man/man3/PAPI_hl_read.3,
man/man3/PAPI_hl_region_begin.3, man/man3/PAPI_hl_region_end.3,
man/man3/PAPI_hl_stop.3, man/man3/PAPI_hw_info_t.3,
man/man3/PAPI_inherit_option_t.3, man/man3/PAPI_ipc.3,
man/man3/PAPI_is_initialized.3, man/man3/PAPI_itimer_option_t.3,
man/man3/PAPI_library_init.3, man/man3/PAPI_list_events.3,
man/man3/PAPI_list_threads.3, man/man3/PAPI_lock.3,
man/man3/PAPI_mh_cache_info_t.3, man/man3/PAPI_mh_info_t.3,
man/man3/PAPI_mh_level_t.3, man/man3/PAPI_mh_tlb_info_t.3,
man/man3/PAPI_mpx_info_t.3, man/man3/PAPI_multiplex_init.3,
man/man3/PAPI_multiplex_option_t.3, man/man3/PAPI_num_cmp_hwctrs.3,
man/man3/PAPI_num_components.3, man/man3/PAPI_num_events.3,
man/man3/PAPI_num_hwctrs.3, man/man3/PAPI_option_t.3,
man/man3/PAPI_overflow.3, man/man3/PAPI_perror.3,
man/man3/PAPI_preload_info_t.3, man/man3/PAPI_profil.3,
man/man3/PAPI_query_event.3, man/man3/PAPI_query_named_event.3,
man/man3/PAPI_rate_stop.3, man/man3/PAPI_read.3,
man/man3/PAPI_read_ts.3, man/man3/PAPI_register_thread.3,
man/man3/PAPI_remove_event.3, man/man3/PAPI_remove_events.3,
man/man3/PAPI_remove_named_event.3, man/man3/PAPI_reset.3,
man/man3/PAPI_set_cmp_domain.3,
man/man3/PAPI_set_cmp_granularity.3, man/man3/PAPI_set_debug.3,
man/man3/PAPI_set_domain.3, man/man3/PAPI_set_granularity.3,
man/man3/PAPI_set_multiplex.3, man/man3/PAPI_set_opt.3,
man/man3/PAPI_set_thr_specific.3, man/man3/PAPI_shlib_info_t.3,
man/man3/PAPI_shutdown.3, man/man3/PAPI_sprofil.3,
man/man3/PAPI_sprofil_t.3, man/man3/PAPI_start.3,
man/man3/PAPI_state.3, man/man3/PAPI_stop.3,
man/man3/PAPI_strerror.3, man/man3/PAPI_thread_id.3,
man/man3/PAPI_thread_init.3, man/man3/PAPI_unlock.3,
man/man3/PAPI_unregister_thread.3, man/man3/PAPI_write.3,
man/man3/PAPIf_hl_read.3, man/man3/PAPIf_hl_region_begin.3,
man/man3/PAPIf_hl_region_end.3, man/man3/PAPIf_hl_stop.3,
man/man3/RateInfo.3, man/man3/binary_tree_t.3,
man/man3/components_t.3, man/man3/local_components_t.3,
man/man3/reads_t.3, man/man3/regions_t.3, man/man3/threads_t.3,
man/man3/value_t.3: sysdetect: regenerate man pages for updated
attributes
* src/papi.c: sysdetect: remove unused attributes from doc
* src/components/sysdetect/tests/query_device_mpi.c: sysdetect: white
space cleanup
2022-11-02 John Rodgers <john.rodgers@hpe.com>
* src/components/cuda/linux-cuda.c: CUDA: Align memory zero with pad
Update logic in `cuda11_makeRoomAllEvents` to ensure the memory
zero'ing operation covers the amount expanded by the `realloc`
operation.
* src/components/cuda/linux-cuda.c: CUDA: CUPTI11 Sporadic Memory
Failures The CUPTI11 portion of the cuda component has exhibited
sporadic memory failures for applications compiled against
MVAPICH's libmpi.so. Specifically, the realloc operation in
`cuda11_makeRoomAllEvents`, called in `_cuda11_add_native_events`,
would fail even when there was sufficient memory to complete the
requested allocation. As a workaround, this patch prevents the
failure by allocating the expected memory up front prior to the
device loop in `_cuda11_add_native_events`.
* src/components/cuda/linux-cuda.c: CUDA: Prevent memory leak
Prevent memory leak by freeing `firstLast` buffer in
`_cuda11_add_native_events`.
* src/components/cuda/linux-cuda.c: CUDA: Remove unnecessary code
Remove logic only necessary when trying to resolve counters without
an active profiling session. Given that a profiling session is
created and active (see: _cuda11_add_native_events ->
_cuda11_init_profiler) creation and usage of
`cuda11_CounterAvailabilityImage` is unnecessary.
* src/components/cuda/linux-cuda.c: CUDA: Prevent component deadlock
Add missing component unlock to `_cuda_update_control_state` to
prevent deadlocks encountered when adding multiple events
sequentially. Patch resolves issue #121
* src/components/cuda/linux-cuda.c, src/components/nvml/linux-nvml.c,
src/components/rocm/rocm.c, src/components/rocm_smi/linux-rocm-
smi.c: DELAY_INIT: Set disabled for delay init comps Ensure
components that leverage the delayed initialization scheme, namely
cuda, nvml, rocm, and rocm_smi, set thier respective <papi-
vector>.cmp_info.disabled flag with `PAPI_EDELAY_INIT` when
completing the standard component initialization. Update necessary
to conform with PR: 328
2022-10-24 Daniel Barry <dbarry@vols.utk.edu>
* src/components/pcp/linux-pcp.c, src/papi.h: pcp: warning instead of
error when 'reason' string truncated When the hostname is too
long, there is not enough memory allocated for the error 'reason'
string. This caused the component to prematurely exit
initialization when the PM daemon is not active. Instead, a warning
is now issued, and the initialization exits appropriately.
Additionally, the size of the 'reason' string has been increased to
accommodate longer host names. These changes have been tested on
the IBM POWER9 architecture.
2022-10-28 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/main.c: cat: support to comment-out
lines in input file These changes add support for users to
comment-out lines in the input file. This allows users to more
flexibly take measurements without having to remove lines or use
multiple input files. These changes have been tested on the AMD
Zen3 architecture.
2022-10-27 Anthony Danalis <adanalis@icl.utk.edu>
* src/validation_tests/branches_testcode.c,
src/validation_tests/papi_br_msp.c: Improved the branch
misprediction validation test. The previous version of the branch
misprediction validation test relied on the libc function random()
to generate entropy. However, this function introduced 15x more
branches than the number of branches in the code of the validation
test, polluting the results. The new code uses an inline Xorshift
pseudo-random number generator which is more than sufficient to
confuse the branch predictor, and does not contain any branch
instructions so it does not pollute the event measurement. Also,
the logic of the test has been simplified.
2022-10-27 Anthony <adanalis@icl.utk.edu>
* src/sde_lib/sde_lib_datastructures.c: Removed unneeded NULL pointer
checks in libsde.
2022-09-14 Giuseppe Congiu <gcongiu@icl.utk.edu>
* man/man1/PAPI_derived_event_files.1, man/man1/papi_avail.1,
man/man1/papi_clockres.1, man/man1/papi_command_line.1,
man/man1/papi_component_avail.1, man/man1/papi_cost.1,
man/man1/papi_decode.1, man/man1/papi_error_codes.1,
man/man1/papi_event_chooser.1, man/man1/papi_hardware_avail.1,
man/man1/papi_hybrid_native_avail.1, man/man1/papi_mem_info.1,
man/man1/papi_multiplex_cost.1, man/man1/papi_native_avail.1,
man/man1/papi_version.1, man/man1/papi_xml_event_info.1,
man/man3/PAPIF_accum.3, man/man3/PAPIF_add_event.3,
man/man3/PAPIF_add_events.3, man/man3/PAPIF_add_named_event.3,
man/man3/PAPIF_assign_eventset_component.3,
man/man3/PAPIF_cleanup_eventset.3,
man/man3/PAPIF_create_eventset.3,
man/man3/PAPIF_destroy_eventset.3, man/man3/PAPIF_enum_event.3,
man/man3/PAPIF_epc.3, man/man3/PAPIF_event_code_to_name.3,
man/man3/PAPIF_event_name_to_code.3, man/man3/PAPIF_flips_rate.3,
man/man3/PAPIF_flops_rate.3, man/man3/PAPIF_get_clockrate.3,
man/man3/PAPIF_get_dmem_info.3, man/man3/PAPIF_get_domain.3,
man/man3/PAPIF_get_event_info.3, man/man3/PAPIF_get_exe_info.3,
man/man3/PAPIF_get_granularity.3,
man/man3/PAPIF_get_hardware_info.3, man/man3/PAPIF_get_multiplex.3,
man/man3/PAPIF_get_preload.3, man/man3/PAPIF_get_real_cyc.3,
man/man3/PAPIF_get_real_nsec.3, man/man3/PAPIF_get_real_usec.3,
man/man3/PAPIF_get_virt_cyc.3, man/man3/PAPIF_get_virt_usec.3,
man/man3/PAPIF_ipc.3, man/man3/PAPIF_is_initialized.3,
man/man3/PAPIF_library_init.3, man/man3/PAPIF_lock.3,
man/man3/PAPIF_multiplex_init.3, man/man3/PAPIF_num_cmp_hwctrs.3,
man/man3/PAPIF_num_events.3, man/man3/PAPIF_num_hwctrs.3,
man/man3/PAPIF_perror.3, man/man3/PAPIF_query_event.3,
man/man3/PAPIF_query_named_event.3, man/man3/PAPIF_rate_stop.3,
man/man3/PAPIF_read.3, man/man3/PAPIF_read_ts.3,
man/man3/PAPIF_register_thread.3, man/man3/PAPIF_remove_event.3,
man/man3/PAPIF_remove_events.3,
man/man3/PAPIF_remove_named_event.3, man/man3/PAPIF_reset.3,
man/man3/PAPIF_set_cmp_domain.3,
man/man3/PAPIF_set_cmp_granularity.3, man/man3/PAPIF_set_debug.3,
man/man3/PAPIF_set_domain.3, man/man3/PAPIF_set_event_domain.3,
man/man3/PAPIF_set_granularity.3, man/man3/PAPIF_set_inherit.3,
man/man3/PAPIF_set_multiplex.3, man/man3/PAPIF_shutdown.3,
man/man3/PAPIF_start.3, man/man3/PAPIF_state.3,
man/man3/PAPIF_stop.3, man/man3/PAPIF_thread_id.3,
man/man3/PAPIF_thread_init.3, man/man3/PAPIF_unlock.3,
man/man3/PAPIF_unregister_thread.3, man/man3/PAPIF_write.3,
man/man3/PAPI_accum.3, man/man3/PAPI_add_event.3,
man/man3/PAPI_add_events.3, man/man3/PAPI_add_named_event.3,
man/man3/PAPI_addr_range_option_t.3, man/man3/PAPI_address_map_t.3,
man/man3/PAPI_all_thr_spec_t.3,
man/man3/PAPI_assign_eventset_component.3, man/man3/PAPI_attach.3,
man/man3/PAPI_attach_option_t.3, man/man3/PAPI_cleanup_eventset.3,
man/man3/PAPI_component_info_t.3, man/man3/PAPI_cpu_option_t.3,
man/man3/PAPI_create_eventset.3, man/man3/PAPI_debug_option_t.3,
man/man3/PAPI_destroy_eventset.3, man/man3/PAPI_detach.3,
man/man3/PAPI_disable_component.3,
man/man3/PAPI_disable_component_by_name.3,
man/man3/PAPI_dmem_info_t.3, man/man3/PAPI_domain_option_t.3,
man/man3/PAPI_enum_cmp_event.3, man/man3/PAPI_enum_dev_type.3,
man/man3/PAPI_enum_event.3, man/man3/PAPI_epc.3,
man/man3/PAPI_event_code_to_name.3, man/man3/PAPI_event_info_t.3,
man/man3/PAPI_event_name_to_code.3, man/man3/PAPI_exe_info_t.3,
man/man3/PAPI_flips_rate.3, man/man3/PAPI_flops_rate.3,
man/man3/PAPI_get_cmp_opt.3, man/man3/PAPI_get_component_index.3,
man/man3/PAPI_get_component_info.3, man/man3/PAPI_get_dev_attr.3,
man/man3/PAPI_get_dev_type_attr.3, man/man3/PAPI_get_dmem_info.3,
man/man3/PAPI_get_event_component.3,
man/man3/PAPI_get_event_info.3,
man/man3/PAPI_get_eventset_component.3,
man/man3/PAPI_get_executable_info.3,
man/man3/PAPI_get_hardware_info.3, man/man3/PAPI_get_multiplex.3,
man/man3/PAPI_get_opt.3, man/man3/PAPI_get_overflow_event_index.3,
man/man3/PAPI_get_real_cyc.3, man/man3/PAPI_get_real_nsec.3,
man/man3/PAPI_get_real_usec.3, man/man3/PAPI_get_shared_lib_info.3,
man/man3/PAPI_get_thr_specific.3, man/man3/PAPI_get_virt_cyc.3,
man/man3/PAPI_get_virt_nsec.3, man/man3/PAPI_get_virt_usec.3,
man/man3/PAPI_granularity_option_t.3, man/man3/PAPI_hl_read.3,
man/man3/PAPI_hl_region_begin.3, man/man3/PAPI_hl_region_end.3,
man/man3/PAPI_hl_stop.3, man/man3/PAPI_hw_info_t.3,
man/man3/PAPI_inherit_option_t.3, man/man3/PAPI_ipc.3,
man/man3/PAPI_is_initialized.3, man/man3/PAPI_itimer_option_t.3,
man/man3/PAPI_library_init.3, man/man3/PAPI_list_events.3,
man/man3/PAPI_list_threads.3, man/man3/PAPI_lock.3,
man/man3/PAPI_mh_cache_info_t.3, man/man3/PAPI_mh_info_t.3,
man/man3/PAPI_mh_level_t.3, man/man3/PAPI_mh_tlb_info_t.3,
man/man3/PAPI_mpx_info_t.3, man/man3/PAPI_multiplex_init.3,
man/man3/PAPI_multiplex_option_t.3, man/man3/PAPI_num_cmp_hwctrs.3,
man/man3/PAPI_num_components.3, man/man3/PAPI_num_events.3,
man/man3/PAPI_num_hwctrs.3, man/man3/PAPI_option_t.3,
man/man3/PAPI_overflow.3, man/man3/PAPI_perror.3,
man/man3/PAPI_preload_info_t.3, man/man3/PAPI_profil.3,
man/man3/PAPI_query_event.3, man/man3/PAPI_query_named_event.3,
man/man3/PAPI_rate_stop.3, man/man3/PAPI_read.3,
man/man3/PAPI_read_ts.3, man/man3/PAPI_register_thread.3,
man/man3/PAPI_remove_event.3, man/man3/PAPI_remove_events.3,
man/man3/PAPI_remove_named_event.3, man/man3/PAPI_reset.3,
man/man3/PAPI_set_cmp_domain.3,
man/man3/PAPI_set_cmp_granularity.3, man/man3/PAPI_set_debug.3,
man/man3/PAPI_set_domain.3, man/man3/PAPI_set_granularity.3,
man/man3/PAPI_set_multiplex.3, man/man3/PAPI_set_opt.3,
man/man3/PAPI_set_thr_specific.3, man/man3/PAPI_shlib_info_t.3,
man/man3/PAPI_shutdown.3, man/man3/PAPI_sprofil.3,
man/man3/PAPI_sprofil_t.3, man/man3/PAPI_start.3,
man/man3/PAPI_state.3, man/man3/PAPI_stop.3,
man/man3/PAPI_strerror.3, man/man3/PAPI_thread_id.3,
man/man3/PAPI_thread_init.3, man/man3/PAPI_unlock.3,
man/man3/PAPI_unregister_thread.3, man/man3/PAPI_write.3,
man/man3/PAPIf_hl_read.3, man/man3/PAPIf_hl_region_begin.3,
man/man3/PAPIf_hl_region_end.3, man/man3/PAPIf_hl_stop.3,
man/man3/RateInfo.3, man/man3/binary_tree_t.3,
man/man3/components_t.3, man/man3/local_components_t.3,
man/man3/reads_t.3, man/man3/regions_t.3, man/man3/threads_t.3,
man/man3/value_t.3: doc: regenerate man pages
2022-10-25 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/utils/papi_hardware_avail.c: papi_hardware_avail: print thread
affinity list for numas
2022-10-26 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/tests/query_device_mpi.c: sysdetect: add
GPU affinity example in tests The GPU affinity example utilizes
MPI shared memory windows to workout the GPU affinity of every MPI
rank. The first rank in every GPU rank list prints the list of rank
for the give GPU.
* src/components/Makefile_comp_tests.target.in,
src/components/sysdetect/tests/Makefile: sysdetect: hook mpi tests
to NO_MPI_TESTS The configure step in PAPI checks whether MPI
tests can be enabled or not. If not it sets NO_MPI_TESTS to yes.
This variable is then used in ctests/Makefile.recipies to enable or
disable MPI tests. The sysdetect tests were not relying on this
variable. Instead sysdetect relied on MPICC being set which is no
accurate. This patch make the MPI checks more uniform across the
code by adding NO_MPI_TESTS checks in sysdetect tests too.
2022-10-25 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/sysdetect.c: sysdetect: add
PAPI_DEV_ATTR__CPU_UINT_THR_NUMA_AFFINITY
PAPI_DEV_ATTR__CPU_UINT_THR_NUMA_AFFINITY was missing in sysdetect.
This attribute can be used to discover the numa affinity of every
hardware thread in the system.
* src/components/sysdetect/Rules.sysdetect,
src/components/sysdetect/amd_gpu.c,
src/components/sysdetect/nvidia_gpu.c,
src/components/sysdetect/shm.c, src/components/sysdetect/shm.h,
src/components/sysdetect/sysdetect.c,
src/components/sysdetect/sysdetect.h,
src/components/sysdetect/tests/query_device_mpi.c,
.../sysdetect/tests/query_device_simple.c,
.../sysdetect/tests/query_device_simple_f.F, src/configure,
src/configure.in, src/genpapifdef.c, src/papi.h,
src/papi_fwrappers.c, src/utils/papi_hardware_avail.c: sysdetect:
remove builtin support for numa and GPU affinity Numa and GPU
affinity of threads and MPI ranks adds an MPI dependency to PAPI
that may cause problems (link time unresolved MPI symbols) if the
application using PAPI does not link against MPI. Most of the work
that sysdetect currently does to provide affinity lists to the
users can be easily done by the users themselves. Thus, sysdetect
will no longer support them.
2022-10-12 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/vec.c: cat: ifdefs for AVX
availability Utilize ifdefs so that the build can be more flexible
between systems with different AVX vector-width availability.
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c: cat: specify
architecture in macros Rename VEC_WIDTH_[128|256|512] to
X86_VEC_WIDTH_[128|256|512]B to be more specific.
* src/counter_analysis_toolkit/vec_arch.h: cat: remove unused
typedef; add used typedef Typedef 'half' since this type is
actually used in the code, and remove HP_SCALAR_TYPE.
2022-10-11 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/vec.c,
src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c: cat: rename macros
for POWER architecture For the sake of consistency, use "POWER"
instead of "IBM."
* src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c: cat: remove
unused code Remove unused AMD Bulldozer intrinsics.
2022-09-19 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/vec.c,
src/counter_analysis_toolkit/vec_arch.h: cat: consolidate 'INTEL'
and 'AMD' flags for vector FLOPs benchmark Since the ifdefs which
check whether "INTEL" is defined also check whether "AMD" is
defined, use "X86" for both. These changes have been tested on the
Intel Ice Lake architecture.
* src/counter_analysis_toolkit/vec.c,
src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c: cat: specify
architecture vector FLOPs benchmark function names Include the
architecture names in the function names for consistency. These
changes have been tested on the IBM POWER9 architecture.
2022-09-07 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/vec.c,
src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c: cat: vector FLOPs
benchmark for non-x86 architectures bug fix The driver code for
the vector benchmark could not call the functions for the vector
FLOPs kernels because they were declared 'static'. For builds which
use either the NEON or ALTIVEC intrinsics, these static functions
are now wrapped, so they can be called by the driver. These
changes have been tested on the IBM POWER9 architecture.
2022-10-13 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/tests/Makefile,
.../powercap/tests/powercap_basic_read.c,
.../powercap/tests/powercap_basic_readwrite.c: powercap: add new
component tests This adds a new component test for each of the
following: (1) add one event to an event set at a time and read it
(2) add one event at a time, read it, write it, read the new value,
restore the original value These changes have been tested on the
Intel Ice Lake architecture.
2022-10-26 AnustuvICL <anustuv@icl.utk.edu>
* src/components/perf_event/pe_libpfm4_events.c: perf_event: Free
allocated string in function allocate_native_event
2022-10-18 Peinan Zhang <peinan.zhang@intel.com>
* src/components/intel_gpu/README,
src/components/intel_gpu/README.md,
.../intel_gpu/internal/inc/GPUMetricHandler.h,
.../intel_gpu/internal/inc/GPUMetricInterface.h,
.../intel_gpu/internal/src/GPUMetricHandler.cpp,
.../intel_gpu/internal/src/GPUMetricInterface.cpp,
src/components/intel_gpu/internal/src/Makefile,
src/components/intel_gpu/linux_intel_gpu_metrics.c,
src/components/intel_gpu/linux_intel_gpu_metrics.h,
src/components/intel_gpu/tests/Makefile,
src/components/intel_gpu/tests/gemm.spv,
src/components/intel_gpu/tests/gpu_common_utils.c,
src/components/intel_gpu/tests/gpu_common_utils.h,
src/components/intel_gpu/tests/gpu_metric_list.c,
src/components/intel_gpu/tests/gpu_metric_read.c,
src/components/intel_gpu/tests/gpu_query_gemm.cc,
src/components/intel_gpu/tests/gpu_thread_read.c,
src/components/intel_gpu/tests/readme.txt: Added support for
multiple Intel GPU devices and multiple-tiles per device. Allow
query performance metrics on multiple Intel GPUs and multiple tiles
per GPU. Support Intel GPU Arctic Sound and Ponte Sound. Update
test cases for taking metrics from input, so to work with different
platforms. Update conponent README.md file
2022-10-24 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/utils/papi_native_avail.c: sde: make '-sde' option always
visible in papi_native_avail The '-sde' option was not visible in
papi_native_avail unless the SDE component was configured in PAPI.
Now we always have the option visible but return an error if the
SDE component is not configured.
2022-10-25 Anthony <adanalis@icl.utk.edu>
* src/configure, src/configure.in: Make papi_native_avail support the
"-sde" flag only if *both* libsde and the SDE component are
configured in.
* src/components/sde/tests/Makefile,
src/components/sde/tests/README.txt: Added path to libpfm4 in the
SDE tests Makefile, and further instructions for users in the
README.
2022-10-24 AnustuvICL <anustuv@icl.utk.edu>
* src/papi.h: papi.h: Update bit field post removal of members from
struct _papi_component_option
2022-10-23 William Cohen <wcohen@redhat.com>
* src/components/sysdetect/linux_cpu_utils.c, src/linux-memory.c: Use
fgets in place of fscanf functions to avoid possible buffer
overflows There were several locations in the PAPI code that used
fscanf calls like the following statement to read in information:
result=fscanf(fff,"%s",allocation_policy_string); The problem with
this statement is that the fscanf could possibly write past the end
of allocation_policy_string. To limit the write to the size of the
allocation_policy_string an fgets like the following is used in its
place: str_result=fgets(allocation_policy_string, BUFSIZ, fff);
One set of fscanf were for the generic memory information code
reading the cache characteristics. Another fscanf was in the
sysdetect component reading of cache characteristics.
2022-10-10 AnustuvICL <anustuv@icl.utk.edu>
* src/genpapifdef.c, src/papi.h: Remove C++ style commented code
2022-08-31 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/perfctr/perfctr.c: perfctr: set disabled flag in cmp
* src/components/perfmon2/perfmon.c: perfmon2: set disabled flag in
cmp
* src/papi_internal.c: papi: do not set disabled flag in framework
* src/components/vmware/vmware.c: vmware: set disabled flag in cmp
* src/components/stealtime/linux-stealtime.c: stealtime: set disabled
flag in cmp
* src/components/sensors_ppc/linux-sensors-ppc.c: sensors_ppc: set
disabled flag in cmp
* src/components/rapl/linux-rapl.c: rapl: set disabled flag in cmp
* src/components/powercap_ppc/linux-powercap-ppc.c: powercap_ppc: set
disabled flag in cmp
* src/components/powercap/linux-powercap.c: powercap: set disabled
flag in cmp
* src/components/perf_event_uncore/perf_event_uncore.c: perf_event_u:
set disabled flag in cmp
* src/components/perf_event/perf_event.c: perf_event: set disabled
flag in cmp
* src/components/pcp/linux-pcp.c: pcp: set disabled flag in cmp
* src/components/net/linux-net.c: net: set disabled flag in cmp
* src/components/mx/linux-mx.c: mx: set disabled flag in cmp
* src/components/lustre/linux-lustre.c: lustre: set disabled flag in
cmp
* src/components/lmsensors/linux-lmsensors.c: lmsensors: set disabled
flag in cmp
* src/components/libmsr/linux-libmsr.c: libmsr: set disabled flag in
cmp
* src/components/io/linux-io.c: io: set disabled flag in cmp
* src/components/intel_gpu/linux_intel_gpu_metrics.c: intel_gpu: set
disabled flag in cmp
* src/components/infiniband/linux-infiniband.c: infiniband: set
disabled flag in cmp
* src/components/micpower/linux-micpower.c: micpower: set disabled
flag in cmp
* src/components/host_micpower/linux-host_micpower.c: host_micpower:
set disabled flag in cmp
* src/components/example/example.c: example: set disabled flag in cmp
* src/components/coretemp_freebsd/coretemp_freebsd.c:
coretemp_freebsd: set disabled flag in cmp
* src/components/coretemp/linux-coretemp.c: coretemp: set disabled
flag in cmp
* src/components/appio/appio.c: appio: set disabled flag in cmp
2022-10-18 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/rocm.c: rocm: return PAPI_ENOEVNT if event not
found
2022-10-17 Giuseppe Congiu <gcongiu@icl.utk.edu>
* .../rocm/tests/intercept_single_kernel_monitoring.cpp,
.../rocm/tests/intercept_single_thread_monitoring.cpp,
src/components/rocm/tests/multi_kernel_monitoring.cpp,
src/components/rocm/tests/multi_thread_monitoring.cpp,
.../rocm/tests/sample_single_kernel_monitoring.cpp,
src/components/rocm/tests/single_thread_monitoring.cpp: rocm:
SQ_WAVES does not reflect logical waves SQ_WAVES counts the number
of logical waves, plus the waves that are restored due to context
switching. This patch computes the logical number of waves as
SQ_WAVES - SQ_WAVES_RESTORED. For those architectures that do not
support SQ_WAVES_RESTORED (preceeding MI200) the tests return with
a warning and the number of waves check is ignored.
2022-10-20 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/main.c: cat: fix memory leak from
hw_desc alloc Free the dynamically allocated memory used by the
hardware description feature of CAT. These changes have been
tested on the Intel Westmere EP architecture.
2022-10-19 Anthony <adanalis@icl.utk.edu>
* src/Makefile.in, src/Makefile.inc,
src/components/Makefile_comp_tests.target.in,
src/components/sde/tests/Makefile, src/configure, src/configure.in,
src/sde_lib/Makefile: Make static libsde.a optional. We build the
static sde library 'libsde.a' only if libpapi.a is also built,
based on the configure flags provided by the user (i.e., --with-
static-lib). Also, the linking of the relevant tests and utilities
depends on the existence or not of the static sde library.
2022-10-20 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/hw_desc.h,
src/counter_analysis_toolkit/main.c: cat: define default number of
OMP threads Using the PAPI_hw_info_t structure, define the default
number of threads as the number of CPUs per socket. These changes
have been tested on the Intel Westmere EP architecture.
2022-10-18 William Cohen <wcohen@redhat.com>
* src/components/sysdetect/tests/query_device_simple_f.F: Removed
unused label and variable from query_device_simple_f.F Clean up
query_device_simple_f.F to eliminate the following warnings:
query_device_simple_f.F:142:12: 142 | 10 format(9I5) |
1 Warning: Label 10 at (1) defined but not used [-Wunused-label]
query_device_simple_f.F:7:41: 7 | integer :: i, j,
ret_val, error, handle, modifier, id, vendor_id |
1 Warning: Unused variable 'error' declared at (1) [-Wunused-
variable]
* src/papi_preset.c: Correctly size papi_preset.c array to avoid
possible overflow Uped the work array size to avoid the following
warnings: papi_preset.c: In function 'update_ops_string':
papi_preset.c:336:50: warning: '%d' directive writing between 1 and
11 bytes into a region of size 9 [-Wformat-overflow=] 336 |
sprintf (work, "N%d", cur_index-1); |
^~ papi_preset.c:336:48: note: directive argument in the range
[-2147483648, 2147483646] 336 |
sprintf (work, "N%d", cur_index-1); |
^~~~~ In file included from /usr/include/stdio.h:906, from
papi_debug.h:23, from papi_internal.h:24, from papi_preset.c:18: In
function 'sprintf', inlined from 'update_ops_string' at
papi_preset.c:336:5: /usr/include/bits/stdio2.h:30:10: note:
'__builtin___sprintf_chk' output between 3 and 13 bytes into a
destination of size 10 30 | return __builtin___sprintf_chk (__s,
__USE_FORTIFY_LEVEL - 1, |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 |
__glibc_objsize (__s), __fmt, |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 |
__va_arg_pack ()); |
~~~~~~~~~~~~~~~~~
2022-10-13 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/tests/powercap_basic.c: powercap: fix
memory leak in test The component test 'powercap_basic' now frees
the dynamically allocated memory used to store counter readings.
These changes have been tested on the Intel Cascade Lake
architecture.
Sat Oct 1 23:04:01 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/events/intel_skl_events.h,
src/libpfm4/lib/events/intel_spr_events.h,
src/libpfm4/lib/pfmlib_amd64.c: libpfm4: update to commit 8aaaf17
Original commits: commit 8aaaf1747e96031a47ed6bd9337ff61a21f8cc64
add missing break in amd64_get_revision() Fixed bug introduced by:
commit 79031f76f8a1 ("fix amd_get_revision() to identify AMD Zen3
uniquely") Must have a break statment for AMD Zen3 (model 1) to
avoid errors later. Reported-by: Steve Kaufmann
<steve.kaufmann@hpe.com> commit
bc4233d35418788423e8442395c7920eb156589d update Intel Skylake
event table Based on download.01.or version 1.28. commit
4c0bc1c8ae06abd5f876657888b88aaf9c9530e6 Fix typos in Intel
Icelake event table Based on download.01.org version 1.16.
commit b6f86fb0d8eae38d65d4394e3ed82f528b10bebf Update Intel
SapphireRapid event table Based on download.01.org release 1.06.
Minor changes to ASSITS and DECODE events. Untested
2022-10-13 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/tests/powercap_basic.c: powercap: ensure
proper string format in test Ensure that the proper string is
null-terminated.
2022-10-11 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/linux-powercap.c,
src/components/powercap/tests/Makefile,
src/components/powercap/tests/powercap_basic.c: powercap: fix
formatting Replace tabs with appropriate amounts of spaces. These
changes have been tested on the Intel Cascade Lake architecture.
2022-10-10 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/tests/powercap_basic.c: powercap: fix
compiler warnings for component test powercap_basic The warnings
for the powercap component test can also be squelched by replacing
sizeof() with the actual buffer sizes. These changes have been
tested on the Intel Cascade Lake architecture.
* src/components/powercap/linux-powercap.c: powercap: fix compiler
warnings for component The warnings for the powercap component can
be squelched by replacing sizeof() with the actual size of the
destination buffer. These changes have been tested on the Intel
Cascade Lake architecture.
2022-10-10 AnustuvICL <anustuv@icl.utk.edu>
* src/aix.c, src/components/bgpm/IOunit/linux-IOunit.c,
src/components/bgpm/L2unit/linux-L2unit.c,
src/components/perf_event/perf_event.c,
src/components/perf_event/perf_helpers.h,
src/components/perfctr/perfctr.c,
src/components/perfmon2/perfmon.c, src/components/perfmon_ia64
/perfmon-ia64.c, src/components/perfnec/perfmon.c,
src/components/rocm/rocm.c, src/components/sde/sde.c,
src/ctests/attach2.c, src/ctests/attach3.c,
src/ctests/attach_validate.c, src/ctests/byte_profile.c,
src/ctests/data_range.c, src/ctests/earprofile.c,
src/ctests/prof_utils.c, src/ctests/prof_utils.h,
src/ctests/profile.c, src/ctests/profile_pthreads.c,
src/ctests/profile_twoevents.c, src/ctests/sprofile.c,
src/examples/PAPI_profil.c, src/examples/sprofile.c, src/extras.c,
src/extras.h, src/linux-bgp.c, src/linux-bgq.c, src/linux-
context.h, src/linux-memory.c, src/papi.c, src/papi.h,
src/papi_fwrappers.c, src/papi_internal.h, src/papivi.h, src
/solaris-common.c, src/solaris-common.h, src/solaris-niagara2.c,
src/solaris-ultra.c, src/solaris-ultra.h: Refactor caddr_t to void*
vptr_t
2022-10-11 Anthony <adanalis@icl.utk.edu>
* src/counter_analysis_toolkit/params.h: Missing file that should
have been included in PR 349 (commit 89c0f19).
2022-10-12 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi_fwrappers.c: sysdetect: fix warning in papi_fwrappers.c
papi_fwrappers.c is used to generate multiple wrapper versions for
fortran. Because of a global variable not declared static the
different versions cause a redefinition of the symbols when used
with recent versions of the gcc compiler (as the compiler does link
time optimizations). Declaring the variable static should fix the
problem.
2022-09-07 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/driver.h,
src/counter_analysis_toolkit/main.c: cat: add MPI support Add MPI
support to accelerate the collection of event data. This works by
splitting up the list of events to be monitored among the MPI
ranks. These changes have been tested on the IBM POWER9
architecture.
2022-09-28 Anthony <adanalis@icl.utk.edu>
* src/counter_analysis_toolkit/scripts/README.txt,
src/counter_analysis_toolkit/scripts/default.gnp,
.../scripts/multi_plot.gnp, .../scripts/process_dcache_output.sh,
.../L2_RQSTS:ALL_DEMAND_REFERENCES.data.reads.stat,
.../L2_RQSTS:DEMAND_DATA_RD_HIT.data.reads.stat,
.../L2_RQSTS:DEMAND_DATA_RD_MISS.data.reads.stat,
.../scripts/single_plot.gnp: Scripts and sample data for viewing
CAT's dcache output.
2022-09-21 Anthony <adanalis@icl.utk.edu>
* src/counter_analysis_toolkit/driver.h,
src/counter_analysis_toolkit/main.c: Removed redundant latency
step.
* src/counter_analysis_toolkit/main.c: Added support for "-quick"
flag which skips the latency tests.
* src/counter_analysis_toolkit/eventstock.c: Force the CPU component
to initialize itself.
* src/counter_analysis_toolkit/branch.c,
src/counter_analysis_toolkit/branch.h,
src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/driver.h,
src/counter_analysis_toolkit/icache.c,
src/counter_analysis_toolkit/main.c: Cleaned up the way we handle
the parameters specified via the command line arguments.
2022-09-04 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/tests/Makefile,
.../sysdetect/tests/query_device_simple_f.F, src/genpapifdef.c,
src/papi_fwrappers.c: sysdetect: add fortran bindings and test Add
fortran bindings for PAPI sysdetect interface and tests.
2022-09-13 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/linux-powercap.c: powercap: fix wrap-around
arithmetic When the energy counters reach the maximum value (given
by '/sys/class/powercap/intel-rapl*/max_energy_range_uj'), they
wrap around to zero. There is arithmetic in the powercap component
to account for this case, but it previously used the maximum value
for an unsigned int, which is not necessarily the value given by
'max_energy_range_uj'. Thus, the arithmetic has been modified to
now use the values given in the appropriate 'max_energy_range_uj'
files. These changes have been tested on the Intel Cascade Lake
architecture.
2022-10-07 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/infiniband/linux-infiniband.c: infiniband: fix
warning in snprintf Instead of using FILENAME_MAX as the length of
the string to be copied over to ev_file use the sum of the
substrings and account for the extra '/'.
2022-08-31 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/perfmon2/perfmon.c: perfmon2: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
* src/components/perfctr/perfctr.c: perfctr: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
2022-08-28 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/host_micpower/linux-host_micpower.c: host_micpower:
funnel PAPI_ENOMEM through fn_fail untested due to lack of
hardware
* src/components/host_micpower/linux-host_micpower.c: host_micpower:
rework error handling in init_component
* src/components/host_micpower/linux-host_micpower.c: host_micpower:
delete empty line
* src/components/host_micpower/linux-host_micpower.c: host_micpower:
add fn_exit point
* src/components/host_micpower/linux-host_micpower.c: host_micpower:
rename disable_me to fn_fail
* src/components/vmware/vmware.c: vmware: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
* src/components/stealtime/linux-stealtime.c: stealtime: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/sensors_ppc/linux-sensors-ppc.c: sensors_ppc: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/rapl/linux-rapl.c: rapl: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
* src/components/powercap_ppc/linux-powercap-ppc.c: powercap_ppc:
funnel init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/powercap/linux-powercap.c: powercap: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/pcp/linux-pcp.c: pcp: funnel init_component failures
init_component failures are handled locally to the failure.
Instead, funnel all error handling code paths through a single exit
point. This makes the code more robust to bugs and also makes it
easier to read.
* src/components/pcp/linux-pcp.c: pcp: return PAPI_ECMP on error
instead of ctxHandle
* src/components/net/linux-net.c: net: return PAPI_ECMP on error
instead of num_events
* src/components/net/linux-net.c: net: funnel init_component failures
init_component failures are handled locally to the failure.
Instead, funnel all error handling code paths through a single exit
point. This makes the code more robust to bugs and also makes it
easier to read.
* src/components/mx/linux-mx.c: mx: funnel init_component failures
init_component failures are handled locally to the failure.
Instead, funnel all error handling code paths through a single exit
point. This makes the code more robust to bugs and also makes it
easier to read.
* src/components/micpower/linux-micpower.c: micpower: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read. untested due to lack of
hardware
* src/components/micpower/linux-micpower.c: micpower: replace
PAPI_ENOCMP with PAPI_ECMP PAPI_ENOCMP should be used to indicate
that the requested component is not available in the component
index (e.g. because it wasn't initialized). PAPI_ECMP, on the other
hand, should be used when the component is initialized but some
requested feature is not supported by the component (e.g. the
component is not compatible with the feature). By its own
definition no component can return PAPI_ENOCMP.
* src/components/lustre/linux-lustre.c: lustre: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
* src/components/lmsensors/linux-lmsensors.c: lmsensors: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/libmsr/linux-libmsr.c: libmsr: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
* src/components/io/linux-io.c: io: funnel init_component failures
init_component failures are handled locally to the failure.
Instead, funnel all error handling code paths through a single exit
point. This makes the code more robust to bugs and also makes it
easier to read.
* src/components/intel_gpu/linux_intel_gpu_metrics.c: intel_gpu:
funnel init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/example/example.c: example: funnel init_component
failures init_component failures are handled locally to the
failure. Instead, funnel all error handling code paths through a
single exit point. This makes the code more robust to bugs and also
makes it easier to read.
* src/components/coretemp/linux-coretemp.c: coretemp: replace
PAPI_ENOCMP with PAPI_ECMP PAPI_ENOCMP should be used to indicate
that the requested component is not available in the component
index (e.g. because it wasn't initialized). PAPI_ECMP, on the other
hand, should be used when the component is initialized but some
requested feature is not supported by the component (e.g. the
component is not compatible with the feature). By its own
definition no component can return PAPI_ENOCMP.
* src/components/coretemp_freebsd/coretemp_freebsd.c:
coretemp_freebsd: funnel init_component failures init_component
failures are handled locally to the failure. Instead, funnel all
error handling code paths through a single exit point. This makes
the code more robust to bugs and also makes it easier to read.
untested
* src/components/coretemp/linux-coretemp.c: coretemp: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/appio/appio.c: appio: funnel init_component failures
init_component failures are handled locally to the failure.
Instead, funnel all error handling code paths through a single exit
point. This makes the code more robust to bugs and also makes it
easier to read.
2022-08-27 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/perf_event_uncore/perf_event_uncore.c: perf_event_u:
replace PAPI_ENOCMP with PAPI_ECMP PAPI_ENOCMP should be used to
indicate that the requested component is not available in the
component index (e.g. because it wasn't initialized). PAPI_ECMP, on
the other hand, should be used when the component is initialized
but some requested feature is not supported by the component (e.g.
the component is not compatible with the feature). By its own
definition no component can return PAPI_ENOCMP.
* src/components/perf_event/perf_event.c: perf_event: replace
PAPI_ENOCMP with PAPI_ECMP PAPI_ENOCMP should be used to indicate
that the requested component is not available in the component
index (e.g. because it wasn't initialized). PAPI_ECMP, on the other
hand, should be used when the component is initialized but some
requested feature is not supported by the component (e.g. the
component is not compatible with the feature). By its own
definition no component can return PAPI_ENOCMP.
* src/components/perf_event_uncore/perf_event_uncore.c: perf_event_u:
funnel init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
* src/components/perf_event/perf_event.c: perf_event: funnel
init_component failures init_component failures are handled
locally to the failure. Instead, funnel all error handling code
paths through a single exit point. This makes the code more robust
to bugs and also makes it easier to read.
2022-09-22 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm_smi/tests/Makefile: rocm_smi: add default rocm
path for tests When PAPI_ROCM_ROOT is not defined it expands to
the empty string during compilation. Thus, many of the rocm flags
used by the compiler are incomplete and might cause problems. This
patch makes sure that PAPI_ROCM_ROOT always falls back to a default
if not defined.
2022-09-29 Anthony <adanalis@icl.utk.edu>
* src/Makefile.inc, src/sde_lib/Makefile: libsde: Passing the CC
Makefile variable to the sub-make.
2022-09-22 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/tests/hl_intercept_multi_thread_monitoring.cpp,
src/components/rocm/tests/hl_intercept_single_thread_monitoring.cpp
, src/components/rocm/tests/hl_sample_single_thread_monitoring.cpp:
rocm: skip multi-threaded high-level API tests PAPI high-level API
tests in rocm require user intervention to set the LD_LIBRARY_PATH
to the path of libpapi.so and librocprofiler64.so, required,
respectively, to set ROCP_TOOL_LIB and HSA_TOOLS_LIB. Skip these
tests as they would fail without LD_LIBRARY_PATH being properly
set.
2022-09-21 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/tests/Makefile: rocm: use static libpapi for
tests Instead of linking to libpapi.so, which requires additional
environment variables (i.e. LD_LIBRARY_PATH) to be set for the test
to work, build tests with libpapi.a.
* src/components/rocm/tests/Makefile: rocm: add default rocm path for
tests When PAPI_ROCM_ROOT is not defined it expands to the empty
string during compilation. Thus, many of the rocm flags used by the
compiler are incomplete and might cause problems. This patch makes
sure that PAPI_ROCM_ROOT always falls back to a default if not
defined.
2022-07-11 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/tests/Makefile: rocm: account for PAPI defined
compilation flags Makefile_comp_tests.target already contains all
the variables needed to compile tests in various components.
Instead of hard coding compile flags all over again, use the
available variables.
2022-06-02 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/tests/Makefile: rocm: add
Makefile_comp_tests.target dependency in tests Currently, the
install target is missing in rocm tests. Including
Makefile_comp_tests.target fixes the problem
2022-09-24 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/linux-memory.c: meminfo: support POWER10 cache information Add
support for IBM POWER10 information in meminfo.
* src/components/sysdetect/powerpc_cpu_utils.c: sysdetect: add
POWER10 cache info support
* src/components/sysdetect/powerpc_cpu_utils.c: sysdetect: update
power9 L1 cache info The number of lines in L1 cache is wrong. It
was set to 64 for a 32KB cache with 128B line size, while is should
be 32K/128 = 256.
2022-09-04 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/linux-memory.c: meminfo: add power9 cache info
2022-09-21 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/configure, src/configure.in: configure: fix tls check logic
2022-09-23 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi.c: papi_get_opt: update documentation for PAPI_LIB_VERSION
The PAPI_LIB_VERSION option in PAPI_get_opt() no longer requires
PAPI to be successfully initialized first.
* src/ctests/version.c: ctests/version: PAPI_library_init does not
fail test PAPI_library_init can fail now and PAPI_get_opt will
return the runtime version for the user to compare with the linked
version.
2022-09-22 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi.c: Return PAPI library version even if PAPI is not
initialized Currently, there is no way for the user to compare his
version of the PAPI library with the version of the library being
loaded at runtime. PAPI_library_init() takes the version of the
user library and compares it with the version of the library
loaded. If the two don't match, it returns an error.
PAPI_get_opt() also provides access to some library information,
like the version, but this only works if PAPI has been correctly
initialized. This patch extends PAPI_get_opt() to provide the
library version regardless PAPI being initialized at all.
2021-12-02 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/ctests/all_native_events.c: ctests: improve all_native_events.
all_native_events does not test for event names only. Therefore,
you cannot test that specifying only the event name in an uncore
PMU event results in an error. Add a test for all_native_events
with only the event name.
Tue Sep 20 00:46:19 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/config.mk, src/libpfm4/debian/changelog,
src/libpfm4/debian/control, src/libpfm4/debian/rules,
src/libpfm4/include/perfmon/perf_event.h,
src/libpfm4/lib/pfmlib_amd64.c: libpfm4: update to commit 8c606bc
Original commits: commit 8c606bc2f2d186c2797d9f013283c9150f594f93
update perf_event.h to Linux 5.18 The perf_events interface for
directly accessing PMU registers from userspace for arm64 has been
formally implemented in the kernel v5.18. Update perf_event.h
header used to build perf_event based examples. commit
79031f76f8a1af7d3c83ae3c4363d32cfb5dadc6 fix amd_get_revision() to
identify AMD Zen3 uniquely Make sure we handle the model number
properly for AMD Zen3. Right now, it would consider any family 19h
as Zen3. commit 56f6a05d46b7592ddf81d77f4714dfc9b4c975e5 Update
to version 12.1 To fix some debian control files issues commit
e1c16c829abc86a4e9547f4518d7834fcbd0a603 fix debian rules to build
again Can now build using: $ debuild -i -us -uc -b -d commit
19b784d3404fda20e27b30473804ff3a3a14f4d5 fix debian changelog for
4.12 release changelog entry was added after the previous 11.1
release instead of at the top of the file
2022-09-22 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/sysdetect.c: sysdetect: fix problem with
missing shutdown_thread implementation Originally, init_thread and
shutdown_thread were not implemented in the sysdetect component.
However, this causes issues when PAPI_register_thread and
PAPI_unregister_thread are used. In the case of unregister, the
framework will go through all the enabled components and call
shutdown_thread for each of them. Since the sysdetect did not
implement these functions a default (PAPI_ECMP) error would be
returned. This patch adds the missing functions to sysdetect.
Solves issue #116
2022-09-21 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/configure, src/configure.in: configure: add support for
automatic ARM cpu detection The configure script should be able to
detect the cpu architecture and enable the building of the
corresponding source code support it. However, the configure only
does this for x86_64 and power architectures. This patch add
support for ARM architectures as well.
2022-09-20 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/arm_cpu_utils.c: sysdetect: fix cache info
data structure name With commit number 9f8e6b0 the sysdetect data
structures, that were originally hosted in papi.h, are moved to the
sysdetect.h instead. To account for this, the data structures
prefix was changed from PAPI_ to _sysdetect_. This change, however,
was erroneously skipped for the arm files. This patch fixes this
problem reflecting the name change in arm files.
2022-09-02 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/tests/Makefile: sysdetect: conditionally
build mpi tests
2022-09-13 Anthony <adanalis@icl.utk.edu>
* src/components/sde/tests/Makefile: Add the tests in the "clean"
target in the makefile.
* src/configure, src/configure.in, src/utils/Makefile: More proper
handling of special compilation flags for papi_native_avail.
2022-04-20 Anthony <adanalis@icl.utk.edu>
* src/Makefile.in, src/Makefile.inc,
src/components/Makefile_comp_tests.target.in,
src/components/sde/Rules.sde, src/components/sde/sde.c,
src/components/sde/sde_F.F90, src/components/sde/sde_internal.h,
src/components/sde/sde_lib/sde_lib.h,
.../sde/tests/Advanced_C+FORTRAN/sde_test_f08.F90,
.../sde/tests/Counting_Set/CountingSet_Lib++.cpp,
.../sde/tests/Counting_Set/CountingSet_Lib.c,
.../MemoryLeak_CountingSet_Driver++.cpp,
.../Counting_Set/MemoryLeak_CountingSet_Driver.c,
.../Counting_Set/Simple_CountingSet_Driver++.cpp,
.../tests/Counting_Set/Simple_CountingSet_Driver.c,
src/components/sde/tests/Counting_Set/cset_lib.hpp,
.../Created_Counter/Lib_With_Created_Counter++.cpp,
src/components/sde/tests/Makefile,
.../sde/tests/Minimal/Minimal_Test++.cpp,
.../sde/tests/Recorder/Lib_With_Recorder++.cpp,
src/components/sde/tests/Simple2/Simple2_Lib++.cpp,
src/components/sde/tests/Simple2/Simple2_Lib.c, src/configure,
src/configure.in, src/sde_lib/Makefile, src/sde_lib/sde_lib.c,
src/sde_lib/sde_lib.h, src/sde_lib/sde_lib.hpp,
src/sde_lib/sde_lib_datastructures.c,
src/sde_lib/sde_lib_internal.h, src/sde_lib/sde_lib_lock.h,
src/sde_lib/sde_lib_misc.c, src/sde_lib/sde_lib_ti.c,
src/sde_lib/sde_lib_ti.h, src/utils/Makefile,
src/utils/Makefile.target.in, src/utils/papi_native_avail.c:
libsde: Refactoring the sde code in a standalond library with a
clean API. The libsde library is built and installed along with
libpapi (unless the user specifies --with-libsde=no at configure).
Clean seperation between the PAPI SDE component and libsde. Now
PAPI invokes the "tools interface" of libsde. Added missing
functions for symmetry, such as papi_sde_shutdown() and
papi_delete_counting_set(), and
papi_sde_enabled()/papi_sde_disable().
2022-05-17 AnustuvICL <anustuv@icl.utk.edu>
* src/components/cuda/linux-cuda.c,
src/components/cuda/tests/Makefile,
.../cuda/tests/test_multipass_event_fail.c, src/genpapifdef.c,
src/papi.c, src/papi.h: cuda: Raise error when adding metrics that
need multiple pass - Add new error code `PAPI_EMULPASS` - Updated
docs for `PAPI_add_event()` and `PAPI_add_named_event()` - Add test
program in `components/cuda/test/test_multipass_event_fail.c`
Fri Sep 16 22:37:40 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/config.mk, src/libpfm4/debian/changelog,
src/libpfm4/docs/man3/libpfm_intel_bdw.3,
src/libpfm4/docs/man3/libpfm_intel_hsw.3,
src/libpfm4/docs/man3/libpfm_intel_icl.3,
src/libpfm4/docs/man3/libpfm_intel_icx.3,
src/libpfm4/docs/man3/libpfm_intel_ivb.3,
src/libpfm4/docs/man3/libpfm_intel_nhm.3,
src/libpfm4/docs/man3/libpfm_intel_skl.3,
src/libpfm4/docs/man3/libpfm_intel_snb.3,
src/libpfm4/docs/man3/libpfm_intel_spr.3,
src/libpfm4/docs/man3/libpfm_intel_wsm.3,
src/libpfm4/lib/pfmlib_intel_x86.c,
src/libpfm4/tests/validate_x86.c: libpfm4: update to commit 11f2d6c
Original commits: commit 11f2d6c70a8b353e80eee55e9a2011c27c82398e
update to version 4.12.0 Update to 4.12.0 revision to prepare for
release commit 471fe633ae01a636b78481b8030a1f922c9d24d2 fix
minimal ldlat latency for Intel Load Latency SDM lists 1 cycle as
the lowest possible, adjust code to reflect spec. Adjust validation
test suite accordingly. Adjust man pages accordingly.
2022-09-03 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/utils/papi_native_avail.c: papi_native_avail: fix typo in
doxygen comment
2021-07-13 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/ctests/memory.c, src/linux-memory.c, src/papi.h: meminfo: Add
alloc/write policy for generic_get_memory_info On arm64, if the
firmware supports ACPI PPTT (Processor Properties Topology Table),
the generic_get_memory_info function references the file locate in
the "/sys/devices/system/cpu/cpu*/cache/index*" directory and sets
the cache information. In the arm64 environment, the following
cache information files are available from the kernel:. index0:
allocation_policy number_of_sets size ways_of_associativity
coherency_line_size shared_cpu_list type write_policy level
shared_cpu_map uevent Currently, the papi library does not
reference two files, "allocation_policy" and "write_policy". Add
allocation_policy/write_policy support for the
generic_get_memory_info function.
/sys/devices/system/cpu/cpu*/cache/index*/allocation_policy -
ReadAllocate: allocate a memory location to a cache line on a cache
miss because of a read - WriteAllocate: allocate a memory location
to a cache line on a cache miss because of a write -
ReadWriteAllocate: both writeallocate and readallocate
/sys/devices/system/cpu/cpu*/cache/index*/write_policy -
WriteThrough: data is written to both the cache line and to the
block in the lower-level memory - WriteBack: data is written only
to the cache line and the modified cache line is written to main
memory only when it is replaced
2022-09-02 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/libmsr/linux-libmsr.c: libmsr: improve disabled
reason string Instead of returning a generic error message if
libmsr.so cannot be dlopen'ed return the dlerror() string.
* src/components/sysdetect/powerpc_cpu_utils.c: sysdetect: update
power9 cache info
2022-08-24 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/ctests/all_native_events.c, src/ctests/get_event_component.c:
ctests: allow access to PAPI_EDELAY_INIT components Some of the
tests, such as all_native_events and get_event_component, check the
'disabled' flag of the component before accessing it. Device
components, such as cuda and rocm, set the 'disabled' flag to
PAPI_EDELAY_INIT, which signifies the component is a delayed
initialization one. Thus, the event table in the component is
initialized only when events are accessed (e.g.
PAPI_enum_cmp_event).
2022-09-01 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/README.md: sysdetect: update README.md
2022-08-31 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/amd_gpu.c,
src/components/sysdetect/nvidia_gpu.c,
src/components/sysdetect/shm.c: sysdetect: warning fix in snprintf
2022-09-01 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi_internal.c: errcode: add PAPI_EMULPASS to error codes
* src/papi.h: errcode: add comment for PAPI_EDELAY_INIT in papi.h
* src/genpapifdef.c: errcode: add PAPI_EDELAY_INIT to genpapifdef
2022-08-31 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/Rules.sysdetect: sysdetect: add support
for Power8 through 10
* src/configure, src/configure.in: configure: add support for POWER8
through 10 The configuration script only supported Power
architectures up to version 7. This patch adds Power8, Power9, and
Power10 as well.
2022-07-17 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/rocm.c: rocm: refactor ntv_name_to_code and
ntv_code_to_name
2022-07-16 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/Rules.rocm, src/components/rocm/rocm.c: rocm:
add name_to_code implementation
* src/components/rocm/Rules.rocm, src/components/rocm/htable.c,
src/components/rocm/htable.h: rocm: add hash table for name_to_code
fast conversions Add hash table implementation that can be used by
components to convert event names into their corresponding codes.
The hash function used by the hash table is djb2 by Dan Bernstein.
2022-07-11 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/tests/query_device_mpi.c,
.../sysdetect/tests/query_device_simple.c: sysdetect: update tests
2022-06-03 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/amd_gpu.c: sysdetect: fix warning in amd
gpu probe
2022-04-20 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/amd_gpu.c,
src/components/sysdetect/amd_gpu.h, src/components/sysdetect/cpu.c,
src/components/sysdetect/cpu.h,
src/components/sysdetect/cpu_utils.c,
src/components/sysdetect/cpu_utils.h,
src/components/sysdetect/linux_cpu_utils.c,
src/components/sysdetect/nvidia_gpu.c,
src/components/sysdetect/nvidia_gpu.h,
src/components/sysdetect/powerpc_cpu_utils.c,
src/components/sysdetect/shm.c,
src/components/sysdetect/sysdetect.c,
src/components/sysdetect/sysdetect.h,
src/components/sysdetect/x86_cpu_utils.c, src/configure,
src/configure.in, src/papi.c, src/papi.h, src/papi_internal.c,
src/papi_internal.h, src/utils/papi_hardware_avail.c: sysdetect:
extend PAPI with system detection and querying APIs Queries
performed by accessing PAPI internal data structures are not easily
maintainable. Once an internal data structure is exposed to users
these rely on it not being changed and ties our hands from an
implementation standpoint. This patch introduces a new set of APIs
that can be used to query system attributes for different devices
through the system detection component. The APIs are generic enough
to allow extending the capabilities with new hardware devices, as
they become available, and allow to separate user interfaces from
the implementation of the underlying functionality. Because the
new APIs have to be always functional we configure the sysdetect
component by default and initialize it lazily, i.e., only when the
corresponding APIs are called by the user.
2022-08-30 Daniel Barry <dbarry@vols.utk.edu>
* src/papi_events.csv: papi_avail: add presets for Intel Ice Lake SP
Define preset events for the Intel Ice Lake SP processor. These
presets have been verified using the Counter Analysis Toolkit
benchmarks. These changes have been tested on the Intel Ice Lake
architecture.
2022-08-25 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c: cat: remove
unused code from vector benchmark There were several outdated and
unused lines of code in the CAT vector FLOPs benchmark. These
changes have been tested on the Intel Ice Lake (ICX) architecture.
* src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c: cat: format
changes to vector benchmark comments Make comment style consistent
across the various source files. These changes have been tested on
the Intel Ice Lake (ICX) architecture.
2022-08-24 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/vec.c,
src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma.h,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c,
src/counter_analysis_toolkit/vec_scalar_verify.h: cat: extend
vector FLOPs benchmark to 128-bit and 512-bit instrinsics
Previously, kernels within the vector FLOPs benchmark of the
Counter Analysis Toolkit used only 256-bit intrinsics. But to
accurately identify native events for 128-bit and 512-bit vector
widths, the corresponding intrinsics need to be included in the
benchmark. These changes have been tested on the Intel Ice Lake
(ICX) architecture.
2022-06-03 Daniel Barry <dbarry@vols.utk.edu>
* src/configure, src/configure.in: sysdetect: modify configure.in
logic to parse '--with-CPU=x86' When the configuration is invoked
with "--with-CPU=x86", it should add 'x86_cpuid_info.c' to
MISCSRCS. When the configuration is invoked on an architecture of
the x86_64 family, and "--with-CPU=x86" is not specified, the build
will proceed normally. However, the build will fail on x86_64 when
"--with-CPU=x86" is specified because this flag bypasses the check
for the x86_64 family but does not add 'x86_cpuid_info.c' to
MISCSRCS. Thus, if "--with-CPU=x86" is specified, "x86" must be
included in the list of CPUs for which 'x86_cpuid_info.c' is added
as a source file. These changes have been tested on the Intel
Cascade Lake and Skylake architectures.
2022-08-22 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/libpfm4/lib/events/power10_events.h,
src/libpfm4/lib/pfmlib_power10.c: libpfm4: fix broken update This
patch fixes an error in the the previous libpfm4 update (c340321).
The update in question was missing the expected power10 files.
This patch adds the missing libpfm4 commit including those files.
Wed Jul 27 03:58:13 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/README, src/libpfm4/include/perfmon/pfmlib.h,
src/libpfm4/lib/Makefile,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/events/intel_spr_events.h,
src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_power_priv.h, src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/tests/validate_power.c: libpfm4: update libpfm4 to
commit 5140ce5 Original commits: commit
5140ce5fe28a7d595eb0a3a906445d0deeb2c53c Add IBM Power10 core PMU
support Adds support for IBM Power 10 core PMU. Documentation on
the PMU events for Power10 can be found in Appendix E of the
Power10 Users Manual. The Power10 manual is at:
https://ibm.ent.box.com/v/power10usermanual This and other PowerPC
related documents can be found at:
https://www-50.ibm.com/systems/power/openpower/ commit
c88fd465519ae6e96105efe19a06f64b3daa16af More Intel SapphirRapids
updates Based on download.01.org: sapphire_rapids_core_v1.04.json
commit 77711b23c5c2124c45d35f61a4b7edce7824ba53 Update Intel
SapphireRapids event table Based on official event table at
download.01.org: sapphirerapids_core_v1.04.json Event RS_EMPTY
deprecated in favor of RS event. Updated OCR umasks. commit
391d20ec0a7d53bf5d7b39888734ba6fa716df3f Update Icelake and
IcelakeX event tables Based on official event tables from
downoad.01.org: icelakex_core_v1.15.json icelake_core_v1.14.json
Mostly updating the OCR events. Tested: Power10 : No
Sapphire Rapids: No Icelake : No IcelakeX : No
2022-05-26 John Rodgers <john.rodgers@hpe.com>
* src/components/cuda/linux-cuda.c: CUDA: Add compile/runtime version
debug msgs In `linux-cuda.c::_cuda_linkCudaLibraries`, added debug
messages to report the compile/runtime versions for the driver,
runtime API, and CUPTI API.
2022-07-12 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/rocm.c: rocm: fix assign eventset to component
PAPI_assign_eventset_component() assigns an eventset to a component
of certain index. The function relies on component information to
allocate data structures for the component. One such parameter is
num_mpx_cntrs. The component was setting this to -1 in
rocm_init_component() causing any malloc to fail. Additionally,
when rocm_init_private() is finally called, it also resets
num_mpx_cntrs to the number of native events detected for the
device. This is wrong as the framework relies on this parameter
when freeing allocated data structures, e.g., EventInfoArray.
2022-06-11 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm_smi/linux-rocm-smi.c: rsmi: ignore not yet
implemented function Calls to rsmi_dev_pci_bandwidth_get()
currently return a RSMI_STATUS_NOT_YET_IMPLEMENTED error. This
results in the rocm_smi component to be disabled. To avoid this we
allow the component to still work even without functioning
rsmi_dev_pci_bandwidth_get() function.
2022-05-30 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm_smi/tests/force_init.h,
src/components/rocm_smi/tests/power_monitor_rocm.cpp,
src/components/rocm_smi/tests/rocm_smi_writeTests.cpp: rocm_smi:
account for PAPI_EDELAY_INIT in tests
2022-05-28 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/nvml/tests/force_init.h,
src/components/nvml/tests/nvml_power_limit_read_test.cu,
src/components/nvml/tests/nvml_power_limiting_test.cu: nvml:
account for PAPI_EDELAY_INIT in tests Currently, nvml tests check
for disable state of the component. Tests do not allow for
PAPI_EDELAY_INIT error, introduced in commit 1f44a36, however.
Thus, tests fail spuriously. This patch adds a force_nvml_init
function that accesses the nvml events, forcing the component to
init.
2022-06-02 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/linux-powercap.c: powercap: add wrapper
function to map event-set entry to counter Created a wrapper
function to map the event-set index to the appropriate counter
index. These changes have been tested on the Intel Cascade Lake
architecture.
2022-05-17 Daniel Barry <dbarry@vols.utk.edu>
* src/components/powercap/linux-powercap.c: powercap: fix event
lookup in _powercap_read() The function read_powercap_value()
should be given the index of the powercap event, not the position
of that event in the event set. The event-set index maps to the
powercap-event index via the 'which_counter' array, which is
already used in the function _powercap_write(). These changes were
tested on the Intel Skylake and Cascade Lake architectures.
2022-07-06 Daniel Barry <dbarry@vols.utk.edu>
* src/components/sysdetect/arm_cpu_utils.c: sysdetect: add support
for Fujitsu A64FX This enables 'papi_hardware_avail' utility
support for the A64FX processor. TLB and cache information were
obtained from the A64FX Microarchitecture Manual. (https://github.c
om/fujitsu/A64FX/blob/master/doc/A64FX_Microarchitecture_Manual_en_
1.6.pdf) These changes were tested on the A64FX and ThunderX2
processors.
2022-06-03 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/linux-memory.c: papi_mem_info: modify aarch64_get_memory_info
by hw_info Reference hw_info->vendor and hw_info->cpuid_model and
modify the aarch64_get_memory_info function to determine the
processor by the combination of Implementer and PartNum. These
changes were tested on the ThunderX2 and Fujitsu A64FX
architectures.
2022-05-17 Daniel Barry <dbarry@vols.utk.edu>
* src/linux-memory.c: papi_mem_info: add back support for ARM64
processors Cache information for ARM64 processors other than the
Fujitsu A64FX is available in the /sys/ directory. Therefore, these
changes utilize the generic_get_memory_info() function for non-
A64FX ARM64 processors. These changes were tested on the ThunderX2
and Fujitsu A64FX architectures.
2022-04-22 Daniel Barry <dbarry@vols.utk.edu>
* src/linux-memory.c, src/papi.h: papi_mem_info: add support for
Fujitsu A64FX This enables 'papi_mem_info' utility support for the
A64FX processor. TLB and cache information were obtained from the
A64FX Microarchitecture Manual. (https://github.com/fujitsu/A64FX/b
lob/master/doc/A64FX_Microarchitecture_Manual_en_1.6.pdf) These
changes were tested on the Fujitsu A64FX, IBM POWER9, AMD Zen 2,
and Intel Haswell architectures.
2022-06-11 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/rocp.c: rocm: rocp_pool_close double free
comment
* src/components/rocm/rocp.c: rocm: remove useless comments
* src/components/rocm/rocp.c: rocm: adjust for 5.2.0 change of
directory structure
* src/components/rocm/rocp.c: rocm: check config files are regular
2022-06-10 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/rocp.c: rocm: rename dispatch counter functions
increment/decrement_dispatch_counter also return the value of the
counter after increment/decrement. To make more clear what the
functions do rename them.
* src/components/rocm/rocp.c: rocm: fix bug in sampling read
* src/components/rocm/rocp.c: rocm: cleanup function signature
* src/components/rocm/rocp.c: rocm: wrap sampling/intercept_ctx_init
2022-06-11 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/pcp/README.md: pcp: add how to run on Summit in
readme
2022-06-10 John Rodgers <john.rodgers@hpe.com>
* .../cuda/tests/cupti_multi_kernel_launch_monitoring.cu: CUDA:
Update Multi-Kernel Launch Test PR 298 toggled back the CUDA
profiling API support ranges to include CC 7.0 when built against
CUDA11+. As a result, the `cupti_multi_kernel_launch_monitoring.cu`
test needs to be updated to account for this new support range
behavior.
2022-06-09 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sensors_ppc/tests/sensors_ppc_basic.c: sensors_ppc:
fix test sensor_ppc_basic does not call PAPI_stop before cleaning
up and destroying the eventset. This causes the test to return
PAPI_EISRUN error. Replace PAPI_read with PAPI_stop as fix.
Fri Jun 3 06:15:02 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/intel_spr_events.h,
src/libpfm4/lib/pfmlib_perf_event_pmu.c,
src/libpfm4/tests/validate_x86.c: libpfm4: update libpfm4 to commit
322e66c Original commits: commit
322e66c6463d6ff4035a751843dbce2ee83b6663 fix validate for
CPU_CLK_UNHALTED:REF_DISTRIBUTED for SapphireRapids Was using the
bogus evnet code following the change in: 44a62a52e4e5 ("fix
CPU_CLK_UNHALTED.REF_DISTRIBUTED encoding for Intel
SapphireRapids") Correct event code is 0x3c. commit
a7b26272d8327ad1c001456a18518a0ac65dc2bb avoid GCC-12 use-after-
free warnings gcc-12 seems to complain about bogus use-after-free
situations in the libpfm4 code: p = realloc(q, ...) if (!p) return
NULL s = p + (q - z) It complains because of the use of q after
realloc in this case. Yet q - z is just pointer artihmetic and is
not dereferencing any memory through the pointer q which may have
been freed by realloc. Fix is to pre-computer the delta before
realloc to avoid using the pointer after the call. Reported-by:
Vitaly Chikunov <vt@altlinux.org> commit
44a62a52e4e554cad7971b79770e03ae880336ce fix
CPU_CLK_UNHALTED.REF_DISTRIBUTED encoding for Intel SapphireRapids
Was using 0x8ec instead 0x 0x83c. commit
b28625959098b3889f5ffe1d209b5da196b959e1 update Intel
SapphireRapids core PMU events Based on
download.01.org/perfmon/SPR/sapphire_rapids_v1.02.json Mostly
updates to the OCR event. Testing: SapphireRapids commits
untested due to lack of hardware.
2022-06-02 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm_smi/tests/Makefile: rocm_smi: remove duplicate
include Makefile_comp_tests.target
* src/components/rocm/rocp.c: rocm: fix rocprofiler load logic The
load_rocp_sym function in rocp.c should not use PAPI_ROCM_ROOT to
calculate the pathname of the rocprofiler library. init_rocp_env
already sets up HSA_TOOLS_LIB to point to the right pathname based
on PAPI_ROCM_ROOT (or the pathname explicitly defined by users).
Thus, instead, load_rocp_sym should simply use HSA_TOOLS_LIB.
2022-06-03 Giuseppe Congiu <gcongiu@icl.utk.edu>
* doc/Makefile: sysdetect: add papi_hardware_avail to man pages
2022-06-02 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/x86_cpu_utils.c: sysdetect: fix a 'may be
used uninitialized' warning
* src/components/cuda/linux-cuda.c: cuda: allow for CC 7.0 to use the
profiler API Currently, the cuda component enforce the cupti event
API to be used if the compute capability (CC) of the device is 7.0.
This patch allows users to select the cupti profiler API instead by
using a cuda11 installation and exposing this to PAPI through the
PAPI_CUDA_ROOT environment variable.
Tue May 31 05:47:23 2022 -0700 Thomas Richter <tmricht@linux.ibm.com>
* src/libpfm4/lib/events/s390x_cpumf_events.h,
src/libpfm4/lib/pfmlib_s390x_cpumf.c: libpfm4: update libpfm4 to
commit b03a81e Original Commit: s390: Update counter definition
for IBM z16 This patch updates the libpfm4 s390 counter
definitions to the latest documentation: SA23-2261-07:The CPU-
Measurement Facility Extended Counters Definition for z10,
z196/z114, zEC12/zBC12, z13/z13s, z14, z15 and z16 April 29, 2022
https://www.ibm.com/support/pages/cpu-measurement-facility-
extended-counters-
definition-z10-z196z114-zec12zbc12-z13z13s-z14-z15-and-z16 This
includes updated counter description for existing counters and the
complete counter definition for IBM z16. Acked-by: Sumanth
Korikkar <sumanthk@linux.ibm.com> Testing: not tested
2022-05-26 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/x86_cpu_utils.c: sysdetect: fix warning in
cpu probe
2022-01-12 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/README.md, src/components/rocm/Rules.rocm,
src/components/rocm/common.h, src/components/rocm/linux-rocm.c,
src/components/rocm/rocm.c, src/components/rocm/rocm_IncDirs.awk,
src/components/rocm/rocp.c, src/components/rocm/rocp.h,
src/components/rocm/tests/Makefile,
src/components/rocm/tests/ROCM_SA_Makefile,
src/components/rocm/tests/common.h,
.../tests/hl_intercept_multi_thread_monitoring.cpp,
.../hl_intercept_single_kernel_monitoring.cpp,
.../hl_intercept_single_thread_monitoring.cpp,
.../tests/hl_sample_single_kernel_monitoring.cpp,
.../tests/hl_sample_single_thread_monitoring.cpp,
.../tests/intercept_multi_kernel_monitoring.cpp,
.../tests/intercept_multi_thread_monitoring.cpp,
.../tests/intercept_single_kernel_monitoring.cpp,
.../tests/intercept_single_thread_monitoring.cpp,
src/components/rocm/tests/matmul.cpp,
src/components/rocm/tests/matmul.h,
.../rocm/tests/multi_kernel_monitoring.cpp,
.../rocm/tests/multi_kernel_monitoring.h,
.../rocm/tests/multi_thread_monitoring.cpp,
.../rocm/tests/multi_thread_monitoring.h,
src/components/rocm/tests/rocm_all.cpp,
src/components/rocm/tests/rocm_command_line.c,
src/components/rocm/tests/rocm_example.cpp,
src/components/rocm/tests/rocm_failure_demo.cpp,
src/components/rocm/tests/rocm_standalone.cpp,
src/components/rocm/tests/run_papi.sh,
.../rocm/tests/sample_multi_kernel_monitoring.cpp,
.../rocm/tests/sample_multi_thread_monitoring.cpp,
.../rocm/tests/sample_overflow_monitoring.cpp,
.../rocm/tests/sample_single_kernel_monitoring.cpp,
.../rocm/tests/sample_single_thread_monitoring.cpp,
.../rocm/tests/single_thread_monitoring.cpp,
.../rocm/tests/single_thread_monitoring.h: rocm: component rewrite
The new rocm component implementation supports rocprofiler sampling
as well as intercepting mode. In sampling mode the new rocm
component assigns each eventset one or more GPU devices (depending
on the events requested by the PAPI user). Two separate threads can
thus create two eventsets and have them monitor a separate device
(N to N), or one thread can create a single eventset and have it
monitor all devices (1 to N). Sampling mode concerns with whatever
happens at the device level, not the kernel level. Thus, a section
of code instrumented with PAPI_start and PAPI_stop might measure
the activity of whatever kernel the current thread has launched on
a device, plus whatever kernels other threads may have launched on
the same device at the same time. In intercepting mode the new
rocm component assigns each eventset one kernel at the time
(kernels are serialized by rocm). Intercepting mode concerns with
whatever happens at the kernel level (inside the device). Thus, a
section of code instrumented with PAPI_start and PAPI_stop might
measure the activity of whatever kernel the current thread launched
on a device. If the instrumented section contains multiple kernel
launches the component will accumulate the counters of those into a
single counter value. The component also support software emulated
counters sampling through PAPI_overflow.
2022-04-18 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/high-level/papi_hl.c: high-level: use _papi_getpid instead of
getpid
* src/threads.c, src/threads.h: thread: add _papi_getpid() function
2022-01-27 Anthony <adanalis@icl.utk.edu>
* src/atomic_ops.h, src/atomic_ops/ao_version.h, src/atomic_ops
/generalize-arithm.h, src/atomic_ops/generalize-arithm.template,
src/atomic_ops/generalize-small.h, src/atomic_ops/generalize-
small.template, src/atomic_ops/generalize.h,
src/atomic_ops/sysdeps/README,
.../sysdeps/all_acquire_release_volatile.h,
.../sysdeps/all_aligned_atomic_load_store.h,
src/atomic_ops/sysdeps/all_atomic_load_store.h,
src/atomic_ops/sysdeps/all_atomic_only_load.h,
src/atomic_ops/sysdeps/ao_t_is_int.h,
src/atomic_ops/sysdeps/ao_t_is_int.template,
src/atomic_ops/sysdeps/armcc/arm_v6.h,
src/atomic_ops/sysdeps/emul_cas.h,
src/atomic_ops/sysdeps/gcc/aarch64.h,
src/atomic_ops/sysdeps/gcc/alpha.h,
src/atomic_ops/sysdeps/gcc/arm.h,
src/atomic_ops/sysdeps/gcc/avr32.h,
src/atomic_ops/sysdeps/gcc/cris.h,
src/atomic_ops/sysdeps/gcc/e2k.h, src/atomic_ops/sysdeps/gcc
/generic-arithm.h, src/atomic_ops/sysdeps/gcc/generic-
arithm.template, src/atomic_ops/sysdeps/gcc/generic-small.h,
src/atomic_ops/sysdeps/gcc/generic-small.template,
src/atomic_ops/sysdeps/gcc/generic.h,
src/atomic_ops/sysdeps/gcc/hexagon.h,
src/atomic_ops/sysdeps/gcc/hppa.h,
src/atomic_ops/sysdeps/gcc/ia64.h,
src/atomic_ops/sysdeps/gcc/m68k.h,
src/atomic_ops/sysdeps/gcc/mips.h,
src/atomic_ops/sysdeps/gcc/powerpc.h,
src/atomic_ops/sysdeps/gcc/riscv.h,
src/atomic_ops/sysdeps/gcc/s390.h, src/atomic_ops/sysdeps/gcc/sh.h,
src/atomic_ops/sysdeps/gcc/sparc.h,
src/atomic_ops/sysdeps/gcc/tile.h,
src/atomic_ops/sysdeps/gcc/x86.h,
src/atomic_ops/sysdeps/generic_pthread.h,
src/atomic_ops/sysdeps/hpc/hppa.h,
src/atomic_ops/sysdeps/hpc/ia64.h,
src/atomic_ops/sysdeps/ibmc/powerpc.h,
src/atomic_ops/sysdeps/icc/ia64.h,
.../sysdeps/loadstore/acquire_release_volatile.h,
.../loadstore/acquire_release_volatile.template,
src/atomic_ops/sysdeps/loadstore/atomic_load.h,
.../sysdeps/loadstore/atomic_load.template,
src/atomic_ops/sysdeps/loadstore/atomic_store.h,
.../sysdeps/loadstore/atomic_store.template,
.../loadstore/char_acquire_release_volatile.h,
.../sysdeps/loadstore/char_atomic_load.h,
.../sysdeps/loadstore/char_atomic_store.h,
.../sysdeps/loadstore/double_atomic_load_store.h,
.../loadstore/int_acquire_release_volatile.h,
src/atomic_ops/sysdeps/loadstore/int_atomic_load.h,
.../sysdeps/loadstore/int_atomic_store.h,
.../sysdeps/loadstore/ordered_loads_only.h,
.../sysdeps/loadstore/ordered_loads_only.template,
.../sysdeps/loadstore/ordered_stores_only.h,
.../sysdeps/loadstore/ordered_stores_only.template,
.../loadstore/short_acquire_release_volatile.h,
.../sysdeps/loadstore/short_atomic_load.h,
.../sysdeps/loadstore/short_atomic_store.h,
src/atomic_ops/sysdeps/msftc/arm.h,
src/atomic_ops/sysdeps/msftc/arm64.h,
src/atomic_ops/sysdeps/msftc/common32_defs.h,
src/atomic_ops/sysdeps/msftc/x86.h,
src/atomic_ops/sysdeps/msftc/x86_64.h,
src/atomic_ops/sysdeps/ordered.h,
src/atomic_ops/sysdeps/ordered_except_wr.h,
src/atomic_ops/sysdeps/read_ordered.h,
src/atomic_ops/sysdeps/standard_ao_double_t.h,
src/atomic_ops/sysdeps/sunc/sparc.S,
src/atomic_ops/sysdeps/sunc/sparc.h,
src/atomic_ops/sysdeps/sunc/x86.h,
src/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h,
src/atomic_ops/sysdeps/test_and_set_t_is_char.h, src/linux-
common.c, src/linux-lock.h: Integrate the atomic operations of the
libatomic_ops library into PAPI.
2022-05-23 John Rodgers <john.rodgers@hpe.com>
* src/components/cuda/linux-cuda.c: CUDA11 Start Variable Update In
`_cuda11_start`, change `userContext` to `userCtx` to be consistent
with rest of the component.
* src/components/cuda/linux-cuda.c: CUDA11 Profiler Active Context
Sensitivity The CUPTI11 portion of the `cuda` component has shown
sensitivities for a calling threads active context when using
CUDA11 versions < 11.2. Specifically, it was found that not pushing
the session context onto the stack prior to calling
`cuptiProfilerSetConfig` would result in a failure. This change
set addresses this issue by leveraging the same mechanics that are
used when calling other CUPTI routines, namely pushing the session
context onto the stack and popping it off once we are done with it.
2022-05-05 John Rodgers <john.rodgers@hpe.com>
* src/components/cuda/linux-cuda.c: Allow context creation for CUDA11
For the CUPTI11 portion of `cuda` component, adopt logic from the
legacy version of the component to allow creation of contexts
should one not exist. Update enables simple single GPU, as well as
target offload codes to be profiled. Note: Update also resolves
issue with `papi_command_line` (issue 92)
* src/components/cuda/README.md, src/components/cuda/linux-cuda.c,
src/components/cuda/tests/HelloWorld_CUPTI11.cu,
src/components/cuda/tests/simpleMultiGPU.cu,
.../cuda/tests/simpleMultiGPU_CUPTI11.cu: Issue102: Remove CUDA11
callback subscriber The CUPTI callback subscriber introduced to
monitor contexts created a problem for packages that use PAPI for
CUDA performance counter collection. Specifically, it prevented
registering of custom profiling/tracing callbacks, resulting in
`CUPTI_ERROR_MULTIPLE_SUBSCRIBERS_NOT_SUPPORTED` when attempting to
register one. This changeset is effectively a targeted reversion
of the callback subscriber logic from the commit that introduced
it. Commit that introduced subscriber:
9ff1d73dae9a7b297a54a77fac5fdb3957041452 With this update in
place, the `cuda` component context capturing behavior is
consistent between the legacy and update CUPTI11 version of the
code. Requiring that applications create and set the context used
to run the kernels prior to calling `PAPI_add_events()`.
2022-05-16 John Rodgers <john.rodgers@hpe.com>
* src/components/cuda/linux-cuda.c,
src/components/cuda/tests/Makefile,
.../tests/cupti_multi_kernel_launch_monitoring.cu: Issue 105:
CUDA11 Multi Read Error The `cuda` component generated erroneous
values when multiple `PAPI_read` operations were called. Testing
via direct usage of the CUPTI API revealed that the CUDA11
profiling image (`cuda11_CounterDataImage`) needed to be reset
after each read operation to prevent this behavior. To enable
resetting, the initialization parameters for the profiling image
and scratch buffer are now stored along with the other profiling
parameters in `cuda_device_desc_t`. These newly stored parameters
are then used in each read operation to re-initialize the profiling
images after the counter results have been resolved. A new test,
`cupti_multi_kernel_launch_monitoring`, has been introduced to the
`components/cuda/tests/` directory and was used in the validation
of this changeset.
2022-04-29 John Rodgers <john.rodgers@hpe.com>
* src/components/cuda/linux-cuda.c: Remove unnecessary calls to
`cuptiProfiler{Enable,Disable}Profiling` in CUDA11 `PAPI_read`
operations. Starting and stopping of profiling session now handled
in appropriate CUDA11 `PAPI_{start,stop}` operations.
2022-05-16 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: remove leftover cupti11
switching logic For cupti 11 devices, i.e. devices that are
compatible with cupti 11 profiler interface, the component
overrides the vector function pointers with cupti 11 variants.
However, the _cuda_update_control_state function still contains a
switch for cupti 11 version. This should not happen and is
therefore removed by this patch.
2022-05-10 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c, src/configure, src/configure.in:
cuda: replace cupti_profiler with cupti_api_version The cupti.h
header exports a CUPTI_API_VERSION macro that can be used for
checking whether the profiler API is supported or not. The macro
can assume the following values (associated to the corresponding
CUDA version, and compute capability): CUPTI_API_VERSION |
CUDA_VERSION | COMPUTE CAPABILITY
--------------------+----------------+------------------- V1
| 4.0 | V2 | 4.1 | V3
| 5.0 | V4 | 5.5 | V5
| 6.0 | V6 | 6.5 | V7
| 6.5 | V8 | 7.0 | V9
| 8.0 | V10 | 9.0 | V11
| 9.1 | V12 | 10.0,10.1,10.2 | < 7.5
V13 | 11.0 | >= 7.0 V14 |
11.1 | This patch replaces the CUPTI_PROFILER
preprocessor flag, previously set in configure if the
cupti_profiler_target.h header was found in PAPI_CUDA_ROOT, with
the CUPTI_API_VERSION in linux-cuda.c
2022-04-28 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: pre-cupti11 backward
compatibility fix Cuda devices with compute capability <= 7.0
should be able to use the event API provided by cuda toolkits with
version >= 11. The cuda component selection logic however causes
cuda devices with such compute capabilities to fail when cuda
toolkits >= 11 are used. This patch fixes the selection logic.
2022-05-23 AnustuvICL <anustuv@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: Added debug messages to
indicate the locations of loaded dynamic CUDA libraries.
2022-03-21 Anustuv Pal <anustuv@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: Add support for CUDA
version >11.2 - CUDA 11.0 deprecated the use of
NVPA_RawMetricsConfig_Create and replaced it with
NVPW_CUDA_RawMetricsConfig_Create. This patch replaces the
deprecated functions with the NVIDIA recommended substitute.
2022-05-10 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/Rules.sysdetect: sysdetect: fix include
path of nvidia GPUs
2022-04-30 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/amd_gpu.c: sysdetect: fix amd gpu product
name The HSA_AMD_AGENT_INFO_PRODUCT_NAME attribute in
hsa_agent_get_info seems to be broken in latest version of ROCm.
Replace this with the HSA attribute HSA_AGENT_INFO_NAME instead.
This reports the device compute architecture rather than the
product name.
2022-05-18 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/perf_event/perf_event.c: perf_event: fix typo in
error code handling _pe_libpfm4_init() returns PAPI_ECMP error and
not PAPI_ENOCMP like currently handled by the caller (i.e.
_pe_init_component). Change PAPI_ENOCMP into PAPI_ECMP.
* src/components/perf_event/pe_libpfm4_events.c: perf_event: do not
set disable string in _pe_libpfm4_init _pe_libpfm4_init() returns
an error code that is used by the called (i.e.
_pe_init_component()) to set the disabled_reason string to the
appropriate error message, overwriting whatever was set by
_pe_libpfm4_init().
Thu Apr 21 15:01:07 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/amd64_events_fam19h_zen3.h: libpfm4: update
libpfm4 to commit c779846 Original commit: commit
c7798469063288ca5829ab96c7c174dad5a08e74 Rename OP_QUEUE_EMPTY to
UOPS_QUEUE_EMPTY on AMD Zen3 To be comptible with AMD Zen2.
2022-04-07 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/amd_gpu.c: sysdetect: use PAPI_ROCM_ROOT
for rocmsmi dlopen path
2022-04-19 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/run_tests_exclude.txt: intel_gpu: remove test/readme.txt from
test list Currently the run_tests_exclude.txt does not list
intel_gpu readme.txt file in the tests directory. This causes the
run_test.sh script to try execute such file. Black list the file to
skip execution.
Wed Apr 20 19:56:03 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/docs/man3/libpfm_intel_spr.3,
src/libpfm4/lib/events/amd64_events_fam19h_zen3.h,
.../lib/events/amd64_events_fam19h_zen3_l3.h,
src/libpfm4/lib/events/intel_spr_events.h,
src/libpfm4/lib/pfmlib_amd64.c, src/libpfm4/tests/validate_x86.c:
Update libpfm4 Current with commit
9580a003d83900569db3f2c7bc41e0e2ea7b88ef Fix amd64 duplicate event
detection logic Must check flags as well as code otherwise false
positive duplicate are detected on AMD Fam10h Barcelona where some
events appears as duplicate when in fact they are for different
revisions of the CPU.
2022-04-14 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde_lib/sde_lib.h: Refactored unlocking to the
end of each function, and replaced tabs with spaces.
2022-04-13 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde_lib/sde_lib.h: Cleaning up error messages.
* src/components/sde/sde.c, src/components/sde/sde_lib/sde_lib.h,
src/components/sde/tests/Makefile: Counting Set introduced to
sde_lib. Both C and C++ APIs along with tests.
2022-04-12 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/high-level/papi_hl.c: high-level: replace flock with fcntl
flock is not POSIX compliant. Replace it with fcntl instead.
2022-04-05 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/high-level/papi_hl.c: high-level: use variable to select
between single and multi-thread mode Currently, the HL API always
assumes multi-thread mode. This means that multiple threads in the
program can create and manage PAPI event sets. This is not a valid
assumption as the behavior is different for single-thread
monitoring programs. This patch, introduces a new environment
variable named PAPI_HL_THREAD_MULTIPLE that allows to select single
and multi-thread mode explicitly in the HL API. To avoid affecting
existing applications and tests the default is multi-thread
monitoring. If the variable is set to "0" single-thread mode is
selected instead. For explicitly setting multi-thread monitoring
the variable has to be set to "1".
Mon Apr 11 15:19:40 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/include/perfmon/pfmlib.h, src/libpfm4/lib/Makefile,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/events/intel_spr_events.h,
src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_intel_spr.c, src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/tests/validate_x86.c: Update libpfm4 Current with
commit eca0a1f2d274ba26e6c24231fdf61b1407e3ed03 add Intel
SapphireRapid core PMU support This patch adds Intel SapphireRapid
core PMU support to libpfm4. It is based on the public event list
from:
https://download.01.org/perfmon/SPR/sapphirerapids_core_v1.00.json
2022-04-13 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c,
src/counter_analysis_toolkit/vec_scalar_verify.h: CAT: Rename
printing functions in vector benchmark The previous names for the
functions which print to a file the results of the CAT vector
benchmark did not indicate their purpose. These new function names
better describe what they do. These changes were tested on the
Fujitsu A64FX architecture.
2022-04-08 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c: CAT: Added scalar
instrinsics to validate half-precision vector benchmark accuracy
Previously, the half-precision kernels' numerical results were not
checked against results computed using only scalar quantities. The
GCC documentation states that "The __fp16 type may only be used as
an argument to intrinsics defined in <arm_fp16.h>, or as a storage
format." (https://gcc.gnu.org/onlinedocs/gcc/Half-Precision.html)
Thus, these intrinsics are now in use to verify the accuracy of the
vector benchmarks. These changes have been tested on the Fujitsu
A64FX architecture.
2022-03-31 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde_lib/sde_lib.h: Fixed a potential deadlock in
the SDE component.
2022-03-30 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde.c: Fixed bug in terminating a string in the
SDE component.
2022-03-30 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/README,
src/counter_analysis_toolkit/driver.h,
src/counter_analysis_toolkit/main.c,
src/counter_analysis_toolkit/vec.c,
src/counter_analysis_toolkit/vec.h,
src/counter_analysis_toolkit/vec_arch.h,
src/counter_analysis_toolkit/vec_fma.h,
src/counter_analysis_toolkit/vec_fma_dp.c,
src/counter_analysis_toolkit/vec_fma_hp.c,
src/counter_analysis_toolkit/vec_fma_sp.c,
src/counter_analysis_toolkit/vec_nonfma.h,
src/counter_analysis_toolkit/vec_nonfma_dp.c,
src/counter_analysis_toolkit/vec_nonfma_hp.c,
src/counter_analysis_toolkit/vec_nonfma_sp.c,
src/counter_analysis_toolkit/vec_scalar_verify.c,
src/counter_analysis_toolkit/vec_scalar_verify.h,
src/counter_analysis_toolkit/weak_symbols.c: CAT: Added vector
FLOPs benchmarks to identify related events Hardware events in
certain architectures account for floating-point operations
incurred by vector instructions. This new benchmark category allows
for these events to be more easily identified by using the vector
instrinsics available on a given architecture. This benchmark
includes kernels for fused multiply-add (FMA) vector instructions.
These changes have been tested on the IBM POWER9, Fujitsu A64FX
(ARM), and AMD Zen2 architectures.
2022-03-22 Anthony Danalis <adanalis@icl.utk.edu>
* src/counter_analysis_toolkit/timing_kernels.c,
src/counter_analysis_toolkit/timing_kernels.h: Updated the data
cache write benchmark to make it cause one read and one write more
reliably.
2022-01-23 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/configure, src/configure.in, src/papi_lock.h: configure: add
one lock per components Currently components do not have dedicated
locks. This patch adds support for one lock per component so that
two components do not have to share the same lock.
2022-03-28 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/components/sysdetect/arm_cpu_utils.c: sysdetect: improve
processor name for ARM processors On ARM processors, Raspbian OS
can get the processor name from "model name" in /proc/cpuinfo. On
non-Raspbian OS, the processor name cannot be retrieved from
/proc/cpuinfo. Therefore, the processor name is generated based on
the information of "CPU implementer" and "CPU part" in
/proc/cpuinfo.
2022-03-15 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/arm_cpu_utils.c,
src/components/sysdetect/linux_cpu_utils.c: sysdetect: fix vendor
codes for ARM
Fri Mar 18 12:25:26 2022 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/tests/validate_x86.c: Update libpfm4 Current with
commit ad5c64e1ac2f177e2166bedfd7b679e49017cb55 fix Intel Icelake
TOPDOWN.SLOTS_P encoding Was using the 0x00 (fixed counter)
encoding instead of 0xa4 for the generic counter. Add validation
tests for SLOTS AND SLOTS_P.
2022-03-14 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/linux_cpu_utils.c: sysdetect: system
information queries treat all ARM CPUs the same When querying for
system information all ARM CPUs are treated the same regardless the
vendor.
2022-03-17 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/components/sysdetect/README.md: sysdetect: configure --with-CPU
required. To enable sysdetect, use the following command:.
`./configure --with-CPU=$CPU --with-components="sysdetect"` $CPU
can have the following values:. x86, POWER5, POWER5+, POWER6,
POWER7, PPC970, arm
2022-03-16 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/components/sysdetect/cpu_utils.c: sysdetect: Adding Macro
Definitions for arm64 On ARM processors, for arm32, the macro
definition for compilation is "defined (__arm__)", for arm64, the
macro definition for compilation is "defined (__aarch64__)".
Therefore, on ARM processors, you need to enable both arm32 and
arm64, so you need to set "defined (__arm__) || defined
(__aarch64__)".
2022-02-20 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/arm_cpu_utils.c: sysdetect: patch arm to
convert vendor id into vendor string
* src/components/sysdetect/linux_cpu_utils.c: sysdetect: get rid of
VENDOR_ARM
2022-02-16 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/cpu.c,
src/components/sysdetect/cpu_utils.h,
src/components/sysdetect/linux_cpu_utils.c,
src/components/sysdetect/x86_cpu_utils.c, src/papi.h,
src/utils/papi_hardware_avail.c: sysdetect: add vendor id field for
ARM processors
2022-02-17 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/linux_cpu_utils.c: sysdetect: update
vendor id codes in cpu probe
2022-02-20 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/utils/papi_hardware_avail.c: papi_hardware_avail: only print
numa node memory if greater than 0
* src/components/sysdetect/linux_cpu_utils.c: sysdetect: replace
assignment to atoi with sscanf Assigning a model number using atoi
and assignment operator might be ineffective. If the string is
expressed in hex atoi will fail the conversion. Instead replace the
atoi assignment with sscanf.
* src/components/sysdetect/cpu.c: sysdetect: fix typo in cpu probe
* src/components/sysdetect/linux_cpu_utils.c: sysdetect: there is at
least one numa node in SMPs
2022-03-04 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/papi_events.csv: Add PAPI idle-related preset events for a64fx
For a64fx, add four PAPI idle-related preset events
(PAPI_BRU_IDL/PAPI_FXU_IDL/PAPI_FPU_IDL/PAPI_LSU_IDL).
PAPI_BRU_IDL = BR_COMP_WAIT PAPI_FXU_IDL = EU_COMP_WAIT -
FL_COMP_WAIT PAPI_FPU_IDL = FL_COMP_WAIT PAPI_LSU_IDL =
LD_COMP_WAIT The specifications of BR_COMP_WAIT, EU_COMP_WAIT,
FL_COMP_WAIT, and LD_COMP_WAIT can be found in the "14.4. Cycle
Accounting" on A64FX_Microarchitecture_Manual_en_1.5.pdf at the
following URL:. https://github.com/fujitsu/A64FX/blob/master/doc
* src/components/perf_event/pe_libpfm4_events.c,
src/components/perf_event/perf_event.c, src/linux-common.c,
src/papi.h: PAPI_get_hardware_info: improve PAPI_hw_info_t for ARM
processors Currently, it is not possible to determine which
company the ARM processor was designed by from the PAPI_hw_info_t
available in PAPI_get_hardware_info(). On ARM processors, the
PAPI_hw_info_t obtained with PAPI_get_hardware_info() does not
contain information indicating which company was designed. For ARM
processors, improve the vendor and vendor_string entries in
PAPI_hw_info_t, which can be retrieved with
PAPI_get_hardware_info(), to include information indicating which
company was designed.
2022-02-20 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/Rules.sysdetect: sysdetect/amd: add
CPPFLAGS to Rules file
2022-02-19 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/amd_gpu.c: sysdetect/amd: use snprintf
instead of assignment operator
* src/components/sysdetect/amd_gpu.c: sysdetect/amd: fix
hsa_error_string definition and usage
* src/utils/papi_component_avail.c: papi_component_avail: rename
force_lazy_init to force_cmp_init
2022-02-18 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/utils/papi_component_avail.c: papi_component_avail: force
component init only when necessary
* src/utils/papi_native_avail.c: papi_native_avail: allow for delayed
init components
Mon Feb 28 11:55:13 2022 -0800 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/include/perfmon/pfmlib.h, src/libpfm4/lib/Makefile,
.../lib/events/arm_hisilicon_kunpeng_events.h,
.../lib/events/arm_hisilicon_kunpeng_unc_events.h,
src/libpfm4/lib/events/arm_neoverse_n1_events.h,
src/libpfm4/lib/events/arm_neoverse_n2_events.h,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/events/intel_skl_events.h,
src/libpfm4/lib/events/perf_events.h, src/libpfm4/lib/pfmlib_arm.c,
src/libpfm4/lib/pfmlib_arm_armv8.c,
src/libpfm4/lib/pfmlib_arm_priv.h, src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_intel_rapl.c,
src/libpfm4/lib/pfmlib_kunpeng_unc_perf_event.c,
src/libpfm4/lib/pfmlib_perf_event_pmu.c,
src/libpfm4/lib/pfmlib_perf_event_raw.c,
src/libpfm4/lib/pfmlib_priv.h, src/libpfm4/tests/validate_arm64.c,
src/libpfm4/tests/validate_x86.c: Update libpfm4. Tested on
orbitty.icl.utk.edu, ARMv8 Processor rev 1 (v8l) Tested on
methane.icl.utk.edu, Intel Skylake Xeon(R) Gold 6140 CPU Tested on
dopamine.icl.utk.edu, AMD Zen3 EPYC 7413 CPU Current with commit
58efe1f26fe1ca82f8b25b83c1089c5f9eac0f1b add Intel SapphireRapid
RAPL support Add CPU model number for SapphireRapid based on Linux
kernel information.
2022-02-20 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/linux_cpu_utils.c: sysdetect: fix infinite
loop bug When there is no node is /sys/devices/system/cpu/
sysdetect will loop indefinitely looking for the node affine to the
thread specified. Instead we should look for existence of node0 for
cpu0. If this is present then other nodes will likely to be in the
file system tree. Otherwise there is no point looking further and
we just assume there is only one numa node.
2022-02-19 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: fix overcounting of cuda
devices Cuda device counting is done by scanning the file system
for the related device number information. There are two places in
the file system where this information can be found: in /sys and in
/proc. The second being a fallback in case the first does not
contain the desired information. The /proc based device counting
goes through all the directories in the /proc/driver/nvidia/gpus,
including '.' and '..', thus overcounting the number of devices.
This patch fixes the problem by filtering such directories.
2022-02-16 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm_smi/linux-rocm-smi.c: rocm_smi: change
disabled_reason for delayed init
* src/components/nvml/linux-nvml.c: nvml: change disabled_reason for
delayed init
* src/components/rocm/linux-rocm.c: rocm: change disabled_reason for
delayed init
* src/components/cuda/linux-cuda.c: cuda: change disabled_reason for
delayed init
2022-02-15 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi_internal.c: papi_errno: add delay init string error
* src/cpus.c, src/papi.c, src/papi_internal.c, src/threads.c: papi:
handle delay init for GPU components The PAPI_EDELAY_INIT error
code is handled by PAPI as if the component was enabled. This
allows PAPI to kick off delayed init by calling any of the internal
component functions that access its events.
* src/papi.h: papi_errno: add PAPI_EDELAY_INIT error for delayed init
components Delayed initialization components need a way for
distinguishing delayed initialization from disabled state.
2021-12-12 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi.c: papi_get_component_info: remove init_private support
* src/papi_vector.c, src/papi_vector.h: papi_vector: remove
init_private support
* src/utils/papi_component_avail.c: papi_component_avail: add lazy
init code for components Previously we had an init_private()
function added to papi_vector and implemented by those components
that needed delayed (lazy) initialization, such as rocm, cuda,
rocm_smi, nvml. Such init_private() delayed initialization was
mainly used by papi_component_avail to read the number of events
and hardware counters for reporting purposes to the user of the
utility. Applications are free to ignore init_private() and avoid
PAPI to call the GPU runtime init functions. The same result can
be achieved by forcing lazy init in papi_component_avail by
accessing the events in the component. If no such access happens
the init_component now disables the components mentioned above and
sets the disabled status to the following message: "Not
initialized, call PAPI_enum_cmp_event or any other component event
access function to force lazy init". "
* src/components/nvml/linux-nvml.c: nvml: remove init_private for
lazy init
* src/components/rocm_smi/linux-rocm-smi.c: rocm_smi: remove
init_private for lazy init
* src/components/cuda/linux-cuda.c: cuda: remove init_private for
lazy init
* src/components/rocm/linux-rocm.c: rocm: remove init_private for
lazy init init_private is a hack that causes inconsistency in the
component interface. Such inconsistency can cause bugs. This patch
removes the init_private interface.
2022-02-03 Anthony Danalis <adanalis@dopamine.icl.utk.edu>
* src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/timing_kernels.c: Improved error
handling and reporting.
2022-01-31 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: rename device count routine
looking into /sys Rename _cuda_count_nvidia_devices to
_cuda_count_dev_sys to reflect the source of the information. This
is to distinguish this routine from the other counting routine
_cuda_count_dev_proc, which looks into the /proc file system
instead.
2022-01-28 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: extend device counting with
/proc filesystem /sys based device counting for cuda relies on the
linux display rendering manager populating the corresponding
entries in the filesystem. This is not always the case and depends
on the specific linux configuration. Thus, this method might cause
the component wrongly detecting no cuda devices in a system that
has some. Another source of information for cuda devices is /proc
file system. This patch extends the current /sys functionality with
/proc information.
* src/high-level/scripts/papi_hl_output_writer.py: high-level: make
output writer script python2/3 compatible The
papi_hl_output_writer.py script uses 'long' which is no longer
supported in python2/3. Replace 'long' with 'int'.
2022-01-27 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/shm.c: sysdetect: fix load_mpi_sym
signature
2022-01-22 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/cuda/linux-cuda.c: cuda: fix bug in shut down
sequence When the cuda component is configured but not used, there
is no dlopen() of nvidia libraries. Still, when the component is
shutdown, dlclose() of these libraries is unconditionally called,
causing a segmentation fault. This patch adds guards around
dlclose() so that every dlopen() is always paired with a dlclose().
2022-01-17 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/sysdetect/Rules.sysdetect,
src/components/sysdetect/amd_gpu.c: sysdetect/rocm: explicitly look
for rocm in PAPI_ROCM_ROOT Similarly to the ROCm component
sysdetect also requires PAPI_ROCM_ROOT to be defined so that the
user is explicitly forced to define where in the file system tree
the ROCm installation to be used is located. This prevents from
situations in which the user believes she is using a certain ROCm
version while in reality the component is picking up the system
environment defined one.
* src/components/sysdetect/amd_gpu.c: sysdetect/rocm: fix
hsa_status_string arguments hsa_status_string takes an
hsa_status_t code and returns a pointer to const char with the
error message associated to the status code. In the code we were
passing a pointer to a status array of chars rather than a pointer
to a const char. This is fixed by this patch.
2021-12-08 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/utils/papi_xml_event_info.c: Improve the papi_xml_event_info
command. Modify the papi_xml_event_info command as follows:. -
Test only the event name even if the event has a unit mask. - Test
other unit masks in the event even if there is an error in one unit
mask in the event.
2021-12-03 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm_smi/linux-rocm-smi.c: rocm_smi: fix bug in
event reporting while running papi_component_avail This fix is
similar to fixes: - e646d570 for cuda component & - 8e2f725 for
rocm component
2021-11-08 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi_vector.c: init_private: fix indentation in order to
silence compiler warning Most recent versions of gcc complain when
if statements, not followed by curly braces, are not indented using
tabs. Fix the warning by replacing white spaces with tabs.
2021-07-29 Giuseppe Congiu <gcongiu@localhost.localdomain>
* src/components/sysdetect/README.md,
src/components/sysdetect/Rules.sysdetect,
src/components/sysdetect/amd_gpu.c,
src/components/sysdetect/amd_gpu.h,
src/components/sysdetect/arm_cpu_utils.c,
src/components/sysdetect/arm_cpu_utils.h,
src/components/sysdetect/cpu.c, src/components/sysdetect/cpu.h,
src/components/sysdetect/cpu_utils.c,
src/components/sysdetect/cpu_utils.h,
src/components/sysdetect/linux_cpu_utils.c,
src/components/sysdetect/linux_cpu_utils.h,
src/components/sysdetect/nvidia_gpu.c,
src/components/sysdetect/nvidia_gpu.h,
src/components/sysdetect/os_cpu_utils.c,
src/components/sysdetect/os_cpu_utils.h,
src/components/sysdetect/powerpc_cpu_utils.c,
src/components/sysdetect/powerpc_cpu_utils.h,
src/components/sysdetect/shm.c, src/components/sysdetect/shm.h,
src/components/sysdetect/sysdetect.c,
src/components/sysdetect/sysdetect.h,
src/components/sysdetect/tests/Makefile,
src/components/sysdetect/tests/query_device_mpi.c,
.../sysdetect/tests/query_device_simple.c,
src/components/sysdetect/x86_cpu_utils.c,
src/components/sysdetect/x86_cpu_utils.h, src/configure,
src/configure.in, src/papi.h, src/utils/Makefile,
src/utils/papi_hardware_avail.c: Sysdetect: system information
detection component The SYSDETECT component allows PAPI users to
query comprehensive system information. The information is gathered
at PAPI_library_init() time and presented to the user through
appropriate APIs. The component works similarly to other
components, which means that hardware information for a specific
device might not be available at runtime if, e.g., the device
runtime software is not installed. At the moment the
infrastructure defines the following device types: -
PAPI_DEV_TYPE_ID__CPU : for all CPU devices from any vendor
- PAPI_DEV_TYPE_ID__NVIDIA_GPU : for all GPU devices from NVIDIA -
PAPI_DEV_TYPE_ID__AMD_GPU : for all GPU devices from AMD Every
device is scanned to gather information when the component is
initialized. If there is no installed hardware for the considered
device type, is not found, the corresponding information is filled
with zeros. This patch also adds a new utility program, called
papi_hardware_avail, that prints out to the command line what
hardware is installed for each type and the specifications of each
device.
2021-10-28 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi.c, src/papi_vector.c: init: make init_private exposed by
every component Lack of uniformity across components burdens
front-end code with additional checks. One example is
init_private(). This function is implemented only by those
components that need delayed initialization due to the high cost of
parsing a large number of events from the hardware (e.g. rocm and
cuda components). However, this also means that front-end code has
to check whether such init_private() function is implemented by
other components in order to avoid dereferencing NULL function
pointers. A better solution is to implement init_private() in every
component and simply make the function return PAPI_OK if the
component does not need delayed initialization.
2021-10-18 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi.c: papi_lock: fix bug in PAPI_lock and PAPI_unlock
2021-10-16 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/components/rocm/linux-rocm.c: RocmCmp: fix bug in event
reporting while running papi_component_avail In the
papi_component_avail() utility program the component private init
function is called multiple times. The first time the component
events are initialized as expected and the disable flag is set to
the error code returned while performing the process, along with
the reason the component might be disabled. The second time the
private init function of the component is called is when trying
listing the supported events. In this case the init does not
remember the error code previously returned and sets the disabled
flag to PAPI_OK instead. This same bug was already fixed by Tony
Castaldo in patch e646d570 for the cuda component.
2021-10-13 Anthony Danalis <adanalis@icl.utk.edu>
* src/components/rocm/linux-rocm.c: Added code to set the environment
variable "ROCP_HSA_INTERCEPT" which is needed since rocm-4.1, and
removed spurious whitespace.
2021-10-03 Giuseppe Congiu <gcongiu@icl.utk.edu>
* src/papi.c: PAPI_accum: documentation bug fix
2021-09-01 Daniel Barry <dbarry@vols.utk.edu>
* src/components/pcp/linux-pcp.c: Modified the PCP component to use
the local host as the PMAPI context. These changes are compatible
with both RHEL 7 and 8. These changes were tested on the IBM
POWER9 architecture.
2021-08-30 Vince Weaver <vincent.weaver@maine.edu>
* src/linux-memory.c: linux-memory: change cache parsing so it works
on ARM servers On Linux we parse files under
/sys/devices/system/cpu/ to determine the various cache settings.
The old code assumes certain files, such as associativity and
linesize are always there (because they are on x86). This updated
code instead of exiting with an error if the files don't exist sets
the values to 0. This allows the cache values to be returned on
ARM systems such as Ampere servers. This could potentially break
user code if they are taking the cache values and doing division
(such as taking the cache size and dividing by the linesize: if
linesize is zero they could get a divide-by-zero error). I'm not
sure if there's a way around this without redesigning how the
meminfo structure works.
2021-08-24 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Added CUPTI_PROFILER=-1 for no
PAPI_CUDA_ROOT set at ./configure time. Disables the CUDA component
with the message "Environment variable \ PAPI_CUDA_ROOT must be
specified before ./configure is executed."
* src/components/cuda/linux-cuda.c, src/configure, src/configure.in:
Changes to ensure PAPI_CUDA_ROOT was set BEFORE ./configure was
run, to ensure we distinguish between CUPTI11, Legacy, and
misconfigured.
2021-08-24 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/papi_events.csv: Fix the PAPI_FUL_CCY setting for a64fx In
a64fx, the maximum number of instruction commits is 4, so the
following setting was incorrect. PAPI_FUL_CCY=CPU_CYCLES-
0INST_COMMIT-1INST_COMMIT-2INST_COMMIT-3INST_COMMIT-4INST_COMMIT
The correct settings are:. PAPI_FUL_CCY=CPU_CYCLES-0INST_COMMIT-
1INST_COMMIT-2INST_COMMIT-3INST_COMMIT
2021-08-23 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Removed extraneous comments.
* src/components/cuda/linux-cuda.c: Changed the error messages about
the Legacy/Cupti11 failures to better distinguish the exact cause
of failure, and updated several possible exits of the
initialization that might cause an empty "Disabled" message on
papi_component_avail.
2021-08-20 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/dcache.c: Fixed a bug regarding race
conditions in a parallel construct in the CAT data cache
benchmarks. These changes were tested on the Fujitsu A64FX
architecture.
2021-08-19 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde_lib/sde_lib.h,
.../Created_Counter/Lib_With_Created_Counter++.cpp,
src/components/sde/tests/Simple2/Simple2_Lib++.cpp,
src/components/sde/tests/Simple2/Simple2_Lib.c: Updates to the C++
API based on early-adopter feedback.
2021-08-12 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/linux-rocm.c, src/components/rocm_smi/linux-
rocm-smi.c: Corrected shutdown code to work correctly if delayed
init never executes (due to shutdown without using the component).
2021-08-11 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: In scanning system devices to
find GPUs, added Guiseppe's recommendation to also check device
class to filter out all but Display Controllers; which are GPUs.
2021-08-10 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Added checks for Nvidia devices
up front by scanning /sys/class/drm/card files. This is necessary
to avoid cuInit() which is needed to run cuDeviceGetCount(). Also
corrected a bug in delayed init, in case it was called more than
once after already being disabled.
2021-08-09 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Second change, needed proper
printf format code.
* src/components/cuda/linux-cuda.c: Fixed a compile bug in CUDA that
only shows with later modules.
2021-08-07 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Changes necessary to sort out at
runtime what to do if we were compiled with one cuda module loaded,
but run with a different cuda module loaded. Also had a compile
error to fix running with an old cuda module.
2021-08-06 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Change to reject if compiled in
headers have structures of different sizes than the version of the
cuda_runtime library we found. Also rejecting libraries <11.0, they
don't contain CounterAvailability functions that we currently must
use in setting up events; i.e. the 10.x API differs slightly from
the 11.x API. API differ
Mon Jul 26 16:22:25 2021 +0200 Thomas Richter <tmricht@linux.ibm.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/docs/man3/libpfm_arm_neoverse_n2.3,
src/libpfm4/include/perfmon/pfmlib.h, src/libpfm4/lib/Makefile,
src/libpfm4/lib/events/arm_neoverse_n2_events.h,
src/libpfm4/lib/pfmlib_arm_armv8.c,
src/libpfm4/lib/pfmlib_arm_perf_event.c,
src/libpfm4/lib/pfmlib_common.c, src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/lib/pfmlib_s390x_cpumf.c,
src/libpfm4/tests/validate_arm64.c: Update libpfm4, to be current
with the following commit. Tested on orbitty.icl.utk.edu, ARMv8
Processor rev 1 (v8l). commit
790451411d481492b6a3b94077b543c3e68c6d2b do not set certain config
bits in pfm_arm_get_perf_encoding() By default (raw encoding) on
ARM, the library was setting the PL1, USR, HYP control bits in the
config in the encoded value. With Linux perf_events, these bits
are under the control of the kernel. Any of these bits set by the
user is overridden by the kernel based on the settings of the
perf_event_attr.exclude_* fields. Recent versions of the perf tool
started checking that the config field is not setting bits which
are ignored by the kernel. To avoid the perf tool warning, this
patch removes the setting of these bits when encoding for Linux
perf_events. commit 0c3efc889fadc8cd9a632f5a10462d37c508c56a add
support for ARM Neoverse N2 core PMU This patch adds support for
ARM Neoverse N2 core PMU based on the ARM TRM version 0. The new
PMU is called arm_n2. commit
e166a8869f64cd3a47b2b42a3022e4cceecea799 Support cycles:u modifier
for s390 The function invocation of
pfm_get_perf_event_encoding("cycles:u", ...) fails on s390. However
the modifier :u is supported on s390, where as modifiers :h and :k
are not supported. Fix this by adding the supported_plm field and
set it properly. This setting causes function
pfm_perf_perf_validate_pattrs() to accept modifier :u as valid.
Test code: .... memset(&attr, 0, sizeof(attr)); attr.size =
sizeof(attr); ret = pfm_get_perf_event_encoding(evname,
PFM_PLM0|PFM_PLM3, &attr, NULL, NULL); txt = pfm_strerror(ret);
printf("TEST %s ret:%d(%s) config:%#lx type:%d\n", evname, ret,
txt, attr.config, attr.type); Output before: TEST cycles:u
ret:ret:-8(invalid event attribute) config:0 type:0 Output after:
TEST cycles:u ret:0(success) config:0 type:0 Acked-by: Sumanth
Korikkar <sumanthk@linux.ibm.com>
2021-08-05 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/main.c: Added feature to CAT data
cache benchmark to print a header line in the output files. This
header shows the ID of the CPU core to which each thread was
pinned. This provides more detail of the hardware context for
reproducibility. These changes were tested on the Fujitsu A64FX
architecture.
2021-07-30 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde_lib/sde_lib.h: Cleanup.
* src/components/sde/sde_lib/sde_lib.h,
.../Created_Counter/Created_Counter_Driver++.cpp,
.../Created_Counter/Lib_With_Created_Counter++.cpp,
src/components/sde/tests/Makefile,
.../sde/tests/Minimal/Minimal_Test++.cpp,
src/components/sde/tests/README.txt,
.../sde/tests/Recorder/Lib_With_Recorder++.cpp,
.../sde/tests/Recorder/Recorder_Driver++.cpp,
src/components/sde/tests/Simple/Simple_Driver.c,
.../sde/tests/Simple2/Simple2_Driver++.cpp,
src/components/sde/tests/Simple2/Simple2_Driver.c,
src/components/sde/tests/Simple2/Simple2_Lib++.cpp,
src/components/sde/tests/Simple2/Simple2_Lib.c: C++ interface for
the library-side API of papi-sde and examples that demonstrate its
usage.
2021-07-29 Heike Jagode <jagode@icl.utk.edu>
* src/papi.c: Added missing changes for 'delayed init' feature to
ensure that our PAPI utilities still report the correct number of
native events and counters.
2021-07-28 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Minor changes to Macros so merge
is not confused.
2021-07-29 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/caches.h,
src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/timing_kernels.c: Added feature to CAT
data cache benchmark to measure data read latencies for each worker
thread. This allows us to observe additional data-access nuance for
each core in the socket. These changes were tested on the Fujitsu
A64FX architecture.
2021-07-28 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/Rules.cuda,
src/components/cuda/tests/HelloWorld.cu,
src/components/cuda/tests/Makefile,
src/components/cuda/tests/simpleMultiGPU.cu,
.../cuda/tests/simpleMultiGPU_CUPTI11.cu, src/configure: Moved test
for CUpti 11 to configure, out of Rules.cuda. Modified HelloWorld
and simpleMultiGPU.cu to work properly with Legacy CUpti. Added
simpleMultiGPU_CUPTI11.cu, because CUcontext monitoring requires a
different protocol for managing CUcontexts. Adjusted Makefile
accordingly.
2021-07-28 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/caches.h,
src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/driver.h,
src/counter_analysis_toolkit/main.c,
src/counter_analysis_toolkit/timing_kernels.c,
src/counter_analysis_toolkit/timing_kernels.h: Added feature to CAT
data cache benchmark to measure event occurrences for each worker
thread. This allows us to accurately measure a chip's region-
specific events. These changes were tested on the Fujitsu A64FX
architecture.
2021-07-27 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Changes to compile clean on
Legacy Cupti.
2021-07-27 Anthony <adanalis@icl.utk.edu>
* src/components/sde/Rules.sde, src/components/sde/sde_internal.h,
src/components/sde/sde_lib/papi_sde_interface.h,
src/components/sde/sde_lib/sde_common.c,
src/components/sde/sde_lib/sde_common.h,
src/components/sde/sde_lib/sde_lib.c,
src/components/sde/sde_lib/sde_lib.h,
src/components/sde/sde_lib/weak_symbols.c,
.../sde/tests/Advanced_C+FORTRAN/Gamum.c,
.../sde/tests/Advanced_C+FORTRAN/sde_symbols.c,
.../Created_Counter/Lib_With_Created_Counter.c,
src/components/sde/tests/Makefile,
src/components/sde/tests/Minimal/Minimal_Test.c,
.../sde/tests/Recorder/Lib_With_Recorder.c,
src/components/sde/tests/Simple/Simple_Driver.c,
src/components/sde/tests/Simple/Simple_Lib.c,
src/components/sde/tests/Simple2/Simple2_Driver.c,
src/components/sde/tests/Simple2/Simple2_Lib.c, src/configure,
src/configure.in, src/utils/Makefile,
src/utils/papi_native_avail.c: Converted libsde into a header-only
library to ease integration into third part software. Now the only
thing a third party code needs in order to export SDEs is to
#include "sde_lib.h". This change also simplified the integration
into the PAPI utility papi_native_avail so "linking tricks" and
weak symbols are not needed anymore.
2021-07-26 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/README.md, src/components/cuda/Rules.cuda,
src/components/cuda/linux-cuda.c,
src/components/cuda/tests/HelloWorld.cu,
src/components/cuda/tests/HelloWorld_CUPTI11.cu,
src/components/cuda/tests/simpleMultiGPU.cu: Changes to make the
test code work as expected in CUpti 11, with the CUpti callback
monitoring of CUcontext activity.
2021-07-15 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: On A100 CC 8.0, details on some
events fails; and caused debug errors to print that should have
been suppressed. Corrected this.
* src/components/cuda/linux-cuda.c: disabled some debug messages.
* src/components/cuda/linux-cuda.c: Legacy CUPTI was failing if PAPI
user already had a context set.
* src/components/cuda/linux-cuda.c: Clean up some debug code, and
extraneous code in cuda_shutdown that belonged in cuda11_shutdown.
2021-07-12 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c,
src/components/cuda/tests/HelloWorld_CUPTI11.cu: Retested with
valgrind for memory leaks; removed redundant code in the
cuda11_read(), and corrected HelloWorld_CUPTI11.cu to use a single
pass event, instead of my test 2-pass event.
2021-07-09 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c,
src/components/cuda/tests/HelloWorld_CUPTI11.cu: Corrected a bug in
description formation; had HelloWorld_CUPTI11.cu report in both
decimal and hexadecimal.
* src/components/cuda/linux-cuda.c: Corrected problems with correctly
choosing Legacy or CUpti-11, and issues about what to
include/exclude to be compatible with previous Nvidia distributions
without profile headers and libraries.
* src/components/cuda/README.md, src/components/cuda/Rules.cuda,
src/components/cuda/linux-cuda.c: Updates in commentary and
documentation.
2021-07-07 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/README.md, src/components/cuda/linux-cuda.c:
All CUPTI11 code works, legacy cupti still works, on xsdk. However,
configure and build still needs work, it will fail without a
PerfWorks directory.
2021-07-08 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/timing_kernels.c: Increased the
minimum number of pointer chain accesses in the CAT data cache
benchmark. This yields more stable measurements when using smaller
buffer sizes. These changes were tested on the Fujitsu A64FX
architecture.
2021-06-23 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c,
src/components/cuda/tests/HelloWorld_CUPTI11.cu,
src/components/cuda/tests/Makefile: Extensive changes linux-cuda.c
to use CUpti-11 when CC >= 7.0; this has been tested and seems to
work on ICL xsdk, but is not optimized. Adding a changed Makefile
and HelloWorld_CUPTI11.cu to better test various scenarios of
cuda_context arrangements.
Sat Jun 5 15:07:53 2021 -0700 Thomas Richter <tmricht@linux.ibm.com>
* src/libpfm4/lib/events/intel_skl_events.h,
src/libpfm4/lib/pfmlib_amd64.c,
src/libpfm4/lib/pfmlib_amd64_fam11h.c,
src/libpfm4/lib/pfmlib_amd64_fam12h.c,
src/libpfm4/lib/pfmlib_amd64_fam15h.c,
src/libpfm4/lib/pfmlib_amd64_fam16h.c,
src/libpfm4/lib/pfmlib_amd64_fam17h.c,
src/libpfm4/lib/pfmlib_amd64_fam19h.c,
src/libpfm4/lib/pfmlib_amd64_perf_event.c,
src/libpfm4/lib/pfmlib_amd64_priv.h,
src/libpfm4/lib/pfmlib_intel_x86_perf_event.c,
src/libpfm4/lib/pfmlib_perf_event.c,
src/libpfm4/lib/pfmlib_s390x_perf_event.c: Update libpfm4, to be
current with the following commit. Tested on icl.utk.edu machines
xsdk (Intel Xeon Gold 6254), morphine (AMD EPYC 7301), histamine
dopamine (AMD EPYC 7402) guyot (AMD EPYC 7742). commit
d0b85fb5813dbd73e408fa21dceaf204623609cc AMD64 encoding and debug
cleanup This patch fixes and update the way the guest vs. host
encoding is handled. The guest vs. hosst hardware filtering is
available since Fam10h onward except for Fam11h. This is now
handled with proper pmu_rev encoding for each PMU and a new helper
function pfm_amd64_supports_virt(). Also fixes the verbose output
to handle guest vs. host correctly. commit
e3ae4bd86b9f37cbdc31625dd23b80ef66da5df7 fix typo in
OFFCORE_RESPONSE umask on Intel SkylakeX
L3_MISS_MISS_REMOTE_HOP1_DRAM -> L3_MISS_REMOTE_HOP1_DRAM
Reported-by: Ian Rogers <irogers@google.com> commit
0106e839a8bade2abda66512b8b4be2338fc3729 make verbose print more
explicit in pfmlib_perf_event_encode() Spell out the field names
better to make them easier to understand. commit
e0fcc38251cf680fcdd0c18b4c13327737f3ebb8 do not set certain config
bits in pfm_amd64_get_perf_encoding() By default on Intel X86, the
library was setting the EN and INT bits for each core PMU events.
But when encoding for perf_events, these bits are ignored by the
interface and reprogrammed by the kernel. Similarly, the
USR/OS/GUEST/HOST bits are controlled by the
perf_event_attr.exclude_* field not the config field. Recent
versions of the Linux perf tool warn when bits which are ignored
are set in the config field which is useful. This patch clears all
the config bits under the control of the perf_events interface.
The encoding for raw PMU mode is unchanged. commit
5be1e849a25c7d02bdeb04678bfe204783b8b5ff do not set certain config
bits in pfm_intel_x86_get_perf_encoding() By default on Intel X86,
the library was setting the EN and INT bits for each core PMU
events. But when encoding for perf_events, these bits are ignored
by the interface and reprogrammed by the kernel. Similarly, the
USR/OS bits are controlled by the perf_event_attr.exclude_* field
not the config field. Recent versions of the Linux perf tool warn
when bits which are ignored are set in the config field which is
useful. This patch clears all the config bits under the control of
the perf_events interface. The encoding for raw PMU mode is
unchanged. commit 3833ff527012a33131f9af2530fe1447f6984ebf
search perf attr.type event number for s390 Commit 30adc677603b
("lib/pfmlib_s390x_perf_event.c: Fix perf attr.type event number
for s390") fixes the dynamic PMU type assignment by the kernel when
s390x PMU device drivers are loaded at boot time. However s390x has
several PMU device drivers. Therefore find the correct one first
and then return the type number read out from a sysfs file. Once
the PMU type number is determined, it does not change until the
next reboot. It is ok to cache it. Also add a check if the PMU
really exists and return an error if not. Fixes: 30adc677603b
("lib/pfmlib_s390x_perf_event.c: Fix perf attr.type event number
for s390")
2021-06-15 William Cohen <wcohen@redhat.com>
* src/validation_tests/instructions_testcode.c: Use numeric local
labels to allow compilation with LTO enabled Some assembly
snippets in instructions_testcode.c used regular label names.
Unfortunately, when multiple copies of the snippets are inlined in
different places with LTO enabled the multiple copies of a label by
the same name cause the build to fail because of the redefinition
of the label. To avoid this problem all those labels have been
converted to numeric local labels to allow multiple copies to
peacefully coexist in the LTO enabled code.
2021-06-10 Heike Jagode <jagode@icl.utk.edu>
* src/Rules.pfm4_pe: Rebase to remove commit 1f48bb7 since there
appear to be issues with this.
Sun May 9 15:45:18 2021 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/docs/Makefile,
src/libpfm4/docs/man3/libpfm_intel_icl.3,
src/libpfm4/docs/man3/libpfm_intel_icx.3,
src/libpfm4/docs/man3/pfm_get_os_event_encoding.3,
src/libpfm4/include/perfmon/pfmlib.h,
src/libpfm4/lib/events/arm_neoverse_n1_events.h,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/pfmlib_amd64.c, src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_intel_icl.c, src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/tests/validate_x86.c: Update libpfm4, to be current
with the following commit: Tested on Histamine (Zen2) Dopamine
(Zen2) Morphine (Zen1) XSDK (Intel). commit
74b79969f2f752df3be404d9c23f9709d738062f fix buffer overrun in
Intel IcelakeX model table The following commit introduced a bug:
12aeb9f69438 enable Intel IcelakeX core PMU support By forgetting
a NULL termination to the icx_models[] table. commit
e2bd6b5b573b124d5c07670cfc9f0923b6223288 fix Intel Icelake man
page date No Icelake in 2015! commit
12aeb9f694382bbf82061ac0b28abb5d2178fe8d enable Intel IcelakeX
core PMU support This patch adds Intel IcelakeX (Icelake for
servers) core PMU support. This is the same core PMU as for the
client Icelake with the addition of events to cover remote and PMM
accesses. Based on Intel's icelakex_core_v1.04.json from 01.org.
commit 9c3e9c025efc06f4ac4422d5e87a05d9776cbb94 fix detection of
AMD64 Zen1 vs. Zen2 This patch fixes the test checking the model
number for AMD64 Fam17h processors. There was a bug where it would
detect some Zen1 processors as Zen2. Zen2 processors start at model
number 48 and up. commit dee24f6323023573f22dc68882cea44859c0b7ac
add ARM SPE events for Neoverse N1 core PMU This patches adds the
four Statistical Profiling Extension (SPE) related core PMU events:
- SAMPLE_POP - SAMPLE_FEED - SAMPLE_FILTRATE - SAMPLE_COLLISON
commit 21787c7cca3b8b4d02e5608bfef9bdfa7acd7d8e fix
pfm_get_os_event_encoding man page typos There is no PERF_OS_EVENT
enum, should be PFM_OS_PERF_EVENT.
2021-05-22 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c, src/components/nvml/linux-nvml.c,
src/components/rocm/linux-rocm.c, src/components/rocm_smi/linux-
rocm-smi.c, src/papi.h, src/papi_vector.h: Reposting changes made
by Damien Genet, with bug corrections, to delay component
initialization until necessary. For CUDA, NVML, ROCM and ROCM_SMI
components. CUDA and NVML components tested on XSDK, ROCM and
ROCM_SMI components tested on Caffeine.
2021-05-17 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/main.c,
src/counter_analysis_toolkit/timing_kernels.c: Added feature to CAT
to collect latency data for the entire parameter sweep used in the
data cache reading benchmark. Also fixed an overflow error in the
number of pointer-chain accesses by storing this value as a 'long'
instead of an 'int'.
2021-05-18 Swarup Sahoo <swarup-chandra.sahoo@amd.com>
* src/papi_events.csv: Added AMD Zen3 preset events. Refer section
2.1.17.2 of PPR for AMD family 19h model 01h,
https://www.amd.com/system/files/TechDocs/55898_pub.zip
2021-05-04 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Corrected an error discovered by
Tristan Konolige; pushing the retained context when it is identical
to the current context causes an error. Also updated all error
exits to properly restore user context.
Sun May 2 23:43:17 2021 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/docs/man3/pfm_get_os_event_encoding.3,
src/libpfm4/include/perfmon/perf_event.h,
src/libpfm4/lib/events/perf_events.h,
src/libpfm4/lib/pfmlib_amd64_rapl.c: Update libpfm4, to be current
with the following commit: The ZEN3 modification cannot be tested;
we have no ZEN3 machine. The other changes are not machine
specific; we did a smoke test (compile and execute
papi_component_avail, papi_native_avail) on ICLs xsdk machine.
commit 06197c0543476d40fad1c94d240e46a5d114f887 enable RAPL for
AMD64 Fam19h Zen3 processor As per AMD64 PPR for Fam19h model 01h,
RAPL Package is supported, so enable it. commit
be0dd1e0f63cb3d0915bc368baebe778792b6955 Add cgroup-switches
software event Linux v5.13 added the 'cgroup-switches' event so it
should be supported by libpfm4 as well. commit
d624a97b8e2143e1b890ac1a892b4620acb736f5 fix arg type in
pfm_get_os_event_encoding() man page This patch replaces
references to pfm_raw_pmu_encode_t with pfm_pmu_encode_t to reflect
the actual data type used in the code. Thanks to Claudio Parra for
reporting the issue.
2021-05-03 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Correcting a typo that can cause
a segfault.
2021-04-29 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/linux-rocm.c: Using macros (like papi_debug.h)
instead of if (0).
2021-04-28 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Additional context cleanup in
_cuda_update_control_state() to accomodate issues with non-primary
contexts.
2021-04-23 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/linux-rocm.c: Deleted an extraneous paranoid
line of code.
2021-04-22 Anthony Michael Castaldo <coe0234@tulip.cm.cluster>
* src/components/rocm/README.md, src/components/rocm/Rules.rocm,
src/components/rocm/linux-rocm.c,
src/components/rocm/rocm_IncDirs.awk: Improved automatic detection
of ROCM root directory, so exporting PAPI_ROCM_ROOT is not always
necessary on systems that load modules. We recognize environment
variables ROCM_PATH, ROCM_DIR, and ROCMDIR. At compile time, we
have code in Rules.rocm that can examine the LD_LIBRARY_PATH
variable and extract possible -Iinclude_paths for the compile. This
uses 'awk', but if 'awk' is not present on the system it won't
cause an error message. We will also still use PAPI_ROCM_ROOT at
compile time, preferentially, when specified. README.md has been
updated to reflect these changes.
2021-04-22 William Cohen <wcohen@redhat.com>
* src/Makefile.inc: Correct warning message to 'make dist-targz'.
2021-04-20 William Cohen <wcohen@redhat.com>
* src/utils/papi_multiplex_cost.c: Check to ensure that mallocs
allocated memory in papi_multiplex_cost.c The malloc function can
return NULL if the function is unable to allocate memory.
papi_multiplex_cost.c needs checks like papi_command_line.c has and
exit the program with an error if any of the malloc operations
fail.
2021-04-13 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c,
src/components/cuda/tests/HelloWorld_NP_Ctx.cu,
src/components/cuda/tests/Makefile: This code corrects an oversight
and works if the application has already created a non-primary
context before calling PAPI_library_init(). A modification of
HelloWorld.cu, HelloWorld_NP_Ctx.cu, will test if if the code works
with a non-primary context created; HelloWorld.cu tests without
creating a non-primary context. This was tested on XSDK with two
Titan V GPUs.
2021-04-12 Anthony <adanalis@icl.utk.edu>
* src/configure, src/configure.in: Changes to the configure script to
accommodate the (upcoming) intel_gpu component.
Fri Apr 2 12:38:56 2021 -0700 Stephane Eranian <eranian@google.com>
* src/libpfm4/lib/pfmlib_amd64_fam19h_l3.c,
src/libpfm4/lib/pfmlib_intel_snbep_unc.c,
src/libpfm4/tests/validate_x86.c: The following fixes are for AMD
Zen3 CPUs, untested by ICL, we have no access to Zen3 processors at
this time. Update libpfm4, to be current with the following
commit: commit 6864dad7cf85fac9fff04bd814026e2fbc160175 Fix AMD64
Fam19h L3 PMU support The PMU perf_events type was not correctly
encoded because the .perf_name field was not initialized and
therefore it defaulted to using the core PMU. The correct perf_name
is "amd_l3". With that in place, the library now picks up the
correct PMU type and associated programming restrictions, e.g.,
per-cpu mode only and code such as perf_examples/self should not be
allow to succeed at perf_event_open(). Reported-by: Steve Kaufmann
<steven.kaufmann@hpe.com> commit
99975b4738cf7f2550922f0761f2776159842c00 fix grpid handling for
Intel X86 uncore On SkylakeX the umask grpid field is overloaded
to contain two subfield. The actual grpid and the required grpid
(at offset 8). The encoding code has a bug where it would not use
the accessor function get_grpid() to extract the group id from the
field. Given that the grpid is used in statements such as: u = 1 <<
pe[e->event].umasks[a->idx].grpid; The code could run the risk of
exceeding the max shift for a 16-bit value. The fix is to use
accessor function to extract the grpid. The patch also adds a
validation test to ensure events which would cause a large grpid
are properly encoded.
2021-04-06 Anthony <adanalis@icl.utk.edu>
* src/counter_analysis_toolkit/.cat_cfg,
src/counter_analysis_toolkit/main.c: Adjust cache leves based on
information in config file, and make the default config file empty.
2021-04-05 Anthony <adanalis@icl.utk.edu>
* src/counter_analysis_toolkit/.cat_cfg,
src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/branch.c,
src/counter_analysis_toolkit/branch.h,
src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/driver.h,
src/counter_analysis_toolkit/event_list.txt,
src/counter_analysis_toolkit/flops.c,
src/counter_analysis_toolkit/flops.h,
src/counter_analysis_toolkit/hw_desc.h,
src/counter_analysis_toolkit/icache.c,
src/counter_analysis_toolkit/icache.h,
src/counter_analysis_toolkit/main.c,
src/counter_analysis_toolkit/prepareArray.c,
src/counter_analysis_toolkit/prepareArray.h,
src/counter_analysis_toolkit/timing_kernels.c,
src/counter_analysis_toolkit/timing_kernels.h: Changed CAT code to
enable dynamic discovery of cache sizes, and also user provided
values (through .cat_cfg file).
Wed Jan 27 20:12:59 2021 +0900 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/docs/man3/libpfm_amd64_fam19h_zen3.3,
.../docs/man3/libpfm_amd64_fam19h_zen3_l3.3,
src/libpfm4/docs/man3/libpfm_arm_a64fx.3,
src/libpfm4/include/perfmon/pfmlib.h, src/libpfm4/lib/Makefile,
src/libpfm4/lib/events/amd64_events_fam19h_zen3.h,
.../lib/events/amd64_events_fam19h_zen3_l3.h,
src/libpfm4/lib/events/perf_events.h,
src/libpfm4/lib/pfmlib_amd64.c,
src/libpfm4/lib/pfmlib_amd64_fam19h.c,
src/libpfm4/lib/pfmlib_amd64_fam19h_l3.c,
src/libpfm4/lib/pfmlib_amd64_priv.h,
src/libpfm4/lib/pfmlib_amd64_rapl.c,
src/libpfm4/lib/pfmlib_arm_armv8.c,
src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_intel_icl.c,
src/libpfm4/lib/pfmlib_intel_nhm_unc.c,
src/libpfm4/lib/pfmlib_perf_event_pmu.c,
src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/perf_examples/notify_group.c,
src/libpfm4/perf_examples/perf_util.c,
src/libpfm4/tests/validate_x86.c: This affects the processor AMD
Zen2, we tested on it. It affects the following processors we do
not have to test on; A64FX (Fujitsu ARM),AMD Zen3, Intel TigerLake
and RocketLake. Update libpfm4, to be current with the following
commit: commit c132ab4948a828334a8fef00303a4b47f59bb4d9 Add
prefix to AMD Fam19h Zen3 L3 events To avoid potential conflict
with other core PMU events and make it more explicit these are
uncore L3 events following the model of Intel uncore PMUs. commit
a97908e8e6b6a28ae369dfbc9af97b52fe932273 Enable Intel Tigerlake
and Rocketlake core PMU support They are equivalent to Intel
Icelake, so reuse the same event table. commit
315941fc05f5a487e4eb5efd36ea10438336944b add AMD64 Fam19h Zen3 L3
PMU support This patch adds the AMD Fam19h (Zen3) L3 PMU support
consisting of 3 published events. new PMU model:
amd64_fam19h_zen3_l3 Based on the public specifications PPR
(#55898) Rev 0.35 - Feb 5, 2021. Available at:
https://www.amd.com/system/files/TechDocs/55898_pub.zip commit
e2afb6186dab2419a4b6f79a6adf7cd9bb0f2340 Add AMD64 Fam17h Zen2
RAPL support This patch adds RAPL support for AMD64 Fam17h Zen2
processors. On Zen2, only the RAPL_ENERGY_PKGS event is supported.
commit cc4ba27e55440f87359bee5176380db1ba4ef8af Add AMD64 Fam19h
Zen3 core PMU support The patch adds a core PMU support for AMD
Fam19h Zen3. new PMU model: amd64_fam19h_zen3 Based on the public
specifications PPR (#55898) Rev 0.35 - Feb 5, 2021. Available at:
https://www.amd.com/system/files/TechDocs/55898_pub.zip commit
5333f3245954b038100530a17675bbbafdae3061 Fix casting issues
reported by PGI compiler The PGI compiler does not like: struct {
unsigned long field; }; struct.field = -1, So clean this up and
various others casting issues reported by Carl Ponder on the bugs.
commit f6500e77563e606c8510ff26f57d321328bd8157 Changing the
number of PMU counters and deleting the ARM(32-bit) mode for A64FX
The current libpfm4 implementation treats PMCR_EL0.N = 0x6 like
other ARM Reference processors. On an A64FX, PMCR_EL0.N = 0x8 (The
number of PMU counters is 8.). Therefore, only 6 counters are
available in the current implementation. The A64FX core also
supports the AArch64 state and the A64 Instruction set. The AArch32
state and the A32, T32 Instruction set are not supported and cannot
be transitioned to this Execution state. Currently, the libpfm
manual(docs/man3/libpfm_arm_a64fx.3) states that A32/A64 can be
used, but A32 cannot be used. I have created a patch with the
above fixes, so please review and merge it. Originally, the
specification of the A64FX which Fujitsu published should have
described the above two points, but the description was omitted.
A64FX Specification HPC Extension v1.1 will add:. - On a A64FX,
PMCR_EL0.N = 0x8 (The number of PMU counters is 8.). - A64FX does
not support the AArch32 state and the A32, T32 Instruction set and
cannot transition to this Execution state.
2021-03-11 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Improved randomization of rank id.
2021-03-10 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Added more hardware information in hl
performance output.
2021-03-09 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Improved hl performance output for
parallel programs. If the system does not provide the rank id, a
unique file is created per rank. This implementation avoids race
conditions.
2021-02-24 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Corrects a sequence error in the
use of cuda context that was causing an issue on Summit.
* src/components/cuda/linux-cuda.c: interim commit for merge
2021-02-22 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c, src/high-
level/scripts/papi_hl_output_writer.py: Improved hl output.
2021-02-22 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/tests/rocm_example.cpp,
src/components/rocm_smi/tests/rocmsmi_example.cpp: Modifications to
commentary in instructional example code, for accuracy and clarity.
2021-02-19 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/tests/ROCM_Makefile: Deleting obsolete
ROCM_Makefile.
* src/components/rocm/tests/ROCM_Makefile: Re-adding
components/rocm/tests/ROCM_Makefile to resolve merge conflict. It
is obsolete, and will be deleted in a future update.
* src/components/rocm/tests/ROCM_Makefile: ROCM_Makefile is obsolete;
incorporated into Makefile.
* src/components/rocm/tests/ROCM_Makefile, src/components/rocm_smi
/linux-rocm-smi.c: Restoring ROCM_Makefile to deal with merge
conflictt. Adding sensor 0-relative, 1-relative fix.
2021-02-19 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c, src/high-
level/scripts/papi_hl_output_writer.py: Revised hl output.
2021-02-19 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/linux-rocm.c, src/components/rocm_smi/linux-
rocm-smi.c: Clean up code and library search for both components.
For ROCM, automatically set rocprofiler environment variables if
missing.
2021-02-18 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Fixed raw output.
* src/high-level/papi_hl.c: Added component name to event
definitions.
2021-02-16 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/papi_events.csv: remove PAPI_L1_TCA and PAPI_L1_TCH for a64fx
PAPI_L1_TCA and PAPI_L1_TCH for a64fx measure L1D_CACHE just like
PAPI_L1_DCA and PAPI_L1_DCH, so I delete (comment out) PAPI_L1_TCA
and PAPI_L1_TCH for a64fx from the papi_events.csv file.
2021-02-15 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/timing_kernels.c: Modified the multi-
threaded CAT data cache benchmark so that each thread's memory
buffer is allocated in separate threads. Allocating all buffers in
a single thread means they exist in the same NUMA region. This
change prevents an imbalance of memory accesses to just a single
NUMA region. This change was tested on the IBM POWER9
architecture.
2021-02-14 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Modified recording of regions. - All
regions have an unique region ID - Added hierarchy for nested
regions - List regions that have the same name separately in the
JSON output
2021-02-12 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/papi_events.csv: remove PAPI_L1_DCA and PAPI_L1_DCH for a64fx
There seems to be a problem with PAPI_L1_DCA and PAPI_L1_DCH for
a64fx that prefetch overcounts. I delete (comment out) PAPI_L1_DCA
and PAPI_L1_DCH for a64fx from the papi_events.csv file. I will
issue the pullrequest again once I have identified how to handle
the overcount.
2021-02-11 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/Makefile,
src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h,
src/counter_analysis_toolkit/timing_kernels.c,
src/counter_analysis_toolkit/timing_kernels.h: Implemented a multi-
threaded version of the CAT data cache benchmarks. This is
necessary for full utilization of the hardware in the memory
hierarchy, which provides more stable benchmark results. These
changes were tested on the IBM POWER9 architecture.
2021-02-10 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/dcache.c,
src/counter_analysis_toolkit/dcache.h: Removed the CAT data cache
benchmarks from running in a separate, stand-alone thread. This is
a necessary step to implement truly multi-threaded versions of the
benchmarks. These changes were tested on the IBM POWER9
architecture.
2021-02-04 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm_smi/tests/rocmsmi_example.cpp: Minor
modifications to comments and report code.
2021-02-03 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/tests/Makefile,
src/components/rocm/tests/ROCM_Makefile,
src/components/rocm/tests/rocm_all.cpp,
src/components/rocm/tests/rocm_example.cpp,
src/components/rocm_smi/tests/Makefile,
src/components/rocm_smi/tests/ROCM_SMI_Makefile,
.../rocm_smi/tests/power_monitor_rocm.cpp,
.../rocm_smi/tests/rocm_command_line.cpp,
src/components/rocm_smi/tests/rocm_smi_all.cpp,
.../rocm_smi/tests/rocm_smi_writeTests.cpp,
src/components/rocm_smi/tests/rocmsmi_example.cpp: In ROCM and
ROCM_SMI, deleted specialty Makefiles and incorporated all makes
into .../tests/Makefile. This required minor mods to existing files
to get a clean compile without warnings. Added two files,
rocm_example.cpp and rocmsmi_example.cpp, that are coding tutorials
with heaving commenting for programmers new to PAPI; these will
also be used for video tutorials by AMD.
2021-01-29 Anthony <adanalis@icl.utk.edu>
* src/components/sde/tests/lib/.gitignore: Added the directory lib
under sde/tests
* src/components/sde/Rules.sde,
src/components/sde/interface/papi_sde_interface.c,
src/components/sde/interface/papi_sde_interface.h,
src/components/sde/sde_lib/Makefile,
src/components/sde/sde_lib/sde_common.c,
src/components/sde/sde_lib/sde_common.h,
src/components/sde/sde_lib/sde_lib.c,
src/components/sde/sde_lib/weak_symbols.c,
src/components/sde/tests/Makefile, src/configure, src/configure.in,
src/utils/Makefile, src/utils/Makefile.target.in: Cleaned up the
stand alone sde code. Now it does not need to be built into a
separate library, the sources/objects can be integrated into third
party libraries directly.
2021-01-20 Anthony <adanalis@icl.utk.edu>
* src/components/sde/interface/papi_sde_interface.c,
src/components/sde/sde.c, src/components/sde/sde_internal.h,
src/components/sde/sde_lib/Makefile,
src/components/sde/sde_lib/sde_common.c,
src/components/sde/sde_lib/sde_common.h,
src/components/sde/sde_lib/sde_lib.c,
src/components/sde/sde_lib/weak_symbols.c,
.../tests/Created_Counter/Created_Counter_Driver.c,
.../Created_Counter/Lib_With_Created_Counter.c,
.../sde/tests/Created_Counter/Overflow_Driver.c,
src/components/sde/tests/Minimal/Minimal_Test.c,
.../sde/tests/Recorder/Lib_With_Recorder.c,
.../sde/tests/Recorder/Recorder_Driver.c,
src/components/sde/tests/Simple/Simple_Driver.c,
src/components/sde/tests/Simple/Simple_Lib.c,
src/components/sde/tests/Simple2/Simple2_Driver.c,
src/components/sde/tests/Simple2/Simple2_Lib.c,
.../sde/tests/Simple2/Simple2_NoPAPI_Driver.c: Removed trailing
white spaces.
2020-09-03 Anthony <adanalis@icl.utk.edu>
* src/components/sde/Rules.sde, src/components/sde/sde.c,
src/components/sde/sde_common.c, src/components/sde/sde_common.h,
src/components/sde/sde_internal.h, src/components/sde/sde_lib.c,
src/components/sde/sde_lib/Makefile,
src/components/sde/sde_lib/papi_sde_interface.h,
src/components/sde/sde_lib/sde_common.c,
src/components/sde/sde_lib/sde_common.h,
src/components/sde/sde_lib/sde_lib.c,
src/components/sde/sde_lib/weak_symbols.c,
.../sde/tests/Advanced_C+FORTRAN/sde_test_f08.F90,
.../tests/Created_Counter/Created_Counter_Driver.c,
.../Created_Counter/Lib_With_Created_Counter.c,
.../sde/tests/Created_Counter/Overflow_Driver.c,
src/components/sde/tests/Makefile,
src/components/sde/tests/Minimal/Minimal_Test.c,
src/components/sde/tests/README.txt,
.../sde/tests/Recorder/Lib_With_Recorder.c,
.../sde/tests/Recorder/Recorder_Driver.c,
src/components/sde/tests/Simple/Simple_Driver.c,
src/components/sde/tests/Simple2/Simple2_Driver.c,
src/components/sde/tests/Simple2/Simple2_Lib.c,
.../sde/tests/Simple2/Simple2_NoPAPI_Driver.c, src/run_tests.sh,
src/run_tests_exclude.txt, src/utils/Makefile,
src/utils/papi_native_avail.c, src/utils/papi_sde_interface.c: +
Major restructuring of the libsde code, so that it can be used more
easily by external projects. + Changes to the tests so they conform
to the rest of PAPI's testing infrastructure.
2020-05-30 Anthony <adanalis@icl.utk.edu>
* src/components/sde/README.md, src/components/sde/Rules.sde,
src/components/sde/sde.c, src/components/sde/sde_common.h: Fixed a
problem occuring in non-debug builds and updated the README file.
2020-05-29 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde.c, src/components/sde/sde_common.c,
src/components/sde/sde_common.h, src/components/sde/sde_internal.h,
src/components/sde/sde_lib.c: Better header organization.
* src/components/sde/tests/Makefile,
.../sde/tests/Simple2/Simple2_NoPAPI_Driver.c: New test with no
libpapi.so linkage was added.
* src/components/sde/sde.c, src/components/sde/sde_internal.h,
src/components/sde/sde_lib.c: More complete support for
overflowing. Now, case r5 is supported.
* src/components/sde/sde.c, src/components/sde/sde_common.h,
src/components/sde/sde_internal.h, src/components/sde/sde_lib.c:
Support for overflow for the case of created counters as well as
r[1-4].
2020-05-28 Anthony <adanalis@icl.utk.edu>
* src/components/sde/Rules.sde, src/components/sde/sde.c,
src/components/sde/sde_common.c, src/components/sde/sde_common.h,
src/components/sde/sde_internal.h, src/components/sde/sde_lib.c,
src/components/sde/tests/Makefile,
src/components/sde/tests/Simple2/Simple2_Driver.c: Pushing the
library interface of SDEs into a stand-alone library (libsde.so).
2021-01-26 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/components/mx/linux-mx.c: Add string length check before
strncpy() and strcat() calls in _mx_init_component() Myrinet
Express-related component MX modules are initialized with the
_mx_init_component() function, which is called from the
PAPI_library_init() function. The popen(3) call runs a loadable
module called "mx_counters", and if the loadable module does not
exist, it attempts to run a loadable module called
"./components/mx/utils/fake_mx_counters". In an environment where
there are no "mx_counters" and
"./components/mx/utils/fake_mx_counters" loadable modules, popen(3)
will be called twice uselessly. popen(3) internally calls pipe(2)
once, fork(2) twice and exec(2) once. The size of the user space
of the application calling the PAPI_library_init() function affects
the performance of fork(2), which is called as an extension of
popen(3). As a result, the performance of the PAPI_library_init()
function is affected by the amount of user space in the application
that called the PAPI_library_init() function. In the
_mx_init_component() function, the MX module only needs to be able
to verify that a load module named "mx_counters" exists. We
improved the _mx_init_component() function to call fopen(3) instead
of popen(3). We add string length check before strncpy() and
strcat() calls in _mx_init_component() function.
2021-01-21 William Cohen <wcohen@redhat.com>
* src/Rules.pfm4_pe: Only check for libpfm.a if static libraries are
being used. Even when static libraries are not be used papi was
checking for libpfm.a, this would cause a failure if libpfm.a
wasn't installed. Exclude checking for libpfm.a if no static libpfm
library is needed.
2021-01-22 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/scripts/papi_hl_output_writer.py: Improved
performance report script.
2021-01-18 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c, src/high-
level/scripts/papi_hl_output_writer.py: Fixed real time
measurement.
2021-01-07 Damien Genet <dgenet@icl.utk.edu>
* src/Rules.perfnec, src/components/perfnec/Rules.perfnec,
src/components/perfnec/perfmon.c, src/components/perfnec/perfnec.h,
src/configure, src/configure.in, src/libperfnec/COPYRIGHT,
src/libperfnec/ChangeLog, src/libperfnec/Makefile,
src/libperfnec/README, src/libperfnec/TODO,
src/libperfnec/config.mk, src/libperfnec/docs/Makefile,
src/libperfnec/docs/man3/libpfm.3,
src/libperfnec/docs/man3/libpfm_amd64.3,
src/libperfnec/docs/man3/libpfm_atom.3,
src/libperfnec/docs/man3/libpfm_core.3,
src/libperfnec/docs/man3/libpfm_itanium.3,
src/libperfnec/docs/man3/libpfm_itanium2.3,
src/libperfnec/docs/man3/libpfm_montecito.3,
src/libperfnec/docs/man3/libpfm_nehalem.3,
src/libperfnec/docs/man3/libpfm_p6.3,
src/libperfnec/docs/man3/libpfm_powerpc.3,
src/libperfnec/docs/man3/libpfm_westmere.3,
src/libperfnec/docs/man3/pfm_dispatch_events.3,
src/libperfnec/docs/man3/pfm_find_event.3,
src/libperfnec/docs/man3/pfm_find_event_bycode.3,
.../docs/man3/pfm_find_event_bycode_next.3,
src/libperfnec/docs/man3/pfm_find_event_mask.3,
src/libperfnec/docs/man3/pfm_find_full_event.3,
src/libperfnec/docs/man3/pfm_force_pmu.3,
src/libperfnec/docs/man3/pfm_get_cycle_event.3,
src/libperfnec/docs/man3/pfm_get_event_code.3,
.../docs/man3/pfm_get_event_code_counter.3,
src/libperfnec/docs/man3/pfm_get_event_counters.3,
.../docs/man3/pfm_get_event_description.3,
src/libperfnec/docs/man3/pfm_get_event_mask_code.3,
.../docs/man3/pfm_get_event_mask_description.3,
src/libperfnec/docs/man3/pfm_get_event_mask_name.3,
src/libperfnec/docs/man3/pfm_get_event_name.3,
src/libperfnec/docs/man3/pfm_get_full_event_name.3,
.../docs/man3/pfm_get_hw_counter_width.3,
src/libperfnec/docs/man3/pfm_get_impl_counters.3,
src/libperfnec/docs/man3/pfm_get_impl_pmcs.3,
src/libperfnec/docs/man3/pfm_get_impl_pmds.3,
src/libperfnec/docs/man3/pfm_get_inst_retired.3,
.../docs/man3/pfm_get_max_event_name_len.3,
src/libperfnec/docs/man3/pfm_get_num_counters.3,
src/libperfnec/docs/man3/pfm_get_num_events.3,
src/libperfnec/docs/man3/pfm_get_num_pmcs.3,
src/libperfnec/docs/man3/pfm_get_num_pmds.3,
src/libperfnec/docs/man3/pfm_get_pmu_name.3,
src/libperfnec/docs/man3/pfm_get_pmu_name_bytype.3,
src/libperfnec/docs/man3/pfm_get_pmu_type.3,
src/libperfnec/docs/man3/pfm_get_version.3,
src/libperfnec/docs/man3/pfm_initialize.3,
src/libperfnec/docs/man3/pfm_list_supported_pmus.3,
src/libperfnec/docs/man3/pfm_pmu_is_supported.3,
src/libperfnec/docs/man3/pfm_regmask_and.3,
src/libperfnec/docs/man3/pfm_regmask_clr.3,
src/libperfnec/docs/man3/pfm_regmask_copy.3,
src/libperfnec/docs/man3/pfm_regmask_eq.3,
src/libperfnec/docs/man3/pfm_regmask_isset.3,
src/libperfnec/docs/man3/pfm_regmask_or.3,
src/libperfnec/docs/man3/pfm_regmask_set.3,
src/libperfnec/docs/man3/pfm_regmask_weight.3,
src/libperfnec/docs/man3/pfm_set_options.3,
src/libperfnec/docs/man3/pfm_strerror.3,
src/libperfnec/include/Makefile,
src/libperfnec/include/perfmon/perfmon.h,
src/libperfnec/include/perfmon/perfmon_compat.h,
src/libperfnec/include/perfmon/perfmon_crayx2.h,
.../include/perfmon/perfmon_default_smpl.h,
src/libperfnec/include/perfmon/perfmon_dfl_smpl.h,
src/libperfnec/include/perfmon/perfmon_i386.h,
src/libperfnec/include/perfmon/perfmon_ia64.h,
src/libperfnec/include/perfmon/perfmon_mips64.h,
src/libperfnec/include/perfmon/perfmon_nec.h,
.../include/perfmon/perfmon_pebs_core_smpl.h,
.../include/perfmon/perfmon_pebs_p4_smpl.h,
src/libperfnec/include/perfmon/perfmon_pebs_smpl.h,
src/libperfnec/include/perfmon/perfmon_powerpc.h,
src/libperfnec/include/perfmon/perfmon_sparc.h,
src/libperfnec/include/perfmon/perfmon_v2.h,
src/libperfnec/include/perfmon/perfmon_x86_64.h,
src/libperfnec/include/perfmon/pfmlib.h,
src/libperfnec/include/perfmon/pfmlib_amd64.h,
src/libperfnec/include/perfmon/pfmlib_cell.h,
src/libperfnec/include/perfmon/pfmlib_comp.h,
.../include/perfmon/pfmlib_comp_crayx2.h,
src/libperfnec/include/perfmon/pfmlib_comp_i386.h,
src/libperfnec/include/perfmon/pfmlib_comp_ia64.h,
.../include/perfmon/pfmlib_comp_mips64.h,
.../include/perfmon/pfmlib_comp_powerpc.h,
src/libperfnec/include/perfmon/pfmlib_comp_sparc.h,
.../include/perfmon/pfmlib_comp_x86_64.h,
src/libperfnec/include/perfmon/pfmlib_core.h,
src/libperfnec/include/perfmon/pfmlib_coreduo.h,
src/libperfnec/include/perfmon/pfmlib_crayx2.h,
src/libperfnec/include/perfmon/pfmlib_gen_ia32.h,
src/libperfnec/include/perfmon/pfmlib_gen_ia64.h,
src/libperfnec/include/perfmon/pfmlib_gen_mips64.h,
src/libperfnec/include/perfmon/pfmlib_i386_p6.h,
src/libperfnec/include/perfmon/pfmlib_intel_atom.h,
src/libperfnec/include/perfmon/pfmlib_intel_nhm.h,
src/libperfnec/include/perfmon/pfmlib_itanium.h,
src/libperfnec/include/perfmon/pfmlib_itanium2.h,
src/libperfnec/include/perfmon/pfmlib_montecito.h,
src/libperfnec/include/perfmon/pfmlib_os.h,
src/libperfnec/include/perfmon/pfmlib_os_crayx2.h,
src/libperfnec/include/perfmon/pfmlib_os_i386.h,
src/libperfnec/include/perfmon/pfmlib_os_ia64.h,
src/libperfnec/include/perfmon/pfmlib_os_mips64.h,
src/libperfnec/include/perfmon/pfmlib_os_powerpc.h,
src/libperfnec/include/perfmon/pfmlib_os_sparc.h,
src/libperfnec/include/perfmon/pfmlib_os_x86_64.h,
src/libperfnec/include/perfmon/pfmlib_pentium4.h,
src/libperfnec/include/perfmon/pfmlib_powerpc.h,
src/libperfnec/include/perfmon/pfmlib_sicortex.h,
src/libperfnec/include/perfmon/pfmlib_sparc.h,
src/libperfnec/lib/Makefile, src/libperfnec/lib/amd64_events.h,
src/libperfnec/lib/amd64_events_fam10h.h,
src/libperfnec/lib/amd64_events_fam15h.h,
src/libperfnec/lib/amd64_events_k7.h,
src/libperfnec/lib/amd64_events_k8.h,
src/libperfnec/lib/cell_events.h, src/libperfnec/lib/core_events.h,
src/libperfnec/lib/coreduo_events.h,
src/libperfnec/lib/crayx2_events.h,
src/libperfnec/lib/gen_ia32_events.h,
src/libperfnec/lib/gen_mips64_events.h,
src/libperfnec/lib/i386_p6_events.h,
src/libperfnec/lib/intel_atom_events.h,
src/libperfnec/lib/intel_corei7_events.h,
src/libperfnec/lib/intel_corei7_unc_events.h,
src/libperfnec/lib/intel_wsm_events.h,
src/libperfnec/lib/intel_wsm_unc_events.h,
src/libperfnec/lib/itanium2_events.h,
src/libperfnec/lib/itanium_events.h, src/libperfnec/lib/libpfm.a,
src/libperfnec/lib/montecito_events.h,
src/libperfnec/lib/niagara1_events.h,
src/libperfnec/lib/niagara2_events.h,
src/libperfnec/lib/pentium4_events.h,
src/libperfnec/lib/pfmlib_amd64.c,
src/libperfnec/lib/pfmlib_amd64_priv.h,
src/libperfnec/lib/pfmlib_cell.c,
src/libperfnec/lib/pfmlib_cell_priv.h,
src/libperfnec/lib/pfmlib_common.c,
src/libperfnec/lib/pfmlib_core.c,
src/libperfnec/lib/pfmlib_core_priv.h,
src/libperfnec/lib/pfmlib_coreduo.c,
src/libperfnec/lib/pfmlib_coreduo_priv.h,
src/libperfnec/lib/pfmlib_crayx2.c,
src/libperfnec/lib/pfmlib_crayx2_priv.h,
src/libperfnec/lib/pfmlib_gen_ia32.c,
src/libperfnec/lib/pfmlib_gen_ia32_priv.h,
src/libperfnec/lib/pfmlib_gen_ia64.c,
src/libperfnec/lib/pfmlib_gen_mips64.c,
src/libperfnec/lib/pfmlib_gen_mips64_priv.h,
src/libperfnec/lib/pfmlib_gen_powerpc.c,
src/libperfnec/lib/pfmlib_i386_p6.c,
src/libperfnec/lib/pfmlib_i386_p6_priv.h,
src/libperfnec/lib/pfmlib_intel_atom.c,
src/libperfnec/lib/pfmlib_intel_atom_priv.h,
src/libperfnec/lib/pfmlib_intel_nhm.c,
src/libperfnec/lib/pfmlib_intel_nhm_priv.h,
src/libperfnec/lib/pfmlib_itanium.c,
src/libperfnec/lib/pfmlib_itanium2.c,
src/libperfnec/lib/pfmlib_itanium2_priv.h,
src/libperfnec/lib/pfmlib_itanium_priv.h,
src/libperfnec/lib/pfmlib_montecito.c,
src/libperfnec/lib/pfmlib_montecito_priv.h,
src/libperfnec/lib/pfmlib_os_linux.c,
src/libperfnec/lib/pfmlib_os_linux_v2.c,
src/libperfnec/lib/pfmlib_os_linux_v3.c,
src/libperfnec/lib/pfmlib_os_macos.c,
src/libperfnec/lib/pfmlib_pentium4.c,
src/libperfnec/lib/pfmlib_pentium4_priv.h,
src/libperfnec/lib/pfmlib_power4_priv.h,
src/libperfnec/lib/pfmlib_power5+_priv.h,
src/libperfnec/lib/pfmlib_power5_priv.h,
src/libperfnec/lib/pfmlib_power6_priv.h,
src/libperfnec/lib/pfmlib_power7_priv.h,
src/libperfnec/lib/pfmlib_power_priv.h,
src/libperfnec/lib/pfmlib_powerpc_priv.h,
src/libperfnec/lib/pfmlib_ppc970_priv.h,
src/libperfnec/lib/pfmlib_ppc970mp_priv.h,
src/libperfnec/lib/pfmlib_priv.c, src/libperfnec/lib/pfmlib_priv.h,
src/libperfnec/lib/pfmlib_priv_comp.h,
src/libperfnec/lib/pfmlib_priv_comp_ia64.h,
src/libperfnec/lib/pfmlib_priv_ia64.h,
src/libperfnec/lib/pfmlib_sicortex.c,
src/libperfnec/lib/pfmlib_sicortex_priv.h,
src/libperfnec/lib/pfmlib_sparc.c,
src/libperfnec/lib/pfmlib_sparc_priv.h,
src/libperfnec/lib/power4_events.h,
src/libperfnec/lib/power5+_events.h,
src/libperfnec/lib/power5_events.h,
src/libperfnec/lib/power6_events.h,
src/libperfnec/lib/power7_events.h,
src/libperfnec/lib/powerpc_events.h,
src/libperfnec/lib/powerpc_reg.h,
src/libperfnec/lib/ppc970_events.h,
src/libperfnec/lib/ppc970mp_events.h,
src/libperfnec/lib/ultra12_events.h,
src/libperfnec/lib/ultra3_events.h,
src/libperfnec/lib/ultra3i_events.h,
src/libperfnec/lib/ultra3plus_events.h,
src/libperfnec/lib/ultra4plus_events.h,
src/libperfnec/libpfms/Makefile,
src/libperfnec/libpfms/include/libpfms.h,
src/libperfnec/libpfms/lib/Makefile,
src/libperfnec/libpfms/lib/libpfms.c,
src/libperfnec/libpfms/syst_smp.c, src/libperfnec/python/Makefile,
src/libperfnec/python/README, src/libperfnec/python/self.py,
src/libperfnec/python/setup.py,
src/libperfnec/python/src/__init__.py,
src/libperfnec/python/src/perfmon_int.i,
src/libperfnec/python/src/pmu.py,
src/libperfnec/python/src/session.py, src/libperfnec/python/sys.py,
src/libperfnec/rules.mk, src/linux-common.h, src/linux-context.h,
src/linux-lock.h, src/linux-timer.c, src/mb.h,
src/utils/papi_native_avail.c: Merged in feature/pr_nec (pull
request #157) * Adding lib and component
2021-01-05 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/components/perf_event/pe_libpfm4_events.c: Get model_string for
ARM processor from pfm_get_pmu_info() function On ARM processors,
the model_string does not appear in /proc/cpuinfo. Instead of
looking at the /proc/cpuinfo information, you can look at the lscpu
command information at the following URL:.
https://github.com/google/cpu_features/issues/26
http://suihkulokki.blogspot.com/2018/02/making-sense-of-
proccpuinfo-on-arm.html The libpfm4 library identifies the ARM
processor type from the "CPU implement" and "CPU part" in the
/proc/cpuinfo information. The papi library can use the
pfm_get_pmu_info() function from the libpfm4 library to obtain a
string identifying the ARM processor type.
2020-12-23 Peinan Zhang <peinan.zhang@intel.com>
* .../intel_gpu/internal/inc/GPUMetricHandler.h,
.../intel_gpu/internal/src/GPUMetricHandler.cpp,
.../intel_gpu/internal/src/GPUMetricInterface.cpp: Changed query
based data read with timeout rather than blocked till data
available.
2020-12-18 Peinan Zhang <peinan.zhang@intel.com>
* src/components/intel_gpu/README,
src/components/intel_gpu/Rules.intel_gpu,
.../intel_gpu/internal/inc/GPUMetricHandler.h,
.../intel_gpu/internal/inc/GPUMetricInterface.h,
.../intel_gpu/internal/src/GPUMetricHandler.cpp,
.../intel_gpu/internal/src/GPUMetricInterface.cpp,
src/components/intel_gpu/internal/src/Makefile,
src/components/intel_gpu/linux_intel_gpu_metrics.c,
src/components/intel_gpu/linux_intel_gpu_metrics.h,
src/components/intel_gpu/tests/Makefile,
src/components/intel_gpu/tests/gemm.spv,
src/components/intel_gpu/tests/gpu_metric_list.c,
src/components/intel_gpu/tests/gpu_metric_read.c,
src/components/intel_gpu/tests/gpu_query_gemm.cc,
src/components/intel_gpu/tests/gpu_thread_read.c,
src/components/intel_gpu/tests/readme.txt: Add intel_gpu component
to collect Intel GPU performance metrics
2020-12-17 Heike Jagode <jagode@icl.utk.edu>
* src/components/perf_event/perf_event.c: Deleting Tony's hard
failure for check_exclude_guest() if perf_event_open fails. There
shouldn't be a failure since exclude_guest_unsupported is already
set before perf_event_open is called. At this point, if
perf_event_open fails it should just return but not result in a
hard failure. Hence, going back to the previous version of
check_exclude_guest(). And since the return value of this function
is not checked, we change it to void (instead of int).
2020-12-15 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/papi_events.csv: modify PAPI_FP_INS and PAPI_VEC_INS for A64FX
supports
2020-12-14 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/papi_events.csv: Add or modify various A64FX support events,
including floating point events (PAPI_FP_OPS, PAPI_SP_OPS,
PAPI_DP_OPS).
* src/papi_events.csv: Corrected typo for A64FX support (PAPI_L2_DCH
is a typo of PAPI_L2_DCA)
Wed Dec 9 19:48:23 2020 -0800 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/pfmlib_intel_snbep_unc_perf_event.c,
src/libpfm4/lib/pfmlib_perf_event_pmu.c: Update libpfm4, to be
current with the following commit:
--------------------------------------------------------------
commit c96ebc0d19c6167b45e1694ea38719f230da254e fix typos in
comments related to PERF_ATTR_HWS AMD was mentioned in non-AMD
related files. Reported-by: Steve Kaufmann
<steven.kaufmann@hpe.com>
Thu Nov 12 17:46:47 2020 -0800 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/pfmlib_amd64.c,
src/libpfm4/lib/pfmlib_amd64_perf_event.c,
src/libpfm4/lib/pfmlib_arm.c,
src/libpfm4/lib/pfmlib_arm_perf_event.c,
src/libpfm4/lib/pfmlib_intel_netburst.c,
src/libpfm4/lib/pfmlib_intel_netburst_perf_event.c,
src/libpfm4/lib/pfmlib_intel_snbep_unc.c,
.../lib/pfmlib_intel_snbep_unc_perf_event.c,
src/libpfm4/lib/pfmlib_mips.c,
src/libpfm4/lib/pfmlib_mips_perf_event.c,
src/libpfm4/lib/pfmlib_perf_event_pmu.c,
src/libpfm4/lib/pfmlib_perf_event_raw.c,
src/libpfm4/lib/pfmlib_powerpc.c,
src/libpfm4/lib/pfmlib_powerpc_perf_event.c,
src/libpfm4/lib/pfmlib_s390x_cpumf.c,
src/libpfm4/lib/pfmlib_s390x_perf_event.c,
src/libpfm4/lib/pfmlib_s390x_priv.h,
src/libpfm4/lib/pfmlib_sparc.c,
src/libpfm4/lib/pfmlib_sparc_perf_event.c,
src/libpfm4/tests/validate_x86.c: Update libpfm4, to be current
with the following commit:
--------------------------------------------------------------
commit fb6ddf78949eb1bc6921df5cfd0cf3e5ef2e752e fix Intel Icelake
encodings for CPU_CLK_UNHALTED.*_DISTRIBUTED The event code for
CPU_CLK_UNHALTED was wrong and the umasks DISTRIBUTED and
REF_DISTRIBUTED were wrong. For these, the event code is actually
0xec, so add the code override tag. commit
6f687e42c62bc71766c5369d218cea9ca2e246cf fix support of
PERF_ATTR_HWS Remove the attribute for all PMU which do not
support it which is the majority. Without the patch, you would see
[hw_smpl] on Intel uncore PMUs, AMD64 Fam17h PMU, and much more.
The patch also fixes a few place where info->is_precise was not
cleared. commit 02ab45abc160d1be754917524c40e268c490937d Fix
MEM_TRANS_RETIRED for Intel Icelake The umasks generated for Intel
Icelake MEM_TRANS_RETIRED where not setting ldlat properly. To use
the Load Latency feature with libpfm4, the ldlat= modifier must be
used either implicitly or explicitly. It cannot be encoded in the
umask code for now.
2020-11-30 William Cohen <wcohen@redhat.com>
* src/components/appio/README.md: Remove mention of the removed
iozone test in the appio README.md.
* src/components/appio/tests/Makefile,
src/components/appio/tests/iozone/Changes.txt,
src/components/appio/tests/iozone/Generate_Graphs,
src/components/appio/tests/iozone/Gnuplot.txt,
src/components/appio/tests/iozone/client_list,
src/components/appio/tests/iozone/fileop.c,
src/components/appio/tests/iozone/gengnuplot.sh,
src/components/appio/tests/iozone/gnu3d.dem,
src/components/appio/tests/iozone/gnuplot.dem,
src/components/appio/tests/iozone/gnuplotps.dem,
src/components/appio/tests/iozone/iozone.c,
.../appio/tests/iozone/iozone_visualizer.pl,
src/components/appio/tests/iozone/libasync.c,
src/components/appio/tests/iozone/libbif.c,
src/components/appio/tests/iozone/makefile,
src/components/appio/tests/iozone/pit_server.c,
src/components/appio/tests/iozone/read_telemetry,
src/components/appio/tests/iozone/report.pl,
src/components/appio/tests/iozone/spec.in,
src/components/appio/tests/iozone/write_telemetry: Remove bundled
iozone due to incompatible license. A review of the PAPI sources
found some iozone code bundled in papi (rhbz1901077 - papi bundles
non-free iozone code ). The upstream license for iozone does not
give permission to modify the source. There are some minor changes
in the PAPI version of the iozone files.
2020-11-25 Masahiko, Yamada <yamada.masahiko@fujitsu.com>
* src/components/mx/linux-mx.c: fix for performance improvement of
_mx_init_component() function
2020-11-18 Gerald Ragghianti <ragghianti@icl.utk.edu>
* src/components/rocm/README.md: Typo in library file name
2020-11-17 Damien Genet <dgenet@icl.utk.edu>
* src/components/infiniband/linux-infiniband.c: Fix: location is not
stored, so mark that location is broken
2020-11-17 Anthony Castaldo <tonycastaldo@tellico-master0.local>
* src/components/cuda/tests/nvlink_all.cu: Removed debug messages.
* src/components/cuda/tests/nvlink_all.cu: Removing debug messages.
* src/components/cuda/tests/nvlink_all.cu,
src/components/cuda/tests/nvlink_bandwidth.cu: Improved argument
handling in nvlink_all.cu and nvlink_bandwidth.cu.
2020-11-06 Anthony Michael Castaldo <coe0234@tulip.cm.cluster>
* src/components/rocm/linux-rocm.c,
src/components/rocm/tests/ROCM_Makefile: Changed ROCM_Makefile to
require PAPI_ROCM_ROOT; and to cross-compile for all "Instinct"
GPUs. Code in component to set needed environment variables if not
defined, or ensure definition meets expectations.
2020-11-05 Anthony Michael Castaldo <coe0234@tulip.cm.cluster>
* src/components/rocm/README.md, src/components/rocm/linux-rocm.c,
src/components/rocm/tests/ROCM_Makefile: First draft of changes to
automatically find and set environment variables automatically.
2020-11-03 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/main.c: Added checks for the return
values of calls to malloc(), calloc(), and realloc(). This way, the
user will know if there are issues with allocating memory. These
changes were tested on the IBM POWER9 architecture.
2020-11-02 Daniel Barry <dbarry@vols.utk.edu>
* src/counter_analysis_toolkit/main.c: Increase buffer size for
larger input files to CAT. Since the number of qualifier counts is
equal to the number of event names in the input file, the size of
the buffer containing the qualifier counts should be equal to the
size of the buffer containing the event names. This change is
necessary to accommodate large input files. This change was tested
on the IBM POWER9 architecture.
2020-10-27 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Added explicit Compute Capability
retrieval and checking to disable component if CC>=7.5 and cannot
work with Legacy CUPTI. Added a filter to exclude multipass
metrics. Provided a timing for that conditioned on #define
TIME_MULTIPASS_ELIM to measure how long that takes. On Saturn A04
V100 device, 95-98ms additional time in init_component(). On
Summit, 1-6 GPUs, about 73ms extra time per GPU in
init_component(); from 73.5 ms (1 GPU) to 437.3 ms (6 GPU).
2020-10-26 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Added explicit Compute Capability
retrieval and checking; also added a filter to exclude multipass
metrics; as well as timing (if a #define is made) of how long that
takes. On 1 V100 device, 95-98ms additional time in
init_component().
2020-10-23 Björn Dick <dick@hlrs.de>
* src/components/sde/tests/Makefile: adapted setting FFLAGS in
src/components/sde/tests/Makefile in order to make it work with
flang (otherwise crashes due to unknown flag '-free')
2020-10-22 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Just the compute capability
check.
2020-10-20 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c,
.../cuda/tests/BlackScholes/BlackScholes.cu,
.../cuda/tests/BlackScholes/BlackScholes_gold.cpp,
.../tests/BlackScholes/BlackScholes_kernel.cuh,
src/components/cuda/tests/BlackScholes/Makefile,
.../cuda/tests/BlackScholes/NsightEclipse.xml,
.../cuda/tests/BlackScholes/README_SETUP.txt,
src/components/cuda/tests/BlackScholes/readme.txt,
.../cuda/tests/BlackScholes/testAllEvents.sh,
.../cuda/tests/BlackScholes/testSomeEvents.sh,
.../cuda/tests/BlackScholes/thr_BlackScholes.cu: Thread Safety is
added to the cuda component; protecting functions with PAPI locks:
_papi_hwi_lock(COMPONENT_LOCK) and
_papi_hwi_unlock(COMPONENT_LOCK). The BlackScholes directory is
added; a slightly modified version of an Nvidia sample program,
used to exercise a great deal of computation. This includes new
code, in particular thr_BlackScholes.cu uses phtreads and executes
the kernel from several threads, using PAPI_read() in each, to test
the above thread safety. Also tested with helgrind (tool within
valgrind to test for threading synchronization issues).
2020-10-19 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/net/linux-net.c, src/components/nvml/linux-nvml.c,
src/components/pcp/linux-pcp.c,
src/components/perf_event/perf_event.c,
.../perf_event_uncore/perf_event_uncore.c, src/components/powercap
/linux-powercap.c, src/components/powercap_ppc/linux-powercap-
ppc.c, src/components/rapl/linux-rapl.c, src/components/rocm/linux-
rocm.c, src/components/rocm_smi/linux-rocm-smi.c,
src/components/sensors_ppc/linux-sensors-ppc.c: Changes to
init_component() to properly set the component vector element
disabled_reason() if init fails. Also changes to eliminate compiler
warnings for failing to process return codes from string functions
(strcpy and snprintf and variants), and to check for alloc()
failures; but only in the init_component() functions and any
functions it invokes. Testing was on Saturn A04 by default; ICL
Caffeine for (rocm, rocm_smi, powercap), Summit for PCP, Tellico
(IBM processor) for sensors_ppc and powercap_ppc.
Wed Sep 2 11:40:42 2020 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/config.mk, src/libpfm4/debian/changelog,
src/libpfm4/docs/Makefile,
src/libpfm4/lib/events/amd64_events_fam16h.h,
src/libpfm4/lib/events/amd64_events_fam17h_zen2.h,
src/libpfm4/lib/events/intel_bdx_unc_cbo_events.h,
src/libpfm4/lib/events/intel_bdx_unc_ha_events.h,
src/libpfm4/lib/events/intel_bdx_unc_imc_events.h,
src/libpfm4/lib/events/intel_bdx_unc_pcu_events.h,
src/libpfm4/lib/events/intel_bdx_unc_qpi_events.h,
.../lib/events/intel_bdx_unc_r3qpi_events.h,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/events/intel_knl_unc_cha_events.h,
src/libpfm4/lib/events/intel_skx_unc_cha_events.h,
src/libpfm4/lib/events/intel_skx_unc_imc_events.h,
.../lib/events/intel_skx_unc_m3upi_events.h,
src/libpfm4/lib/events/intel_skx_unc_pcu_events.h,
src/libpfm4/lib/events/intel_skx_unc_upi_events.h,
src/libpfm4/lib/events/mips_74k_events.h,
src/libpfm4/lib/events/power4_events.h,
src/libpfm4/lib/events/power5+_events.h,
src/libpfm4/lib/events/power5_events.h,
src/libpfm4/lib/events/power6_events.h,
src/libpfm4/lib/events/power7_events.h,
src/libpfm4/lib/events/power8_events.h,
src/libpfm4/lib/events/power9_events.h,
src/libpfm4/lib/events/ppc970_events.h,
src/libpfm4/lib/events/ppc970mp_events.h,
src/libpfm4/lib/events/s390x_cpumf_events.h,
src/libpfm4/lib/pfmlib_itanium2.c, src/libpfm4/lib/pfmlib_mips.c,
src/libpfm4/lib/pfmlib_montecito.c: Update libpfm4, to be current
with the following commits:
--------------------------------------------------------------
commit fa84c27b60572621a8e48e364de9f55bdff5237e fix incorrect
strncpy() usage gcc 9 failed on mips* with: /usr/include/mips64el-
linux-gnuabi64/bits/string_fortified.h:106:10: error:
‘__builtin___strncpy_chk’ output truncated before terminating
nul copying as many bytes from a string as its length [-Werror
=stringop-truncation] pfmlib_mips.c: In function
‘pfm_mips_detect’: pfmlib_mips.c:147:2: note: length computed
here 147 | strncpy(pfm_mips_cfg.model,buffer,strlen(buffer));
strncpy(dest, src, strlen(src)) does *not* copy the terminating
'\0' strncpy(dest, src, strlen(src)+1) is identical to strcpy(dest,
src) but the third argument to strncpy() should rather be based on
the size of 'dest', not 'src' commit
c3e97e0c9510f047623f6548cdef188eed0038cd fix typos and normalize
spacing most typos were found by Lintian commit
de4beb0da7530bc1dcd2f19582dfeca2ecb1d185 update AMD Fam17h Zen2
event table Based on PPR version 0.91 Sep1, 2020. Thanks to
Emmanuel for tracking the diffs. commit
53797b096497dd278fa844c302ce93495b469754 update Intel Icelake
event table to 1.09 This patch updates the Icelake event table
based on the official JSON event file up to version 1.09. commit
414e482ace00d334015341e032a8b325d80e92eb update to version 4.11.1
Update to 4.11.1 revision to fix some minor issues with 11.0
release commit dfe30a72c18dc64ea8e55c469a9adcfec9c09340 install
Fujitsu A64FX man page in ARM64 mode This patch corrects the
documentation Makefile to install the libpfm_a64fx.3 man page when
bulding for ARM64. Otherwise the man page woul only be installed in
ARM (32-bit) mode. Reported-by: William Cohen <wcohen@redhat.com>
commit 3a7dbd35cfde80923dca3d7a02386fde6d859f93 update to version
4.11.0 Update to 4.11.0 revision to prepare for release
2020-10-12 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/scripts/papi_hl_output_writer.py: Fixed bug in
summary mode 2. Each region can have a different number of ranks
and threads.
* src/high-level/scripts/papi_hl_output_writer.py: Fixed bug in
summary mode. Starting from the second region all events were
ignored by a wrong indented break statement.
2020-10-09 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/scripts/papi_hl_output_writer.py: Fixed bug for IPC
metric.
* src/high-level/scripts/papi_hl_output_writer.py: Revised
performance output.
2020-10-08 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/appio/appio.c, src/components/coretemp/linux-
coretemp.c, src/components/cuda/linux-cuda.c,
src/components/example/example.c, src/components/io/linux-io.c,
src/components/libmsr/linux-libmsr.c: Got rid of unnecessary
PAPI_MAX_STR_LEN-2, replaced with PAPI_MAX_STR_LEN.
2020-10-08 Sebastian Mobo <smobo@vols.utk.edu>
* src/papi_events.csv: Added instruction-cache preset events for the
Zen2.
2020-10-08 Heike Jagode <jagode@icl.utk.edu>
* src/papi_events.csv: For zen2, since FP_OPS counts both single- and
double-prec operations correctly, we don't need to confuse the user
with additional DP_OPS and SP_OPS events. So, I'm taking them out.
Same applies for events counting FP instructions.
2020-10-08 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/appio/appio.c, src/components/coretemp/linux-
coretemp.c: Brought appio and coretemp in line with other
components for standardization.
* src/components/appio/appio.c, src/components/coretemp/linux-
coretemp.c, src/components/cuda/linux-cuda.c,
src/components/example/example.c, src/components/io/linux-io.c,
src/components/libmsr/linux-libmsr.c: In addition to
init_component() changes to ensure all possible failing return
paths set a disable_reason; added testing for string functions;
strncpy and snprintf, to avoid compiler warnings about
uninterpreted return values.
2020-10-08 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/scripts/papi_hl_output_writer.py: Added derived
events for summary report.
2020-10-06 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/appio/appio.c, src/components/coretemp/linux-
coretemp.c, src/components/cuda/linux-cuda.c,
src/components/example/example.c, src/components/io/linux-io.c,
src/components/libmsr/linux-libmsr.c,
src/components/libmsr/tests/ICL_TESTING_NOTES.txt,
src/components/libmsr/tests/Makefile,
src/components/libmsr/tests/libmsr_basic.c: Most changes here
ensure that any exit from the init_component() function that
disables the component will give a sensible reason for the disable
in the component vector string, which is reported by
papi_component_avail. Additional changes were made to prevent
compiler warnings on various issues; such as unused values or
incompatible formatting.
2020-10-04 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/scripts/papi_hl_output_writer.py: Several
improvements.
2020-10-02 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/scripts/papi_hl_output_writer.py: Started with
summary output format.
2020-10-01 Damien Genet <dgenet@icl.utk.edu>
* src/components/infiniband/linux-infiniband.c: Fixing the infiniband
component for the 3 counters that are misplaced in the filesystem
and thus wrongfully listed as 32 bits
2020-09-24 Heike Jagode <jagode@icl.utk.edu>
* src/papi_events.csv: Added missing 'PRESET' to csv file.
* src/papi_events.csv: Added presets for floating-point instructions
(FP_INS, VEC_DP, VEC_SP) for AMD zen2. For unoptimized code (like
native MMM), these events may include non-numeric floating-point
instructions, e.g. MOVSD: move or merge scalar double-precision
floating-point value instructions. Tested with: 1) SSE double:
_mm_mul_pd / _mm_add_pd 2) SSE single: _mm_mul_ps / _mm_add_ps 3)
AVX double: _mm256_mul_pd / _mm256_add_pd 4) AVX single:
_mm256_mul_ps / _mm256_add_ps 5) FMA double: _mm256_macc_pd 6) FMA
single: _mm256_macc_pd
* src/papi_events.csv: Added presets for floating-point operations
(FP_OPS, DP_OPS, SP_OPS) for AMD zen2. PPR (under section
2.1.15.3. -- https://www.amd.com/system/files/TechDocs/54945_3.03_p
pr_ZP_B2_pub.zip) explains that FLOP events require MergeEvent
support, which was included in the 5.6 kernel. ===>>> Hence, a
kernel version 5.6 or greater is required. NOTE: without the
MergeEvent support in the kernel, there is no guarantee that the
SSE/AVX FLOP events produce any useful data whatsoever. These
events have been tested and verified for scalar flops, SSE, AVX,
and FMA: (1) for one AVX instruction (e.g. _mm256_add_pd()), the
RETIRED_SSE_AVX_FLOPS:ADD_SUB_FLOPS event returns a count of 4 (in
the case of double precision), and a count of 8 (in the case of
single precision). (2) for one AVX FMA instruction (e.g.
_mm256_macc_pd()), the RETIRED_SSE_AVX_FLOPS:MAC_FLOPS event
returns a count of 8 (in the case of double precision), and a count
of 16 (in the case of single precision). (3) for one SSE
instruction (e.g. _mm_mul_pd()), the
RETIRED_SSE_AVX_FLOPS:MULT_FLOPS event returns a count of 2 (in the
case of double precision), and a count of 4 (in the case of single
precision).
2020-09-18 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Added min, avg, and max for instantaneous
events.
2020-09-17 Frank Winkler <frank.winkler@tu-dresden.de>
* src/high-level/papi_hl.c: Fixed bug for empty strings in
PAPI_EVENTS.
2020-09-11 Frank Winkler <frankbook@m016.zih.tu-dresden.de>
* src/high-level/papi_hl.c: Improved coding style.
* src/high-level/papi_hl.c: Simplified event definitions.
2020-09-09 Daniel Barry <dbarry@vols.utk.edu>
* src/components/pcp/linux-pcp.c: Added __FILE__ and __LINE__ to the
error messages which are shown depending on the return value of
snprintf(). This way, the user will know from where the error
message originated. These changes were tested on the IBM POWER9
architecture.
2020-09-09 Anthony Castaldo <tonycastaldo@tellico-master0.local>
* src/components/cuda/linux-cuda.c: Uninitialized retcode variables
caused problems on Power 9.
2020-09-09 Frank Winkler <frankbook@m016.zih.tu-dresden.de>
* src/high-level/papi_hl.c: Added event definitions to performance
report.
2020-09-08 Daniel Barry <dbarry@vols.utk.edu>
* src/components/pcp/linux-pcp.c: Added if-statements to check
whether the number of characters intended to be written to the
destination buffer exceed the size of the buffer. This prevents GCC
9.1.0 from warning that the destination buffer may not be large
enough to store the contents of the source buffers. These changes
were tested on the IBM POWER9 architecture.
2020-09-08 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/tests/ROCM_Makefile,
src/components/rocm/tests/rocm_standalone.cpp: Corrected a too-
specific reference in Makefile; and changed a #define from
CamelCase to all caps.
2020-08-28 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Capitalized #defines.
2020-08-27 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Moved structure typedef
definitions ahead of their use in the source file; and changed
references to structures within structures to use the typedef type.
Removed '#if 0' test code for the binary search function.
2020-08-26 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/papi.c, src/papi_internal.c, src/papi_internal.h: This modifies
PAPI_library_init() to initialize components in two classes,
separated by the initialization of the papi thread structure. The
first class is those that need no thread structure, currently
everything but perf_event and perf_event_uncore. Following the init
of the threading structure, we init the second class (perf_event
and perf_event_uncore) that DOES need the thread structure to
successfully init_component(). This required a change to
_papi_hwi_init_global(), to add an argument to distinguish which
class it should initialize.
Thu Aug 13 01:51:28 2020 -0700 Ondrej Sykora <ondrasej@google.com>
* src/libpfm4/lib/events/s390x_cpumf_events.h,
src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_s390x_perf_event.c,
src/libpfm4/perf_examples/Makefile: Update libpfm4, to be current
with the following commit:
--------------------------------------------------------------
commit 437628ebe58edd6cff3e493a7925f66e3a016b76 make rtop build
conditional on ncurses.h present This avoids build problems on
systems where ncurses development package is not installed.
commit 2293ceb3ad9d2ed0c63f85fc07cc30b278ee4eda
lib/events/s390x_cpumf_events.h: Change counter name DFLT_CCERROR
on s390 Change the counter name DLFT_CCERROR to DLFT_CCFINISH on
IBM z15. This counter counts completed DEFLATE instructions with
exit code 0, 1 or 2. Since exit code 0 means success and exit code
1 or 2 indicate errors, change the counter name to avoid confusion.
This counter is incremented each time the DEFLATE instruction
completed regardless if an error was detected or not. This change
is in sync with kernel commit 3d3af181d370 ("s390/cpum_cf,perf:
change DFLT_CCERROR counter name") commit
30adc677603b28c6d9eb311de7298fa4fea26eed
lib/pfmlib_s390x_perf_event.c: Fix perf attr.type event number for
s390 The s390 Performance Measurement counter facility does not
have a fixed type number anymore. This was caused by linux kernel
commits commit 66d258c5b048 ("perf/core: Optimize
perf_init_event()") and its necessary follow on commit commit
6a82e23f45fe ("s390/cpumf: Adjust registration of s390 PMU device
drivers") Now read out the current type number from a sysfs file
named /sys/devices/cpum_cf/type. If it does not exist there is no
CPU-MF counter facility installed or activated, which has been
checked before. commit b1651ff3c5eed6289db9545d080d8d28bccfdbe4
Add a custom implementation of strsep(). This is required to build
the library on platforms where strsep() is not available, e.g. on
Windows via MinGW.
2020-08-25 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Implement cumulative counters (as
per PAPI specification) for cuda events and metrics. It includes
two #define controlled diagnostics that may prove necessary on
other models of GPUs. 'Produce_Event_Report' will print (to stderr)
all the events discovered, and 'Expose_Unenumerated_Events' will
add as PAPI events (beginning 'cuda:::unenum_event:0x...') those
events used by cuda metrics that are not reported by nvidia's event
enumeration routines. These are explained further in code comments.
2020-08-21 William Cohen <wcohen@redhat.com>
* src/Makefile.inc: Makefile to generate papi-x.y.z.tar.gz directly
from git repo SystemTap has a make rule to generate a tarball
directly from the git repository. This make rule has proved useful
for quickly producing Fedora rawhide rpms with a snapshot of what
is currently git repository. This patch adds a similar make rule
to PAPI.
Wed Aug 12 15:23:27 2020 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/amd64_events_fam17h_zen1.h: Update libpfm4,
to be current with the following commit:
--------------------------------------------------------------
commit e162519d26d313860a9e69889bcc67406f92edc9 fix duplicate
event code on AMD Fam17h Zen1 Removed
DISPATCH_RESOURCE_STALL_CYCLES_0 which is not an AMD Fam17h event
but rather a Zen2 event with the same event code. Reported-by:
Kaufmann, Steve <steven.kaufmann@hpe.com> Tested on Zen1, Castaldo.
Fri Jun 19 15:07:01 2020 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/docs/man3/libpfm_arm_neoverse_n1.3,
src/libpfm4/include/perfmon/pfmlib.h, src/libpfm4/lib/Makefile,
src/libpfm4/lib/events/amd64_events_fam17h_zen1.h,
src/libpfm4/lib/events/arm_neoverse_n1_events.h,
src/libpfm4/lib/pfmlib_arm_armv8.c,
src/libpfm4/lib/pfmlib_common.c, src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/tests/validate_arm64.c: Update libpfm4, to be current
with the following commits:
--------------------------------------------------------------
commit 2c3d94eb306e52a48fe881c8c5d68fd8849bccc0 clean INC_ARM in
lib Makefile Had duplicated INC_ARM= definitions. Some includes
were missing from INC_ARM64. commit
286bf87042469524098a3aa65485f2eef395c3d5 enable priv level
filtering on ARMv8 ARMv8 core PMU supports privilege level
filtering but this was missing from the definitions all of ARMv8
PMUs, therefore it was ignored during perf_events encoding. This
patch fixes the problem by initializingi the .supported_plm field
properly. commit 7fa9131274d450581aa98e6ee662a19f20ff3381 Enable
ARM Neoverse N1 core PMU This patch enabled ARM Neoverse N1 core
PMU support. Event table based on: https://static.docs.arm.com/1006
16/0301/neoverse_n1_trm_100616_0301_01_en.pdf commit
ea9752f3fee76798010093c2f35cbf719980997d more updates to AMD
Fam17h Zen1 event table Added: - DYNAMIC_INDIRECT_PREDICTIONS -
DECODER_OVERRIDES_PREDICTION Reported-by: Emmanuel Oseret
<emmanuel.oseret@uvsq.fr> commit
5a623727cf7111afd09df2cdb0ff4b294d31efa7 update AMD Fam17h Zen2
event table Added: - FP_DISPATCH_FAULT -
DATA_CACHE_REFILLS_FROM_SYSTEM Fixed typos in umask for
SOFTWARE_PREFETCH_DATA_CACHE_FILLS which are shared with
DATA_CACHE_REFILLS_FROM_SYSTEM. Reported-by: Steve Kaufmann
<steven.kaufmann@hpe.com>
2020-07-24 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/README.md: Added an extra HSA_TOOLS_LIB export
that is required to read counters.
2020-07-23 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/high-level/papi_hl.c: Revised previous push. Only nvml events
are automatically saved as instantaneous values.
* src/high-level/papi_hl.c: Some events like power, temperature or
all nvml events are always considered instantaneous.
2020-07-17 Anthony <adanalis@icl.utk.edu>
* src/papi_events.csv: Separated the cache preset events of AMD Zen1
and Zen2 and added some more.
2020-07-17 Frank Winkler <frankbook@franks-air.localdomain>
* src/configure, src/configure.in: Revised configure script. 1)
Changed "--with-tests" option. The user can now disable all tests
using "--with-tests=no" or "--without-tests". MPI tests are
included in "--with-tests". 2) Aligned help text for a better
output format.
2020-07-14 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/tests/ROCM_SA_Makefile,
src/components/rocm/tests/rocm_failure_demo.cpp,
src/components/rocm/tests/rocm_standalone.cpp: Added two utilities
that perform event reading for AMD GPUs without any use of the PAPI
interface. To prove that PAPI is not the problem when events are
not working correctly.
2020-07-03 Frank Winkler <frankbook@franks-air.localdomain>
* src/components/cuda/README.md, src/components/nvml/README.md: Added
instructions how to find the correct paths of all required shared
libraries at runtime.
2020-06-24 Steve Kaufmann <steven.kaufmann@hpe.com>
* src/papi_events.csv: Added PAPI preset support for Fujitsu A64FX.
Sat Jun 13 00:39:58 2020 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/amd64_events_fam17h_zen2.h: commit
5a623727cf7111afd09df2cdb0ff4b294d31efa7 update AMD Fam17h Zen2
event table Added: - FP_DISPATCH_FAULT -
DATA_CACHE_REFILLS_FROM_SYSTEM Fixed typos in umask for
SOFTWARE_PREFETCH_DATA_CACHE_FILLS which are shared with
DATA_CACHE_REFILLS_FROM_SYSTEM. Reported-by: Steve Kaufmann
<steven.kaufmann@hpe.com> commit
17e622e9539e1f8faf3c0c27889963a537e95537 add L2_PREFETCH_MISS_L3
for AMD Fam17h Zen2 Add missing L2_PREFETCH_MISS_L3 event for AMD
Fam17h Zen2. Reported-by: Emmanuel Oseret
<emmanuel.oseret@uvsq.fr>
2020-06-23 Frank Winkler <frank.winkler@tu-dresden.de>
* src/components/sde/README.md: README.md edited online with
Bitbucket
2020-06-18 Heike Jagode <jagode@icl.utk.edu>
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
2020-06-18 Frank Winkler <frank.winkler@tu-dresden.de>
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
2020-06-12 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm_smi/Rules.rocm_smi: Added an include directory
to the Rules file, to fix a coding error on including a new file,
kfd_ioctl.h. (The #include statement includes the directory
rocm_smi when it should not.)
2020-06-12 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/configure: Generated new configure file with autoconf 2.69 on
saturn.icl.utk.edu.
* src/configure.in: Added rpath and runpath to find libpfm.so and
libpapi.so if not specified via LD_LIBRARY_PATH. The search path at
runtime can be overriden by LD_LIBRARY_PATH.
2020-06-12 Frank Winkler <frank.winkler@tu-dresden.de>
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
Sat May 30 18:08:52 2020 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/amd64_events_fam17h_zen1.h: Update libpfm4,
to be current with the following commit:
--------------------------------------------------------------
commit c99ed181402b21e74744d5f602aceb6a320c7ded update AMD64
Fam17h Zen1 event table Add a few missing events. Thanks to
Emmanuel for tracking them down. Based on AMD Fam17h model 01,08h
B2 PPR version 3.03 Jun 14, 2019 Reported-by: Emmanuel Oseret
<emmanuel.oseret@uvsq.fr> Tested functional on ICL Morphine; AMD64
Fam17h Zen1 machine.
2020-06-03 Heike Jagode <jagode@icl.utk.edu>
* src/papi.h: Bug fix for architectures with more than 40 PMUs (e.g.
KNL has > 40 uncore PMUs). PAPI_PMU_MAX and its static value were
introduced in 2014 (https://bitbucket.org/icl/papi/commits/2a1805ec
ebba1b1789853e0a36af9bd921ef1b9a). The problem was not only that
papi_component_avail didn't list all PMUs, but even worse, that
papi_native_avail did, in fact, list all events, however, if a user
tried to monitor listed events from omitted PMUs, an error was
returned.
2020-05-29 Frank Winkler <frank.winkler@tu-dresden.de>
* src/components/perf_event_uncore/README.md: README.md edited online
with Bitbucket
2020-05-29 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/components/perf_event_uncore/README.md: Added FAQ entry for
component perf_event_uncore.
* src/components/cuda/README.md, src/components/perf_event/README.md,
src/components/perf_event_uncore/README.md,
src/components/powercap/README, src/components/powercap/README.md,
src/components/powercap_ppc/README,
src/components/powercap_ppc/README.md, src/components/rapl/README,
src/components/rapl/README.md, src/components/sde/README,
src/components/sde/README.md, src/components/sensors_ppc/README,
src/components/sensors_ppc/README.md,
src/components/stealtime/README.md, src/components/vmware/README,
src/components/vmware/README.md: New readme files for the
components in markdown format (2/2).
2020-05-29 Frank Winkler <frank.winkler@tu-dresden.de>
* src/components/pcp/README.md: README.md edited online with
Bitbucket
2020-05-28 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm/linux-rocm.c, src/components/rocm_smi/linux-
rocm-smi.c: Improved _init_component() code in rocm, rocm_smi to
populate the disabled reason if library failures are encountered
during initialization. Per Steve Kaufmann request 05/28/2020.
2020-05-28 Frank Winkler <frankbook@franks-air.localdomain>
* src/components/appio/README, src/components/appio/README.md,
src/components/bgpm/README, src/components/bgpm/README.md,
src/components/coretemp/README.md,
src/components/coretemp_freebsd/README,
src/components/coretemp_freebsd/README.md,
src/components/emon/README, src/components/emon/README.md,
src/components/example/README.md,
src/components/host_micpower/README,
src/components/host_micpower/README.md,
src/components/infiniband/README,
src/components/infiniband/README.md, src/components/io/README,
src/components/io/README.md, src/components/libmsr/README.md,
src/components/lmsensors/README.md,
src/components/lustre/README.md, src/components/lustre/linux-
lustre.c, src/components/micpower/README,
src/components/micpower/README.md, src/components/mx/README.md,
src/components/net/README, src/components/net/README.md: New readme
files for 16 components in markdown format.
2020-05-22 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/nvml/tests/Makefile: Removed some leftover
development lines from nvml/tests/Makefile
2020-05-21 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm_smi/Rules.rocm_smi, src/components/rocm_smi
/linux-rocm-smi.c, .../rocm_smi/tests/rocm_command_line.cpp:
Changes to make rocm_smi have its own PAPI_ROCMSMI_ROOT variable,
and given PAPI_ROCM_SMI_LIB as an override environment variable.
* src/components/cuda/README, src/components/cuda/README.md,
src/components/nvml/README, src/components/nvml/README.md,
src/components/pcp/README, src/components/pcp/README.md,
src/components/rocm/README, src/components/rocm/README.md,
src/components/rocm_smi/README, src/components/rocm_smi/README.md:
Changed files to Markup versions, matched templates, for five
components; cuda, nvml, pcp, rocm, rocm_smi.
Mon May 18 09:33:57 2020 -0700 Steve Kaufmann <steven.kaufmann@hpe.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/docs/man3/libpfm_arm_a64fx.3,
src/libpfm4/include/perfmon/pfmlib.h,
src/libpfm4/lib/events/arm_fujitsu_a64fx_events.h,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/pfmlib_arm_armv8.c,
src/libpfm4/lib/pfmlib_common.c, src/libpfm4/lib/pfmlib_priv.h,
src/libpfm4/tests/validate_arm64.c,
src/libpfm4/tests/validate_x86.c: Update libpfm4, to be current
with the following commit:
--------------------------------------------------------------
commit 0cfc35f73e0e39d54ba48c24e663bec93d164211 Enable support for
Fujitsu A64FX core PMU This patch adds support for Fujitsu A64FX
core PMU. This includes ARMv8 generic core events and Fujitsu model
specfic events.
2020-05-15 Frank Winkler <frankbook@franks-air.localdomain>
* src/configure: Generated new configure file with autoconf (2.69) on
saturn.
2020-05-07 Anthony <adanalis@icl.utk.edu>
* src/components/sde/sde.c: Avoid creating a variable for something
that is only used for a debug message. Otherwise we create compiler
warnings when debug is not enabled.
2020-05-07 Frank Winkler <frankbook@franks-air.localdomain>
* src/configure.in, src/utils/papi_native_avail.c: Added CFLAG -DSDE.
2020-04-30 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/configure.in, src/ctests/Makefile.recipies,
src/ctests/Makefile.target.in, src/utils/Makefile,
src/utils/Makefile.target.in, src/utils/papi_native_avail.c: Fixed
static build. - SDE component is disabled - "ctest" shlib is
disabled
Thu Apr 16 15:12:05 2020 +0200 Thomas Richter <tmricht@linux.ibm.com>
* src/libpfm4/lib/events/s390x_cpumf_events.h,
src/libpfm4/lib/pfmlib_s390x_cpumf.c, src/libpfm4/tests/validate.c:
Update libpfm4, to be current with the following commit:
--------------------------------------------------------------
commit 47f0845d81f851e8bee8745b8c4c7ad6f8e03122 s390: Update
counter definition This patch updates the libpfm4 s390 counter
defintions to the latest documentation: SA23-2260-06:The Load-
Program-Paramenter and the CPU-Measurement Facilities, September
2019 https://www.ibm.com/support/pages/sites/default/files/inline-
files/117183_SA23-2260-06.pdf SA23-2261-06:The CPU-Measurement
Facility Extended Counters Definition for z10, z196/z114,
zEC12/zBC12, z13/z13s, z14 and z15, January 2020
https://www.ibm.com/support/pages/sites/default/files/inline-
files/119190_SA23-2261-06.pdf This includes updated counter
description for existing counters and the complete counter
definition for IBM z15. commit
f1aedd4f189814b980763f9db2465a4a9c34bd6e validate: Add flag p to
the getopt list of commandline files The validate program supports
flag -p to test perf events. This option is not listed in the
getopt list.
2020-04-24 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/configure.in: Another test for "--with-static-tools".
* src/configure.in: Fixed configure options for shared and static
builds. 1) --with-static-lib=no (force PAPI to build shared
libraries and tools) 2) --with-shlib-tools (use internal libpfm via
rpath-link)
* release_procedure.txt: Modified instructions for release procedure.
* release_procedure.txt, src/configure: Generated new configure file
with autoconf 2.69 on saturn.
2020-04-19 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/configure.in, src/ctests/Makefile.recipies,
src/ctests/Makefile.target.in: Fixed bug for MPI tests. MPI tests
are disabled if - user specifiy "--with-shared-lib=no" - mpicc is
not using the current $CC compiler
2020-04-17 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Repaired error code and error
reporting on the check for compute capability >= 7.5. An
uninitialized variable.
2020-04-14 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm_smi/linux-rocm-smi.c,
.../rocm_smi/tests/power_monitor_rocm.cpp: Changed component to
handle mis-numbered sensors coming from driver. Cleaned up
commenting in power_monitor_rocm.cpp.
Wed Apr 8 01:02:22 2020 -0700 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/lib/events/intel_skl_events.h: Update libpfm4, to be
current with the following commit:
--------------------------------------------------------------
commit 34164d84bba9794c75b4ce643ad74aad1362e97a fix encoding typos
for OFFCORE_RESPONSE on SKL/SKX/CLX Some of the aliases encodings
were wrong. No impact because only the encoding of the actual umask
is used except when listing umasks.
2020-04-03 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* release_procedure.txt: Added text for bug fix release procedure.
* src/papi.h: Fixed typo.
2020-04-02 Anthony <adanalis@icl.utk.edu>
* .../tests/Created_Counter/Created_Counter_Driver.c,
.../Created_Counter/Lib_With_Created_Counter.c,
.../sde/tests/Created_Counter/Overflow_Driver.c,
src/components/sde/tests/Makefile: Added example that shows how to
implement Created Counters in a library and how to use
PAPI_overflow() to monitor an SDE.
2020-04-01 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/Makefile.inc: Fixed bug in install process. Create BINDIR
before copying the hl python script to BINDIR.
2020-03-30 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/cuda/linux-cuda.c: Changed to report a useful
disabled reason when devices with compute capability >=7.5 are
present; these no longer support the CUPTI interface.
2020-03-24 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* src/components/rocm_smi/tests/ROCM_SMI_Makefile,
.../rocm_smi/tests/power_monitor_rocm.cpp,
src/components/rocm_smi/tests/rocmcap_plot.cpp: New code for power
monitoring, replaces rocmcap_plot.cpp. Extensive new command line
options.
Fri Mar 6 17:32:45 2020 -0800 Stephane Eranian <eranian@gmail.com>
* src/libpfm4/README, src/libpfm4/docs/Makefile,
src/libpfm4/docs/man3/libpfm_intel_icl.3,
src/libpfm4/docs/man3/libpfm_intel_tmt.3,
src/libpfm4/docs/man3/libpfm_perf_event_raw.3,
src/libpfm4/examples/showevtinfo.c,
src/libpfm4/include/perfmon/pfmlib.h, src/libpfm4/lib/Makefile,
src/libpfm4/lib/events/amd64_events_fam17h_zen2.h,
src/libpfm4/lib/events/intel_icl_events.h,
src/libpfm4/lib/events/intel_tmt_events.h,
src/libpfm4/lib/pfmlib_common.c,
src/libpfm4/lib/pfmlib_intel_icl.c,
src/libpfm4/lib/pfmlib_intel_rapl.c,
src/libpfm4/lib/pfmlib_intel_skl.c,
src/libpfm4/lib/pfmlib_intel_tmt.c,
src/libpfm4/lib/pfmlib_intel_x86.c,
src/libpfm4/lib/pfmlib_intel_x86_perf_event.c,
src/libpfm4/lib/pfmlib_intel_x86_priv.h,
src/libpfm4/lib/pfmlib_perf_event.c,
src/libpfm4/lib/pfmlib_perf_event_priv.h,
src/libpfm4/lib/pfmlib_priv.h, src/libpfm4/tests/validate_x86.c:
Update libpfm4, to be current with the following commit:
--------------------------------------------------------------
NOTE: Intel Tremont and IceLake changes have not been tested; due
to lack of hardware at this time. commit
647d1160b6fdd902b2bfe3138522cc09e2d57387 add Intel Icelake core
PMU support This patch adds Intel Icelake core PMU support for all
published SKUs. It is based on the official event table published
at download.01.org version 1.04. commit
5847026aa516dd4c220a5d04ab9e6128eefc19fd add hw_smpl support to
x86 perf_events code Enables support for new hw_smpl attribute to
perf_events x86 code. commit
67e238ef03bcdccd017c1bfc2a0c4d8fe545c442 add perf_events hw_smpl
attribute This patch adds a new attribute to perf_events OS
support. The attribute is called hw_smpl. It enables hardware
sampling on an event. Hardware sampling is CPU specific and
therefore requires CPU specific code. hw_smpl is a variation of
precise sampling. It provides hardware assistance to sample but
does not guarantee precise attribution of samples to code. With
perf_events this is equivalent to setting attr.precise_ip = 1 which
is what this attribute does. This patch only modifies the generic
perf_event code. commit 2ba296e3b1254f2bbaa0c7a3505721f395b53bf8
enable ExtendedPEBS attribute support for Intel X86 This patch
introduces a new Intel X86 specific PMU flag,
INTEL_X86_PMU_FL_EXTPEBS, to indicate that the PMU supports
Extended PEBS. ExtendedPEBS provides the flexibility of the PEBS
hardware assist sampling without guaranteeing the precision of the
sample instruction address. commit
2a6c6b60c4f65f63a300be52382af283a6a537c8 add support_hw_smpl
attribute This patch adds a new event and umask attribute visible
at the API level called support_hw_smpl. This is a boolean
attribute. If set, it means the event or the umask supports
hardware buffer sampling. In other words, the event can be sampled
using hardware-assist buffer instead of basic interrupt-based
sampling. This usually brings lower cost of sampling by amortizing
the PMU interupt over multiple samples. Hardware-assist sampling
does not mean there is no sampling skid. There may be some skid.
Only events supporting precise sampling can be sampled without
skid. Note that oftentimes, precise sampling is achieved by having
a precise event sampled using a hardware-assist buffer. In other
words, event/umask marked as precise usually also have
support_hw_smpl set to true but this is not a requirement. This
patch adds the new attributes in the generic code, the man page,
and the showeventinfo program. Arch-specific enablement is provided
by separate patches. commit
70f9c2d13ee7088be788a399e23f69a5f0524cb4 fix handling of FETHR on
Intel X86 This patch fixes several issues with the handling of the
Precise FRONTEND_RETIRED event on Intel X86 processors which
support it (Skylake and later). First, the FE latency field is not
3 bits but 12. Second, the code was missing locked down capability
for the fe_thres modifier. Some events of the fe_thres hardcoded,
and therefore attempts to force a value should be rejected. Third,
when a umask does not hardcode a fe_thres then the user can pass
one. Note that not all umasks of the event use the fe_thres.
commit 42c1857c7694cec1a4750a340381d49dd84ca8ff add
RETIRED_SSE_AVX_FLOPS event for AMD64 Fam17h Zen2 Was missing from
initial commit. Added as PPR rev 0.54. Note that this event by
itself does not count correctly. It needs large increment support,
which means merging of two consecutive counters. This is handled by
the Linux kernel starting with 5.6-rc4. The library simply encodes
the event as if it was like any other normal event. commit
210b2ef95f33eccb671f2a88a979de5364c94465 fix Intel Tremont OCR
event code In Tremont, the second OCR event has encoding 0x02b7
and not 0x01bb. commit a2909cdfbea45524931ca13035293555a645d2e5
add Intel Tremont core PMU support This patch adds support for the
Intel Tremont core PMU events. Based on Intel snowridgex_v1.06.json
event information released on download.01.org/perfmon/SNR. commit
0f6a3c3308f29699b4f698b5e0983af322d44bdb update RAPL processor
support Added Goldmont, Cannonlake, CometLake, Icelake support.
Based on Linux kernel support. commit
a291613f3cd2d3e3355627674af264210c3fcbe1 enable Intel CometLake
support Identical to Intel Skylake client support.
2020-03-18 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/configure, src/configure.in: Some modifications.
2020-03-17 Frank Winkler <frankbook@Franks-MacBook-Air.local>
* src/configure: Generated configure via autoconf 2.69.
* src/configure.in: Put paranoid check message at the end of
configure.
2020-03-16 Frank Winkler <frankbook@m016.zih.tu-dresden.de>
* src/configure, src/configure.in: Replaced paranoid check error with
warning.
2020-03-14 Frank Winkler <frankbook@franks-air.localdomain>
* src/configure, src/configure.in: Added paranoid check at
configuration.
* src/threads.c: Removed linux condition.
* src/papi_internal.c, src/papi_internal.h, src/threads.c,
src/threads.h: Added several thread identification functions for
PAPI_thread_init (2).
2020-03-13 Frank Winkler <frankbook@m016.zih.tu-dresden.de>
* src/high-level/papi_hl.c, src/papi.c, src/papi_internal.c,
src/papi_internal.h: Added several thread identification functions
for PAPI_thread_init.
2020-03-05 Anthony Castaldo <TonyCastaldo@icl.utk.edu>
* release_procedure.txt: Further clarifications in
release_procedure.txt