mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Print ocloc options from file on fail if quiet
Currently if ocloc fails and options are read from file, no information about them will be printed or logged if -q is passed. With this change, ocloc will print options read from file on compilation or initialization error. Related-To: NEO-6002 Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
f1a1280549
commit
df2e31dbb0
@ -459,6 +459,7 @@ set(TEST_KERNEL_PRINTF_internal_options_gen9lp
|
||||
|
||||
file(GLOB_RECURSE TEST_KERNELS test_files/*.cl)
|
||||
list(REMOVE_ITEM TEST_KERNELS "${CMAKE_CURRENT_SOURCE_DIR}/test_files/shouldfail.cl")
|
||||
list(REMOVE_ITEM TEST_KERNELS "${CMAKE_CURRENT_SOURCE_DIR}/test_files/valid_kernel.cl")
|
||||
list(REMOVE_ITEM TEST_KERNELS "${CMAKE_CURRENT_SOURCE_DIR}/test_files/simple_block_kernel.cl")
|
||||
list(REMOVE_ITEM TEST_KERNELS "${CMAKE_CURRENT_SOURCE_DIR}/test_files/simple_nonuniform.cl")
|
||||
list(REMOVE_ITEM TEST_KERNELS "${CMAKE_CURRENT_SOURCE_DIR}/test_files/stateless_kernel.cl")
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "shared/offline_compiler/source/utilities/get_git_version_info.h"
|
||||
#include "shared/source/device_binary_format/elf/elf_decoder.h"
|
||||
#include "shared/source/device_binary_format/elf/ocl_elf.h"
|
||||
#include "shared/source/helpers/file_io.h"
|
||||
|
||||
#include "environment.h"
|
||||
#include "gtest/gtest.h"
|
||||
@ -182,7 +183,7 @@ TEST(OclocApiTests, WhenArgsWithMissingFileAreGivenThenErrorMessageIsProduced) {
|
||||
EXPECT_NE(std::string::npos, output.find("Command was: ocloc -q -file test_files/IDoNotExist.cl -device "s + argv[5]));
|
||||
}
|
||||
|
||||
TEST(OfflineCompilerTest, givenInputOptionsAndInternalOptionsWhenCmdlineIsPrintedThenBothAreInQuotes) {
|
||||
TEST(OclocApiTests, givenInputOptionsAndInternalOptionsWhenCmdlineIsPrintedThenBothAreInQuotes) {
|
||||
const char *argv[] = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
@ -208,7 +209,7 @@ TEST(OfflineCompilerTest, givenInputOptionsAndInternalOptionsWhenCmdlineIsPrinte
|
||||
EXPECT_EQ(quotesCount, 4u);
|
||||
}
|
||||
|
||||
TEST(OfflineCompilerTest, givenInputOptionsCalledOptionsWhenCmdlineIsPrintedThenQuotesAreCorrect) {
|
||||
TEST(OclocApiTests, givenInputOptionsCalledOptionsWhenCmdlineIsPrintedThenQuotesAreCorrect) {
|
||||
const char *argv[] = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
@ -234,6 +235,61 @@ TEST(OfflineCompilerTest, givenInputOptionsCalledOptionsWhenCmdlineIsPrintedThen
|
||||
EXPECT_EQ(quotesCount, 4u);
|
||||
}
|
||||
|
||||
TEST(OclocApiTests, givenInvalidInputOptionsAndInternalOptionsFilesWhenCmdlineIsPrintedThenTheyArePrinted) {
|
||||
ASSERT_TRUE(fileExists("test_files/shouldfail.cl"));
|
||||
ASSERT_TRUE(fileExists("test_files/shouldfail_options.txt"));
|
||||
ASSERT_TRUE(fileExists("test_files/shouldfail_internal_options.txt"));
|
||||
|
||||
const char *argv[] = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-file",
|
||||
"test_files/shouldfail.cl",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
unsigned int argc = sizeof(argv) / sizeof(const char *);
|
||||
|
||||
testing::internal::CaptureStdout();
|
||||
int retVal = oclocInvoke(argc, argv,
|
||||
0, nullptr, nullptr, nullptr,
|
||||
0, nullptr, nullptr, nullptr,
|
||||
nullptr, nullptr, nullptr, nullptr);
|
||||
std::string output = testing::internal::GetCapturedStdout();
|
||||
EXPECT_NE(retVal, NEO::OfflineCompiler::ErrorCode::SUCCESS);
|
||||
|
||||
EXPECT_TRUE(output.find("Compiling options read from file were:\n"
|
||||
"-shouldfailOptions") != std::string::npos);
|
||||
|
||||
EXPECT_TRUE(output.find("Internal options read from file were:\n"
|
||||
"-shouldfailInternalOptions") != std::string::npos);
|
||||
}
|
||||
|
||||
TEST(OclocApiTests, givenInvalidOclocOptionsFileWhenCmdlineIsPrintedThenTheyArePrinted) {
|
||||
ASSERT_TRUE(fileExists("test_files/valid_kernel.cl"));
|
||||
ASSERT_TRUE(fileExists("test_files/valid_kernel_ocloc_options.txt"));
|
||||
|
||||
const char *argv[] = {
|
||||
"ocloc",
|
||||
"-q",
|
||||
"-file",
|
||||
"test_files/valid_kernel.cl",
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
unsigned int argc = sizeof(argv) / sizeof(const char *);
|
||||
|
||||
testing::internal::CaptureStdout();
|
||||
int retVal = oclocInvoke(argc, argv,
|
||||
0, nullptr, nullptr, nullptr,
|
||||
0, nullptr, nullptr, nullptr,
|
||||
nullptr, nullptr, nullptr, nullptr);
|
||||
std::string output = testing::internal::GetCapturedStdout();
|
||||
EXPECT_NE(retVal, NEO::OfflineCompiler::ErrorCode::SUCCESS);
|
||||
|
||||
EXPECT_TRUE(output.find("Failed with ocloc options from file:\n"
|
||||
"-invalid_ocloc_option") != std::string::npos);
|
||||
EXPECT_FALSE(output.find("Building with ocloc options:") != std::string::npos);
|
||||
}
|
||||
|
||||
TEST(OclocApiTests, GivenIncludeHeadersWhenCompilingThenPassesToFclHeadersPackedAsElf) {
|
||||
auto prevFclDebugVars = NEO::getFclDebugVars();
|
||||
auto debugVars = prevFclDebugVars;
|
||||
|
@ -1505,11 +1505,15 @@ TEST(OfflineCompilerTest, givenInputOptionsAndInternalOptionsFilesWhenOfflineCom
|
||||
auto &internalOptions = mockOfflineCompiler->internalOptions;
|
||||
EXPECT_STREQ(options.c_str(), "-shouldfailOptions");
|
||||
EXPECT_TRUE(internalOptions.find("-shouldfailInternalOptions") != std::string::npos);
|
||||
EXPECT_TRUE(mockOfflineCompiler->getOptionsReadFromFile().find("-shouldfailOptions") != std::string::npos);
|
||||
EXPECT_TRUE(mockOfflineCompiler->getInternalOptionsReadFromFile().find("-shouldfailInternalOptions") != std::string::npos);
|
||||
|
||||
mockOfflineCompiler->build();
|
||||
|
||||
EXPECT_STREQ(options.c_str(), "-shouldfailOptions");
|
||||
EXPECT_TRUE(internalOptions.find("-shouldfailInternalOptions") != std::string::npos);
|
||||
EXPECT_TRUE(mockOfflineCompiler->getOptionsReadFromFile().find("-shouldfailOptions") != std::string::npos);
|
||||
EXPECT_TRUE(mockOfflineCompiler->getInternalOptionsReadFromFile().find("-shouldfailInternalOptions") != std::string::npos);
|
||||
}
|
||||
|
||||
TEST(OfflineCompilerTest, givenInputOptionsFileWithSpecialCharsWhenOfflineCompilerIsInitializedThenCorrectOptionsAreSet) {
|
||||
|
12
opencl/test/unit_test/test_files/valid_kernel.cl
Normal file
12
opencl/test/unit_test/test_files/valid_kernel.cl
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
__kernel void CopyBuffer(__global unsigned int *src, __global unsigned int *dst) {
|
||||
int id = (int)get_global_id(0);
|
||||
dst[id] = lgamma((float)src[id]);
|
||||
dst[id] = src[id];
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
-invalid_ocloc_option
|
Reference in New Issue
Block a user