SWDEV-419996 - Allow both kernelParams and extra arguments to be set to null
When kernel function expects no parameters no error should be returned if both kernelParams and extra arguments are set to null. Change-Id: I5941bcc400b6fb380e623bdae0233ae3e4f73815
Este commit está contenido en:
@@ -76,12 +76,6 @@ hipError_t ihipGraphAddKernelNode(hip::GraphNode** pGraphNode, hip::Graph* graph
|
||||
return hipErrorInvalidValue;
|
||||
}
|
||||
|
||||
// If neither 'kernelParams' or 'extra' are provided or if both are provided, return error
|
||||
if ((pNodeParams->kernelParams == nullptr && pNodeParams->extra == nullptr) ||
|
||||
(pNodeParams->kernelParams != nullptr && pNodeParams->extra != nullptr)) {
|
||||
return hipErrorInvalidValue;
|
||||
}
|
||||
|
||||
hipError_t status = hip::GraphKernelNode::validateKernelParams(pNodeParams);
|
||||
if (hipSuccess != status) {
|
||||
return status;
|
||||
|
||||
@@ -920,7 +920,7 @@ class GraphKernelNode : public GraphNode {
|
||||
kernelParams_.kernelParams = nullptr;
|
||||
}
|
||||
// Deallocate memory allocated for kernargs passed via 'extra'
|
||||
else {
|
||||
else if (kernelParams_.extra != nullptr) {
|
||||
free(kernelParams_.extra[1]);
|
||||
free(kernelParams_.extra[3]);
|
||||
memset(kernelParams_.extra, 0, 5 * sizeof(kernelParams_.extra[0])); // 5 items
|
||||
|
||||
@@ -234,6 +234,11 @@ hipError_t ihipLaunchKernel_validate(hipFunction_t f, uint32_t globalWorkSizeX,
|
||||
}
|
||||
hip::DeviceFunc* function = hip::DeviceFunc::asFunction(f);
|
||||
amd::Kernel* kernel = function->kernel();
|
||||
const amd::KernelSignature& signature = kernel->signature();
|
||||
if ((signature.numParameters() > 0) && (kernelParams == nullptr) && (extra == nullptr)) {
|
||||
LogPrintfError("%s","At least one of kernelParams or extra Params should be provided");
|
||||
return hipErrorInvalidValue;
|
||||
}
|
||||
if (!kernel->getDeviceKernel(*device)) {
|
||||
return hipErrorInvalidDevice;
|
||||
}
|
||||
@@ -285,7 +290,6 @@ hipError_t ihipLaunchKernel_validate(hipFunction_t f, uint32_t globalWorkSizeX,
|
||||
kernargs = reinterpret_cast<address>(extra[1]);
|
||||
}
|
||||
|
||||
const amd::KernelSignature& signature = kernel->signature();
|
||||
for (size_t i = 0; i < signature.numParameters(); ++i) {
|
||||
const amd::KernelParameterDescriptor& desc = signature.at(i);
|
||||
if (kernelParams == nullptr) {
|
||||
|
||||
Referencia en una nueva incidencia
Block a user