pfp-e2019-pub
所属分类:超算/并行计算
开发工具:Haskell
文件大小:0KB
下载次数:0
上传日期:2020-01-13 10:44:18
上 传 者:
sh-1993
说明: 2019年DIKU并行函数编程课程的公共存储库,
(Public repository for the 2019 Parallel Functional Programming course at DIKU,)
文件列表:
bootstrap-exercises.md (2480, 2020-01-13)
material/ (0, 2020-01-13)
material/Opt-Loc-Ref-Lit/ (0, 2020-01-13)
material/Opt-Loc-Ref-Lit/ICS2014.pdf (362934, 2020-01-13)
material/Opt-Loc-Ref-Lit/KennedyImprovingCachePerf.pdf (1540559, 2020-01-13)
material/Opt-Loc-Ref-Lit/Saday-InspectExec.pdf (1772289, 2020-01-13)
material/Opt-Loc-Ref-Lit/SadaypanPracticalLocOpt.pdf (364798, 2020-01-13)
material/Opt-Loc-Ref-Lit/StroutCompileTimeCompDataIterReordering.pdf (208687, 2020-01-13)
material/Opt-Loc-Ref-Lit/StroutHypergraph.pdf (257476, 2020-01-13)
material/a-provable-time-and-space-efficient-implementation-of-nesl.pdf (1395545, 2020-01-13)
material/blelloch-programming-parallel-algorithms.pdf (1436199, 2020-01-13)
material/flattening/ (0, 2020-01-13)
material/flattening/NeslFlatTechPaper.pdf (60203, 2020-01-13)
material/flattening/harnessing-multicores.pdf (249851, 2020-01-13)
material/flattening/nested-madsen.pdf (612709, 2020-01-13)
material/halide-pldi13.pdf (8456319, 2020-01-13)
material/ispc_inpar_2012.pdf (373383, 2020-01-13)
material/poly/ (0, 2020-01-13)
material/poly/L5-LoopParI.pdf (456497, 2020-01-13)
material/poly/poly-code-egs/ (0, 2020-01-13)
material/poly/poly-code-egs/common.py (1497, 2020-01-13)
material/poly/poly-code-egs/fission-wrong.py (1039, 2020-01-13)
material/poly/poly-code-egs/fused-rev.py (1078, 2020-01-13)
material/poly/poly-code-egs/fused-reversal-cos.py (903, 2020-01-13)
material/poly/poly-code-egs/fusion.py (1115, 2020-01-13)
material/poly/poly-code-egs/last-write.py (423, 2020-01-13)
material/poly/poly-code-egs/loop-skewing.py (1763, 2020-01-13)
material/poly/poly-code-egs/test-skewing.c (1378, 2020-01-13)
material/poly/poly-in-detail.pdf (5932623, 2020-01-13)
material/poly/polycomp-tutorial.pdf (1805240, 2020-01-13)
material/prefix-sums-and-their-applications.pdf (311166, 2020-01-13)
material/seq-no-more.pdf (226679, 2020-01-13)
project-suggestions.md (4328, 2020-01-13)
slides/ (0, 2020-01-13)
slides/L1-determ-prog.pdf (7695035, 2020-01-13)
slides/L10-LocOfRef.pdf (983000, 2020-01-13)
slides/L2-advanced-futhark-cost-models.pdf (241047, 2020-01-13)
slides/L3-regular-flattening.pdf (1147882, 2020-01-13)
... ...
# Parallel Functional Programming, Block 2 2019
PFP is structured around five weeks with lectures and lab sessions
on Monday and Wednesday, followed by a final project to be
presented orally at the exam. Throughout the course, you will hand in
four weekly assignments. These *weeklies* count for 40\% of the
grade, while the exam counts for 60\%.
The teachers are **Cosmin Oancea** and **Troels Henriksen**.
All lectures and lab sessions will be delivered in English. The
assignments and projects will be posted in English, and while you can
chose to hand in solutions in either English or Danish, English is
preferred.
All course material is distributed via this GitHub page. Assignment
handin is still on Absalon. There is no mandated textbook for the
course - you will be assigned reading material from papers and such.
## Course schedule
This course schedule is tentative and will be updated as we go along.
The lab sessions are aimed at providing help for the weeklies and
group project. Do not assume you can solve them without showing up to
the lab sessions.
On Monday, we are in "Kursussal 3" at "Zoo" (a building connected to
the museum of zoology).
On Wednesday, we are at DIKU in classroom 1-0-22 from 10:00-12:00 and
in classrom 1-0-26 from 13:00-15:00.
**Note that the order of labs and lectures are swapped for the first
three teaching days.**
| Date | Time | Topic | Material |
| --- | --- | --- | --- |
| 18/11 | 13:00-15:00 | *Cancelled* |
| 18/11 | 15:00-17:00 | [Intro, deterministic parallelism, data parallelism, Futhark](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L1-determ-prog.pdf) | [Parallel Programming in Futhark](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://futhark-book.readthedocs.io/en/latest/), sections 1-4 | |
| 20/11 | 10:00-12:00 | Lab ([**Assignment 1 handout**](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-1/)) | [Futhark exercises](https://github.com/diku-dk/pfp-e2019-pub/blob/master/bootstrap-exercises.md) |
| 20/11 | 13:00-15:00 | [Cost models, advanced Futhark](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L2-advanced-futhark-cost-models.pdf) | [Guy Blelloch: Programming Parallel Algorithms](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/blelloch-programming-parallel-algorithms.pdf), [Prefix Sums and Their Applications](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/prefix-sums-and-their-applications.pdf), [A Provable Time and Space Efficient Implementation of NESL](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/a-provable-time-and-space-efficient-implementation-of-nesl.pdf) |
| 25/11 | 13:00-15:00 | Lab | |
| 25/11 | 15:00-17:00 | [Regular flattening: moderate and incremental](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L3-regular-flattening.pdf) | [Futhark: Purely Functional GPU-Programming with Nested Parallelism and In-Place Array Updates](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://futhark-lang.org/publications/pldi17.pdf), [Incremental Flattening for Nested Data Parallelism](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://futhark-lang.org/publications/ppopp19.pdf) (particularly the latter) |
| 27/11 | 10:00-12:00 | [Full/irregular flattening](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L4-irreg-flattening.pdf) | [Transforming High-Level Data-Parallel Programs into Vector Operations](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/flattening/NeslFlatTechPaper.pdf), [Harnessing the Multicores: Nested Data Parallelism in Haskell](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/flattening/harnessing-multicores.pdf) (not easy to read)|
| 27/11 | 13:00-15:00 | Lab ([**Assignment 2 handout**](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-2/)) | |
| 2/12 | 13:00-15:00 | [Task parallelism (parallel Haskell)](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L5-parallel-haskell.pdf/) ([code](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L5-parallel-haskell-code/)) | [Parallel and Concurrent Programming in Haskell](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939/), chapter 4. [Seq no more: Better Strategies for Parallel Haskell](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/seq-no-more.pdf) |
| 2/12 | 15:00-17:00 | Lab | |
| 4/12 | 10:00-12:00 | [Halide](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L7-Halide.pdf) | [Halide: A Language and Compiler for Optimizing Parallelism, Locality and Recomputation in Image Processing Pipelines](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/halide-pldi13.pdf) | |
| 4/12 | 13:00-15:00 | Lab ([**Assignment 3 handout**](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-3)) | |
| 9/12 | 13:00-15:00 | [Polyhedral Analysis](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L9-polyhedral.pdf) | [PMPH Dependence Analysis](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/poly/L5-LoopParI.pdf); [Sven Verdoolaege: Presburger Formulas and Polyhedral Compilation (tutorial)](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/poly/polycomp-tutorial.pdf); [Sven Verdoolaege: Presburger Sets and Relations: from High-Level Modelling to Low-Level Implementation (slides)](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/poly/poly-in-detail.pdf)
| 9/12 | 15:00-17:00 | Lab | [Code Examples Using the ISLPY library](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/poly/poly-code-egs/) |
| 11/12 | 10:00-12:00 | [Vector programming with ISPC](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L8-ispc.pdf) | [ispc: A SPMD Compiler for High-Performance CPU Programming](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/ispc_inpar_2012.pdf) |
| 11/12 | 13:00-15:00 | Lab ([**Assignment 4 handout**](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-4)) | |
| 16/12 | 13:00-15:00 | [Optimizing Locality of Reference](https://github.com/diku-dk/pfp-e2019-pub/blob/master/slides/L10-LocOfRef.pdf) | [Related Literature](https://github.com/diku-dk/pfp-e2019-pub/blob/master/material/Opt-Loc-Ref-Lit/) |
| 16/12 | 15:00-17:00 | Lab (with project proposals) | |
| 18/12 | 10:00-12:00 | Lab | |
| 18/12 | 13:00-15:00 | Lab | |
After New Years, there will be no lectures, but labs will still be
held to help with the group project.
| Date | Time |
| --- | --- |
| 6/1 | 15:00-17:00 |
| 8/1 | 13:00-15:00 |
| 13/1 | 15:00-17:00 |
| 15/1 | 13:00-15:00 |
## Weekly assignments
The weekly assignments are **mandatory**, must be solved
**individually**, and make up 40% of your final grade. Submission is
on Absalon.
You will receive feedback a week after the handin deadline (at the
latest). You then have another week to prepare a resubmission. That
is, **the resubmission deadline is two weeks after the original handin
deadline**.
### Weekly 1 (due November 28)
* [Assignment text](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-1/1.pdf)
* [Code handout](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-1/ising-handout.tar.gz)
* [Hopefully helpful notes on how to do these kinds of assignments](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-1/1-notes.pdf)
### Weekly 2 (due December 5)
* [Assignment text](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-2/2.pdf)
* [Code handout](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-2/code.tar.gz)
### Weekly 3 (due December 12)
* [Assignment text](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-3/3.pdf)
* [Code handout](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-3/code-handout)
### Weekly 4 (due December 19)
* [Assignment text](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-4/4.pdf)
* [Code handout](https://github.com/diku-dk/pfp-e2019-pub/blob/master/weekly-4/code-handout)
## Group project and exam
The final project, along with the exam as a whole, contributes 60% of
your grade, and is done in groups of 1-3 people (although working
alone is strongly discouraged). We have [a list of project
suggestions](https://github.com/diku-dk/pfp-e2019-pub/blob/master/project-suggestions.md), but you are free to suggest your
own (but please talk with us first). Since the time to work on the
project is rather limited, and there is no possibility of
resubmission, you should ask for help early and often if you are
having trouble making progress. **The project should be handed in via
Absalon on Friday the 17th of January**. Send an email if you have
trouble meeting this deadline.
Most of the projects are about writing some parallel program, along
with a report describing the main points and challenges of the
problem. The exam format is a group presentation followed by
individual questions about both your project **and anything else in
the curriculum**. Each group prepares a common presentation with
slides, and each member of the group presents non-overlapping parts of
the presentation for about 10 min (or less). Then each member of the
group will answer individual questions for about 10 min.
## Practical information
You may find it useful to make use of DIKUs GPU machines in your work.
You log in by first SSHing to the bastion server
`ssh-diku-apl.science.ku.dk` using your KU license plate (`abc123`) as
the user name, and then SSHing on to one of the GPU machines. Despite
their names, they each have two multi-core CPUs and plenty of RAM as
well.
* `gpu01-diku-apl`, `gpu02-diku-apl`, `gpu03-diku-apl` have dual GTX
780 Ti GPUs.
* `phi-diku-apl` has a K40 GPU.
* `gpu04-diku-apl` has a GTX 2080 Ti GPU (by far the fastest).
All machines should have all the software installed you need. If you
are missing something, [contact Troels](https://github.com/diku-dk/pfp-e2019-pub/blob/master/mailto:athas@sigkill.dk). The
machines have a shared home directory (which is very slow), *except*
`gpu01-diku-apl`, which has its own home directory (which is a little
faster).
### GPU setup
For CUDA to work, you may need to add the following to your `$HOME/.bash_profile`:
```bash
CUDA_DIR=/usr/local/cuda
export PATH=$CUDA_DIR/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_DIR/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBRARY_PATH
export CPLUS_INCLUDE_PATH=$CUDA_DIR/include:$CPLUS_INCLUDE_PATH
export C_INCLUDE_PATH=$CUDA_DIR/include:$C_INCLUDE_PATH
```
## Other resources
You are not expected to read/watch the following unless otherwise
noted, but they contain useful and interesting background information.
* [The Futhark User's Guide](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://futhark.readthedocs.io), in
particular [Futhark Compared to Other Functional
Languages](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://futhark.readthedocs.io/en/latest/versus-other-languages.html)
* [Troels' PhD thesis on the Futhark compiler](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://futhark-lang.org/publications/troels-henriksen-phd-thesis.pdf)
* [A library of parallel algorithms in NESL](https://github.com/diku-dk/pfp-e2019-pub/blob/master/http://www.cs.cmu.edu/~scandal/nesl/algorithms.html)
* [Functional Parallel Algorithms by Guy Blelloch](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://vimeo.com/showcase/1468571/video/16541324)
* ["Performance Matters" by Emery Berger](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://www.youtube.com/watch?v=r-TLSBdHe1A)
* [The story of `ispc`](https://github.com/diku-dk/pfp-e2019-pub/blob/master/https://pharr.org/matt/blog/2018/04/18/ispc-origins.html) (you can skip the stuff about office politics, although it might ultimately be the most valuable part of the story)
近期下载者:
相关文件:
收藏者: