Commit Graph

2061 Commits

Author SHA1 Message Date
Alex Voicu 2932706d47 Merge remote-tracking branch 'origin/master' into feature_use_module_based_dispatch_instead_of_pfe 2017-11-03 10:57:12 +00:00
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
Maneesh Gupta d90d431490 Merge pull request #248 from mangupta/SWDEV-134531
Remove libsupc++ dependency from HIP
2017-11-03 08:01:59 +05:30
Ben Sander 67dd5303ad Merge pull request #247 from AlexVlx/feature_cleanup_tests
Test cleanup
2017-11-02 11:31:10 +01:00
Maneesh Gupta f34f5c8684 Remove libsupc++ dependency from HIP
Change-Id: Ib843f99dfb3057b7c28029250c2449732ea7f17f
2017-11-02 12:29:09 +05:30
Alex Voicu a619ac6f92 This corrects some interesting choices that were present in the HIP
unit tests such as e.g. de-allocating memory allocated with new[] using
free. All of these were identified via cppcheck.
2017-11-01 22:51:22 +00:00
Alex Voicu 2cacda91bb Correctly deal with functions from shared objects, wherein the program visible VA == so_base_va + st_value(function_symbol). Remove quaint usage of pfe for hipMemset (which is actually fill_n). 2017-11-01 22:33:13 +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 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
Siu Chi Chan cd6996614f use libc++ on centos 7 and rhel 7.4 2017-10-31 18:14:07 +00:00
Maneesh Gupta f27c2c1715 Merge pull request #197 from bensander/update_coherency_tests
Update coherency tests
2017-10-31 17:26:50 +05:30
Maneesh Gupta 4d85b6ab29 Merge pull request #241 from ROCm-Developer-Tools/multi_host
Inital codes to remove x86_64 dependency in HIP source build
2017-10-31 16:35:12 +05:30
Maneesh Gupta 7026b73905 Merge pull request #242 from bensander/time_hip_apis
Add ns-level timer for HIP API routines
2017-10-31 16:33:46 +05:30
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
Wen-Heng (Jack) Chung 92fb244841 Inital codes to remove x86_64 dependency in HIP source build 2017-10-30 15:19:23 -05:00
Ben Sander 2e8ec71e40 Merge pull request #222 from bensander/fix_device_prop
Fix device prop
2017-10-30 17:58:48 +01:00
Ben Sander d610f16c47 Check for null copyEngine before looking at peers. 2017-10-30 16:58:03 +00:00
Ben Sander f8843ae415 Merge pull request #226 from scchan/add_printf3
add printf to HIP device functions
2017-10-30 17:08:18 +01:00
Evgeny Mankov 44c74b6511 [HIPIFY] fix typo - missing ) 2017-10-27 23:31:43 +03:00
Evgeny Mankov b28a69785b Merge pull request #238 from ChrisKitching/statistics
[HIPIFY] Decouple the statistics system from the code rewriter
2017-10-27 23:17:20 +03:00
Evgeny Mankov c9b7c43e1c Merge pull request #236 from ChrisKitching/friendlyCmake
[HIPIFY] Make the cmake build system more friendly
2017-10-27 22:35:13 +03:00
Chris Kitching 20871a3a07 Remove commented else-block
A warning statement for _string literals_ seems a bit unhelpful.
There's no value in this being here.
2017-10-27 20:12:33 +01:00
Chris Kitching b303ffe53e Decouple the statistics system from the code translation
The original implementation had the statistics system woken very
tightly into things like PPCallbacks, with counters duplicated
in two places, and all the output code duplicated. This made it
very difficult to alter the structure of the program without
breaking the statistics system.

Since the planned approach for solving the remaining preprocessor
bugs needs the introduction of a custom FrontendAction, and such
a restructure was incompatible with the way the statistics system
was set up, this rewrite was required.

'tis rather simpler now, mind you :D

This commit also fixes an issue where some stats were counted
twice, and allows `-print-stats` to operate independently of
`-stat-output`, allowing you to print stats to a file without
printing them to a terminal (or vice-versa).
2017-10-27 20:12:33 +01:00
Chris Kitching 5699c18adc Copy-paste less in the statistics printing code 2017-10-27 20:12:33 +01:00
Chris Kitching 50448aec3b Inline updateCountersExt 2017-10-27 20:12:32 +01:00
Chris Kitching d8beee8918 Update counter maps sanely
operator[] default-constructs the map value if no value exists
for that key. Default-construction of int yields a zero. So all
the manual faffing around is just unnecessary.
2017-10-27 20:12:32 +01:00
Chris Kitching 00bb447e55 Prefer references to pointers in updateCountersExt() 2017-10-27 20:12:32 +01:00
Chris Kitching ee8e11a720 Move string utility functions into their own translation unit 2017-10-27 20:12:32 +01:00
Chris Kitching 1bd837b4b1 Extract LLVM compatibility code into its own translation unit 2017-10-27 20:12:32 +01:00
Chris Kitching 0c09bdf523 Remove unused field 2017-10-27 20:12:32 +01:00
Chris Kitching c6707ef33c Remove CUDA_EXCLUDES
An artefact from a now-defunct hack to avoid corrupting programs
2017-10-27 20:12:32 +01:00
Chris Kitching 2f376c9b25 Make unsupported actually be a bool... 2017-10-27 20:12:31 +01:00
Chris Kitching 69e67fe25a Describe the LLVM we found 2017-10-27 19:39:41 +01:00
Chris Kitching 82d05ee6f4 Update hipify-clang readme for simplified build process 2017-10-27 19:39:41 +01:00
Chris Kitching b412802c66 hipify does not add the hipLaunchParm option any more
This was removed a while ago - seems like it uses a different
variant of the launch kernel function now, so this is redundant.
2017-10-27 19:39:41 +01:00
Chris Kitching 8fefc6a2b7 Use cmake's builtin mechanism for handling library locations
See [the documentation](https://cmake.org/cmake/help/v3.0/command/find_package.html)
for exactly how the search procedure works. If you want to use an
LLVM from a specific location, use CMAKE_PREFIX_PATH as normal.

No longer do we have a nonstandard HIPIFY_CLANG_LLVM_DIR variable
for people to learn about.
2017-10-27 19:39:40 +01:00
Chris Kitching 92c90a7068 Move the "LLVM found" print adjacent to the find_package call
Very surprising that LLVM's finder module doesn't print this
itself like _literally every other finder module_. Blarg.
2017-10-27 19:39:40 +01:00
Chris Kitching c60c8d417e We no longer rely on HIPIFY_CLANG_LLVM_DIR to disable hipify-clang
Since there's now an option for toggling hipify-clang, omitting the
path is no longer something we need to check for. We'll still
abort if LLVM isn't found, due to `REQUIRED`.
2017-10-27 19:39:40 +01:00
Chris Kitching 921ff4c8a3 Don't attempt to find test dependencies if tests are disabled
And while we're at it, introduce a handy program-finder macro
2017-10-27 19:39:40 +01:00
Chris Kitching 56b4222043 Use add_dependencies to avoid duplication of pkg_hip_base 2017-10-27 19:39:40 +01:00
Chris Kitching a4ecd4eb31 Make BUILD_HIPIFY_CLANG a cmake option
Instead of deciding whether to build hipify-clang based on
the presence of an LLVM path on the command line, have an
explicit option.

Do we want this default-on or default-off? I've defaulted it to
on for now, but maybe we want the opposite?
2017-10-27 19:39:39 +01:00
Evgeny Mankov 9151a355c6 Merge pull request #234 from ChrisKitching/warningSpam
[HIPIFY] Do not process __fetch_builtin_* in cudaCall()
2017-10-27 21:30:42 +03:00
Evgeny Mankov a865ebfe10 Merge pull request #235 from ChrisKitching/preprocessorEnhancements
[HIPIFY] Handle unconditional preprocessor directives far better
2017-10-27 21:21:20 +03:00
Siu Chi Chan a9789ddcda Merge remote-tracking branch 'origin/master' into HEAD 2017-10-27 01:18:28 -04:00
Ben Sander f288f24e95 Merge pull request #198 from AlexVlx/feature_support_globals_for_module_api
Feature support globals for module api
2017-10-27 01:53:34 +02:00
Ben Sander e97f675397 Merge pull request #218 from ChrisKitching/nodiscard
Add [[nodiscard]] attribute to hipError_t in C++17 mode
2017-10-26 22:48:54 +02:00
Ben Sander 772fe865fc Merge pull request #223 from bensander/2x_bidir
Use 2X for bidir memory bandwidth calc
2017-10-26 21:49:06 +02: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