- This change enabled multiple independent command queues to execute
concurrently without stalling pipe controls in between
- This change removes L3 flushes between kernels
- Dependencies between commands are resolved via task level mechanism
- Out of order queues are not changing task level between submissions
- In order queues are increasing task level between submissions
- Whenever task level changes there is pipe control with cs stall emitted
between GPGPU_WALKERs
Change-Id: I558653b296424e4775d060df3072e2a50684b715
- Tag should be updated only as a part of epilogue.
- Level change should only emit pipe control with cs stall
Change-Id: I6e04f794641818b0d046523776d3ce87aec9f606
This commit adds support for Debug Assistance Functionality (DAF)
aka "Driver Aubcapture" to debug builds on Windows.
Change-Id: I7e859d32af17a6fcee23868392df6cd1390e4afd
- Fix a data race where setting flush stamp with default value was
setting the flushtamp to initialized state
Change-Id: Ifc6bdd341b5fe2f2cf4e28bbff271b9a90915db5
-Do not inc/dec reference count for flush stamps while used only for
update
-FlushStamp doesn't need to be atomic,replace with atomic bool flag
to prevent usage while uniinitialized
-Clean not needed private new
Change-Id: Idad2b318f988de1e7af7642047c67f931e9772aa
- Some of the paths were made only for ULTs
- Params like mappedPtr were ignored
- Improve confusing method names
- Fix for memory leak in map shared buffer path (not tested code)
Change-Id: I8a69035f1d1c340f2d131a6f8d7e13116e3ddabc
- Instruction heap is currently heavily used as every kernel copies ISA into
it.
- It dries out very fast and each change to new heap requires whole pipeline
drain that prevents concurrency
- Problem is even larger when sip kernel is used as it limits the total heap
size
- In order to maximize heap re-use and to limit the count of pipeline drains
this change introduces new minimal size for instruction heap 512 KB.
Change-Id: Ic54e9ef4448b1d35dab01b084ee1d59b509642cb
For the new Linux/Fedora configuration with introduction of gcc 7.2,
option -Wimplicit-fallthrough is implemented. This option requests a
warning if a switch case falls through into the next case. This was
causing build errors.
For C++17 (and g++ 7 regardless), standard attribute [[fallthrough]]
notifies the compiler that the fallthrough is intentional.
For clang++ 5 (with -std=c++11 or later) and g++ 7, built-in
preprocessor function __has_cpp_attribute(fallthrough) returns true.
Currently, msvc does not have __has_cpp_attribute.
Note: The use of __has_cpp_attribute has been proposed for c++2x and
is advocated by (81-char link broken in two to avoid 80 char hard limit):
https://isocpp.org/std/standing-documents/
sd-6-sg10-feature-test-recommendations
For gcc 7, a comment consisting of "FALLTHROUGH" will accomplish the
same thing with -Wimplicit-fallthrough=<n>, for n <= 4.
The diagnostic:
/opt/src/src/vpg-compute-neo/runtime/mem_obj/image.cpp:146:24: error:
this statement may fall through [-Werror=implicit-fallthrough=]
imageDepth = imageDesc->image_depth;
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/opt/src/src/vpg-compute-neo/runtime/mem_obj/image.cpp:148:9: note: here
case CL_MEM_OBJECT_IMAGE2D:
^~~~
Change-Id: I604700a23b09c8bf22baf5614700a8b76dbe4cdd
Signed-off-by: Dale Stimson <dale.b.stimson@intel.com>
- In various scenarios code was not programming the max heap size correctly
- It was possible for SSH to overcome the limit
- Size was programmed smaller then it really was, which resulted in smaller
reuse, which led to SBA reprogramming which led to lower performance in ooq
scenarios
- This change fixes the heap size programming by always utilizing full
allocation size and always limiting SSH at proper value
Change-Id: Ib703d2b0709ed8227a293def3a454bf1bb516dfd
For the new Linux/Fedora configuration with introduction of gcc 7.2,
compilation of this file issues a new warning due to the correct
diagnosis of an ambiguous 'else'. As warnings are being treated as
errors, this aborts the build.
The diagnostic:
vpg-compute-neo/unit_tests/elflib/elflib_tests.cpp:123:12:
error: suggest explicit braces to avoid ambiguous 'else'
[-Werror=dangling-else]
if (nonfailingAllocation == failureIndex)
^
Diagnosis: The diagnostic suggested that this:
if (nonfailingAllocation == failureIndex)
ASSERT_NE(nullptr, pWriter);
should be changed to:
if (nonfailingAllocation == failureIndex) {
ASSERT_NE(nullptr, pWriter);
}
This is a valid suggestion. The same is true for EXPECT_EQ.
Pick the files in repository
ssh://gerrit-gfx.intel.com:29418/mirrors/github/google/googletest
for tracing the definition. (There are many versions of gtest.h under
the ufo tree).
Starting in file include/gtest/gtest.h, the definition of ASSERT_NE can
be traced back towards its origin as follows:
ASSERT_NE include/gtest/gtest.h
GTEST_ASSERT_NE include/gtest/gtest.h
ASSERT_PRED_FORMAT2 include/gtest/gtest_pred_impl.h
GTEST_PRED_FORMAT2_ include/gtest/gtest_pred_impl.h
GTEST_ASSERT_ include/gtest/gtest_pred_impl.h
where GTEST_ASSERT_ indeed *should* be enclosed in braces.
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (const ::testing::AssertionResult gtest_ar = (expression)) \
; \
else \
on_failure(gtest_ar.failure_message())
The correct fix would be to place the braces in the macro definition.
However, as file gtest.h comes from Google, and as there are 37
different versions of it in the source tree, this workaround will
address the macro invocations. Should it be desirable, it is left
to others to correct gtest.h and friends.
Change-Id: I870d38ba623fc7564f894c7b1ea7512b74244ee2
Signed-off-by: Dale Stimson <dale.b.stimson@intel.com>