Thyre wrote: The nested `target_data_op` can actually cause issues, as demonstrated with our dumping tool: ``` [0][callback_target_data_op_emi] endpoint = begin | target_task_data->value = 777777777 ((nil)) | target_data->value = 0 (0x76723fc137a0) | *host_op_id = 888000003 (0x76723fc13798) | optype = memset | src_addr = (nil) | src_device_num = -1 | dest_addr = 0x767234200000 | dest_device_num = 0 | bytes = 400 | codeptr_ra = 0x5fc5ca1ca25a [0][callback_target_data_op_emi] endpoint = begin | target_task_data->value = 777777777 ((nil)) | target_data->value = 0 (0x76723fc137a0) | *host_op_id = 888000004 (0x76723fc13798) | optype = transfer_to_device | src_addr = 0x5fc5e51cb5f0 | src_device_num = -1 | dest_addr = 0x767234200000 | dest_device_num = 0 | bytes = 400 | codeptr_ra = 0x5fc5ca1ca25a [0][callback_target_data_op_emi] endpoint = end | target_task_data->value = 777777777 ((nil)) | target_data->value = 0 (0x76723fc137a0) | *host_op_id = 888000004 (0x76723fc13798) | optype = transfer_to_device | src_addr = 0x5fc5e51cb5f0 | src_device_num = -1 | dest_addr = 0x767234200000 | dest_device_num = 0 | bytes = 400 | codeptr_ra = 0x5fc5ca1ca25a [0][callback_target_data_op_emi] endpoint = end | target_task_data->value = 777777777 ((nil)) | target_data->value = 0 (0x76723fc137a0) | *host_op_id = 888000004 (0x76723fc13798) | optype = memset | src_addr = (nil) | src_device_num = -1 | dest_addr = 0x767234200000 | dest_device_num = 0 | bytes = 400 | codeptr_ra = 0x5fc5ca1ca25a ```
The `host_op_id` when exiting `memset` corresponds to the value set by `transfer_to_device` (`888[...]4`). This is incorrect and should be `888[...]3` instead. By quickly glancing at the code, I'm not sure if the runtime is able to handle such nested events at all currently, almost certainly not for `HostOpId`. https://github.com/llvm/llvm-project/pull/194168 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
