Skip to content
  1. Jul 21, 2016
  2. Jul 20, 2016
  3. Jul 19, 2016
  4. Jul 18, 2016
    • Tobias Grosser's avatar
      GPGPU: collect array references · b9fc860a
      Tobias Grosser authored
      Initialize the list of references to a GPU array to ensure that the arrays that
      need to be passed to kernel calls are computed correctly.  Furthermore, the very
      same information is also necessary to compute synchronization correctly. As the
      functionality to compute these references is already available, what is left for
      us to do is only to connect the necessary functionality to compute array
      reference information.
      
      llvm-svn: 275798
      b9fc860a
    • Tobias Grosser's avatar
      GPGPU: Pull implementation out of class definition · 1fb9b64d
      Tobias Grosser authored
      This will allow us to see the full class definition even after we add
      non-trivial implementations of the different member functions.
      
      llvm-svn: 275797
      1fb9b64d
    • Tobias Grosser's avatar
      test: Add missing 'REQUIRES' line · 05aad8db
      Tobias Grosser authored
      llvm-svn: 275784
      05aad8db
    • Tobias Grosser's avatar
      GPGPU: Create host control flow · 38fc0aed
      Tobias Grosser authored
      Create LLVM-IR for all host-side control flow of a given GPU AST. We implement
      this by introducing a new GPUNodeBuilder class derived from IslNodeBuilder.  The
      IslNodeBuilder will take care of generating all general-purpose ast nodes, but
      we provide our own createUser implementation to handle the different GPU
      specific user statements. For now, we just skip any user statement and only
      generate a host-code sceleton, but in subsequent commits we will add handling of
      normal ScopStmt's performing computations, kernel calls, as well as host-device
      data transfers. We will also introduce run-time check generation and LICM in
      subsequent commits.
      
      llvm-svn: 275783
      38fc0aed
  5. Jul 16, 2016
    • Tobias Grosser's avatar
      GPGPU: Abort if any dummy function is called · cda19c23
      Tobias Grosser authored
      This ensures that accidental calls to these functions will break loadly instead
      of corrupting the stack with invalid return values.
      
      These functions have been introduced earlier as replacement of pet and parts of
      ppcg which we will never use and consequently have not been imported or compiled
      into Polly.
      
      llvm-svn: 275680
      cda19c23
  6. Jul 15, 2016
    • Tobias Grosser's avatar
      GPGPU: Format statements scheduled on the host ourselves · 20251734
      Tobias Grosser authored
      Otherwise ppcg would try to call into pet functionality that this not available,
      which obviously will cause trouble. As we can easily print these statements
      ourselves, we just do so.
      
      llvm-svn: 275579
      20251734
    • Tobias Grosser's avatar
      GPGPU: Use schedule whole components for scheduler · 2341fe9e
      Tobias Grosser authored
      This option increases the scalability of the scheduler and allows us to remove
      the 'gisting' workaround we introduced in r275565 to handle a more complicated
      test case. Another benefit of using this option is also that the generated
      code looks a lot more streamlined.
      
      Thanks to Sven Verdoolaege for reminding me of this option.
      
      llvm-svn: 275573
      2341fe9e
    • Tobias Grosser's avatar
      GPGPU: Drop domain constraints from flow dependences · e4725437
      Tobias Grosser authored
      This works around a shortcoming of the isl scheduler, which even for some
      smaller test cases does not terminate in case domain constraints are part
      of the flow dependences.
      
      llvm-svn: 275565
      e4725437
    • Tobias Grosser's avatar
      GPGPU: Add memory reference tag ids to tagged accesses · 6293ba69
      Tobias Grosser authored
      It seems we forgot to actually add the memory access ids to the tagged accesses,
      but instead just tagged the accesses with empty isl_ids. This issue was found
      by inspection and without code generation it is difficult to test just by
      itself. We fix it for now without test case and expect our code generation
      tests to cover this later on.
      
      llvm-svn: 275557
      6293ba69
    • Tobias Grosser's avatar
      GPGPU: Do not check for hidden declarations · cfa0361d
      Tobias Grosser authored
      We do not have them in Polly and the code to check for them is directly
      referring to pet data structures which we do not have available.
      
      This commit avoids undefined behavior. As such issues are difficult to
      reproduce, this commit comes without a test case.
      
      llvm-svn: 275553
      cfa0361d
    • Tobias Grosser's avatar
      GPGPU: Test scalar/array types i1/i3/i8/i32/i60/i64/i80/i120/i128/i3000 · 225dca78
      Tobias Grosser authored
      Arrays with integer base type are similar to arrays with floating point types,
      with the exception that LLVM's integer types can take some odd values. We
      add a selection of different values to make sure we correctly round these
      types when necessary.
      
      References to scalar integer types are special, as we currently do not model
      these types as array accesses as they are considered 'synthesizable' by Polly.
      As a result, we do not generate explicit data-transfers for them, but instead
      will need to keep track of all references to 'synthesizable' values separately.
      
      At the current stage, this is only visible by missing host-to-device
      data-transfer calls. In the future, we will also require special code generation
      strategies.
      
      llvm-svn: 275551
      225dca78
    • Tobias Grosser's avatar
      GPGPU: Test scalar parameters of type half/float/double/fp128/x86_fp80/ppc_fp128 · 8d9dcfc5
      Tobias Grosser authored
      We currently only test that the code structure we generate for these scalar
      parameters is correct and we add these types to make sure later code generation
      additions have sufficient test coverage.
      
      In case some of these types cannot be mapped due to missing hardware support
      on the GPU some of these test cases may need to be updated later on.
      
      llvm-svn: 275548
      8d9dcfc5
    • Tobias Grosser's avatar
      GPGPU: Make sure scops with more than one array work · 2d010daf
      Tobias Grosser authored
      We use this opportunity to add a test case containing a scalar parameter.
      
      llvm-svn: 275547
      2d010daf
    • Tobias Grosser's avatar
      GPGPU: Free options to avoid memory leak · b307ed4d
      Tobias Grosser authored
      ppcg does not free the option structs for us. To avoid a memory leak we do this
      ourselves.
      
      llvm-svn: 275546
      b307ed4d
    • Tobias Grosser's avatar
      GPGPU: Shorten ppcg include paths to avoid conflict with cuda.h · a56f8f8e
      Tobias Grosser authored
      Instead of directly linking to ppcg's main source directory, we link to the
      parent director. This allows us to access ppcg's include files with
      'ppcg/cuda.h' and avoids a conflict with NVIDIA's cuda.h header.
      
      Also drop an include directory that is currently not used.
      
      llvm-svn: 275536
      a56f8f8e
    • Tobias Grosser's avatar
      GPGPU: Model array access information · 60f63b49
      Tobias Grosser authored
      This allows us to derive host-device and device-host data-transfers.
      
      llvm-svn: 275535
      60f63b49
    • Tobias Grosser's avatar
      GPGPU: Use CHECK-NEXT to harden test cases · eeb8a95a
      Tobias Grosser authored
      A sequence of CHECK lines allows additional statements to appear in the
      output of the tested program without any test failures appearing. As we do
      not want this to happen, switch this test case to use CHECK-NEXT.
      
      llvm-svn: 275534
      eeb8a95a
  7. Jul 14, 2016
Loading