GithubHelp home page GithubHelp logo

danielrainer / ps_parprog_2021 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from uibk-dps-teaching/ps_parprog_2021

0.0 0.0 0.0 663 KB

Material for the UIBK Parallel Programming Lab (2021)

C 99.35% Makefile 0.57% C++ 0.08%

ps_parprog_2021's Introduction

UIBK PS Parallel Systems (703078, 2021)

This repository contains material required to complete exercises for the Parallel Programming lab in the 2021 summer semester, including assignment sheets and any associated materials. Note that some of this material is based on previous years.

Make sure to read this document carefully, as it contains vital information regarding the grading of exercises.

Topics

Generally, topics discussed here include

  • parallel programming concepts
  • shared memory parallelization using OpenMP
  • performance-oriented programming
  • proper experiment orchestration and benchmarking
  • parallel programming tools

Schedule

This schedule gives you an overview of the topics we will discuss on each date. It will be updated continuously throughout the semester. Note that exercises associated with a given date are to be discussed on that day, i.e., solutions for that assignment have to be handed in via OLAT by 17:00 on the previous day (Mondays).

Date Assignment Topics
2021-03-09 - Administrative matters, introduction to LCC2
2021-03-16 1 Speedup, Amhdal's law, measurements
2021-03-23 2 Sequential performance, cache effects, pthread parallelism
2021-04-13 3 OpenMP parallelism, time measurements, performance analysis
2021-04-20 4 OpenMP affinity, flush, and task parallelism
2021-04-27 5 OpenMP task parallelism and heat stencil application
2021-05-04 6 More OpenMP applications (prefix sum and N-Queens problem)
2021-05-11 7 Vectorization with and without OpenMP
2021-05-18 8 OpenMP correctness, auto-vectorization, dependence analysis
2021-05-25 9 Dependencies, Dependencies, Dependencies

General Information

All programming exercise solutions you hand in must compile and run on the LCC2 cluster as described in the LCC2 tutorial. One way way of ensuring this is by developing on LCC2 directly, either through a terminal or using an editor/IDE with support for remote development via SSH (such as Visual Studio Code).

Note that the default version of the GCC compiler present on LCC2 is very outdated. You may load a never version by calling module load gcc/8.2.0.

As the tutorial states, use job scripts to run your applications on LCC2 compute nodes, do NOT run applications directly on the LCC2 login node.

Connecting to LCC2 via SSH

NOTE: You have to be inside the University network to be able to connect via SSH. See here for more information.

The hostname of LCC2 is lcc2.uibk.ac.at.

Coding Guidelines

All programming exercises are conducted in C or C++.

Your code should always compile without warnings, when passing the flags -Wall -Wextra -Werror -std=gnu11. Error handling is your discretion, but wherever you do or do not include error handling you need to be able to justify it.

Make sure your code is properly formatted using either your IDE/Text editor of choice, or by using a tool such as clang-format. You can find an example .clang-format file in this repository. Failure to consistently format code may result in lower scores.

Try to write self-documenting code by choosing descriptive variable and function names. While you may want to add comments to certain sections of your code, try to avoid trivial comments such as fopen(...); // open file. The best source code comments are the ones you do NOT need to write. All names and comments should be written in English.

Finally, all submitted code must be accompanied by a GNU Makefile. That is, your solution must be able to be compiled with a single call to make. You can find an example Makefile and more information here.

ps_parprog_2021's People

Contributors

philippgs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.