From 41fef1c71e63eb46cce6f6d0db3af31b63797170 Mon Sep 17 00:00:00 2001 From: Filip Hazubski Date: Thu, 21 May 2020 13:10:22 +0200 Subject: [PATCH] Enable Opencl 3.0 support on TGLLP Related-To: NEO-4368 Change-Id: I59e015ee28d29eab4aaf8781ac1ffb3a9cde4d09 Signed-off-by: Filip Hazubski --- Jenkinsfile | 2 +- opencl/source/gen12lp/hw_info_tgllp.inl | 2 +- opencl/source/program/program.cpp | 9 ++-- .../gen12lp/test_device_caps_gen12lp.inl | 6 +-- .../test/unit_test/program/program_tests.cpp | 51 +++++-------------- 5 files changed, 20 insertions(+), 50 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ca85c9e055..18e7781114 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ #!groovy dependenciesRevision='2016dec18656a06fbc3608d55f91577f89936522-1414' strategy='EQUAL' -allowedCD=257 +allowedCD=256 allowedF=21 diff --git a/opencl/source/gen12lp/hw_info_tgllp.inl b/opencl/source/gen12lp/hw_info_tgllp.inl index 75f0855b69..6e0687f996 100644 --- a/opencl/source/gen12lp/hw_info_tgllp.inl +++ b/opencl/source/gen12lp/hw_info_tgllp.inl @@ -48,7 +48,7 @@ const RuntimeCapabilityTable TGLLP::capabilityTable{ PreemptionMode::ThreadGroup, // defaultPreemptionMode aub_stream::ENGINE_CCS, // defaultEngineType 0, // maxRenderFrequency - 21, // clVersionSupport + 30, // clVersionSupport CmdServicesMemTraceVersion::DeviceValues::Tgllp, // aubDeviceId 1, // extraQuantityThreadsPerEU 64, // slmSize diff --git a/opencl/source/program/program.cpp b/opencl/source/program/program.cpp index b49bf00188..61a876cd66 100644 --- a/opencl/source/program/program.cpp +++ b/opencl/source/program/program.cpp @@ -60,16 +60,13 @@ Program::Program(ExecutionEnvironment &executionEnvironment, Context *context, b } numDevices = 1; - char paramValue[32] = {}; bool force32BitAddressess = false; if (pClDevice) { - pClDevice->getDeviceInfo(CL_DEVICE_VERSION, 32, paramValue, nullptr); - if (strstr(paramValue, "2.1")) { + auto areOcl21FeaturesEnabled = pClDevice->areOcl21FeaturesEnabled(); + if (areOcl21FeaturesEnabled) { internalOptions = "-ocl-version=210 "; - } else if (strstr(paramValue, "2.0")) { - internalOptions = "-ocl-version=200 "; - } else if (strstr(paramValue, "1.2")) { + } else { internalOptions = "-ocl-version=120 "; } force32BitAddressess = pClDevice->getSharedDeviceInfo().force32BitAddressess; diff --git a/opencl/test/unit_test/gen12lp/test_device_caps_gen12lp.inl b/opencl/test/unit_test/gen12lp/test_device_caps_gen12lp.inl index 592e65e8cf..d9cd62839e 100644 --- a/opencl/test/unit_test/gen12lp/test_device_caps_gen12lp.inl +++ b/opencl/test/unit_test/gen12lp/test_device_caps_gen12lp.inl @@ -14,10 +14,10 @@ using namespace NEO; typedef Test Gen12LpDeviceCaps; -GEN12LPTEST_F(Gen12LpDeviceCaps, reportsOcl21) { +TGLLPTEST_F(Gen12LpDeviceCaps, givenGen12LpDeviceWhenQueryingDeviceInfoThenOcl30IsReported) { const auto &caps = pClDevice->getDeviceInfo(); - EXPECT_STREQ("OpenCL 2.1 NEO ", caps.clVersion); - EXPECT_STREQ("OpenCL C 2.0 ", caps.clCVersion); + EXPECT_STREQ("OpenCL 3.0 NEO ", caps.clVersion); + EXPECT_STREQ("OpenCL C 3.0 ", caps.clCVersion); } TGLLPTEST_F(Gen12LpDeviceCaps, lpSkusDontSupportFP64) { diff --git a/opencl/test/unit_test/program/program_tests.cpp b/opencl/test/unit_test/program/program_tests.cpp index d038c6f6ce..fb31c76d6e 100644 --- a/opencl/test/unit_test/program/program_tests.cpp +++ b/opencl/test/unit_test/program/program_tests.cpp @@ -1555,54 +1555,33 @@ INSTANTIATE_TEST_CASE_P(ProgramFromSourceTests, ::testing::ValuesIn(KernelNames))); TEST_F(ProgramTests, WhenProgramIsCreatedThenCorrectOclVersionIsInOptions) { - auto defaultSetting = DebugManager.flags.DisableStatelessToStatefulOptimization.get(); - + DebugManagerStateRestore restorer; DebugManager.flags.DisableStatelessToStatefulOptimization.set(false); + MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); - char paramValue[32]; - pClDevice->getDeviceInfo(CL_DEVICE_VERSION, 32, paramValue, 0); - if (strstr(paramValue, "2.1")) { + if (pClDevice->areOcl21FeaturesEnabled()) { EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=210")) << program.getInternalOptions(); - } else if (strstr(paramValue, "2.0")) { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=200")) << program.getInternalOptions(); - } else if (strstr(paramValue, "1.2")) { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=120")) << program.getInternalOptions(); } else { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=000")) << program.getInternalOptions(); + EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=120")) << program.getInternalOptions(); } - DebugManager.flags.DisableStatelessToStatefulOptimization.set(defaultSetting); } -TEST_F(ProgramTests, GivenForced20WhenProgramIsCreatedThenOcl20IsInOptions) { - auto defaultVersion = pClDevice->deviceInfo.clVersion; - - pClDevice->deviceInfo.clVersion = "OpenCL 2.0"; +TEST_F(ProgramTests, GivenOcl21FeaturesEnabledWhenProgramIsCreatedThenOcl21IsInOptions) { + pClDevice->ocl21FeaturesEnabled = true; MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); - char paramValue[32]; - pClDevice->getDeviceInfo(CL_DEVICE_VERSION, 32, paramValue, 0); - EXPECT_STREQ("OpenCL 2.0", paramValue); - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=200")); - pClDevice->deviceInfo.clVersion = defaultVersion; + EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=210")); } TEST_F(ProgramTests, GivenStatelessToStatefulIsDisabledWhenProgramIsCreatedThenGreaterThan4gbBuffersRequiredOptionIsSet) { DebugManagerStateRestore restorer; - DebugManager.flags.DisableStatelessToStatefulOptimization.set(true); + MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); - char paramValue[32]; - pClDevice->getDeviceInfo(CL_DEVICE_VERSION, 32, paramValue, 0); - if (strstr(paramValue, "2.1")) { + if (pClDevice->areOcl21FeaturesEnabled()) { EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=210")) << program.getInternalOptions(); EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), NEO::CompilerOptions::greaterThan4gbBuffersRequired)); - } else if (strstr(paramValue, "2.0")) { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=200")) << program.getInternalOptions(); - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), NEO::CompilerOptions::greaterThan4gbBuffersRequired)); - } else if (strstr(paramValue, "1.2")) { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=120")) << program.getInternalOptions(); - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), NEO::CompilerOptions::greaterThan4gbBuffersRequired)); } else { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=000")) << program.getInternalOptions(); + EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=120")) << program.getInternalOptions(); EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), NEO::CompilerOptions::greaterThan4gbBuffersRequired)); } } @@ -1658,16 +1637,10 @@ TEST_F(ProgramTests, GivenForce32BitAddressessWhenProgramIsCreatedThenGreaterTha if (pDevice) { const_cast(&pDevice->getDeviceInfo())->force32BitAddressess = true; MockProgram program(*pDevice->getExecutionEnvironment(), pContext, false, pDevice); - char paramValue[32]; - pClDevice->getDeviceInfo(CL_DEVICE_VERSION, 32, paramValue, 0); - if (strstr(paramValue, "2.1")) { + if (pClDevice->areOcl21FeaturesEnabled()) { EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=210")) << program.getInternalOptions(); - } else if (strstr(paramValue, "2.0")) { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=200")) << program.getInternalOptions(); - } else if (strstr(paramValue, "1.2")) { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=120")) << program.getInternalOptions(); } else { - EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=000")) << program.getInternalOptions(); + EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), "-ocl-version=120")) << program.getInternalOptions(); } if (pDevice->areSharedSystemAllocationsAllowed()) { EXPECT_TRUE(CompilerOptions::contains(program.getInternalOptions(), CompilerOptions::greaterThan4gbBuffersRequired)) << program.getInternalOptions();