Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save benvanik/52606a994282548f20383584e52ad6c0 to your computer and use it in GitHub Desktop.

Select an option

Save benvanik/52606a994282548f20383584e52ad6c0 to your computer and use it in GitHub Desktop.
Loom benchmark compile_report example: shared_memory_tile_reverse
{
"benchmark": "bench_shared_memory_tile_reverse",
"case": "case_shared_memory_tile_reverse",
"status": "ok",
"sample_compilation": "once",
"sample_ordinal": 0,
"compile_report_path": "bundle/compile_reports/shared_memory_tile_reverse_compile_report.json",
"artifact_manifest_path": "bundle/artifact_manifests/shared_memory_tile_reverse_artifact_manifest.json",
"target_artifact_path": "bundle/target_artifacts/shared_memory_tile_reverse_target.elf",
"target_listing_path": "bundle/target_listings/shared_memory_tile_reverse_target_listing.amdgpu-assembly",
"hal_executable_path": "bundle/hal_executables/shared_memory_tile_reverse_hal_executable.hal",
"measure": "dispatch_complete",
"warmup_iterations": 0,
"iterations": 1,
"samples_per_iteration": 1,
"correctness_sample_count": 1,
"correctness_failed_sample_count": 0,
"benchmark_failed_sample_count": 0,
"logical_operations_per_batch": 1,
"physical_dispatches_per_batch": 1,
"physical_dispatches_per_logical_operation": 1,
"warmup_batch_count": 0,
"warmup_duration_ns": 0,
"measured_batch_count": 1,
"measured_logical_operation_count": 1,
"measured_physical_dispatch_count": 1,
"measured_duration_ns": 41603,
"mean_physical_dispatch_duration_ns": 41603.000,
"stop_reason": "stable",
"timing_interpretation": {
"score": "operation_timing_ns",
"score_unit": "logical_operation",
"warnings": [
"short_measured_duration",
"single_logical_operation_batch",
"low_physical_dispatch_sample_count"
]
},
"batch_timing_ns": {
"count": 1,
"total": 41603,
"min": 41603,
"max": 41603,
"mean": 41603.000,
"p50": 41603,
"p90": 41603,
"p90_to_p50_delta_ppm": 0
},
"operation_timing_ns": {
"count": 1,
"total": 41603,
"min": 41603,
"max": 41603,
"mean": 41603.000,
"p50": 41603,
"p90": 41603,
"p90_to_p50_delta_ppm": 0
},
"data_cache": {
"validity": "check_ops",
"cache_policy": "binding_ring",
"binding_count": 2,
"binding_ring_count": 1,
"command_buffer_ring_count": 1,
"dispatches_per_batch": 1,
"requested_min_ring_bytes": 33554432,
"binding_set_bytes": 512,
"binding_ring_bytes": 512,
"hot_reuse": true
},
"profile": {
"requested": false,
"executed": false,
"flags": 0,
"flag_names": [],
"data_families": 0,
"data_family_names": [],
"row_count": 0,
"captured_row_count": 0,
"truncated_row_count": 0,
"dropped_record_count": 0,
"rows": []
},
"compile_report": {
"artifact_kind": "hal-executable",
"status_code": 0,
"status": "OK",
"detail_flags": 4031,
"module": null,
"function": "shared_memory_tile_reverse",
"backend": "amdgpu-hal",
"target_family": "AMDGPU",
"target_key": "gfx11-generic",
"target_bundle": "amdgpu-rdna3",
"target_snapshot": "amdgpu-rdna3-low",
"target_export": "shared_memory_tile_reverse",
"target_export_symbol": null,
"target_config": "amdgpu.rdna3.core",
"lowered": "shared_memory_tile_reverse",
"executable_format": "amdgcn-amd-amdhsa--gfx11-generic",
"artifact_size": 9200,
"entries": {
"count": 1,
"rows": [
{
"index": 0,
"function": "shared_memory_tile_reverse",
"source_function": "shared_memory_tile_reverse",
"target_bundle": "amdgpu-rdna3",
"target_snapshot": "amdgpu-rdna3-low",
"target_export": "shared_memory_tile_reverse",
"target_export_symbol": null,
"target_config": "amdgpu.rdna3.core",
"detail_flags": 830,
"schedule_node_count": 17,
"scheduled_node_count": 17,
"schedule_dependency_count": 57,
"schedule_resource_use_count": 11,
"schedule_hazard_gap_count": 0,
"schedule_model_summary_count": 7,
"register_pressure_summary_count": 2,
"register_pressure_peak_live_units": 6,
"allocation_assignment_count": 12,
"allocation_spill_count": 0,
"allocation_spill_plan_count": 0,
"allocation_coalesced_copy_count": 0,
"allocation_materialized_copy_count": 0,
"move_causes": {
"kind_count": 1,
"packet_count": 1,
"unit_count": 1,
"causes": [
{
"cause": "constant_materialization",
"packet_count": 1,
"unit_count": 1
}
]
},
"instruction_count": 23,
"code_byte_count": 92,
"code_storage_byte_count": 92,
"private_memory_bytes": 0,
"local_memory_bytes": 256,
"pressure_row_count": 2,
"spill_row_count": 0,
"static_instruction_mix": {
"descriptor_count": 11,
"unknown_count": 0,
"scalar_alu_count": 0,
"vector_alu_count": 5,
"matrix_count": 0,
"mfma_count": 0,
"wmma_count": 0,
"dot_count": 0,
"global_memory_count": 2,
"local_memory_count": 2,
"scalar_memory_count": 1,
"generic_memory_count": 3,
"atomic_count": 0,
"branch_count": 0,
"barrier_count": 1,
"control_count": 1,
"conversion_count": 0,
"cache_count": 0,
"register_move_count": 0
}
}
]
},
"schedule": {
"node_count": 17,
"scheduled_node_count": 17,
"dependency_count": 57,
"resource_use_count": 11,
"hazard_gap_count": 0,
"model_summary_count": 7,
"register_pressure_summary_count": 2,
"register_pressure_peak_live_units": 6
},
"static_instruction_mix": {
"descriptor_count": 11,
"unknown_count": 0,
"scalar_alu_count": 0,
"vector_alu_count": 5,
"matrix_count": 0,
"mfma_count": 0,
"wmma_count": 0,
"dot_count": 0,
"global_memory_count": 2,
"local_memory_count": 2,
"scalar_memory_count": 1,
"generic_memory_count": 3,
"atomic_count": 0,
"branch_count": 0,
"barrier_count": 1,
"control_count": 1,
"conversion_count": 0,
"cache_count": 0,
"register_move_count": 0
},
"allocation": {
"assignment_count": 12,
"spill_count": 0,
"spill_plan_count": 0,
"coalesced_copy_count": 0,
"materialized_copy_count": 0
},
"move_causes": {
"kind_count": 1,
"packet_count": 1,
"unit_count": 1,
"causes": [
{
"cause": "constant_materialization",
"packet_count": 1,
"unit_count": 1
}
]
},
"emission": {
"instruction_count": 23,
"code_byte_count": 92,
"code_storage_byte_count": 92
},
"memory": {
"private_bytes": 0,
"local_bytes": 256
},
"pressure_rows": {
"count": 2,
"rows": [
{
"index": 0,
"function": "shared_memory_tile_reverse",
"register_class": null,
"type_kind": 12,
"type": "register",
"element_type": 0,
"element": "index",
"peak_live_units": 6,
"peak_live_values": 2,
"peak_point": 10,
"peak_block": "<anonymous>",
"peak_operation": "<block-boundary>"
},
{
"index": 1,
"function": "shared_memory_tile_reverse",
"register_class": null,
"type_kind": 12,
"type": "register",
"element_type": 0,
"element": "index",
"peak_live_units": 4,
"peak_live_values": 4,
"peak_point": 11,
"peak_block": "<anonymous>",
"peak_operation": "<block-boundary>"
}
]
},
"source_low": {
"selected_op_count": 14,
"emitted_op_count": 14,
"count": 14,
"memory_count": 2,
"rows": [
{
"index": 0,
"function": "shared_memory_tile_reverse",
"source_op": "index.constant",
"source_op_kind": 3840,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3840,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 0
},
{
"index": 1,
"function": "shared_memory_tile_reverse",
"source_op": "kernel.workitem.id",
"source_op_kind": 4112,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 4112,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 0
},
{
"index": 2,
"function": "shared_memory_tile_reverse",
"source_op": "index.constant",
"source_op_kind": 3840,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3840,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 1
},
{
"index": 3,
"function": "shared_memory_tile_reverse",
"source_op": "index.sub",
"source_op_kind": 3844,
"selection": "rule",
"rule_set_index": 3,
"rule_index": 71,
"plan_id": null,
"plan_key": null,
"descriptor_id": 3404594810116317253,
"emitted_low_op_count": 2
},
{
"index": 4,
"function": "shared_memory_tile_reverse",
"source_op": "index.constant",
"source_op_kind": 3840,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3840,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 0
},
{
"index": 5,
"function": "shared_memory_tile_reverse",
"source_op": "buffer.view",
"source_op_kind": 3077,
"selection": "rule",
"rule_set_index": 1,
"rule_index": 0,
"plan_id": null,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 0
},
{
"index": 6,
"function": "shared_memory_tile_reverse",
"source_op": "buffer.view",
"source_op_kind": 3077,
"selection": "rule",
"rule_set_index": 1,
"rule_index": 0,
"plan_id": null,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 0
},
{
"index": 7,
"function": "shared_memory_tile_reverse",
"source_op": "buffer.alloca",
"source_op_kind": 3072,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3072,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 2
},
{
"index": 8,
"function": "shared_memory_tile_reverse",
"source_op": "buffer.view",
"source_op_kind": 3077,
"selection": "rule",
"rule_set_index": 1,
"rule_index": 0,
"plan_id": null,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 0
},
{
"index": 9,
"function": "shared_memory_tile_reverse",
"source_op": "vector.load",
"source_op_kind": 3605,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3605,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 2
},
{
"index": 10,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3606,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 2
},
{
"index": 11,
"function": "shared_memory_tile_reverse",
"source_op": "kernel.barrier",
"source_op_kind": 4100,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 4100,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 1
},
{
"index": 12,
"function": "shared_memory_tile_reverse",
"source_op": "vector.load",
"source_op_kind": 3605,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3605,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 2
},
{
"index": 13,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"selection": "plan",
"rule_set_index": null,
"rule_index": null,
"plan_id": 3606,
"plan_key": null,
"descriptor_id": 0,
"emitted_low_op_count": 2
}
],
"memory_rows": [
{
"index": 0,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"memory_space": "workgroup",
"operation": "store",
"packet": "amdgpu.ds_write_b32",
"descriptor_id": 1342533278571883152,
"element_bytes": 4,
"vector_lanes": 1,
"dynamic_stride_bytes": 4,
"vector_lane_stride_bytes": 4,
"bank_stride_words": 1,
"bank_conflict_degree": 1,
"bank_conflict_kind": "bank-conflict-free"
},
{
"index": 1,
"function": "shared_memory_tile_reverse",
"source_op": "vector.load",
"source_op_kind": 3605,
"memory_space": "workgroup",
"operation": "load",
"packet": "amdgpu.ds_read_b32",
"descriptor_id": 8241634518095778713,
"element_bytes": 4,
"vector_lanes": 1,
"dynamic_stride_bytes": 4,
"vector_lane_stride_bytes": 4,
"bank_stride_words": 1,
"bank_conflict_degree": 1,
"bank_conflict_kind": "bank-conflict-free"
}
]
},
"target_legalization": {
"legal_op_count": 0,
"rewritten_op_count": 0,
"target_rewritten_op_count": 0,
"reference_rewritten_op_count": 0,
"deferred_op_count": 4,
"invalid_ir_op_count": 0,
"unsupported_op_count": 0,
"unhandled_op_count": 0,
"count": 4,
"rows": [
{
"index": 0,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"target_bundle": "amdgpu-rdna3",
"target_config": "amdgpu.rdna3.core",
"legalizer": "vector",
"legalizer_strategy": "reference",
"mode": "eager",
"policy": "prefer-native",
"action": "deferred",
"legalization_outcome": "deferred",
"contract_outcome": "unhandled",
"binding_index": null,
"case_index": null,
"rule_set_index": null,
"rule_index": null,
"diagnostic_index": null,
"descriptor_id": null,
"source_rejection_bits": 0,
"source_rejection_detail": 0,
"target_rejection_bits": 0,
"missing_feature_bits": 0,
"missing_fact_bits": 0,
"created_op_count": 0,
"erased_op_count": 0
},
{
"index": 1,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"target_bundle": "amdgpu-rdna3",
"target_config": "amdgpu.rdna3.core",
"legalizer": "vector",
"legalizer_strategy": "reference",
"mode": "eager",
"policy": "prefer-native",
"action": "deferred",
"legalization_outcome": "deferred",
"contract_outcome": "unhandled",
"binding_index": null,
"case_index": null,
"rule_set_index": null,
"rule_index": null,
"diagnostic_index": null,
"descriptor_id": null,
"source_rejection_bits": 0,
"source_rejection_detail": 0,
"target_rejection_bits": 0,
"missing_feature_bits": 0,
"missing_fact_bits": 0,
"created_op_count": 0,
"erased_op_count": 0
},
{
"index": 2,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"target_bundle": "amdgpu-rdna3",
"target_config": "amdgpu.rdna3.core",
"legalizer": "vector",
"legalizer_strategy": "reference",
"mode": "eager",
"policy": "prefer-native",
"action": "deferred",
"legalization_outcome": "deferred",
"contract_outcome": "unhandled",
"binding_index": null,
"case_index": null,
"rule_set_index": null,
"rule_index": null,
"diagnostic_index": null,
"descriptor_id": null,
"source_rejection_bits": 0,
"source_rejection_detail": 0,
"target_rejection_bits": 0,
"missing_feature_bits": 0,
"missing_fact_bits": 0,
"created_op_count": 0,
"erased_op_count": 0
},
{
"index": 3,
"function": "shared_memory_tile_reverse",
"source_op": "vector.store",
"source_op_kind": 3606,
"target_bundle": "amdgpu-rdna3",
"target_config": "amdgpu.rdna3.core",
"legalizer": "vector",
"legalizer_strategy": "reference",
"mode": "eager",
"policy": "prefer-native",
"action": "deferred",
"legalization_outcome": "deferred",
"contract_outcome": "unhandled",
"binding_index": null,
"case_index": null,
"rule_set_index": null,
"rule_index": null,
"diagnostic_index": null,
"descriptor_id": null,
"source_rejection_bits": 0,
"source_rejection_detail": 0,
"target_rejection_bits": 0,
"missing_feature_bits": 0,
"missing_fact_bits": 0,
"created_op_count": 0,
"erased_op_count": 0
}
]
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment