Commit Graph

4136 Commits

Author SHA1 Message Date
Chris Kitching 85fd2e6f51 Extract LLVM compatibility code into its own translation unit
[ROCm/hip commit: 1bd837b4b1]
2017-10-27 20:12:32 +01:00
Chris Kitching 389fa2e68e Remove unused field
[ROCm/hip commit: 0c09bdf523]
2017-10-27 20:12:32 +01:00
Chris Kitching 48e7403762 Remove CUDA_EXCLUDES
An artefact from a now-defunct hack to avoid corrupting programs


[ROCm/hip commit: c6707ef33c]
2017-10-27 20:12:32 +01:00
Chris Kitching 199d75adc0 Make unsupported actually be a bool...
[ROCm/hip commit: 2f376c9b25]
2017-10-27 20:12:31 +01:00
Chris Kitching 2285482075 Describe the LLVM we found
[ROCm/hip commit: 69e67fe25a]
2017-10-27 19:39:41 +01:00
Chris Kitching 7a0eedabbe Update hipify-clang readme for simplified build process
[ROCm/hip commit: 82d05ee6f4]
2017-10-27 19:39:41 +01:00
Chris Kitching e3338fe5a4 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.


[ROCm/hip commit: b412802c66]
2017-10-27 19:39:41 +01:00
Chris Kitching fd656a0fbb 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.


[ROCm/hip commit: 8fefc6a2b7]
2017-10-27 19:39:40 +01:00
Chris Kitching 1461c69757 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.


[ROCm/hip commit: 92c90a7068]
2017-10-27 19:39:40 +01:00
Chris Kitching cc1bc495a0 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`.


[ROCm/hip commit: c60c8d417e]
2017-10-27 19:39:40 +01:00
Chris Kitching d92f3c8d76 Don't attempt to find test dependencies if tests are disabled
And while we're at it, introduce a handy program-finder macro


[ROCm/hip commit: 921ff4c8a3]
2017-10-27 19:39:40 +01:00
Chris Kitching b61c4a241f Use add_dependencies to avoid duplication of pkg_hip_base
[ROCm/hip commit: 56b4222043]
2017-10-27 19:39:40 +01:00
Chris Kitching 7947e406c7 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?


[ROCm/hip commit: a4ecd4eb31]
2017-10-27 19:39:39 +01:00
Evgeny Mankov 4661c25f38 Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP
[ROCm/hip commit: d709fb6274]
2017-10-27 21:31:32 +03:00
Evgeny Mankov a9c3228cb1 Merge pull request #234 from ChrisKitching/warningSpam
[HIPIFY] Do not process __fetch_builtin_* in cudaCall()

[ROCm/hip commit: 9151a355c6]
2017-10-27 21:30:42 +03:00
Evgeny Mankov c09252e9ab Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP
[ROCm/hip commit: 351c785ae6]
2017-10-27 21:27:17 +03:00
Evgeny Mankov aead033e41 Merge pull request #235 from ChrisKitching/preprocessorEnhancements
[HIPIFY] Handle unconditional preprocessor directives far better

[ROCm/hip commit: a865ebfe10]
2017-10-27 21:21:20 +03:00
Siu Chi Chan 6cc7f10e84 Merge remote-tracking branch 'origin/master' into HEAD
[ROCm/hip commit: a9789ddcda]
2017-10-27 01:18:28 -04:00
Ben Sander ad9a636b90 Merge pull request #198 from AlexVlx/feature_support_globals_for_module_api
Feature support globals for module api

[ROCm/hip commit: f288f24e95]
2017-10-27 01:53:34 +02:00
Ben Sander 37bd264cd4 Merge pull request #218 from ChrisKitching/nodiscard
Add [[nodiscard]] attribute to hipError_t in C++17 mode

[ROCm/hip commit: e97f675397]
2017-10-26 22:48:54 +02:00
Ben Sander c8fc8122b9 Merge pull request #223 from bensander/2x_bidir
Use 2X for bidir memory bandwidth calc

[ROCm/hip commit: 772fe865fc]
2017-10-26 21:49:06 +02:00
Ben Sander d7153f792d 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.


[ROCm/hip commit: 7d30f32332]
2017-10-26 19:44:22 +00:00
Aditya Atluri 3ddd48ab86 Enhance debug for copy pointers
- show more pointer tracking fields
- show pointer info before and after "tailoring'


[ROCm/hip commit: 5d646d0fe3]
2017-10-26 19:44:22 +00:00
Evgeny Mankov c85cdd0d41 Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP
[ROCm/hip commit: bb2b416337]
2017-10-26 20:33:18 +03:00
Chris Kitching c15f6bdf5c Greatly enhance handling of macros in kernel launches
All but the most contrived use of macros is now properly handled -
have a look at the new testcases this commit adds. You can have
macros in kernel calls, macros spanning chunks of your arguments,
the call, call parameters, or callee can all be macros or
partially macros.


[ROCm/hip commit: 094b2b9b05]
2017-10-26 17:28:46 +01:00
Chris Kitching d0acfd5bde Simplify how kernel launch expressions get translated
It seems like there was a lot of machinery here that is no longer
needed now we have hipLaunchKernelGGL (which doesn't require us
to insert an extra argument into kernel functions). We no longer
need to waste cycles scanning the AST for callees.

We can literally just do "Take the callee expression, and dump
it into the first argument of hipLaunchKernelGGL()".


[ROCm/hip commit: eff86d975b]
2017-10-26 17:28:30 +01:00
Chris Kitching 59713c2459 Deduplicate preprocessor code
There's three functions here that all do the same thing...

There was also logic that looks for numeric literals and works
backwards to find the macro name from which they are expanded.
I previously introduced code that rewrites macro references at
expand-time in the `MacroExpands` callback, so that code is no
longer doing anything useful.


[ROCm/hip commit: fd911e1839]
2017-10-26 17:28:30 +01:00
Chris Kitching ca913bb196 Rewrite _all_ CUDA macro identifiers in the preprocessor
Calls to macros that were themselves CUDA API calls were often
being missed - this applies the identifier transform to macro
names at the callsites, too.


[ROCm/hip commit: d1e26b2e7e]
2017-10-26 17:27:56 +01:00
Chris Kitching cbf786a8fd Don't special-case source locations for calls in macros
The source location for a call that's inside a macro body will,
by default, point into the macro definition itself. The original
logic was causing macro invocations to be overwritten, as I
explain here:
https://github.com/ROCm-Developer-Tools/HIP/issues/207#issuecomment-337521851

The existing PPCallbacks code is correctly rewriting macro
definitions, so the practical effect of this change is that AST
rewrites on code that's expanded from macros are no-ops.

It might be a performance optimisation to put a short-circiut at
the top of the AST callbacks to abort when faced with code that
was expanded from macros.

It might yet prove wise to do absolutely everything at lex-time...


[ROCm/hip commit: 4a794ed8c0]
2017-10-26 17:26:37 +01:00
Chris Kitching 32cbe68a93 Prefer early-return to deep nesting
A chain of 7 closing braces is never a great sign :D

In the process it became apparant that the unsupported flag
was being silently ignored, causing users to be left with cuda
API calls in their programs with no warning given. This has been
rectified for consistency.


[ROCm/hip commit: 35a892bc77]
2017-10-26 17:26:37 +01:00
Chris Kitching 78826f5512 Do not process __fetch_builtin_* in cudaCall()
Fixes #205


[ROCm/hip commit: 2a5acac80e]
2017-10-26 17:23:55 +01:00
Evgeny Mankov 99d43e1e6a Merge pull request #213 from ChrisKitching/simplify
[HIPIFY] Simplify (and accelerate) hipification of CUDA type identifiers

[ROCm/hip commit: 3bacb69e20]
2017-10-26 19:17:01 +03:00
Ben Sander 79126196ce Merge pull request #232 from kknox/update-cuda-version
Update container to newer cuda driver and sdk 9.0

[ROCm/hip commit: c0ef6d7b62]
2017-10-25 23:45:24 +02:00
Kent Knox f6b4db7dd5 Update container to newer cuda driver and sdk 9.0
[ROCm/hip commit: 160d92af20]
2017-10-25 16:14:32 -05:00
Ben Sander 68e571aa82 Clean up test to address review feedback.
[ROCm/hip commit: ca1230300a]
2017-10-25 16:08:16 -05:00
Siu Chi Chan c595b8f660 add HC_FEATURE_PRINTF around the printf buffer definition
[ROCm/hip commit: d91a4f5bd6]
2017-10-25 12:00:02 -04:00
Chris Kitching 641f7ed8f1 Don't use now-defunct cmake variable in lit test config
[ROCm/hip commit: 59071b895e]
2017-10-24 20:52:51 +01:00
Chris Kitching 5092f3f184 Refactor cudaCall to prefer early return to deep nesting
Sorry for the invasive refactor, but this was making reasoning
about this function more difficult.


[ROCm/hip commit: 778d6827f9]
2017-10-24 20:38:49 +01:00
Chris Kitching 22e7c4ebfc Split the giant lookup table into 3 smaller ones
Instead of having a single, enormous LUT for all CUDA names, let's
have separate ones for different types of entity. We often know
that we're looking at a typename, or a function name, or a macro
name - so we can be more efficient (and resilient to name
collisions) by having smaller lookup tables for each of those
classes of entity).

Here we start that off by having three LUTs:
- Header names
- Type names
- Everything else

Future work could usefully split "everything else" into:
- enum values
- macro names
- function names
- everything else

It's worth noting that the "needs new matcher" todos I delete here
were actually resolved with the previous commit. It no longer
naively searches for things that start with "cu*" - it will find
exactly those things that are present in our lookup tables.


[ROCm/hip commit: 695a1eb059]
2017-10-24 20:38:49 +01:00
Chris Kitching 1cf0c75c49 One matcher for type expressions to rule them all
Previously, there were different AST matchers for each
language construct that contains a type reference, and custom
logic to perform the transformation within each of those
structures.

Since the transformation in all such cases was only replacing
CUDA types with hip ones, we can instead use an AST matcher
that finds and updates the type references directly.
This simplifies the program considerably, and it won't fail
when it finds a language feature (or complicated type expression)
that nobody wrote custom logic for yet.


[ROCm/hip commit: a1d8340314]
2017-10-24 20:38:49 +01:00
Chris Kitching 0c0ca79c1c Make control flow less insane
`while(false)` is certainly a bold choice.


[ROCm/hip commit: 182d346356]
2017-10-24 20:38:49 +01:00
Chris Kitching aa9fa15bdf Use a cmake glob for collecting hipify sources
Should make breaking this monstrosity into multiple files a bit
easier...


[ROCm/hip commit: be34a017ef]
2017-10-24 20:38:48 +01:00
Chris Kitching 9eff10c00d Move giant lookup table into another translation unit
Also, rewrote it as a constant variable instead of a function
that imperatively fills a map. It's shorter, faster the compile,
and (depending on how badly the compiler screws it up) maybe
faster to run.

And, of course, it starts breaking up that giant .cpp file.


[ROCm/hip commit: 4ab29113a1]
2017-10-24 20:38:25 +01:00
Evgeny Mankov 7d255ca2f6 Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP
[ROCm/hip commit: 6f639b9ad4]
2017-10-24 22:24:51 +03:00
Evgeny Mankov 90c72a6bd5 Merge pull request #230 from emankov/master
[HIPIFY][fix] cmake: NO_DEFAULT_PATH is strongly needed in find_package for LLVM

[ROCm/hip commit: fea0b6ef2f]
2017-10-24 20:44:56 +03:00
Evgeny Mankov e19f025930 Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP
[ROCm/hip commit: dcb51e7d02]
2017-10-24 20:13:43 +03:00
Evgeny Mankov 0b94701dac Merge pull request #224 from ChrisKitching/tests
[HIPIFY] Make the automated tests more useful

[ROCm/hip commit: 15c3030d95]
2017-10-24 20:12:36 +03:00
Evgeny Mankov 713c4ae3f4 Merge branch 'master' into tests
[ROCm/hip commit: 3f4d435d31]
2017-10-24 20:03:51 +03:00
Evgeny Mankov 558682ae64 Merge pull request #227 from ChrisKitching/clang-silly
Tweak some version numbers in clang version compatibility checks

[ROCm/hip commit: 061fe7a192]
2017-10-24 17:16:07 +03:00
Evgeny Mankov 31b3c14f05 [HIPIFY][fix] cmake: NO_DEFAULT_PATH is strongly needed in find_package for LLVM
Otherwise LLVM will be searched in system folders.


[ROCm/hip commit: 07a6d3ec06]
2017-10-24 16:35:10 +03:00