<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://didawiki.cli.di.unipi.it/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>DidaWiki - magistraleinformaticanetworking:spm</title>
        <description></description>
        <link>https://didawiki.cli.di.unipi.it/</link>
        <lastBuildDate>Sun, 19 Jul 2026 17:50:21 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://didawiki.cli.di.unipi.it/lib/exe/fetch.php/wiki/dokuwiki.svg</url>
            <title>DidaWiki</title>
            <link>https://didawiki.cli.di.unipi.it/</link>
        </image>
        <item>
            <title>SPM Laboratory - A.Y. 2015/2016</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/accessophi1516</link>
            <description>SPM Laboratory - A.Y. 2015/2016

Machine name  and access

The machine is not registered on the DNS, you should use the IP address

	*  131.114.137.225, corresponding to the registered name
	*  r720-phi.itc.unipi.it

You should request the account to the SPM teacher sending an email with</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 30 Sep 2016 12:46:42 +0000</pubDate>
        </item>
        <item>
            <title>List of assigned accounts</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/accounts1617</link>
            <description>List of assigned accounts

For the A. Y. 2016-2017
 Account SPM16xx  Name  Assignment  Status  01  Amin Ait Lamqadem  Video (KNL)  Passed  02  Francesco Sardaro  Video (KNL)  03  Luca Guerrini  Jacobi  04  Serklame Abebe Kassa  05  Hagos Lemlem Adhane</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 19 Oct 2017 07:46:45 +0000</pubDate>
        </item>
        <item>
            <title>Exams Session April 2016</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/aprile16spm</link>
            <description>Exams Session April 2016

Projects submitted

	*  Joao
	*  Bici
	*  Ragusa
	*  Nicoletti
	*  Di Rienzo

Exams

Discussions and oral session: Tuesday, April 19, 2016

	*  2.30pm:   Valdo Joao, Bici, Di Rienzo, Ragusa</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 12 Apr 2016 19:50:32 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2009-2010 Final project assignments</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/assignment</link>
            <description>SPM 2009-2010 Final project assignments

This are the assignments already agreed. Those having no “Ok” in the “Approval” column should contact the professor. 
Those with some detail left unspecified (application, implementation framework, etc.) should try to finalize it</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 26 May 2010 12:59:44 +0000</pubDate>
        </item>
        <item>
            <title>SPM exams Feb 2016</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/calspm0216</link>
            <description>SPM exams Feb 2016

Thursday, Feb 25, 9.00am:

	*  Conte + (project discussion only) Rinaldi

Monday, Feb 29, 9.30am:

	*  Frati, Forti 

Monday, Feb 29, 4.00pm:

	*  Marini, Ralli 

Friday, March 4, 10.00am:

	*  Crecchi, Neri

Friday, March 4, 11.00am:</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 03 Mar 2016 17:09:55 +0000</pubDate>
        </item>
        <item>
            <title>Extraordinary exams - April 2016</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/calspm0416</link>
            <description>Extraordinary exams - April 2016

Discussions and oral session:

	*  10am:    Valdo Joao, Bici, Di Rienzo
	*  4pm:    Nicoletti, Ragusa</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 12 Apr 2016 14:59:22 +0000</pubDate>
        </item>
        <item>
            <title>Computer Facilities at the Polo Fibonacci</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/cdcfibonacci</link>
            <description>Computer Facilities at the Polo Fibonacci

As students of the University of Pisa, and in particular being the Master organized also by the Dept. of Computer Science, you have right to have an “account” at the Polo Fibonacci. Once you get your “</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 26 Feb 2010 15:01:05 +0000</pubDate>
        </item>
        <item>
            <title>Read and write images from files</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/cimglib1718</link>
            <description>Read and write images from files

To run the Histogram project, students may consider to use the CImg library. The library consists in a single header file to be included and compiled linking the pthread and the X11 library

 g++/icc -pthread -lX11 file.cpp -o ...</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Jan 2018 09:46:48 +0000</pubDate>
        </item>
        <item>
            <title>RpcGen Sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/code1516-rpc</link>
            <description>RpcGen Sample code

To test:

	*  be sure portmap is installed (sudo apt-get install portmap)
	*  run rpcgen server.x from command line
	*  modify server_server.c and server_client.c suitably
	*  compile and launch server in a shell (make -F Makefile.server server_server</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Dec 2015 09:37:15 +0000</pubDate>
        </item>
        <item>
            <title>Socket code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/code1516-socket</link>
            <description>Socket code

This code is sample code only. There are many details not completely processed in the code (see lesson material). 

	*  [Pipeline] code with “Chans” interface</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Dec 2015 09:43:15 +0000</pubDate>
        </item>
        <item>
            <title>Threadpool code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/code1516-threadpool</link>
            <description>Threadpool code

C

tgz file

C++

tgz file

Java

tgz file</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 29 Sep 2015 17:02:35 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2015/16 : Code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/code1516</link>
            <description>SPM 2015/16 : Code

	*  Threadpool
	*  Socket
	*  RpcGen</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Dec 2015 09:40:30 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2009-2010</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/detailedprogram0910</link>
            <description>SPM 2009-2010

This is the list of arguments actually presented during the course in the A.A. 2009-2010.

	*  Evolution of computer architectures (multi/many core, clusters, grids, clouds) and urgency of effective parallel/distributed programming models and tools</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 20 Jan 2010 12:43:57 +0000</pubDate>
        </item>
        <item>
            <title>SPM notes 2010--2011</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/erratacorrigespm1011</link>
            <description>SPM notes 2010--2011

This page will host the errata corrige as well as the integration material relative to the SPM notes published in April 2011. BACK to SPM home page.

To signal errors or problems with the notes, please send a message to &lt;marcod@di.unipi.it&gt; with subject</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 25 May 2011 15:52:09 +0000</pubDate>
        </item>
        <item>
            <title>SPM recovery edition 2017</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/esamirec17</link>
            <description>SPM recovery edition 2017

Project text

This is the [PDF] of the first version of the project text. 

For the Histogram project, you may take into account CImg for the image read/write activities. This only runs on the PHI KNL. I&#039;ll provide the students that will pick up this project an account on the PHI KNL, just moving their current account to this other machine (see instructions for the access here).</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 22 Feb 2018 15:21:30 +0000</pubDate>
        </item>
        <item>
            <title>SPM 1617 Exercise and assignments</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/exercise1617spm</link>
            <description>SPM 1617 Exercise and assignments

Matrix multiplication

Write e program that generates two N by N matrixes A and B and computes C, the result of the multiplication of A by B. 
The computation has to be performed by M threads, each working on a partition of C.
Check the correctness of the result against result computed sequentially.
Plot scalability curve for the program.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 12 Oct 2016 15:36:42 +0000</pubDate>
        </item>
        <item>
            <title>Task farm (POSIX TCP/IP)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/farmposix</link>
            <description>Task farm (POSIX TCP/IP)

(The code presented here does not pretend to be efficient, nor completely correct. It has been designed with the aim of illustrating several of the problems related to the implementation of fairly simple parallel applications)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 22 Mar 2011 18:02:43 +0000</pubDate>
        </item>
        <item>
            <title>Dotprod</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff27_dotprod</link>
            <description>Dotprod


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Nov 2013 17:42:30 +0000</pubDate>
        </item>
        <item>
            <title>Farm_Farm</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff27_farmfarm</link>
            <description>Farm_Farm


/*
 *
 *   ---------------------------------------------------------------
 *  |                                                 host0         |
 *  |                                          ------------------   |  
 *  |                                         |                  |  |
 *  |                                         |                  |  |
 *  |          master                   ------|-----&gt; Farm ------|--
 *  |    --------------------------    |      |               …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Nov 2013 17:45:09 +0000</pubDate>
        </item>
        <item>
            <title>MapFarm</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff27_mapfarm</link>
            <description>MapFarm


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Nov 2013 17:41:11 +0000</pubDate>
        </item>
        <item>
            <title>ParForTest</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff27_parfortest</link>
            <description>ParForTest


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Nov 2013 17:43:18 +0000</pubDate>
        </item>
        <item>
            <title>One stage pipeline (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff29_pipe1</link>
            <description>One stage pipeline (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even t…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 29 Oct 2013 17:18:52 +0000</pubDate>
        </item>
        <item>
            <title>Three stage pipeline (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff29_pipe3</link>
            <description>Three stage pipeline (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 29 Oct 2013 17:19:52 +0000</pubDate>
        </item>
        <item>
            <title>Pipeline (C++11 version, sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff29_pipe3c11</link>
            <description>Pipeline (C++11 version, sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without e…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 29 Oct 2013 17:27:47 +0000</pubDate>
        </item>
        <item>
            <title>Pipeline with farm stage (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff29_pipefar</link>
            <description>Pipeline with farm stage (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 29 Oct 2013 17:25:23 +0000</pubDate>
        </item>
        <item>
            <title>Farm of pipe (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff30_farmpipe</link>
            <description>Farm of pipe (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the imp…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Oct 2013 17:05:49 +0000</pubDate>
        </item>
        <item>
            <title>Map (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff30_map</link>
            <description>Map (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warr…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Oct 2013 17:13:45 +0000</pubDate>
        </item>
        <item>
            <title>Master worker (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff30_masterworker</link>
            <description>Master worker (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the im…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Oct 2013 17:07:38 +0000</pubDate>
        </item>
        <item>
            <title>Master worker with explicit mapping (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff30_mwmap</link>
            <description>Master worker with explicit mapping (sample code)



/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRAN…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Oct 2013 17:09:59 +0000</pubDate>
        </item>
        <item>
            <title>Software accelerator (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff30_swacc</link>
            <description>Software accelerator (sample code)


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Oct 2013 17:11:43 +0000</pubDate>
        </item>
        <item>
            <title>FastFlow</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ff1314</link>
            <description>FastFlow

This page hosts the material used for the 2013/14 course of SPM related to FastFlow.

Download

Current public version of FastFlow may be downloaded from:

	*  &lt;http://sourceforge.net/projects/mc-fastflow/&gt;

The svn version is the most recent one (the tarball is usually older than the svn version), therefore use a</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Nov 2013 17:44:18 +0000</pubDate>
        </item>
        <item>
            <title>Sample FastFlow farms</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/fffarms</link>
            <description>Sample FastFlow farms

These are the programs used in the course notes. Comments may be found in the course notes book. 


#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;ff/farm.hpp&gt;


using namespace ff;

class Worker: public ff_node {
public:
    
    void * svc(void * task) {
        int * t = (int *)task;
        std::cout &lt;&lt; &quot;Worker got &quot; &lt;&lt; *t &lt;&lt; std::endl;
        (*t)++;
      	std::cout &lt;&lt; &quot;Worker emitting &quot; &lt;&lt; *t &lt;&lt; std::endl;
        return t;
    }
};

class Collector: public ff_nod…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 21 Mar 2012 18:58:39 +0000</pubDate>
        </item>
        <item>
            <title>Sample pipeline applications in FastFlow</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ffhwpipe</link>
            <description>Sample pipeline applications in FastFlow

The code appearing on this page is commented in the course notes PDF, Appendix A: FastFlow. 

This is the code of a single concurrent activity printing an “Hello World”. We use a single stage pipeline without any kind of stream.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 21 Mar 2012 18:53:47 +0000</pubDate>
        </item>
        <item>
            <title>Heratosthene Sieve in FastFlow</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ffsieve</link>
            <description>Heratosthene Sieve in FastFlow

This computes the prime numbers using a variable number of stages. Printing is protected through a Pthread lock. 


#include &lt;iostream&gt;
#include &lt;ff/pipeline.hpp&gt;
#include &lt;pthread.h&gt;

using namespace ff;

static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 

class Sieve: public ff_node {
public:

  Sieve() { filter = 0; }

  void * svc(void * task) {
    unsigned int * t = (unsigned int *)task;
        
    if (filter == 0) {
      filter = *t; 
      return…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 21 Mar 2012 18:55:55 +0000</pubDate>
        </item>
        <item>
            <title>SPM: first summer term</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/giugno116spm</link>
            <description>SPM: first summer term

June 16, 2016, 9.30, at the Prof&#039;s studio

	*  Donati, Loriga</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 16 Jun 2016 03:59:12 +0000</pubDate>
        </item>
        <item>
            <title>SPM June 29 deadline</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/giugno216spm</link>
            <description>SPM June 29 deadline

Preliminary exams for students with old project

	*  Thu, June 30: Adami (9.30), Fiorenzani(11.00), Rinaldi (10.30)

Exams for students with the project presented at the term deadline

	*  Thu, June 7, 9am: Loriga, Idini
	*  Fri, June 8, 9.30am: Bruno, Porciani</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 03 Jul 2016 21:45:14 +0000</pubDate>
        </item>
        <item>
            <title>SPM Xeon PHI access 2014</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/istruzionixeonphi14</link>
            <description>SPM Xeon PHI access 2014

Machine name

The machine is not registered on the DNS, you should use the IP address

	*  131.114.137.225, corresponding to the registered name
	*  r720-phi.itc.unipi.it

Account

You should request the account to the SPM teacher sending an email with</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 11 Nov 2014 09:41:38 +0000</pubDate>
        </item>
        <item>
            <title>Distributed Systems: Paradigms and Models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/luglio16spm</link>
            <description>Distributed Systems: Paradigms and Models

Last summer term calendar

	*  Mon, Jul 25, 9am, at professor&#039;s office: Frati, Soave, Loddo, Gazzarri
	*  Wed, Jul 27, 9.30am, at professor&#039;s office: Rosini
	*  Thu, Jul 28, 9.30am, at professor&#039;s office: Di Paolo, Luchetti</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Jul 2016 19:56:46 +0000</pubDate>
        </item>
        <item>
            <title>OCAML</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ocaml-intro</link>
            <description>OCAML

Download

Ocaml may be downloaded from the INRIA official Ocaml web page (follow Download tab). Implementation exist running on Linux, Mac OS X and Windows. 

Documentation

Documentation relative to Ocaml is available through the offical Ocaml documentation web page.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 31 Mar 2011 08:33:07 +0000</pubDate>
        </item>
        <item>
            <title>Introducing skeleton semantics with higher order functions</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/ocamlfs1</link>
            <description>Introducing skeleton semantics with higher order functions

This is an summary of the lesson given on March 23rd. 

We represent the functional semantics of skeletons with higher order functions. We use Ocaml for the examples (see the Ocaml online manual for the syntax).</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 23 Mar 2011 16:31:17 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2011-2012: first exam term</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/primoappello112</link>
            <description>SPM 2011-2012: first exam term

Projects due: June 4th
 Currently received projects  Code  Report  Kosik  yes  yes  Dabisias  yes  yes  Brizzi  yes  yes 
as of June 4, 8pm

Oral exams on Monday, June 11, from 3pm in Danelutto&#039;s office.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 08 Jun 2012 16:26:29 +0000</pubDate>
        </item>
        <item>
            <title>Results of the SPM questionnaire</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/questionario1011</link>
            <description>Results of the SPM questionnaire
  The Students come from   Course  #  Place  #  Computer Science  35  Pisa  24  Other  4  Other Univ.  15   Familiarity with programming languages    Java  C  C++   ML  Scripting  High  27  15  9  0  7  Medium  9  14</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 11 Mar 2011 15:04:28 +0000</pubDate>
        </item>
        <item>
            <title>SPM for the academic year 2017-2018</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/recspm17</link>
            <description>SPM for the academic year 2017-2018

The SPM course has been moved from first semester (last edition 2016-2017) to second semester (2017-2018 and following AY). To favour the students enrolled in 2016-17 that will therefore find the SPM lessons in the second semester, a</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 17 Oct 2017 16:40:19 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2017 recovery edition lessons</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/recupero17</link>
            <description>SPM 2017 recovery edition lessons

Sep. 19

2h: Introduction to the course, structure of the lessons, hardware evolution and the urgency of parallel/distributed computing dictated by parallel hw (multicore CPUs, GPUs, clusters). 

----------

Assignment: look at top500.org and green500.org and try to figure out evolution of parallel machines through the</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 13 Dec 2017 18:08:21 +0000</pubDate>
        </item>
        <item>
            <title>FastFlow sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/samplefastflowcode</link>
            <description>FastFlow sample code

This is the code used during the FastFlow lesson. 
All code should be compiled with a command such as 

 g++ -Idir-where-ff-dir-has-been-saved -lpthread -o file file.cpp


// we include farm, pipeline and allocator hpp files 
// as we use only this three features of FastFlow
#include &lt;ff/node.hpp&gt;
#include &lt;ff/pipeline.hpp&gt;
#include &lt;ff/allocator.hpp&gt;

// we use the FastFlow namespace 
using namespace ff; 

// we use the fastflow mem allocator
// should be initialized (main…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 19 May 2011 14:33:41 +0000</pubDate>
        </item>
        <item>
            <title>SKEPU code in FastFlow</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sampleffskepu</link>
            <description>SKEPU code in FastFlow

The code should be compiled with CUDA, using nvcc compiler:


nvcc -I fastflowFfDirPath -I skepuIncludeDirPath -o pipemap pipemap.cu -lpthread



#include &lt;iostream&gt;
#include &lt;ff/pipeline.hpp&gt;
#include &lt;math.h&gt;

#define SKEPU_CUDA
// #define SKEPU_OPENMP

#include &lt;skepu/vector.h&gt;
#include &lt;skepu/map.h&gt;

using namespace ff;

int N = 10; 

class Source: public ff_node {
public:
  Source(unsigned int streamlen):streamlen(streamlen)  {}

  void * svc(void * task) {
    if(st…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Nov 2013 15:34:40 +0000</pubDate>
        </item>
        <item>
            <title>Vectorizing compiler (sample code)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/samplevvcode</link>
            <description>Vectorizing compiler (sample code)

This is the code for matrix multiplication we used during the lesson. To be compiled with the -O3 flag (Gnu compiler suite). Vectorization details can be obtained with the -ftree-vectorizer-verbose=NN with NN being 1 to 9 (see Gnu gcc/g++ compiler</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Nov 2013 15:41:52 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sample_dynmap14</link>
            <description>/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANT…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 17 Dec 2014 06:33:30 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sample_mmmdf14</link>
            <description>/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANT…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Dec 2014 10:21:34 +0000</pubDate>
        </item>
        <item>
            <title>Class work 2</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sample_prime14</link>
            <description>Class work 2

Below you can find the code discussed in class and relative to:

	*  the farm solution
	*  the farm-map solution
	*  the pipe solution
	*  the pipe-discard solution

 
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ***************************************************************************
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as 
 *  published b…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 19 Nov 2014 07:23:14 +0000</pubDate>
        </item>
        <item>
            <title>Distributed systems: paradigms &amp; models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm09lessons</link>
            <description>Distributed systems: paradigms &amp; models

Lessons

Here you can find the arguments discussed during lessons, the audio/video files relative to the already given lessons (when available) and, more in general, pointers to support material hosted on the</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 20 Mar 2013 07:30:56 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm09program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. Taking into account structured programming models (algorithmical skeletons, parallel design patterns) as well as those models based on components and services, all the problems related to the functional (expressive power, modularity and reuse) and non functional (performance, fault tolerance, adaptivity) concerns will be considered. T…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Mar 2011 12:03:45 +0000</pubDate>
        </item>
        <item>
            <title>Distributed systems: paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm09support</link>
            <description>Distributed systems: paradigms and models

This page will host all the support material relative to the course: useful links, teacher&#039;s notes, articles, etc. 
The notes relative to the structured parallel programming models that were supposed to be available before Christmas will not be published before end of January (presumably). We apologize for this. All the course lessons are now available on the course web pages (slides and recordings) and we updated the support material web page in such a…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 23 Sep 2010 15:36:49 +0000</pubDate>
        </item>
        <item>
            <title>Distributed systems: paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm10lessons</link>
            <description>Distributed systems: paradigms and models

Academic Year 2010-2011
 Day  Hours  Argument  Support material  Teacher  March 8  4-6pm  Introduction to course: course logistics, program, general motivation.   Blackboard Audio1 Audio2  Danelutto  March 9  9-11am  Motivations: technological improvements. From single core to multi core and many core. Heterogeneous multicores. GPUs and FPGAs as (parallel) coprocessors</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 20 Mar 2013 07:30:26 +0000</pubDate>
        </item>
        <item>
            <title>SPM support material 2010-2011</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm10support</link>
            <description>SPM support material 2010-2011

Course Notes

The course notes are available and they have been distributed (hardcopy) to the students that managed to bring them to some “copy center” (I don&#039;t know which one(s)). If you need a copy, please ask your colleagues or ask me the master copy (to be given back after copying). The table of contents of the course notes can be find</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 28 Jun 2011 14:43:39 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2011-2012</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm12lessons</link>
            <description>SPM 2011-2012

Lessons

This is the link to the official lesson register
 Day  Hours  Arguments  Support material  Feb 22  2  Introduction to the course, program, support material. Motivations  Blackboard dump (1)Blackboard dump (2) Audio (1st hour)Audio (2nd hour)  Feb 23  2  Evolution of CPU, supercomputers.  Blackboard dump Audio (1st hour) (Second hour missing)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 20 Mar 2013 07:29:40 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm12program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. 
The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 20 Feb 2012 11:15:45 +0000</pubDate>
        </item>
        <item>
            <title>SPM A.A. 2011-2012 : support material</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm12support</link>
            <description>SPM A.A. 2011-2012 : support material

Previous year material

Link to the old page.

Suggested reading

These are texts that may be consulted as support to different parts of the course:

	*  POSIX syscalls: Stevens “Advanced programming in the Unix Enviroment</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 16 Jul 2012 21:54:56 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2012-2013 Support material</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm13</link>
            <description>SPM 2012-2013 Support material

Textbooks

This year we will use:

	*  the “SPM course notes” by M. Danelutto (the new version of the course noted (more syntax fixes, chapter 11 on parallel bulding block added, section 8.5 on vectorization added)  PDF can be found</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 05 Jun 2013 21:23:58 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2012-2013</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm13lessons</link>
            <description>SPM 2012-2013

Lessons

This is the link to the official lesson register
 Day  Hours  Arguments  Support material  18/02  16-18  Course introduction. Program. Web site. Exam/project. Overview of parallel architectures. Amdahl law.  Blackboard  19/02  16-18  Power and parallelism. More on Amdahl law. Gustafson law. Work-span model</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 23 May 2013 13:48:30 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm13program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. 
The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2013 17:23:34 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2012-2013 exam page</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm13proj</link>
            <description>SPM 2012-2013 exam page

Exam procedure

The SPM course exam consists in two parts:

	*  the implementation of a project (sse below the project text), and
	*  an oral exam, including a small demo/discussion relative to the project and some questions on the arguments covered by the course</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Dec 2013 16:06:41 +0000</pubDate>
        </item>
        <item>
            <title>Distributed Systems: Paradigms and Models (A.Y. 2013-2014)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1314lessons</link>
            <description>Distributed Systems: Paradigms and Models (A.Y. 2013-2014)

Link to the official lesson register page.
 Date  Hour  Arguments  Support material  23/09/13  2-4pm  Course introduction. Hardware evolution: multicores, GPUs, cloud.  Blackboard Audio 1st hourAudio 2nd hour  24/09/13  4-6pm  Parallelisation of sample applications: issues and advantages</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 17 Dec 2013 19:39:54 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1314program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. 
The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 21 Sep 2013 15:16:19 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2013-2014 Support material</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1314support</link>
            <description>SPM 2013-2014 Support material

Textbooks

Most of the course material is covered by:

	*  the “SPM course notes” by M. Danelutto (the 2013 version of the course noted (more syntax fixes, chapter 11 on parallel bulding block added, section 8.5 on vectorization added)  PDF can be found</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 16 May 2014 12:25:15 +0000</pubDate>
        </item>
        <item>
            <title>Distributed Systems: Paradigms and Models (A.Y. 2014-2015)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1415lessons</link>
            <description>Distributed Systems: Paradigms and Models (A.Y. 2014-2015)

Link to the official course lesson page.

Exercise page. 
 Date  Hour  Arguments  Audio  Blackboard  23/09  4-6pm  Introduction to the course. Parallel programming scenario: multi core and many core  H1H2  PDF  24/09  4-6pm  More on scenario: cloud and mobile. Sample applications with possibilities for parallelism: mandelbrot, video stream processing (to be finshed)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 17 Dec 2014 08:37:39 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1415program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. 
The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 05 Sep 2014 10:10:32 +0000</pubDate>
        </item>
        <item>
            <title>Textbooks</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1415support</link>
            <description>Textbooks

Most of the course material is covered by: +

	*  the “SPM course notes” by M. Danelutto PDF that can be found  here (Version of Sept 2014, A4 size) and here (Version of Sept 2014, EPUB size) . Updates and additional material will be made available during the lessons and PDF links will included on this page, in case.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 Dec 2014 00:19:55 +0000</pubDate>
        </item>
        <item>
            <title>Distributed Systems: Paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1516lessons</link>
            <description>Distributed Systems: Paradigms and models

Official lesson register

Lessons
 Day  Hours  Argument  Blackboard  Multimedia  Sept. 21  0   Lessons will start on Sept. 22nd   Sept. 22  2  Course introduction  blackboard  Video  Sept. 23  2  Parallel programming: concurrent activity and orchestration concepts. Sample use cases (with patterns)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Dec 2015 16:31:36 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1516program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. 
The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 16 Sep 2015 17:06:59 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2015/16 Support material</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sdpm1516support</link>
            <description>SPM 2015/16 Support material

	*  the “SPM course notes” by M. Danelutto PDF that can be found  here (Version of Sept 2014, A4 size) and here (Version of Sept 2014, EPUB size) . Updates and additional material will be made available during the lessons and PDF links will included on this page, in case.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 14 Jul 2016 13:42:12 +0000</pubDate>
        </item>
        <item>
            <title>Skandium.java</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skadium-correct-java</link>
            <description>Skandium.java

This is the correct code of the Skandium.java file (patch due to Tiziano De Matteis).


/*   Skandium: A Java(TM) based parallel skeleton library.
 *   
 *   Copyright (C) 2009 NIC Labs, Universidad de Chile.
 * 
 *   Skandium is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   Skandium…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 18 Nov 2013 11:10:31 +0000</pubDate>
        </item>
        <item>
            <title>Skandium</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skandium15</link>
            <description>Skandium

Skandium is the Java based skeleton based programming framework by Mario Leyton, targeting multicore architectures. The Skandium web page hosts sample code and documentation as well as links to download the source and compiled framework code. The Skandium material may also be found on a GIT repository as well at the side</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 26 Oct 2015 06:18:57 +0000</pubDate>
        </item>
        <item>
            <title>Skandium</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skandium_local</link>
            <description>Skandium

Skandium is the Java based skeleton based programming framework by Mario Leyton, targeting multicore architectures. The Skandium web page hosts sample code and documentation as well as links to download the source and compiled framework code. The Skandium material may also be found on a GIT repository as well at the side</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 03 Dec 2014 18:08:06 +0000</pubDate>
        </item>
        <item>
            <title>OCAML functional semantics for the sample skeleton set</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skelfsem</link>
            <description>OCAML functional semantics for the sample skeleton set

We define here the functional semantics for the sample skeleton set presented in SPM lessons by means of Ocaml functions. 

	*  Here you&#039;ll find the ocamldoc documentation for the file. Below, the source file is shown.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 31 Mar 2011 08:36:00 +0000</pubDate>
        </item>
        <item>
            <title>SKEPU container sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu-container</link>
            <description>SKEPU container sample code


#include &lt;iostream&gt;

#define SKEPU_OMP

#include &quot;skepu/vector.h&quot;
#include &quot;skepu/matrix.h&quot;

#define N 16
#define M 16

using namespace std;

int main()
{	
  
  skepu::Vector&lt;float&gt; v(N,0.0);
  skepu::Matrix&lt;float&gt; m(N,M,0.0);

  cout &lt;&lt; &quot;Initialized matrix and vector&quot; &lt;&lt; endl;

  for(int i=0; i&lt;N;i++) {
    cout &lt;&lt; &quot;v[&quot; &lt;&lt; i &lt;&lt; &quot;]=&quot; &lt;&lt; v[i] &lt;&lt; endl;
  }


  for(int i=0; i&lt;N;i++) { for(int j=0; i&lt;N;i++) {
    cout &lt;&lt; &quot;m[&quot; &lt;&lt; i &lt;&lt; &quot;,&quot; &lt;&lt; j &lt;&lt; &quot;]=&quot; &lt;&lt; m(i,j) &lt;&lt; endl; …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 28 Oct 2013 17:29:09 +0000</pubDate>
        </item>
        <item>
            <title>Sample map in CUDA</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu-cuda-map</link>
            <description>Sample map in CUDA

This is just a code excerpt of a single map operation implemented directly using CUDA. 


          const int CHUNK_SIZE = 128 * 1024 * 1024;
          out_type* output = new out_type[size]; 
          int num_items = CHUNK_SIZE / sizeof(in_type); 
          int chunks = (size + num_items - 1) / num_items; 
          dim3 dimBlock(BLOCK_SIZE, BLOCK_SIZE); 
          int threadsPerBlockTotal = BLOCK_SIZE * BLOCK_SIZE; 
          int numBlocksX = 256; 
          int numBlocksY …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 28 Oct 2013 17:45:27 +0000</pubDate>
        </item>
        <item>
            <title>SKEPU map sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu-map</link>
            <description>SKEPU map sample code


#include &lt;iostream&gt;

#define SKEPU_CUDA

#include &quot;skepu/vector.h&quot;
#include &quot;skepu/matrix.h&quot;
#include &quot;skepu/map.h&quot;

using namespace std;

// definition of functions to be used in the map and reduce

UNARY_FUNC(inc,  int, a, return(a+1); )
UNARY_FUNC(dec,  int, a, return(a-1); )
UNARY_FUNC(sq,   int, a, return(a*a); )
BINARY_FUNC(add, int, a, b, return(a+b); )
BINARY_FUNC(sub, int, a, b, return(a-b); )
BINARY_FUNC(mul, int, a, b, return(a*b); )
BINARY_FUNC(div, int, a, b,…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 28 Oct 2013 17:30:01 +0000</pubDate>
        </item>
        <item>
            <title>SKEPU mapreduce code sample</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu-mapreduce</link>
            <description>SKEPU mapreduce code sample

We show an implementation of vector dotproduct with both mapreduce and with a map followed by a reduce, to appreciate optimizations in the mapreduce skeleton. 


// following define to enable/disable OpenMP implmentation to be used
// #define SKEPU_OPENMP 
#define SKEPU_CUDA

// following define to enable/disable OpenCL implmentation to be used
//#define SKEPU_OPENCL
// With OpenCL, following define to specify number of GPUs to be used. Specifying 0 means all availab…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 28 Oct 2013 17:35:08 +0000</pubDate>
        </item>
        <item>
            <title>SKEPU (for SPM)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu-page</link>
            <description>SKEPU (for SPM)

The framework

SKEPU is a C++ based skeleton programming framework targeting CPUs and GPUs. 

The framework (currently at version 1.0) may downloaded from the SKEPU web page, where source code and documentation are available. 

Sample code

This is the code used to introduce the framework:</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 28 Oct 2013 17:37:00 +0000</pubDate>
        </item>
        <item>
            <title>SKEPU reduce sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu-reduce</link>
            <description>SKEPU reduce sample code


#include &lt;iostream&gt;

#define SKEPU_OPENMP

#include &quot;skepu/vector.h&quot;
#include &quot;skepu/matrix.h&quot;
#include &quot;skepu/reduce.h&quot;

using namespace std;

// definition of functions to be used in the map and reduce

UNARY_FUNC(inc,  int, a, return(a+1); )
UNARY_FUNC(dec,  int, a, return(a-1); )
UNARY_FUNC(sq,   int, a, return(a*a); )
BINARY_FUNC(add, int, a, b, return(a+b); )
BINARY_FUNC(sub, int, a, b, return(a-b); )
BINARY_FUNC(mul, int, a, b, return(a*b); )
BINARY_FUNC(div, in…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 28 Oct 2013 17:31:45 +0000</pubDate>
        </item>
        <item>
            <title>Using SkePU in FastFlow</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu_ff</link>
            <description>Using SkePU in FastFlow

Sample code

We implement a three stage FastFlow pipeline where:

	*  the first stage produces a stream of float Vectors
	*  the second stage maps a dummy (time consuming) function on the Vector items
	*  the third stage just prints results</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 11 May 2012 13:15:59 +0000</pubDate>
        </item>
        <item>
            <title>SPM SkePU sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/skepu_sample</link>
            <description>SPM SkePU sample code

Containers

Illustrates the usage of Vectors and Matrixes. To execute the code:

	*  on CPU: compile it using 
g++ -I skepuinclude containers.cpp -o cpu_containers 

	*  on GPU: uncomment the macro defining SKEPU_CUDA and compile with</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 11 May 2012 13:00:53 +0000</pubDate>
        </item>
        <item>
            <title>&quot;Lesson&quot; project slides</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/slides0910lessonprojects</link>
            <description>&quot;Lesson&quot; project slides

These are the slides relative to the “lesson” projects for the A.A. 2009/2010
 Author  Argument  Slides  Marco Stronati  Skeletons in Erlang  [PDF]</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Mar 2010 14:35:48 +0000</pubDate>
        </item>
        <item>
            <title>Sample sources</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/sources14ottspm</link>
            <description>Sample sources

C version with timings (to be compiled with gcc -pthread -lm)


#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;pthread.h&gt;
#include &lt;math.h&gt;
#include &lt;time.h&gt;

pthread_mutex_t mutex;

typedef struct __task {
  long n;
  float x;
  struct __task * next;
} TASK;

TASK * tasks = NULL;

typedef unsigned long long ticks;

static __inline__ ticks getticks(void)
{
  unsigned a, d;
  asm volatile(&quot;rdtsc&quot; : &quot;=a&quot; (a), &quot;=d&quot; (d));
  return ((ticks)a) | (((ticks)d) &lt;&lt; 32)…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 15 Oct 2014 15:13:46 +0000</pubDate>
        </item>
        <item>
            <title>Final project page : SPM 09-10</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm09project</link>
            <description>Final project page : SPM 09-10

Project text

The project texts can be found in the Slides presented during lessons. 

Project types

For Academic Year 2009-2010, several distinct classes of projects have been proposed:

	*  RTS: implementation of a small run time/compiler tool for structured programming paradigms/models</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 26 Feb 2010 15:01:06 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2009-2010: Exams</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm0910</link>
            <description>SPM 2009-2010: Exams

Final project

More on the Project texts and Report format can be found at the project page.

Slides of the &quot;Lesson&quot; projects

This page hosts the slides presented for the “Lesson” projects.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Feb 2011 07:11:24 +0000</pubDate>
        </item>
        <item>
            <title>Class work 1</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm14exe1</link>
            <description>Class work 1

Instructions to use the remote machine

Once you have implemented on your own laptop the program, in order to test it on andromeda (the 8 core, 16 contexts machine remotely available, do the following steps:

	*  ssh spm@andromeda.di.unipi.it</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 17 Dec 2014 06:29:20 +0000</pubDate>
        </item>
        <item>
            <title>Pipeline with Pthreads, sample code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm14exe1sol</link>
            <description>Pipeline with Pthreads, sample code

Sample code relative to

	*  implementation of an unbounded channel with standard C++ and Pthread mechanisms
	*  implementation of the main forking the three stages and computing the pipeline
	*  implementation of a bounded channel</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 30 Oct 2014 11:43:04 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2010-2011: Exams, lessons and support material</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1011</link>
            <description>SPM 2010-2011: Exams, lessons and support material

Exam calendar
 Date  Time  Candidates  July 26, Tuesday  3pm  Belli, Cicalese  July 27, Wednesday  10am  Dondi, Piermartini, Saracco  July 28, Thursday  11am  Vetrano  July 29, Friday  11am  Del Tessandoro</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 07 Dec 2011 15:16:24 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2011-2012 exam page</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1112proj</link>
            <description>SPM 2011-2012 exam page

Exam procedure

The SPM course exam consists in two parts:

	*  the implementation of a project (sse below the project text), and
	*  an oral exam, including a small demo/discussion relative to the project and some questions on the arguments covered by the course</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 17 Jan 2013 16:37:04 +0000</pubDate>
        </item>
        <item>
            <title>Collection of code (Academic Year 2012/2013)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213code</link>
            <description>Collection of code (Academic Year 2012/2013)

Lesson: April 11, 2013

	*  Code for map and stencil with OpenMP
	*  Code of a map implemented using a FastFlow farm (Matrix Multiplication code)
	*  Map defined in FastFlow
	*  Map targeting GPU with CUDA (trivial, draft code)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Apr 2013 16:54:15 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_false_sharing_fs2</link>
            <description>#include &lt;iostream&gt;
#include &lt;cstdlib&gt;

#include &lt;ff/farm.hpp&gt;

using namespace ff; 
using namespace std; 

int      n; 
float ** mat; 
float  * vec;

typedef struct __task {
  int     id; 
  int     start;
  int     end; 
} TASK;

class Emitter : public ff_node {
private: 
  int chunk; 

public: 
  Emitter(int chunk):chunk(chunk) { }
  
  void * svc(void * t) {
    int given = 0; 
    int id    = 0;
    while(given &lt; n) {
      TASK * otask = new TASK();
      otask-&gt;start = given; 
      otask…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Apr 2013 16:07:53 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_false_sharing_fs3</link>
            <description>#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;

#include &lt;ff/farm.hpp&gt;

using namespace ff; 
using namespace std; 

typedef struct __task {
  int     id; 
  int     start;
  int     end; 
} TASK;

typedef union __res {
  float x; 
  float pad[16];
} RES;

int      n; 
float ** mat; 
RES    * vec;

class Emitter : public ff_node {
private: 
  int chunk; 

public: 
  Emitter(int chunk):chunk(chunk) { }
  
  void * svc(void * t) {
    int given = 0; 
    int id    = 0;
    while(given &lt; n)…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Apr 2013 16:08:30 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_load_balancing</link>
            <description>#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;
#include &lt;cmath&gt;
#include &lt;ctime&gt;

#include &lt;omp.h&gt;
#include &quot;ff/farm.hpp&quot;

using namespace std;
using namespace ff; 

float **a; 
int     n; 

float calc(float x) {
  long iter = (long) x; 
  for(long i=0; i&lt;iter; i++) 
    x = sin(x); 
  return(x);
}

class Worker : public ff_node {
  void * svc(void * t) {

    float * task = (float *) t;
    float * sum = new float;

    for(int i=0; i&lt;n; i++) {
      task[i] = calc(task[i]);
      *s…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Apr 2013 16:19:03 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_load_balancing_chunk</link>
            <description>#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;
#include &lt;cmath&gt;
#include &lt;ctime&gt;

#include &lt;omp.h&gt;
#include &quot;ff/farm.hpp&quot;

using namespace std;
using namespace ff; 

float **a; 
int     n; 

float calc(float x) {
  long iter = (long) x; 
  for(long i=0; i&lt;iter; i++) 
    x = sin(x); 
  return(x);
}

typedef struct __chunk {
  int from; 
  int to; 
  float sum; 
} CHUNK; 

class Worker : public ff_node {
  void * svc(void * t) {

    CHUNK * task = (CHUNK *) t;

    for(int i=task-&gt;fro…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 24 Apr 2013 06:24:37 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_map</link>
            <description>This is from the official distribution of FastFlow 


/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */

/*! 
 *  \link
 *  \file map.hpp
 *  \ingroup high_level_patterns_shared_memory
 *
 *  \brief This file describes the map skeleton.
 */
 
#ifndef _FF_MAP_HPP_
#define _FF_MAP_HPP_
/* ***************************************************************************
 *
 *  This program is free software; you can redistribute it and/or modify it
 *  under the terms of the …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 Apr 2013 15:05:53 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_map1</link>
            <description>#include &lt;pthread.h&gt;

#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;ff/farm.hpp&gt;

using namespace ff;

// a task requires to compute the matrix multiply C = A x B 
// we assume square matrixes, for the sake of simplicity
typedef struct {
  int n;
  float **a;
  float **b;
  float **c;
} TASK;

// a subtask is the computation of the inner product or A, row i, by B, col j
typedef struct {
  int i,j; 
  TASK * t;
} SUBTASK; 

// a partial result is the i,j item in the result matrix
typedef struct…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 Apr 2013 15:04:02 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_mapcuda</link>
            <description>Code to be compiled with a

nvcc -I fastflowInclude


#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;

#include &lt;ff/pipeline.hpp&gt;

using namespace ff; 
/*
 * map module running the map of function float f(float) 
 * over a float vector whose size is known on a GPU through CUDA
 *
 */

#include &lt;cuda.h&gt;
#include &lt;cuda_runtime.h&gt;

/* 
 * sample map function
 */
__device__ float f(float x) {
    float old = x;
    for(int i=0; i&lt;8000000; i++) {
      x = sin(x);
    }
    return(old+1.0+x…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 Apr 2013 15:08:29 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_mixskepumap</link>
            <description>#include &lt;iostream&gt;
#include &lt;ff/pipeline.hpp&gt;
#include &lt;ff/farm.hpp&gt;
#include &lt;math.h&gt;

#include &lt;skepu/vector.h&gt;
#include &lt;skepu/map.h&gt;



using namespace ff;
using namespace std;

int N = 10; 

class Source: public ff_node {
public:
  Source(unsigned int streamlen):streamlen(streamlen)  {}

  void * svc(void * task) {
    if(streamlen != 0) {
      skepu::Vector&lt;float&gt; * v = new skepu::Vector&lt;float&gt;(N,(float)streamlen);
      streamlen--;
      task = (void *) v;
#ifdef DEBUG
      std::cout …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Apr 2013 16:57:16 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_ff_with_skepu</link>
            <description>Compile with 

 g++ -DSKEPU_CUDA -DSKEPU_OPENMP_THREADS=4 
      -fopenmp -o cpu -I . -I include pipemap.cpp -lpthread


 to target CPU cores via OpenMP SKEPU backend or


nvcc -o cuda -I. -Iinclude pipemap.cu 


to target GPU via CUDA backend. 


#include &lt;iostream&gt;
#include &lt;ff/pipeline.hpp&gt;
#include &lt;math.h&gt;

#include &lt;skepu/vector.h&gt;
#include &lt;skepu/map.h&gt;



using namespace ff;

int N = 10; 

class Source: public ff_node {
public:
  Source(unsigned int streamlen):streamlen(streamlen)  {}

 …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Apr 2013 16:51:40 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_omp_fused</link>
            <description>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;cmath&gt;
#include &quot;omp.h&quot;
#include &lt;ctime&gt;

using namespace std; 

float f(float x, long n) {
  for(long i=0; i&lt;n; i++) 
    x = sin(x); 
  return x; 
}

int main(int argc, char * argv[]) {

  if(argc!=4) {
    cout &lt;&lt;  &quot;Usage is:\n&quot; &lt;&lt; argv[0] &lt;&lt; &quot; iterno n nw &quot; &lt;&lt; endl; 
    return(0);
  }

  long iter = atoi(argv[1]); 
  long n    = atoi(argv[2]);
  long nw   = atoi(argv[3]); 

  float * x = new float[n];
  for(int i=0; i&lt;n; i++) 
    x[i] = ((f…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Apr 2013 16:55:20 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_omp_load_balancing</link>
            <description>#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;
#include &lt;cmath&gt;
#include &lt;ctime&gt;

#include &lt;omp.h&gt;

using namespace std;

float **a; 

float calc(float x) {
  long iter = (long) x; 
  for(long i=0; i&lt;iter; i++) 
    x = sin(x); 
  return(x);
}

int main(int argc, char * argv[]) {

  if(argc == 1) {
    cout &lt;&lt; &quot;Usage is:\n&quot; &lt;&lt; argv[0] &lt;&lt; &quot; veclen numthread &quot; &lt;&lt; endl; 
    return(0);
  }

  int n   = atoi(argv[1]); 
  int tn1 = atoi(argv[2]); 
  int tn2 = atoi(argv[3]); 


  float * ti…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Apr 2013 16:17:30 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_omp_map</link>
            <description>#include &quot;omp.h&quot;
#include &lt;vector&gt;
#include &lt;iostream&gt;

using namespace std; 

template &lt;class InTask, class OutTask&gt; class OmpMap {

private:
  OutTask (*fun) (InTask t); 
  int       nw; 
public:

  OmpMap(OutTask (*fun) (InTask t), int nw):fun(fun),nw(nw)  {}

  // map over std:vector
  std::vector&lt;OutTask&gt; compute(std::vector&lt;InTask&gt; v) {
    int i, n = v.size();
    vector&lt;OutTask&gt; * r = new vector&lt;OutTask&gt;(n);
#pragma omp parallel for num_threads(nw) private(i)
    for(i=0; i&lt;n; i++) {
   …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 Apr 2013 15:02:52 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_omp_unfused</link>
            <description>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;cmath&gt;
#include &quot;omp.h&quot;
#include &lt;ctime&gt;

using namespace std; 

float f(float x, long n) {
  for(long i=0; i&lt;n; i++) 
    x = sin(x); 
  return x; 
}

int main(int argc, char * argv[]) {

  if(argc!=4) {
    cout &lt;&lt;  &quot;Usage is:\n&quot; &lt;&lt; argv[0] &lt;&lt; &quot; iterno n nw &quot; &lt;&lt; endl; 
    return(0);
  }

  long iter = atoi(argv[1]); 
  long n    = atoi(argv[2]);
  long nw   = atoi(argv[3]); 

  float * x = new float[n];
  for(int i=0; i&lt;n; i++) 
    x[i] = ((f…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Apr 2013 16:56:02 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_skepu_containers</link>
            <description>#include &lt;iostream&gt;

#define SKEPU_OMP

#include &quot;skepu/vector.h&quot;
#include &quot;skepu/matrix.h&quot;

#define N 16
#define M 16

using namespace std;

int main()
{	
  
  skepu::Vector&lt;float&gt; v(N,0.0);
  skepu::Matrix&lt;float&gt; m(N,M,0.0);

  cout &lt;&lt; &quot;Initialized matrix and vector&quot; &lt;&lt; endl;

  for(int i=0; i&lt;N;i++) {
    cout &lt;&lt; &quot;v[&quot; &lt;&lt; i &lt;&lt; &quot;]=&quot; &lt;&lt; v[i] &lt;&lt; endl;
  }


  for(int i=0; i&lt;N;i++) { for(int j=0; i&lt;N;i++) {
    cout &lt;&lt; &quot;m[&quot; &lt;&lt; i &lt;&lt; &quot;,&quot; &lt;&lt; j &lt;&lt; &quot;]=&quot; &lt;&lt; m(i,j) &lt;&lt; endl; } }
    
  cout &lt;&lt; &quot;map +5 on …</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 24 Apr 2013 06:25:41 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_skepu_map</link>
            <description>#include &lt;iostream&gt;

#define SKEPU_CUDA

#include &quot;skepu/vector.h&quot;
#include &quot;skepu/matrix.h&quot;
#include &quot;skepu/map.h&quot;

using namespace std;

// definition of functions to be used in the map and reduce

UNARY_FUNC(inc,  int, a, return(a+1); )
UNARY_FUNC(dec,  int, a, return(a-1); )
UNARY_FUNC(sq,   int, a, return(a*a); )
BINARY_FUNC(add, int, a, b, return(a+b); )
BINARY_FUNC(sub, int, a, b, return(a-b); )
BINARY_FUNC(mul, int, a, b, return(a*b); )
BINARY_FUNC(div, int, a, b, return(a/b); )

#define…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 24 Apr 2013 06:26:36 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1213_c_skepu_reduce</link>
            <description>#include &lt;iostream&gt;

#include &quot;skepu/vector.h&quot;
#include &quot;skepu/matrix.h&quot;
#include &quot;skepu/reduce.h&quot;

using namespace std;

// definition of functions to be used in the map and reduce

UNARY_FUNC(inc,  int, a, return(a+1); )
UNARY_FUNC(dec,  int, a, return(a-1); )
UNARY_FUNC(sq,   int, a, return(a*a); )
BINARY_FUNC(add, int, a, b, return(a+b); )
BINARY_FUNC(sub, int, a, b, return(a-b); )
BINARY_FUNC(mul, int, a, b, return(a*b); )
BINARY_FUNC(div, int, a, b, return(a/b); )

#define N 4

int main()
…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 24 Apr 2013 06:27:51 +0000</pubDate>
        </item>
        <item>
            <title>Xeon PHI HOWTO (for SPM1314 course)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1314phi</link>
            <description>Xeon PHI HOWTO (for SPM1314 course)

Access

The machine with the Xeon PHI cards may be accessed using the IP address 

131.114.137.225

 and the credentials distributed during the lessons to the attending students. 

The credentials give access to a local account onto a Sandy Bridge multicore hosting the 2 PHI PCIe boards.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 17 Dec 2013 13:57:00 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2013-2014 Project</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1314pro</link>
            <description>SPM 2013-2014 Project

Exam procedure

The SPM course exam consists in two parts:

	*  the implementation of a project (sse below the project text), and
	*  an oral exam, including a small demo/discussion relative to the project and some questions on the arguments covered by the course</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Jul 2014 07:51:17 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2015 final project</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1415exams</link>
            <description>SPM 2015 final project

Final project text

The final project text includes three different possibilities for two different kind of projects, namely the implementation of a parallel pattern and the parallelization of a well known application/kernel. The full text (PDF document) of the project may be found following</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 05 Oct 2015 08:12:29 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2015/16 Exams</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1516exams</link>
            <description>SPM 2015/16 Exams

Project

The text for the project is available on this page

PHI performance

In the lessons we stated performance of Xeon PHI is 2 to 4 times smaller than the performance observed on the host machine Xeon processors. 

Actually, performance scale factor varies depending on the kind of code executed. Code with quite a number of branches may experience 10x and more slowdown w.r.t. host Xeon processor.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 03 Oct 2016 13:16:11 +0000</pubDate>
        </item>
        <item>
            <title>Final project</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1516project</link>
            <description>Final project

The final SPM project is structured in 5 different alternatives. Students should agree which one they want to choose with the Professor before actually starting to implement the project. 

Alternatives

Game of Life (GOL)

Game of Life has already been assigned as a kind of</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 21 Jan 2016 12:18:57 +0000</pubDate>
        </item>
        <item>
            <title>Distributed systems : paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1516support</link>
            <description>Distributed systems : paradigms and models

Support material</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 19 Sep 2016 05:31:24 +0000</pubDate>
        </item>
        <item>
            <title>Access to Xeon PHI</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617</link>
            <description>Access to Xeon PHI

 This instructions are relative to the Xeon PHI Knights Corner. The additional instructions to access the PHI Knights Landing may be found here.

List of assigned accounts

Here

Machine name  and access

The machine is  r720-phi.itc.unipi.it and has the IP address 131.114.137.225</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 21 Feb 2017 16:02:52 +0000</pubDate>
        </item>
        <item>
            <title>First SPM term (oral)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617app1</link>
            <description>First SPM term (oral)

The oral exams relative to the first term of Academic Year 2016/17 will be run on Friday, January 27th, starting at 9.30am, at the professor&#039;s studio, in the following order (count 30-40 minutes per exam, ideally):

	*  Bekele Biruk</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 24 Jan 2017 17:49:09 +0000</pubDate>
        </item>
        <item>
            <title>SPM A.Y. 2016-17</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617app2</link>
            <description>SPM A.Y. 2016-17

Oral exams: 

	*  Tuesday, Feb. 21, 11am: Michienzi, Madotto</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Feb 2017 20:16:19 +0000</pubDate>
        </item>
        <item>
            <title>SPM Third term exam calendar</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617app3</link>
            <description>SPM Third term exam calendar

The oral exams will be run on June, Thursday 22 and Friday 23. The precise schedule will published on this page by morning of June, Wed. 21.

I&#039;ve correctly got the projects from:

	*  Busi, Carta, Cipressi, Errica, Palazzo, Erdem, Slovikovskaya, Sedghisaray</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 21 Jun 2017 09:22:12 +0000</pubDate>
        </item>
        <item>
            <title>SPM extraordinary exam term (Nov. 2016): Calendar of the oral exams</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617appstra1</link>
            <description>SPM extraordinary exam term (Nov. 2016): Calendar of the oral exams

Fri, Nov. 5, 9.30am

	*  DiSotto, Dzevik, Parra Gutzman, Maggiordomo

Mon, Nov. 7, 11am

	*  Conticelli

Wed, Nov. 9, 10am

	*  Tsinu, Tesei

All exams will be in my office, at the Dept. of Computer Science</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 03 Nov 2016 16:11:57 +0000</pubDate>
        </item>
        <item>
            <title>Sample Cilk plus code</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617cilk</link>
            <description>Sample Cilk plus code

Fibonacci

Codice:


#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;chrono&gt;
#include &lt;thread&gt;

#include &lt;stdlib.h&gt;

int fib(int n) {
  // std::cout &lt;&lt; &quot;This is thread &quot; &lt;&lt; std::this_thread::get_id()
  // 	    &lt;&lt; std::endl; 
  if(n&lt;2)
    return(1);
  else {
#ifdef WITHCILK
    int f1 = _Cilk_spawn fib(n-1);
    int f2 = _Cilk_spawn fib(n-2);
    _Cilk_sync;
    return (f1 + f2); 
#else
    return(fib(n-1)
	   +
	   fib(n-2));
#endif
  }
}

int main(int argc, char * argv […</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Nov 2016 16:45:13 +0000</pubDate>
        </item>
        <item>
            <title>SPM 2015/16 Exams</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617exams</link>
            <description>SPM 2015/16 Exams

Exam dates
 Term  Deadline for submitting project  Oral exams calendar  Extraordinary term  November 2nd, 2016  Calendar  First term 2016-17  January 17th, 2017  Calendar  Second term 2016-17  February 13rd, 2017  Calendar  Extraordinary term  April 6th, 2017 (deadline to submit the projects)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 04 Aug 2017 10:42:38 +0000</pubDate>
        </item>
        <item>
            <title>Xeon PHI KNL howto</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617knl</link>
            <description>Xeon PHI KNL howto

README FIRST

In case you see messages on the terminal(s) used requiring you to leave the machine from any one of the following users: 

  * mau
  * cisterni
  * marcod
  * torquati

please logout immediately after killing all your processes (foreground and backgroud). The machine is provided by the ITC and it may be the case it will be needed for short demos and experiments.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 19 Jan 2017 16:10:24 +0000</pubDate>
        </item>
        <item>
            <title>Distributed Systems: Paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617lessons</link>
            <description>Distributed Systems: Paradigms and models

Official lesson register

Register (official)

Lessons
 Day  Hours  Argument  Blackboard  Multimedia  Sept. 19  2  Course introduction. Real life examples of parallel and distributed computing. Motivations. (Partial audio video support due to laptop substitution)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 15 Dec 2016 09:34:32 +0000</pubDate>
        </item>
        <item>
            <title>Program</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617program</link>
            <description>Program

The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. 
The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 19 Sep 2016 05:25:52 +0000</pubDate>
        </item>
        <item>
            <title>Sort (with Cilk and C++ (11) Threads)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617sort</link>
            <description>Sort (with Cilk and C++ (11) Threads)

Assignment

Write a program that

	*  generates a vector with N items filled with random values
	*  sorts the vector (in parallel) 

Provide two versions of the program, one implemented using Cilk and one implemented using standard</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 09 Nov 2016 15:22:25 +0000</pubDate>
        </item>
        <item>
            <title>Distributed systems: paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617support</link>
            <description>Distributed systems: paradigms and models

Support material

Books and notes

 * the “SPM course notes” by M. Danelutto PDF that can be found  here (Version of Sept 2014, A4 size) and here (Version of Sept 2014, EPUB size) . Updates and additional material will be made available during the lessons and PDF links will included on this page, in case. 
This year I&#039;m preparing a new introductory part that will be available before the end of the course, hopefully by end of October, beginning of Novemb…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 05 Oct 2016 16:26:06 +0000</pubDate>
        </item>
        <item>
            <title>Access to Xeon PHI</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1718</link>
            <description>Access to Xeon PHI

 This instructions are relative to the Xeon PHI Knights Corner. The additional instructions to access the PHI Knights Landing may be found here.

Machine name  and access

The machine is  r720-phi.itc.unipi.it and has the IP address 131.114.137.225</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 12 Jan 2018 09:25:44 +0000</pubDate>
        </item>
        <item>
            <title>Thesis arguments available</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spmthesis13md</link>
            <description>Thesis arguments available

Related to the SPM courses, different thesis arguments are available, under supervision of course professor, including:

Implementation of a generic macro data flow engine in FastFlow

	*  joint supervision: M. Danelutto, M. Coppola</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 21 May 2013 14:06:39 +0000</pubDate>
        </item>
        <item>
            <title>Distributed systems: paradigms and models</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/start</link>
            <description>Distributed systems: paradigms and models


Teacher: Marco Danelutto

Assistant: Dr. Massimo Torquati

Question time: Thu, 3pm - 6pm, room 364, Dept. Computer Science

 Master (Laurea Magistrale): Computer Science and Networking

 Lesson Timetable  :

Recover course (first semester)
 Day  Time  Place  Tue  14-16  Aula Multimediale, Dept. Computer Science (without prof)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Jan 2018 11:34:19 +0000</pubDate>
        </item>
        <item>
            <title>Timetable</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/supportorec17</link>
            <description>Timetable
 Room  Day  Hour  What  X1  Tuesday  11.00-13.00  Lesson (with prof)  Multimedia room  Tuesday  14-16  Reading and Excercise (without prof) 
Next lessons will be on Tuesday Oct. 3, 11am Room X1 and Tuesday Oct. 3 14pm in the multimedia room (Dept. of Computer Science).</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 25 Jan 2018 14:17:56 +0000</pubDate>
        </item>
        <item>
            <title>Sample code 1</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/traduttorecpp</link>
            <description>Sample code 1


#include &lt;iostream&gt;
#include &lt;thread&gt;
#include &lt;chrono&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;omp.h&gt;
#include &lt;cilk/cilk.h&gt;
#include &lt;cilk/cilk_api.h&gt;

#include &lt;grppi.h&gt;
#include &lt;seq/sequential_execution.h&gt;
#include &lt;native/parallel_execution_native.h&gt;
#include &lt;omp/parallel_execution_omp.h&gt;

//#include &lt;execution&gt;

using namespace std;

typedef struct {
  int start;
  int end;
} RANGE;



int main(int argc, char * argv[]) {

  st…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 14 Nov 2017 11:18:03 +0000</pubDate>
        </item>
    </channel>
</rss>
