| 624 | } |
| 625 | |
| 626 | hipError_t hipExtModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, |
| 627 | uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, |
| 628 | uint32_t localWorkSizeX, uint32_t localWorkSizeY, |
| 629 | uint32_t localWorkSizeZ, size_t sharedMemBytes, |
| 630 | hipStream_t hStream, void** kernelParams, void** extra, |
| 631 | hipEvent_t startEvent, hipEvent_t stopEvent, uint32_t flags) { |
| 632 | HIP_INIT_API(hipExtModuleLaunchKernel, f, globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, |
| 633 | localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, hStream, |
| 634 | kernelParams, extra, startEvent, stopEvent, flags); |
| 635 | |
| 636 | if (!hip::isValid(hStream)) { |
| 637 | HIP_RETURN(hipErrorContextIsDestroyed); |
| 638 | } |
| 639 | CHECK_STREAM_DETACHED_API(hStream); |
| 640 | |
| 641 | int deviceId = hip::Stream::DeviceId(hStream); |
| 642 | const amd::Device* device = g_devices[deviceId]->devices()[0]; |
| 643 | |
| 644 | STREAM_CAPTURE(hipExtModuleLaunchKernel, hStream, f, globalWorkSizeX, globalWorkSizeY, |
| 645 | globalWorkSizeZ, localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, |
| 646 | kernelParams, extra, startEvent, stopEvent, flags); |
| 647 | |
| 648 | amd::LaunchParams launch_params(globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, localWorkSizeX, |
| 649 | localWorkSizeY, localWorkSizeZ, sharedMemBytes, *device, 1, 1, 1, 1, |
| 650 | 1, 1, false); |
| 651 | |
| 652 | if (!launch_params.IsValidConfig() || |
| 653 | launch_params.local_.product() > device->info().maxWorkGroupSize_) { |
| 654 | HIP_RETURN(hipErrorInvalidConfiguration); |
| 655 | } |
| 656 | |
| 657 | if (sharedMemBytes > device->info().localMemSizePerCU_) { |
| 658 | HIP_RETURN(hipErrorInvalidValue); |
| 659 | } |
| 660 | |
| 661 | if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 |
| 662 | || launch_params.global_[2] == 0) { |
| 663 | HIP_RETURN(hipErrorInvalidValue); |
| 664 | } |
| 665 | |
| 666 | if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 |
| 667 | || launch_params.local_[2] == 0) { |
| 668 | HIP_RETURN(hipErrorInvalidValue); |
| 669 | } |
| 670 | |
| 671 | HIP_RETURN(ihipModuleLaunchKernel(f, launch_params, hStream, kernelParams, extra, startEvent, |
| 672 | stopEvent, flags)); |
| 673 | } |
| 674 | |
| 675 | |
| 676 | hipError_t hipHccModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, |
no test coverage detected