====== 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 [[https://www.cilkplus.org/|Cilk]] and one implemented using standard [[http://www.cplusplus.com/reference/thread/thread/|C++11]] threads. You may consider using either merge or quick sort. Mergesort has a trivial divide phase and non trivial conquer phase. Quick sort is the other way round: non trivial divide and trivial conquer phases. ==== Cilk ==== On local machines you'll mostly likely have available a GNU compiler. Cilk extensions are present since g++ version 4.9 (try **g++ --version** to check your version number). If you can't manage to have a recent g++ version of the compiler on your machine, please use r720-phi.itc.unipi.it. On the remote machine you may use **icc** with //no specific flags// to compile the Cilk code. If you prefer using the local tools to edit: * use local tools to edit * from a shell **rsync -avzur DirectoryWithCodeNoSlashAtEndOfTheName spm16xx@r720-phi.itc.unipi.it:** * then **ssh spm16xx@r720-phi.itc.unipi.it** * **cd DirectoryWithCodeNoSlashAtEndOfTheName** * **icc -std=c++11 cilksourcefilename.cpp -o xxx**