Grafico dei commit

6428 Commit

Autore SHA1 Messaggio Data
Evgeny Mankov 3bacb69e20 Merge pull request #213 from ChrisKitching/simplify
[HIPIFY] Simplify (and accelerate) hipification of CUDA type identifiers
2017-10-26 19:17:01 +03:00
Ben Sander c0ef6d7b62 Merge pull request #232 from kknox/update-cuda-version
Update container to newer cuda driver and sdk 9.0
2017-10-25 23:45:24 +02:00
Kent Knox 160d92af20 Update container to newer cuda driver and sdk 9.0 2017-10-25 16:14:32 -05:00
Ben Sander ca1230300a Clean up test to address review feedback. 2017-10-25 16:08:16 -05:00
Siu Chi Chan d91a4f5bd6 add HC_FEATURE_PRINTF around the printf buffer definition 2017-10-25 12:00:02 -04:00
Jenkins 095222baf9 Merge 'master' into 'amd-master'
Change-Id: Ia6d5094661ae65493a229b124e2eaf6c9e7a25a3
2017-10-25 04:10:37 -05:00
Chris Kitching 59071b895e Don't use now-defunct cmake variable in lit test config 2017-10-24 20:52:51 +01:00
Chris Kitching 778d6827f9 Refactor cudaCall to prefer early return to deep nesting
Sorry for the invasive refactor, but this was making reasoning
about this function more difficult.
2017-10-24 20:38:49 +01:00
Chris Kitching 695a1eb059 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.
2017-10-24 20:38:49 +01:00
Chris Kitching a1d8340314 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.
2017-10-24 20:38:49 +01:00
Chris Kitching 182d346356 Make control flow less insane
`while(false)` is certainly a bold choice.
2017-10-24 20:38:49 +01:00
Chris Kitching be34a017ef Use a cmake glob for collecting hipify sources
Should make breaking this monstrosity into multiple files a bit
easier...
2017-10-24 20:38:48 +01:00
Chris Kitching 4ab29113a1 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.
2017-10-24 20:38:25 +01:00
Evgeny Mankov 6f639b9ad4 Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP 2017-10-24 22:24:51 +03:00
Evgeny Mankov fea0b6ef2f Merge pull request #230 from emankov/master
[HIPIFY][fix] cmake: NO_DEFAULT_PATH is strongly needed in find_package for LLVM
2017-10-24 20:44:56 +03:00
Evgeny Mankov dcb51e7d02 Merge branch 'master' of https://github.com/ROCm-Developer-Tools/HIP 2017-10-24 20:13:43 +03:00
Evgeny Mankov 15c3030d95 Merge pull request #224 from ChrisKitching/tests
[HIPIFY] Make the automated tests more useful
2017-10-24 20:12:36 +03:00
Evgeny Mankov 3f4d435d31 Merge branch 'master' into tests 2017-10-24 20:03:51 +03:00
Evgeny Mankov 061fe7a192 Merge pull request #227 from ChrisKitching/clang-silly
Tweak some version numbers in clang version compatibility checks
2017-10-24 17:16:07 +03:00
Evgeny Mankov 07a6d3ec06 [HIPIFY][fix] cmake: NO_DEFAULT_PATH is strongly needed in find_package for LLVM
Otherwise LLVM will be searched in system folders.
2017-10-24 16:35:10 +03:00
Rahul Garg d638cd4fc1 Example showing globals use with module APIs 2017-10-24 18:12:25 +05:30
Maneesh Gupta 5b6c5ca55e Merge pull request #225 from emankov/master
[HIPIFY] cmake: fix standalone build
2017-10-24 17:06:51 +05:30
Evgeny Mankov 5a9d4e3435 [HIPIFY][fix] cmake: do not build hipify-clang if not asked
+ warn "hipify-clang will not be built" if HIPIFY_CLANG_LLVM_DIR is not specified.
+ fix typo in previous commit .
2017-10-24 14:16:05 +03:00
emankov 062127c5ea [HIPIFY] cmake: simplify build 2017-10-24 10:51:11 +03:00
Siu Chi Chan 1ddee10c2f printf support for module API 2017-10-24 00:55:41 -04:00
Chris Kitching 0207a29f78 Tweak some version numbers in clang version compatibility checks
Apparently a couple of those APIs changed in clang 5, not 4.

Drat.
2017-10-24 01:45:23 +01:00
Siu Chi Chan b7b00fb281 add an unit test for printf 2017-10-23 18:31:13 -04:00
Siu Chi Chan f8bdb9f688 add a printf device function 2017-10-23 18:30:08 -04:00
Siu Chi Chan 5b9ce032d6 replace __hcc_workweek__ with HC_FEATURE_PRINTF flag 2017-10-23 18:30:08 -04:00
Evgeny Mankov ffd22ec756 [HIPIFY] cmake: fix standalone build 2017-10-23 21:16:13 +03:00
Rahul Garg 08c37f3296 Use 2X for bidir p2p memory bandwidth calc 2017-10-23 21:57:20 +05:30
Chris Kitching ac42fa53ce Add concurentKernels.cu to the testsuite 2017-10-23 13:39:37 +01:00
Chris Kitching 71aa7e267a Add the CUDA samples include dir to the path for tests
Means we get to easily steal CUDA examples for tests
2017-10-23 13:39:37 +01:00
Chris Kitching 33f88fe7a1 Add cudaRegister.cu lit test 2017-10-23 13:39:37 +01:00
Chris Kitching 2faf2800a0 Add square.cu to lit testsuite 2017-10-23 13:39:37 +01:00
Chris Kitching 80120aed22 Introduce a test runner script to simplify invocation
... And to use a standard, highly amusing trick for making
coloured output work.
2017-10-23 13:39:37 +01:00
Chris Kitching 711f495041 Adapt lit test for the hipLaunchKernelGGL changes from before... 2017-10-23 13:39:37 +01:00
Chris Kitching 66cc45afc5 Migrate lit test to using FileCheck, so failures are readable
It seems the test is already broken, but look how awesome the
error message is now:

/home/chris/HIP/tests/hipify-clang/axpy.cu:31:12: error: expected string not found in input
 // CHECK: hipLaunchKernel(HIP_KERNEL_NAME(axpy), dim3(1), dim3(kDataLen), 0, 0, a, device_x, device_y);
           ^
<stdin>:31:2: note: scanning from here
 //
 ^
<stdin>:33:2: note: possible intended match here
 hipLaunchKernelGGL(axpy, dim3(1), dim3(kDataLen), 0, 0, a, device_x, device_y);
 ^
2017-10-23 13:39:37 +01:00
Chris Kitching 640afd4186 Look for FileCheck for running lit tests, too
Use of grep in `lit` RUN lines is deprecated:
https://llvm.org/docs/TestingGuide.html#writing-new-regression-tests

Using grep leads to really unhelpful failure output (it literally
just says "the test failed"). FileCheck is much more helpful, and
distributed with LLVM on most distros anyway, so this extra
dependency shouldn't prove problematic.
2017-10-23 13:39:36 +01:00
Chris Kitching efa814e381 Propagate the CUDA toolkit directory into the lit tests
Allows the tests to actually run... :D
2017-10-23 13:39:36 +01:00
Chris Kitching 76ccda4205 Remove dependency on nonexistent lit target
This just... isn't a target. Maybe you were trying to do a file
dependency? But that's handled implicitly by the find_program
call anyway, so all this is doing is generating a cmake warning
2017-10-23 13:39:36 +01:00
Maneesh Gupta b792f9f507 Make elfio headers private
Change-Id: I3ba174bb46e84a75380207d93a0da6fe3703689e
2017-10-23 10:24:36 +05:30
Ben Sander 0d1ad06458 Use 2X for bidir memory bandwidth calc 2017-10-21 07:47:32 -05:00
Evgeny Mankov d1ba399eb1 Merge pull request #219 from ChrisKitching/newClang
[HIPIFY] Migrate hipify-clang to a newer version of clang
2017-10-21 11:59:46 +03:00
Ben Sander dd24983571 Remove printf 2017-10-20 13:24:04 -07:00
Ben Sander 0e3d824e8d Merge pull request #214 from scchan/reinit_printf_buffer
hipDeviceReset(): make sure to reinitialize the printf buffer in hcc RT
2017-10-20 11:04:37 -05:00
Ben Sander acf89b43d4 Update device properties.
- clear properties to defined initial state.
- enable some property flags which are now supported.
2017-10-20 15:52:13 +00:00
Ben Sander c9f906c2ce Modify device properties to use pool API.
- Also better error code checking
2017-10-20 14:49:29 +00:00
Jenkins 584c22d05f Merge 'master' into 'amd-master'
Change-Id: Ibf1621678d63291b419c8c4193b35240ce3406fe
2017-10-20 04:10:17 -05:00
Chris Kitching f5b273fc4f Avoid a double-free of HipifyPPCallbacks instance
This bug was present all along, but something changed in the order
of de-initialisation performed by llvm that makes it actually
crash now.

The constructor of HipifyPPCallbacks gives:
```
std::unique_ptr<HipifyPPCallbacks>(this)
```
to the LLVM Preprocessor instance. The Preprocessor instance
subsequently frees the HipifyPPCallbacks, which is then freed
again when we leave the stack frame at line 4340.

So: let's leak the HipifyPPCallbacks onto the heap, and leave
the LLVM Preprocessor object responsible for tidying it up.
2017-10-19 17:09:32 +01:00