| #
a82c4b5d |
| 13-Sep-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Allow region statements
llvm-svn: 281305
|
| #
b79f4d39 |
| 13-Sep-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Extend types when array sizes have smaller types
This prevents a compiler crash.
llvm-svn: 281303
|
| #
f5aff704 |
| 12-Sep-2016 |
Roman Gareev <[email protected]> |
Store the size of the outermost dimension in case of newly created arrays that require memory allocation.
We do not need the size of the outermost dimension in most cases, but if we allocate memory
Store the size of the outermost dimension in case of newly created arrays that require memory allocation.
We do not need the size of the outermost dimension in most cases, but if we allocate memory for newly created arrays, that size is needed.
Reviewed-by: Michael Kruse <[email protected]>
Differential Revision: https://reviews.llvm.org/D23991
llvm-svn: 281234
show more ...
|
| #
5857b701 |
| 12-Sep-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Bail out gracefully in case of invalid IR
Instead of aborting, we now bail out gracefully in case the kernel IR we generate is invalid. This can currently happen in case the SCoP stores point
GPGPU: Bail out gracefully in case of invalid IR
Instead of aborting, we now bail out gracefully in case the kernel IR we generate is invalid. This can currently happen in case the SCoP stores pointer values, which we model as arrays, as data values into other arrays. In this case, the original pointer value is not available on the device and can consequently not be stored. As detecting this ahead of time is not so easy, we detect these situations after the invalid IR has been generated and bail out.
llvm-svn: 281193
show more ...
|
| #
02293ed7 |
| 11-Sep-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Do not fail in case of arrays never accessed
If these arrays have never been accessed we failed to derive an upper bound of the accesses and consequently a size for the outermost dimension. W
GPGPU: Do not fail in case of arrays never accessed
If these arrays have never been accessed we failed to derive an upper bound of the accesses and consequently a size for the outermost dimension. We now explicitly check for empty access sets and then just use zero as size for the outermost dimension.
llvm-svn: 281165
show more ...
|
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2 |
|
| #
d58acf86 |
| 10-Aug-2016 |
Tobias Grosser <[email protected]> |
[GPGPU] Ensure arrays where only parts are modified are copied to GPU
To do so we change the way array exents are computed. Instead of the precise set of memory locations accessed, we now compute th
[GPGPU] Ensure arrays where only parts are modified are copied to GPU
To do so we change the way array exents are computed. Instead of the precise set of memory locations accessed, we now compute the extent as the range between minimal and maximal address in the first dimension and the full extent defined by the sizes of the inner array dimensions.
We also move the computation of the may_persist region after the construction of the arrays, as it relies on array information. Without arrays being constructed no useful information is computed at all.
llvm-svn: 278212
show more ...
|
| #
b06ff457 |
| 09-Aug-2016 |
Tobias Grosser <[email protected]> |
[GPGPU] Support PHI nodes used in GPU kernel
Ensure the right scalar allocations are used as the host location of data transfers. For the device code, we clear the allocation cache before device cod
[GPGPU] Support PHI nodes used in GPU kernel
Ensure the right scalar allocations are used as the host location of data transfers. For the device code, we clear the allocation cache before device code generation to be able to generate new device-specific allocation and we need to make sure to add back the old host allocations as soon as the device code generation is finished.
llvm-svn: 278126
show more ...
|
| #
750160e2 |
| 09-Aug-2016 |
Tobias Grosser <[email protected]> |
[GPGPU] Use separate basic block for GPU initialization code
This increases the readability of the IR and also clarifies that the GPU inititialization is executed _after_ the scalar initialization w
[GPGPU] Use separate basic block for GPU initialization code
This increases the readability of the IR and also clarifies that the GPU inititialization is executed _after_ the scalar initialization which needs to before the code of the transformed scop is executed.
Besides increased readability, the IR should not change. Specifically, I do not expect any changes in program semantics due to this patch.
llvm-svn: 278125
show more ...
|
| #
cf66ef26 |
| 09-Aug-2016 |
Tobias Grosser <[email protected]> |
[GPGPU] Pass parameters always by using their own type
llvm-svn: 278100
|
| #
12453403 |
| 08-Aug-2016 |
Tobias Grosser <[email protected]> |
[GPGPU] Support Values referenced from both isl expr and llvm instructions
When adding code that avoids to pass values used in isl expressions and LLVM instructions twice, we forgot to make single v
[GPGPU] Support Values referenced from both isl expr and llvm instructions
When adding code that avoids to pass values used in isl expressions and LLVM instructions twice, we forgot to make single variable passed to the kernel available in the ValueMap that makes it usable for instructions that are not replaced with isl ast expressions. This change adds the variable that is passed to the kernel to the ValueMap to ensure it is available for such use cases as well.
llvm-svn: 278039
show more ...
|
| #
cb1aef8d |
| 08-Aug-2016 |
Tobias Grosser <[email protected]> |
[GPGPU] Create code to verify run-time conditions
llvm-svn: 278026
|
| #
928d7573 |
| 05-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Sort dimension sizes of multi-dimensional shared memory arrays correctly
Before this commit we generated the array type in reverse order and we also added the outermost dimension size to the
GPGPU: Sort dimension sizes of multi-dimensional shared memory arrays correctly
Before this commit we generated the array type in reverse order and we also added the outermost dimension size to the new array declaration, which is incorrect as Polly additionally assumed an additional unsized outermost dimension, such that we had an off-by-one error in the linearization of access expressions.
llvm-svn: 277802
show more ...
|
| #
c1c6a2a6 |
| 05-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Add cuda annotations to specify maximal number of threads per block
These annotations ensure that the NVIDIA PTX assembler limits the number of registers used such that we can be certain the
GPGPU: Add cuda annotations to specify maximal number of threads per block
These annotations ensure that the NVIDIA PTX assembler limits the number of registers used such that we can be certain the resulting kernel can be executed for the number of threads in a thread block that we are planning to use.
llvm-svn: 277799
show more ...
|
| #
f919d8b3 |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Support scalars that are mapped to shared memory
llvm-svn: 277726
|
| #
8950cead |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Disable verbose debug output
llvm-svn: 277724
|
| #
b0dd95bc |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
Remove leftover debug output
llvm-svn: 277723
|
| #
130ca30f |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Add private memory support
llvm-svn: 277722
|
| #
b513b491 |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Add support for shared memory
llvm-svn: 277721
|
| #
00bb5a99 |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Handle scalar array references
Pass the content of scalar array references to the alloca on the kernel side and do not pass them additional as normal LLVM scalar value.
llvm-svn: 277699
|
| #
57693272 |
| 04-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Pass subtree values correctly to the kernel
llvm-svn: 277697
|
| #
629109b6 |
| 03-Aug-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Mark kernel functions as polly.skip
Otherwise, we would try to re-optimize them with Polly-ACC and possibly even generate kernels that try to offload themselves, which does not work as the GP
GPGPU: Mark kernel functions as polly.skip
Otherwise, we would try to re-optimize them with Polly-ACC and possibly even generate kernels that try to offload themselves, which does not work as the GPURuntime is not available on the accelerator and also does not make any sense.
llvm-svn: 277589
show more ...
|
| #
d7754a12 |
| 30-Jul-2016 |
Roman Gareev <[email protected]> |
Extend the jscop interface to allow the user to declare new arrays and to reference these arrays from access expressions
Extend the jscop interface to allow the user to export arrays. It is required
Extend the jscop interface to allow the user to declare new arrays and to reference these arrays from access expressions
Extend the jscop interface to allow the user to export arrays. It is required that already existing arrays of the list of arrays correspond to arrays of the SCoP. Each array that is appended to the list will be newly created. Furthermore, we allow the user to modify access expressions to reference any array in case it has the same element type.
Reviewed-by: Tobias Grosser <[email protected]>
Differential Revision: https://reviews.llvm.org/D22828
llvm-svn: 277263
show more ...
|
|
Revision tags: llvmorg-3.9.0-rc1 |
|
| #
d8b94bca |
| 28-Jul-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Pass context parameters to GPU kernel
llvm-svn: 276963
|
| #
a490147c |
| 28-Jul-2016 |
Tobias Grosser <[email protected]> |
GPGPU: Pass host iterators to kernel
llvm-svn: 276962
|
| #
44143bb9 |
| 28-Jul-2016 |
Tobias Grosser <[email protected]> |
GPGPU: use current 'Index' to find slot in parameter array
Before this change we used the array index, which would result in us accessing the parameter array out-of-bounds. This bug was visible for
GPGPU: use current 'Index' to find slot in parameter array
Before this change we used the array index, which would result in us accessing the parameter array out-of-bounds. This bug was visible for test cases where not all arrays in a scop are passed to a given kernel.
llvm-svn: 276961
show more ...
|