Giter Site home page Giter Site logo

pasl's Introduction

PASL: Parallel Algorithm Scheduling Library

The full package documentation can be found on the PASL web page.

For best results, render this document using pandoc. For example, to generate a PDF, run from the command line the following.

pandoc README.md -o README.pdf

Directory structure


   Folder            Contents

sequtil command-line interface, printing interface, timers, control operators, container data structures

parutil locks, barriers, concurrent containers, worker threads, worker-local storage, platform-specific configuration mining

sched threading primitives, DAG primitives, thread-scheduling algorithms, granularity control

example example programs

test regression tests

tools log visualization, shared PASL makefiles, ported code from Problem Based Benchmark Suite, custom malloc count, script to enable/disable hyperthreading, matrix market file IO, export scripts

chunkedseq chunked-sequence library

graph graph-processing library


Supported platforms

Currently, PASL supports only x86-64 machines. Furthermore, full support is available only for recent versions of Linux. Limited support is available for Mac OS.

Package dependencies


                    Package   Version     Details

gcc >= 4.9.0 Recent gcc is required because PASL makes heavy use of recent features of C++ / C++1x, such as lambda expressions and higher-order templates.

php >= 5.3.10 PHP is currently used by the build system of PASL. In specific, the Makefiles used by PASL make calls to PHP programs for purposes of dependency analysis. As such, PHP is not required in situations where alternative build systems, such as XCode, are used.

ocaml >= 4.00 Ocaml is required by the log-file visualization tool, but currently nothing else.


Getting started

Building from the command line

Let us start by building the fibonacci example. First, change to the examples directory.

$ cd pasl/example

Then, build the binary for the source file, which is named fib.cpp.

$ make fib.opt -j

Now we can run the program. In this example, we are computing fib(45) using eight cores.

$ ./fib.opt -n 45 -proc 8

In general, you can add a new build target, say foo.cpp, by doing the following.

  1. Create the file foo.cpp in the folder example.

  2. Add to foo.cpp the appropriate initialization code. For an example, see fib.cpp.

  3. In the Makefile in the same folder, add a reference to the new file.

     PROGRAMS=\
             fib.cpp \
             hull.cpp \
             bhut.cpp \
             ...
             foo.cpp
    
  4. Now you should be able to build and run the new program just like we did with fibonacci.

Building on Mac OS

Currently, building from the command line is not yet supported. However, it is possible to build from an XCode project.

XCode

  1. Create a new project.
  2. Create a new target binary.
  3. In the "build phases" configuration page of the new target binary, add to the "Compile Sources" box the contents of the following directories.
  • sequtil
  • parutil
  • sched (except for pasl.S; this file should not be imported)
  1. Add to the CFLAGS of the target binary the following flags.
  • -DTARGET_MAC_OS
  • -D_XOPEN_SOURCE
  1. Add to your project the remaining source files that you want to compile. Remember to add one file which defines the main() routine. For example, you could add examples/fib.cpp if you want to run the fibonacci program.
  2. Click the "play" button to compile and run the program.

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.