Alex Voicu
f7726cd416
Merge remote-tracking branch 'origin/master' into feature_use_module_based_dispatch_instead_of_pfe
2017-11-09 23:43:07 +00:00
Alex Voicu
328c18b886
This introduces correct support for agent global variables, and implements hipModuleGetGlobal as an actual equivalent for cuModuleGetGlobal.
2017-11-03 01:44:48 +00:00
Ben Sander
86f62accfd
Merge pull request #245 from scchan/centos_fixes
...
various fixes for centos/rhel
2017-11-01 18:10:29 +01: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
Siu Chi Chan
99d32a195f
Centos/RHEL - remove usage of constexpr since libc++ doesn't enable ctor for constexpr pair in C++11
2017-10-31 18:16:12 +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
Maneesh Gupta
b792f9f507
Make elfio headers private
...
Change-Id: I3ba174bb46e84a75380207d93a0da6fe3703689e
2017-10-23 10:24:36 +05:30
Alex Voicu
70786a5563
This fixes incorrect usage of the reader object, which created arcane
...
mismatches when one reader accessed another's section.
2017-10-09 15:46:38 +01:00
Alex Voicu
ffffe052b6
This adds cursory support for globals to the HIP module loading API. The
...
style is purposefully alien so as to signal that HIP experts should turn
it into HIP worthy code as soon as possible.
2017-10-09 13:27:11 +01:00
Maneesh Gupta
8d6acec135
Bump min hcc_workweek required for named kernel dispatch to 17312
...
Change-Id: I8c7b58306b279ed113d03260e4bc6086bb8b4e68
2017-08-08 11:08:55 +05:30
Ben Sander
4980a6d3ab
Add workweek check to make sure we have a new enough compiler
2017-07-27 23:00:58 -05:00
Ben Sander
3a4dfc0f85
Pass kernel name to HCC dispatch_hsa_kernel, for debug/profile
2017-07-27 22:00:15 -05:00
Ben Sander
176ff824d1
Add option to pass names to HCC dispatch API (for debug)
2017-06-23 18:05:30 -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
Evgeny Mankov
270f643c9c
[HIP] [HIPIFY] [FIX] cuModuleLoadDataEx -> hipModuleLoadDataEx
...
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/81
1. Do not use JIT options on HCC path, call hipModuleLoadData instead.
2. NVCC path is unchanged, to call cuModuleLoadDataEx with all options.
3. Get rid of manual hipification, based on #ifdef #else for NVCC/HIP.
4. Update documentation accordingly.
2017-05-19 17:22:14 +03: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
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
3eed9aba5d
added debug support for HIP sample
...
Change-Id: Ia7265234082039b68114f7421f4dbcb7149d4d2b
2017-03-31 14:13:46 -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
Aditya Atluri
7ac438ed02
disabled metadata apis
...
Change-Id: Ifb8839c581644cccc2afcd18c38a866f649a4144
2017-03-28 10:46:31 -05:00
Aditya Atluri
7d49dcc030
Re-enabled metadata parsing in HIP
...
Change-Id: If8caa844571cb8581450df9ffdb76e2445c75f13
2017-03-27 11:00:39 -05:00
Aditya Atluri
4f4a44c736
removed llvm dependency and metadata functionality
...
Change-Id: Ib9783b75d326559ed29c5aa2218aed40d20ad0fb
2017-03-23 10:16:37 -05:00
Aditya Atluri
99432cc12c
Added default module launch api functionality
...
1. As in hipModuleLaunchKernel(..., kernelParams, nullptr); works with this commit
2. Added headers AMDGPUPTNote.h, AMDGPURuntimeMetadata.h to do code object meta data parsing
3. Changed CMake to look at llvm link libraries
4. HIP developer should set env variable LLVM_HOME to remove link errors
5. HIP depends on installed LLVM (not source, not build)
6. Added sample to test out the feature
7. Right now HCC does not support embedding metadata in code object. Use clang opencl
8. Changed HIPCC to read LLVM_HOME env var
9. New argument to CMake should be given -DLLVM_HOME=<where llvm 5.0 is installed>
Change-Id: Iba38194aa872d97cc2c90a8e5ff746c48055c868
2017-03-17 13:11:34 -05:00
Ben Sander
439e37ab76
Fix bug in hipModuleGetFunction.
...
Modules with > 1 function didn't return the function correctly.
Also fix coding convention issues
2017-03-08 13:52:38 -06:00
Aditya Atluri
d03fe5a40d
v3: added free for ihipModuleSymbol_t structures inside tracker
...
Change-Id: Ib8041a05312c08cbdf2d4fee5e7cbae17df6efff
2017-02-10 13:42:10 -06:00
Aditya Atluri
378eb3fa55
v2: Fixed hipModule memory management
...
1. Changed test to assert for same hipFunction values
2. Added better memory management for hipModule
Change-Id: I10d7aef13c215a2211e262f3c79017f26a17d9a7
2017-02-10 13:32:13 -06:00
Aditya Atluri
6fd3daed30
fixed hipFunction memory management
...
Change-Id: I7ebb323419bcd220ebd6466a8eb38e7bfdb1520a
2017-02-09 17:22:55 -06:00
Ben Sander
1635b8f43f
Read HCC_OPT_FLUSH and optimize dispatch accordingly.
...
If HCC is in this mode, we can use less aggressive flushes in some
cases.
2017-01-25 21:50:52 -06:00
Ben Sander
813c189b33
Show dynamic shared mem usage not static.
2017-01-23 22:34:41 -06:00
Ben Sander
1c73e44ebe
Fix debug display for Module launch kernels
2017-01-19 12:40:45 -06:00
Aditya Atluri
73fcce26f9
changed copyright year from 2016 to 2017 in src directory
...
Change-Id: Idb97db509b2b4b1656b2df7a14a62ade38c9d574
2017-01-11 18:05:41 -06:00
Ben Sander
90c69e14bb
Add name for function
2016-12-17 08:54:09 -06:00
Ben Sander
8bf4bd2f7d
Remove HSA dependency from hipFunction_t
...
Place _groupSegmentSize and _privateSegmentSize inside Function,
remove hsa_executable_symbol_t.
2016-12-17 07:22:56 -06:00
Ben Sander
6ed7e1c1c1
Remove USE_DISPATCH_HSA_KERNEL=0 path.
2016-12-17 07:22:56 -06:00
Ben Sander
4d29885be3
Refactor Module and Function APIs.
...
- hipFunction_t is now returned by value. This eliminates dynamic
allocation / memory management complexity in the module. Removed
the kernel
name so the structure is just 16 bytes now.
- Moved the hsa_executable_load_module and hsa_executable_freeze
calls to the hipModuleLoad and hipModuleLoadData calls.
- Apply sharedMemBytes in hipModuleLaunchKernel to group segment
size (not private).
2016-12-17 07:22:33 -06:00
Ben Sander
6209565ec0
Enabled USE_DISPATCH_HSA_KERNEL, with serialization in hipModuleUnload.
2016-12-06 10:14:01 -06:00
pensun
778c6626fd
HIP resource leaks fix from Jack
...
Change-Id: I93f3ad7cb94ff1cba1577bd8acc90e826693d12e
2016-12-05 20:21:33 -06:00
Maneesh Gupta
46ffc69557
Revert "Enable USE_DISPATCH_HSA_KERNEL."
...
This reverts commit 097e4eb9d8 .
2016-12-05 16:55:26 +05:30
Ben Sander
097e4eb9d8
Enable USE_DISPATCH_HSA_KERNEL.
...
Optimize hipLaunchModule dispatch latency.
2016-12-04 00:13:19 -06:00
Ben Sander
ff2f54c1bf
Add additional controls for forcing serialization and blocking.
...
Move HIP_COHERENT_HOST_ALLOC so it is read once at init time.
Add HIP_LAUNCH_BLOCKING_KERNELS, HIP_API_BLOCKING.
Update docs on debug and chicken bits.
Conflicts:
src/hip_hcc.cpp
2016-12-02 18:03:59 -06:00
Ben Sander
9315ac1a29
Move some internal headers from "include/hip/" to src.
...
Change-Id: I7041bd5c803d9318979f4a7c1d658445c614691e
2016-10-18 22:27:16 -05:00
Maneesh Gupta
8471682f26
src/*: Update copyright header
...
Change-Id: I455f5d0d12fe9cb39a3ba873bd22b4c25ed07cbf
2016-10-15 22:55:22 +05:30
Ben Sander
50e0a363ce
Add code to use new HCC API accelerator_view::dispatch_hsa_kernel.
...
Disabed by default, can enable with USE_DISPATCH_HSA_KERNEL=1
Change-Id: I7a6ba76f2bada34952ed47f5335ce695fa2faea5
2016-10-14 23:46:29 -05:00
Ben Sander
fa075091b5
fix file-not-found detection
...
Change-Id: Ida84923ed18b3ebf8ffcfd6ee84d8a72f611ecd3
2016-10-13 11:43:49 -05:00
Maneesh Gupta
b951cc99ed
Move include/* to include/hip/*
...
Change-Id: I7a7b2839b4df59c7a4c503550f99fdc9e45c0f54
2016-10-04 22:17:18 +05:30
Ben Sander
0693b1693f
Adapt to _kernelSymbol
...
Change-Id: Idebb7d7e895286ce5423afdcf391e00fa8b2b94f
2016-09-07 15:48:40 -05:00
Ben Sander
48b1f7a6ea
refactor ihipPreLaunchKernel phase#1
...
- Fix calls to HIP_INIT_API to pass all function arguments.
- Change ihipFunction to follow coding convention:
- leading underscore for member fields,
- camelCase for member fields.
- move kernel print function inside ihipPreLaunchKernel.
- add HIP_TRACE_API_COLOR, control color of messages.
- add ihipLogStatus wrapper to hipDeviceSynchronize()
Change-Id: I20bbb644da213f821404648945197254e3648fc9
2016-09-07 15:18:34 -05:00
Aditya Atluri
2c2f6ab078
Fixed group and private memory size to AQL
...
Change-Id: I6e721f63fe5697b7b90a7d25add9aa024d9dc429
2016-09-07 12:57:18 -05:00
Ben Sander
cdba60a566
Fix double-lock of stream on hipModuleLaunchKernel
...
Change-Id: I4ca164971c25f4eb8fbcca11d6258367bb3d2ab4
2016-09-02 12:47:49 -05:00