Граф коммитов

50 Коммитов

Автор SHA1 Сообщение Дата
Wen-Heng (Jack) Chung b4d658a48f Introduce hash key to HIP module implementation
A hash calculated via FNV-1a algorithm is introduced in ihipModule_t, the
internal of hipModule_t. The hash is used by HIP module APIs such as

- read_agent_global_from_module

to determine whether the agent-scope globals for a module have been iterated.

This commit fixes one issue that applications which load / unload modules
frequently would occasionally fail. After deep investigation of the issue it
turns out the old implementation in read_agent_global_from_module uses
hipModule_t as the key, which is not robust enough, as hipModule_t instances
are allocated dynamically so there are cases that one memory address may be
used by multiple hipModule_t instances. The real solution is to introduce a
uniquely identifiable hash for the code object associated with the HIP module.
And that's the rationale behind this commit.
2019-01-08 17:33:40 +00:00
Maneesh Gupta 0dd26b4f63 Merge pull request #608 from gargrahul/add_pinned_2d_sdma_copy
Added support for pinned 2D SDMA copy
2018-12-12 07:44:16 +05:30
Maneesh Gupta 7ce082415b Merge pull request #773 from fronteer/master
Support of printing process ID for HIP tracing
2018-11-23 11:16:22 +05:30
Qianfeng Zhang 81cf7cabfa Add support of printing process ID for HIP Tracing 2018-11-22 18:58:06 +08:00
Evgeny e5ba097afd renaming HIP_INIT_CB_API to HIP_INIT_API 2018-11-13 15:33:26 +00:00
Evgeny b8b1637ef7 adding activity prof layer 2018-11-13 15:33:26 +00:00
Yaxun Sam Liu f5d8842f6a Add HIP_DUMP_CODE_OBJECT 2018-10-26 14:14:00 -04:00
Yaxun Sam Liu 1299b65e15 Add HIP_DB=fatbin for debugging fat binary issues 2018-08-17 11:53:45 -04:00
Rahul Garg 1e57764378 Added support for pinned 2D SDMA copy 2018-07-31 14:05:35 +05:30
Maneesh Gupta 0c2f985553 Update hip_hcc_internal.h
Adding missing include for hip_hcc_internal in order to build with HCC
2018-07-04 09:33:51 +05:30
Siu Chi Chan a1f3b587fb remove the _ready flag in ihipStreamCallback_t and the mutex that protects it. 2018-06-04 17:29:04 -04:00
Laurent Morichetti 0c1893ea62 Add support for clang offload bundles and <<<>>> kernel launch. 2018-04-04 13:32:33 -07:00
Maneesh Gupta 1ba06f63c4 Apply .clangformat to all repo source files
Change-Id: I7e79c6058f0303f9a98911e3b7dd2e8596079344
2018-03-12 11:29:03 +05:30
Maneesh Gupta cebb070d30 Implement hipStreamAddCallback
Change-Id: Ib851e4d86ba9c8406ca37b88162ea483ccbc9d36
2017-12-19 16:06:14 +05:30
Alex Voicu 5ca3176a91 Re-sync with upstream. 2017-12-03 23:14:58 +00:00
Alex Voicu 5127ce67e8 This is primarily intended as an additional cleanup of the module functionality, in the aftermath of adopting module based dispatch. The main effort was associated with refactoring the questionable ihipModuleGetSymbol. It was quaintly written and misleading, in that it had little to do with getting symbols, and was exactly retrieving a kernel object. Error handling is modified so as to reduce branching depth. Functions which serve as interfaces to the HSA RT are moved in a separate helper header. Code object readers are properly deleted. Some leftover dead functionality pertaining to associating namespace scope variables with their allocated memory is removed. Executable loading is changed to use a string which holds the ELF image of the code object being loaded, thus avoiding some corner cases where using a istream would fail. 2017-12-03 23:09:06 +00:00
Ben Sander 9bba97fdcc Fix some cppcheck style issues. 2017-12-01 20:45:34 +00:00
Ben Sander 4313686d6e Fix warning from default cppchek. 2017-12-01 20:45:33 +00:00
Alex Voicu dc67ca3feb Merge remote-tracking branch 'origin/master' into feature_use_module_based_dispatch_instead_of_pfe
# Conflicts:
#	src/hip_module.cpp
2017-11-28 17:29:11 +00:00
Rahul Garg f97c5f9a64 -Moved coGlobals in hipModule class (takes care of multi module case)
-Used mutex scope for updating coGlobals
2017-11-20 16:23:18 +05:30
Alex Voicu 3d248927e4 Merge remote-tracking branch 'origin/master' into feature_use_module_based_dispatch_instead_of_pfe
# Conflicts:
#	tests/src/runtimeApi/stream/hipStreamSync2.cpp
2017-11-08 10:26:30 +00:00
Alex Voicu adaf6b8dff Merge remote-tracking branch 'origin/master' into feature_use_module_based_dispatch_instead_of_pfe 2017-11-07 00:01:22 +00:00
Ben Sander 4a2e6f8955 Make hipEvent_t thread safe.
Support re-recording of same event by different threads.

- Add criticalData structure to hipEvent_t, similar to mechanism used
  for streams, contexts, device.  Events are always locked
  after streams to avoid deadlock.
- ihipEvent_t::locked_copyCrit can be used to copy critical state
  including marker.  The critical state in the event can then
  be re-recorded.
- refactor hipEventElapsedTime.  Remmove stale debug code, native signal
  refs.
2017-11-06 23:49:25 +00:00
Maneesh Gupta a62d5aa875 Merge pull request #249 from bensander/warn_event
Add HIP_DB=warn + message if sync on dangerous event.
2017-11-06 07:25:40 +05:30
Alex Voicu bb1176001f Merge remote-tracking branch 'origin/master' into feature_use_module_based_dispatch_instead_of_pfe
# Conflicts:
#	src/hip_module.cpp
2017-11-03 10:53:39 +00:00
Ben Sander 09d866a639 Merge pull request #237 from bensander/use_ctxptr_for_p2p
Use ctxptr for p2p
2017-11-01 18:55:25 +01:00
Ben Sander 70c25bdf8e Add HIP_DB=warn + message if sync on dangerous event. 2017-11-01 10:44:34 -07:00
Alex Voicu c2482d1255 This switches HIP from its currently convoluted macro + pfe based dispatch mechanism to a more natural one partially based on the existing module API. The basic idea is that HCC will always correctly emit __global__ functions: as empty-bodied stubs, on host, and as kernels, on device. It then becomes trivial to obtain the mangled name on host, at dispatch, from the function's address, and then to use the mangled name to retrieve the kernel. This should address all problems stemming from serialisation, dubious mismatches due to the manufactured functor, macro-isms et al. It also immediately enables support for generalised globals as a consequence of that being available in the module API. Finally, it will make debug much easier, since the actual names of the __global__ functions will automatically be used in traces etc. One detail is that due to how dispatch works now (hipLaunchKernel and hipLaunchKernelGGL are themselves variadic function templates which deduce the function type of the callee), in certain cases it may be necesssary to insert explicit casts to ensure that the variadic argument list selects a viable overload - this can be observed in some unit tests. Eventually we may be able to remove this limitation, but for now it does not appear terribly onerous. The code is not extremely HIPpie, nor is it fully optimised, but rather is intended as a starting point for the HIP team to make its own. 2017-11-01 15:09:59 +00:00
Ben Sander 7e908bdec8 Add ns-level timer for HIP API routines
Refactor some miuses of ihipLogStatus, these should only be in top-level
HIP APIs and should be paired with HIP_API_INIT calls.
2017-10-30 20:20:51 +00:00
Ben Sander 7d30f32332 Fix bug with peer-to-peer combined with context API
- Store context inside the tracker rather than using int deviceID that
  was always mapped to primary context
- IsPeerWatcher now based on device IDs rather than specific peers.
2017-10-26 19:44:22 +00:00
Ben Sander fbd22c3e49 Merge branch 'master' into hip_init_alloc 2017-09-14 11:53:33 -05:00
Ben Sander cea80cd8b3 Add HIP_INIT_ALLOC to init allocated memory. 2017-09-13 23:31:48 +00:00
Ben Sander 4ac6d643c1 hipStreamQuery uses av::is_empty. Add HIP_FORCE_NULL_STREAM. 2017-08-31 03:00:14 +00:00
Ben Sander 882dab4536 Refactor hipStreamWaitEvent
- Null streams use same flow as non-null.
- Add HIP_SYNC_STREAM_WAIT
- Resolve null stream.
2017-08-31 03:00:14 +00:00
Ben Sander 6ff74d0e97 Lock streams when waiting on event completion or querying event safety. 2017-08-28 18:40:16 -05:00
Ben Sander e3161bb40e Add some new HIP_TRACE_API options. 2017-08-16 04:00:33 +00:00
Rahul Garg 3e84cf4aba Updated context management logic:
1) hipSetDevice sets a flag so that next call to hipCtxGetCurrent returns primary context on current device
2) hipCtxGetCurrent returns primary context on current device if TLS context stack is empty
3) hipCtxPopCurrent falls back to primary context on current device as default
4) hipCtxPushCurrent, hipCtxSetCurrent and hipCtxCreate reset the flag set in hipSetDevice
2017-08-08 07:02:22 +05:30
Ben Sander 8b8e97ff28 Make host memory allocations coherent by default.
Associated change is to optimize event recording so it uses
agent-scope releaes (since it was only using system-scope release
to support non-coherent host mem).

Flags and environment variables exist to obtain previous behavior
if desired.  Options are documented in new performance guide.
2017-07-26 19:20:34 -05:00
Sun, Peng 1df08626c8 Add support of HIP_HIDDEN_FREE_MEM, to deduct the returned available
memory from hipMemGetInfo API, measured in MB.

Change-Id: I7a8260c12e032e04e26611db4c38c893a29f2653
2017-06-26 15:29:38 -05:00
Ben Sander 39c18e5e5f Fix HIP_SYNC_NULL_STREAM=0 mode.
- Fix null-stream sync
- hipStreamDestroy of null stream returns hipErrorInvalidResourceHandle
- Update documentation.
- Add tests for null stream sync, hipEventElapsedTime.
- Rename internal enum hipEventStatusRecorded to hipEventStatusComplete
- refactor hipStreamWaitEvent to streamline control-flow
2017-06-05 08:50:22 -05:00
Ben Sander cb60763737 Set event->_stream on hipHccModuleLaunchKernel path if start/stop used
Ensure _stream is always non-null in recorded events.
Fixes isDefaultStream fault.
2017-05-30 21:55:46 -05:00
Ben Sander b251d72917 Add isDefaultStream() accessor.
Fix code that checked for stream==nullptr after stream had been
resolved to a "true stream".
2017-05-26 13:46:48 -05:00
Ben Sander d0ef9d8462 Remove HIP_MAX_QUEUES (replaced with HCC_MAX_QUEUES) 2017-05-23 23:48:01 -05:00
Ben Sander 27877f8854 Add initial HIP_SYNC_NULL_STREAM=0 mode.
This eliminates host-synchronization for null stream.  Instead, the
null-stream uses GPU-side events to wait for other streams.
Default is OFF pending additional testing.

Add enhanced null-stream test.

Also refine HIP_TRACE_API.
2017-05-16 19:04:25 -05:00
Ben Sander 0edab14139 Add HIP_TRACE_API=4. Only display memory allocation/free apis. 2017-05-16 19:04:25 -05:00
Ben Sander c3ccaa01e5 hipHostMalloc allocation are mapped to all devices by default.
Support hipHostMallocPortable flag.
Default flags are hipHostMallocPortable | hipHostMallocMapped.

Also:
-refactor tests to move addCount and addCountReverse into HipTest
namespace.
-test multi-GPU host memory.
2017-05-10 17:34:36 -05:00
Ben Sander 6656d33f75 Finish adding start/stop event support to hipHccModuleLaunchKernel.
Change interface to use hipEvent_t rather than hipEvent_t*

Change-Id: I259062dc087a13d51dc27f84e1e8861f332a104d
2017-04-06 21:02:50 -05:00
sunway513 cfa3155082 Refactor events and add initial event option for hipHccModuleLaunchKernel
- Change hipEvent_t to a class.
- Move event logic inside the class.
- Add _type to support Independent, StartCommand, StopCommand events.
  StartCommand returns start timestamp from events.

Change-Id: I4ddd694f2645a3ff7170c9111dc1d3e39931ca21
2017-04-06 21:02:50 -05:00
Aditya Atluri 1ef7222c3a Fixed copyright and header names
Change-Id: Id595c65ea3b7289e87be4c42db5d8a31905a4fdd
2017-03-31 12:40:29 -05:00
Aditya Atluri b9091ba818 added new api hipHccModuleLaunchKernel
1. hipHccModuleLaunchKernel is same as hipModuleLaunchKernel with OpenCL workitem model
2. Added copy right
3. Fixed header naming

Change-Id: I6a7c35a3566e2f8d3f5056613e34193775d4b236
2017-03-31 12:11:34 -05:00