import hipdnn import torch def build_soft_margin_loss_graph( hipdnn_handle, torch_tensor_input, torch_tensor_target, hipdnn_data_type ): graph = hipdnn.pygraph( handle=hipdnn_handle, io_data_type=hipdnn_data_type, intermediate_data_type=hipdnn.data_type.FLOAT, compute_data_type=hipdnn.data_type.FLOAT, name="soft_margin_loss_forward", ) hipdnn_tensor_input = graph.tensor_like(torch_tensor_input) hipdnn_tensor_target = graph.tensor_like(torch_tensor_target) hipdnn_tensor_output = graph.soft_margin_loss( input=hipdnn_tensor_input, target=hipdnn_tensor_target, reduction=hipdnn.reduction_mode.AVG, name="soft_margin_loss", ) hipdnn_tensor_output.set_output(True) graph.build(hipdnn_handle) return (graph, hipdnn_tensor_input, hipdnn_tensor_target, hipdnn_tensor_output) if __name__ == "__main__": batch, num_classes = 16, 10 hipdnn_data_type = hipdnn.data_type.HALF torch_data_type = torch.float16 torch_tensor_input = torch.rand(batch, num_classes, dtype=torch_data_type, device="cuda") torch_tensor_target = torch.rand(batch, num_classes, dtype=torch_data_type, device="cuda") hipdnn_handle = hipdnn.create_handle() graph, hipdnn_tensor_input, hipdnn_tensor_target, hipdnn_tensor_output = ( build_soft_margin_loss_graph( hipdnn_handle, torch_tensor_input, torch_tensor_target, hipdnn_data_type, ) ) torch_tensor_output = torch.empty(1, dtype=torch_data_type, device="cuda") variant_pack = { hipdnn_tensor_input: torch_tensor_input.data_ptr(), hipdnn_tensor_target: torch_tensor_target.data_ptr(), hipdnn_tensor_output: torch_tensor_output.data_ptr(), } workspace = torch.empty(graph.get_workspace_size(), dtype=torch.uint8, device="cuda") graph.exec(variant_pack=variant_pack, workspace=workspace.data_ptr()) print("soft_margin_loss graph execution complete.")