Questions on Parallelism and Data Dependence Analysis

Hi, I have two questions about llvm, and expect your reply very much.

  1. Is there any plan of llvm to support Thread-Level Parallelism by using OpenMP, MPI, pthread or llvm-defined directives?
    If automatic parallelism exploring is very hard, what is the key problem? We can’t get the precise data dependence
    information at compile-time?

  2. Can I use the functions provided by llvm to get the real data dependence(Read After Write) info on basic block level directly?
    In other words, can I get the task graph(node: task viewed as basic block or more coarse grain, edge: real data dependence)
    from sequential program using llvm to explore task-level parallelism by some proposed task scheduling algorithm?

thanks.

2008-12-25

Hi, I have two questions about llvm, and expect your reply very much.

1. Is there any plan of llvm to support Thread-Level Parallelism by using
OpenMP, MPI, pthread or llvm-defined directives?
    If automatic parallelism exploring is very hard, what is the key
problem? We can't get the precise data dependence
    information at compile-time?

llvm-gcc uses gcc as the front-end. OpenMP, MPI and pthread are all OK in
llvm, no additional directives are used in llvm now.

2. Can I use the functions provided by llvm to get the real data
dependence(Read After Write) info on basic block level directly?
   In other words, can I get the task graph(node: task viewed as basic
block or more coarse grain, edge: real data dependence)
   from sequential program using llvm to explore task-level parallelism by
some proposed task scheduling algorithm?

Waht is the exact values you mean? If you means oridinary "values" in llvm
, you can construct the task graph in a straightforward way with Use-def
chains.