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


[ROCm/clr commit: 315082e554]
Bu işleme şunda yer alıyor:
Ioannis Assiouras
2023-08-31 15:55:58 +01:00
ebeveyn 5d9912f48b
işleme a0ee7e2784
3 değiştirilmiş dosya ile 6 ekleme ve 8 silme
-6
Dosyayı Görüntüle
@@ -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;
+1 -1
Dosyayı Görüntüle
@@ -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
+5 -1
Dosyayı Görüntüle
@@ -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) {