Commit Graph

60 Commits

Author SHA1 Message Date
Mrozek, Michal 1602fa5a88 [7/n] Internal 4GB allocator
- rename getBase to getCpuBase
- change some test names accordingly.

Change-Id: I6fb2e4714298250147ea7766a916d7f5d62edc54
2018-03-05 22:16:14 +01:00
Dunajski, Bartosz 1fce275542 Remove forced DC flush and disabled out of order execution for shared objects
Change-Id: I0de86c3d5af488a347e83858f5dddbac2ef53c17
2018-03-05 09:45:18 +01:00
Zdanowicz, Zbigniew 533afe472a Program preemption mode in Interface Descriptor Data
Change-Id: I7fce731d71dd0b6dc8505ebfe45d24c65898a08b
2018-03-05 09:36:53 +01:00
Mateusz Jablonski d1aa5f978d Cmake refactor part 6
Add macro to add all subdirectories
Add macro to create project source tree based on target sources
Small cleanup runtime/CMakeLists.txt

Change-Id: I9b99145c544f648c4c3fe7421752d0c5d9504edf
2018-03-02 00:39:41 +01:00
Mrozek, Michal 3da9df23a9 Flush DC in case shared objects are used.
- Due to use cases where one shared buffer may be mapped to multiple CL
buffers we need to flush DC between enqueues.

Change-Id: I05d7f844afe31d52a0004f5e2e5efa776f9dadbe
2018-02-26 15:51:06 +01:00
Mrozek, Michal 7255b17d6b Move register definition to common header file.
- It is not gen9 specific.
- Remove now obsolete header.

Change-Id: I03e7631c60e4263bcc52dca9f9df19fdba1ed702
2018-02-26 08:33:46 +01:00
Dunajski, Bartosz dd44a87d5f Map/unmap enqueue fixes [6/n]: Support multiple map operations
- Dont make cpu/gpu writes on read-only unmap
- Read/Write on limited map range only
- Overlaps checks for non read-only maps
- Fixed cmd type on returned event

Change-Id: I98ca542e8d369d2426a87279f86cadb0bf3db299
2018-02-23 10:45:06 +01:00
Mrozek, Michal 0825c009cf Fix incorrect profiling handling.
- For context specific timestamps driver needs to use only low part

Change-Id: I579a68d8b3c1c4d5a8b40bf3a526963bea84fd11
2018-02-23 10:04:31 +01:00
Dunajski, Bartosz b4f79e036f Map/unmap enqueue fixes [5/n]: Unify offset calculation
Change-Id: I53eafe89532d43c5cf5139ed3fac0a87619dc7a3
2018-02-21 20:12:52 +01:00
Dunajski, Bartosz f6825252fc Map/unmap enqueue fixes [4/n]: Return slice/row pitch
When queue is blocked on non-blocking call, map operation is added to
waitlist dependencies. Returning slice/row pitch for map image was skipped

Change-Id: I46f97590315e7aee7fbbfbdb615f383cdb666307
2018-02-20 14:30:35 +01:00
Dunajski, Bartosz 1292c3d533 Improve thread arbitration policy programming
Change-Id: Ibd764352e14d1a5112034b1c5a1fc6d6d67ebac0
2018-02-20 11:05:54 +01:00
hjnapiat 5909a6b3d3 Add support for GT-Pin Callbacks [3/n]
Change-Id: Iea4b49efc9a666fde310ece15a9c69686d22f627
2018-02-19 10:43:19 +01:00
mplewka e738e6aa48 Hint for map/unmap when queue is blocked
Change-Id: I8b2c79fac77325e26e2ead663177cef09b17e00b
2018-02-16 15:57:44 +01:00
Zdanowicz, Zbigniew 86bb715b95 HostPtr surface makeResident must be called once
Change-Id: I9cb04e3affdd8b8634466621b50326a088ecdcf9
2018-02-16 11:11:37 +01:00
Dunajski, Bartosz e0ca78ccea Map/unmap enqueue fixes [3/n]: Map params inconsistency
- Introducing MapInfo struct which will be used as container for multiple
  map operations
- Unified mapped offset and size for Buffers and Images
- Fixed incorrect map params for CPU and GPU path
- Missing API level checks


Change-Id: Ib4077c9e2c0c333b131ffd5ccbc4a1404920eb5b
2018-02-16 08:28:29 +01:00
Artur Harasimiuk a95e7c67a3 Instrumentation refactoring
- Tweak naming

Change-Id: I37e6a5c5553a4b0fb6d51891d193cae435f9abe6
2018-02-15 23:58:24 +01:00
Mrozek, Michal 2d0af9d4a4 Make sure that local workgroup size is properly passed for IOH estimation.
Change-Id: I0ad5da4fffd1575f64d44803ce8eb4a6a0ab1532
2018-02-15 07:57:39 +01:00
Zdanowicz, Zbigniew 45dedb37f3 For HostPtr surfaces of enqueue calls use GPU address
Change-Id: I67bf5076d23d43438f5e82c5cb6cbd3b9ed2f152
2018-02-14 15:44:27 +01:00
Dunajski, Bartosz 4f2a05ac88 Map/unmap enqueue fixes [2/n]: CPU operations on limited range
- Curently each non-zerocopy CPU operation on map/unmap make a full copy
  using hostPtr
- This commit adds functionality to select specific range of copy
- Multiple mapping with different size is not supported yet,
  so copy will be made on full range for now. This is for future usage.

Change-Id: I7652e85482ba6fffb2474169447baf9b080dcd1e
2018-02-13 16:29:01 +01:00
Mrozek, Michal d563059c14 Remove redundant code from flushWaitList.
Change-Id: Iab4cb856ce324a785b052b8638ef23aef43c9bc9
2018-02-13 10:40:33 +01:00
Mrozek, Michal b5dab07aa2 Do not allow out of order execution for shared objects.
Change-Id: I2dbbd8f09485bd894774eb2c4548326475a41221
2018-02-12 10:36:23 +01:00
Dunajski, Bartosz 72b78d15ee Map/unmap enqueue fixes [1/n]: Unify Buffer and Image paths
Change-Id: I59bf18072c15367ff6caec5dbdc1350ea2d93281
2018-02-09 17:35:03 +01:00
Mrozek, Michal 6bb83fb95a Do not noop pipe controls if call is returning event on IOQ.
-For in order queue application can have fine grain granularity of completion
-For out of order queue application wants to execute workloads concurrently
-This change disables pipe control nooping for ioq calls when event returned.

Change-Id: Iaeaf677f768f7434b2efa1842b50653ab80777ad
2018-02-09 11:57:44 +01:00
mplewka 4db1e3af6a Check zeroCopy flag for r/w images/buffers
Change-Id: I7047ae8458bdf3528d6014137522a37561d15ab6
2018-02-08 13:55:44 +01:00
Mateusz Jablonski ea021f8d69 Cmake refactor part 1: fix dependencies with including os_inc.h
Remove some not needed includes

Change-Id: I158ad663ccfcec4822e3768df9d05090c5e096f9
2018-02-08 09:40:40 +01:00
Mrozek, Michal d8f2142faa Enable out of order execution for all submissions.
- 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
2018-02-08 08:22:04 +01:00
mplewka 21c1dce943 Enable zero copy for enqueueImage r/w with hints
Change-Id: I6d4379b4bebaca162f859ea790f6a77475f7e94e
2018-02-06 19:00:15 +01:00
Zdunowski, Piotr 1cfe5344fc Enable throttle hints extension.
Change-Id: I996fce8dbc792d77dc85df143ba5c0aa1cad83e5
2018-02-06 17:01:37 +01:00
Mateusz Jablonski b027a82442 Cmake refactor part 2:
Move defining runtime sources into cmake files in subdirectories

Change-Id: Ic83c12fee65e04d19e7c8e1f88b939f03af7fa28
2018-02-05 13:40:46 +00:00
Dunajski, Bartosz 844f956244 Remove redundant/recursive checks in unmap operations
- 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
2018-02-02 10:36:09 +01:00
Mrozek, Michal e35a066f79 Change the instruction heap size to be at least 512KB.
- 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
2018-02-01 13:10:39 +01:00
Mrozek, Michal 37c7e27276 Fix heap size programming.
- 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
2018-01-31 17:35:32 +01:00
mplewka 377fc8d20b Enable zero copy for enqueueReadBufferRect with hint
Change-Id: I4e7d89edfcff2674e7c163d70ad974d3464bf64f
2018-01-25 13:17:59 +01:00
mplewka 251de14ee6 Enable zero copy for enqueueWriteBufferRect with hint
Change-Id: I411f00b98056307906c02d34e793cefe460735ba
2018-01-25 11:48:10 +01:00
Zdunowski, Piotr 0b6b12ea57 Globally enable priority hints extension.
Change-Id: I9f3b8d3cf1bedb41d9e0622ff514bf76b4518d8c
2018-01-24 20:07:31 +01:00
Mrozek, Michal 274c8084a3 For devices with small HW thread count, limit the available pool of LWS.
Change-Id: Ib3c0fea3e0422dae3bc93b891aab087ad597776e
2018-01-24 14:30:39 +01:00
mplewka 2c2bbbcdbb Add support for zero-copy r/w buffer
Change-Id: Ie9f3f2211d107eb338bd97692d36e9c7d7a0feab
2018-01-22 09:40:51 +01:00
Zdunowski, Piotr 5e7eccefe5 Improve error handling for shared objects.
Change-Id: I86fccb26cbf327b49c1b4992eeb3d25e52d3bced
2018-01-17 21:32:36 +01:00
Chodor, Jaroslaw 044fd1ab81 Fixing IntDescr programing for blocked cmd and MT
Fixing InterfaceDescriptor programming for
blocked commands when MidThread preemption is
enabled
Additionally, fixing couple of tests that block
global preemption enabling in ULTs

Change-Id: I454c9608f8606f23d7446785ac24c7c7d8701ae0
2018-01-17 12:19:07 +01:00
Mrozek, Michal 41f0ac3019 Check if we do not access outside of array.
Change-Id: I3357b745d36398ad52777054f64a7915278c0463
2018-01-17 09:33:57 +01:00
Zdanowicz, Zbigniew 602474f868 Command streamers should use device default engine type
Change-Id: I7286f15ba78001729ea489a43576d96f109d44f0
2018-01-16 22:37:44 +01:00
Artur Harasimiuk 3883f790cc Instrumentation refactoring
Use bool instead of int where it should be.
Tweak naming.
Removed unused members

Change-Id: I468be28d78e9da7c7fa1632e362ed077929fb91a
2018-01-16 16:15:44 +01:00
Mrozek, Michal dd601ff73a Utilize shortened version of optimal HW thread count in nx4 scenarios.
- also clean early return if simd size = 0

Change-Id: I9b01df091ab6dd6a3066d1a8762c7fb1530c2804
2018-01-16 14:47:07 +01:00
Mrozek, Michal ee250be942 Fix num thread per slice computation.
- It should use thread count not EU count.
- change variable name to reflect that we work on sublices.
- fix test description, add missing test
- change hasBarrier variable to be boolean

Change-Id: I627bdf17b661d2f9b5eb3d8cd6ca53eba5d46b81
2018-01-16 13:06:31 +01:00
Mrozek, Michal af77720f9c Fix resource destruction scheme on device closure.
- Call waitForTaskCountAndCleanAllocationList with latest flushed task count
to reflect what was actually sent to HW.

- refactor cleanAllocationList to waitForTaskCountAndCleanAllocationList

Change-Id: I5301185c5fce212e39eb017b952b43c279559cf4
2018-01-15 18:45:48 +01:00
Mrozek, Michal 7640201585 Allow squared algorithm to work together with base one.
Change-Id: I9087957bb427a422b1be632f6375c96b8f91a492
2018-01-12 12:05:04 +01:00
Chodor, Jaroslaw d290955a57 Preemption - SIP command programming
Change-Id: I4c7c805a77a9decb8f13d39055bfb2590209ca3e
2018-01-10 16:43:29 +01:00
Mateusz Jablonski 4f884496a6 Some minor fixes:
- Fix SUPPORT_X and TESTS_X flags in cmake
  Previously it was possible to enable TESTS_X with disabled SUPPORT_X

- Remove genX dirs from include paths

Change-Id: I70aa6ee4df6cc1ca641cce2e99b66f92f99fd4e1
2018-01-10 12:56:40 +01:00
Mrozek, Michal c8d9846d50 Enhance search pattern for early LWS finding path.
- Allows to find larger LWS in multiple cases.

Change-Id: I645f5bca5c8ccdcf8e0d4861e47fcbcad0395e7a
2018-01-10 08:20:02 +01:00
Mrozek, Michal 94ae9a3d1b Add debug functionality to dump LWS sizes.
- Refactor of LWS tests.

Change-Id: Ic47c88996a658f2168cc425f4598e91eced4756d
2018-01-09 15:41:11 +01:00