Changes between Version 2 and Version 3 of SIMDPlan


Ignore:
Timestamp:
Oct 9, 2011 4:33:15 PM (3 years ago)
Author:
pmonday
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SIMDPlan

    v2 v3  
    2525 
    2626== Current Open Questions == 
    27  * Should the existing pure Vector libraries be modified to use the vectorized code as a first priority, wait until DPH is modified, or leave as is? 
     27These clearly won't be all of the questions I have, there is a substantial amount of work that goes through the entire GHC compiler stack before reaching the LLVM instructions. 
     28 
     29 * Should the existing pure Vector libraries (/libraries/vector/Data/*) be modified to use the vectorized code as a first priority, wait until DPH (/libraries/dph/) is modified, or leave the Vector library as is? 
    2830 * How does one create one of the new Vector Types in a Haskell program (direct PrimOp, for testing ... let x = ????) 
    2931 * One discussion point was that the "Vector Lengths" should be "Set to 1" for non LLVM code generation, where does this happen?  On my first survey of the code, it seems that the code generators are partitioned from the main body of code, implying that each of the code generators will have to be modified to account for the new Cmm MachOps and properly translate them to non-vectorized instructions. 
     
    6971 1. Modify ./compiler/codeGen/CgPrimOp.hs, code for each primop (above) must be added to complete the primop addition. 
    7072  a. The code, basically, links the primops to the Cmm MachOps (that, in turn, are read by the code generators) 
    71   a. It looks like some Cmm extensions will have to be added to ensure alignment and pass vectorization information onto the back ends, the necessary MachOps will be determined after the first vertical stack is completed (using the "Double" as a model).  There may be some reuse from the existing MachOps. 
    72  
     73  a. It looks like some Cmm extensions will have to be added to ensure alignment and pass vectorization information onto the back ends, the necessary MachOps will be determined after the first vertical stack is completed (using the "Double" as a model).  There may be some reuse from the existing MachOps.  There is some discussion to these extensions (or similar ones) on the original [http://hackage.haskell.org/trac/ghc/ticket/3557 Patch 3557 Documentation] 
    7374 
    7475== Add new MachOps to Cmm code == 
     
    109110 
    110111== Modify Vector Libraries and Pragmas == 
    111 The compiler/vectorise code contains the implementation details for the VECTORISE pragma. 
     112The compiler/vectorise code contains the implementation details for the [http://hackage.haskell.org/trac/ghc/wiki/DataParallel/VectPragma VECTORISE pragma]. 
    112113 
    113114 * /compiler/vectorise/Vectorise.hs 
     
    115116 * /compiler/vectorise/Vectorise/Type/Env.hs 
    116117 
    117 What needs to be done here? 
    118 Modify the Vector Libraries 
     118These may need to be modified to add options to the VECTORISE pragma, this is not determined at the moment. 
    119119 
     120== Modify the Vector Libraries == 
    120121The /libraries/vector/Data/Vector/* should be modified to take advantage of the new PrimOps.  Here we replace loops with strided loops.   
    121122