ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ Η/Υ

Σχετικά έγγραφα
Tο περιβάλλον Code::Blocks

ΕΓΚΑΤΑΣΤΑΣΗ ΕΦΑΡΜΟΓΩΝ ΓΙΑ ΠΡΟΣΩΠΙΚΟ ΥΠΟΛΟΓΙΣΤΗ (MS WINDOWS, LINUX, MACOS)

Π : Εγχειρίδια χρήσης της υπηρεσίας για τα κύρια υποστηριζόμενα Λειτουργικά

Οδηγίες εγκατάστασης και χρήσης Java σε προσωπικό υπολογιστή

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016

Αντικειμενοστρεφής Προγραμματισμός

Ενσωματωμένα Συστήματα

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Μικρή Εισαγωγή στο wxdev-c++

Tο περιβάλλον Code::Blocks

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Πανεπιστήμιο Ιωαννίνων

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) Αθήνα, 16 Μαρτίου Εισαγωγή

Εγκατάσταση και δοκιμή προγραμμάτων για προγραμματισμό στη C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Δίκτυα Υπολογιστών Ι. Εγκατάσταση του Network Simulator-2 σε περιβάλλον Cygwin. Δ. Καρβουνάς, Δρ. Κ. Τσαγκάρης, Καθηγ. Π.

Epsilon Net PYLON Platform

Tο περιβάλλον Code::Blocks

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

«Εγχειρίδιο Προγράμματος Hope (version 2)»

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Οδηγίες Εγκατάστασης και χρήσης προγραμμάτων για την γλώσσα C

Hase οδηγίες χρήσης.

Εγχειρίδιο συμπίεσης / αποσυμπίεσης αρχείων με το λο ογισμικό WinRAR Υπηρεσία Πληροφορικών Συστημάτων Τομέας Συστημάτων ΥΠΣ ΕΔ/70 21/11/2012

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α

Hase οδηγίες χρήσης.

29 Μαρτίου Οδηγός Χρήσης VPN. Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής. Ομάδα Τεχνικής Υποστήριξης Υπεύθυνος: Ανδρέας Κασενίδης. Έκδοση 4.

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) Αθήνα, 1 Ιουνίου Εισαγωγή

Δημιουργία μιας εφαρμογής Java με το NetBeans

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. Εργαστηριακές Ασκήσεις

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Εισαγωγή στο περιβάλλον Code::Blocks

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53

Είσοδος σε συνεδρία της Blackboard και βασικές ρυθμίσεις

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

CYGWIN Οδηγίες Χρήσης (Συγγραφέας: Γιώργος ούκας)

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ OTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP)

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

ΗΥ-100: Εισαγωγή στην Επιστήμη Υπολογιστών 3η σειρά ασκήσεων

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών.

Δραστηριότητα 3: Ρυθμίσεις Oικιακής Ομάδας Τοπικού Δικτύου Η/Υ σε WINDOWS 7 & 8

Hase οδηγίες χρήσης.

Εγκατάσταση Python και των απαραίτητων πακέτων

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Εργαστήριο Εγκατάσταση Ubuntu με VirtualBox Εγκατάσταση Ubuntu με Unetbootin Απομακρυσμένη πρόσβαση με Putty/WinSCP

Προγραμματισμός Ι. Εργαστήριο 1 ο Περιβάλλον Εργασίας. Νικόλαος Δ. Τσελίκας Κυριακή Θ. Σεκλού

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

ΤΕΙ Πελοποννήσου Τμήμα Πληροφορικής. Οδηγίες Εγκατάστασης VPN Σύνδεσης στο ΤΕΙ Πελοποννήσου

Ελληνική Έκδ ση. Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές προδιαγραφές. Πρόσθετες τεχνικές προδιαγραφές

Linux με τη χρήση κονσόλας

Οδηγίες Εγκατάστασης tube & έναρξης δοκιμαστικών μαθημάτων

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΩΝ ΣΥΣΤΗΜΑΤΟΣ 2015

Οδηγίες εγκατάστασης IBM SPSS Statistics 20

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ COSMOTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP)

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤΙΚΟ 1/53

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

Ελληνική Έκδ ση. Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές προδιαγραφές BT100. Πρόσθετες τεχνικές προδιαγραφές ΒΤ100 S W E E X.

qemu img create linux.img f raw 2G

Εγκατάσταση Mozilla Firefox

ProcSim οδηγίες χρήσης.

X-Order Client: ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΕΡΓΟΠΟΙΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ σε ΔΧΣ Τερματικό

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795


Ο ΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ. MS SQL Server 2005 Για τις ανάγκες των εφαρµογών της SingularLogic

Η Εγκατάσταση της Μονάδας AVerMedia και του Δέκτη TV στο Windows Media Center

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΔΙΑΣΥΝΔΕΣΗΣ CLIENT SECURE REMOTE ACCESS IP VPN

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++

Εφαρμογές Πληροφορικής

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Εγχειρίδιο εγκατάστασης και χρήσης περιοδικών etwinning

Οδηγίες Χρήσης EAP Controller Software

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Manual. Εκλογές 15μελούς Σχολείου v4.0 Module On-line Ψηφοφορίας

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

«Εγχειρίδιο Προγράμματος Atalanta 2.0»

Λειτουργικά. Συστήματα Ι. Εγκατάσταση Ιδεατής Μηχανής. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ COSMOTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP)

Κέντρο υποστήριξης HP. Εισαγωγή. Τι χρειάζεται να γνωρίζετε. Λήψη και εγκατάσταση της λύσης Vista στα Windows 8. 1 of 5 1/7/2014 2:09 μμ

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

ProcSim οδηγίες χρήσης.

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Οδηγίες Εγκατάστασης Βάσης Δεδομένων MySQL 5.6 Για Λειτουργικό Σύστημα Windows

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Εισαγωγή στη γλώσσα προγραμματισμού C++

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ Η/Υ ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Γλώσσας Quipper ΚΟΥΒΕΛΑΣ ΘΕΟΔΩΡΟΣ ΚΥΤΕΑ ΚΩΝΣΤΑΝΤΙΝΑ ΧΡΗΣΤΙΔΗ ΑΓΓΕΛΙΚΗ-ΜΑΡΙΑ Πάτρα, Ιούλιος 2017

Περιεχόμενα Βήματα εγκατάστασης Quipper σε WINDOWS... 3 ΒΗΜΑ 1... 3 ΒΗΜΑ 2... 3 ΒΗΜΑ 3... 3 ΒΗΜΑ 4... 4 ΒΗΜΑ 5... 4 ΒΗΜΑ 6... 4 ΒΗΜΑ 7... 4 ΒΗΜΑ 8... 5 ΒΗΜΑ 9... 5 ΒΗΜΑ 10... 5 Βήματα εγκατάστασης Quipper σε linux... 6 Εγκατάσταση Haskell-platform 8.0.2... 6 Βήμα 1 - Κατέβασμα της Haskell... 6 Βήμα 2 - Αποσυμπίεση και εγκατάσταση Haskell 8.0.2... 6 Βήμα 3 Ενημέρωση του cabal... 7 Βήμα 4 - Εγκατάσταση απαραίτητων βιβλιοθηκών... 7 Εγκατάσταση γλώσσας Quipper... 8 Βήμα 5 - Κατέβασμα της Quipper... 8 Βήμα 6 - Διόρθωση αρχείων της Quipper 0.8... 8 Βήμα 7 - Μεταγλώττιση της Quipper... 9 Βήμα 8 - Ενημέρωση του PATH... 9 Παραδείγματα χρήσης... 10 Παράδειγμα χρήσης σε Windows... 10 Εξομοίωση παραδείγματος... 11 Παράδειγμα χρήσης σε Linux... 13 Εξομοίωση παραδείγματος... 14 2

Βήματα εγκατάστασης Quipper σε WINDOWS ΒΗΜΑ 1 Λήψη της Haskell από το link https://www.haskell.org/platform/windows.html Θα κατεβάσετε την έκδοση 8.0.2 core, για x86 ή x64, αναλόγως της έκδοσης των Windows που θα χρησιμοποιήσετε. Κάνετε εγκατάσταση εκτελώντας το αρχείο που κατεβάσατε. Σημείωση: Μετά την εγκατάσταση, για σύστημα Windows 10 με έκδοση 1703 ή μεγαλύτερη (ελέγξτε εκτελώντας την εντολή winver), θα πρέπει να αντικαταστήσετε με μια τροποποιημένη έκδοση, το αρχείο gcc.exe που βρίσκεται στο φάκελο: Πχ C:\Program Files\Haskell Platform\8.0.2\mingw\bin με το αρχείο που θα κατεβάσετε για την έκδοση των Windows που έχετε (x86 ή x64) από την ακόλουθη σελίδα, στο φάκελο binaries: https://github.com/mistuke/ghc-compat/tree/master/binaries/ghc-8.0.1 ΒΗΜΑ 2 Κατεβάζετε το βοηθητικό πρόγραμμα MSYS από τον παρακάτω σύνδεσμο και το εκτελείτε, ακολουθώντας τις οδηγίες που εμφανίζει. http://downloads.sourceforge.net/mingw/msys-1.0.11.exe ΒΗΜΑ 3 Μεταβείτε στις ιδιότητες του συστήματος : επιλέξτε για προχωρημένους -> μεταβλητές περιβάλλοντος (στο κάτω μέρος) -> επεξεργαστείτε τη μεταβλητή χρήστη PATH, προσθέτοντας στο τέλος : ;C:\msys\1.0\bin Στη συνέχεια μεταβείτε στην γραμμή εντολών (cmd) και εκτελέστε την ακόλουθη εντολή για την επιβεβαίωση της σωστής εγκατάστασης του MSYS: sh --login i 3

ΒΗΜΑ 4 Εκτελέστε την αρχικοποίηση για το cabal-install με την εντολή cabal user-config init Τροποποιήστε το αρχείο ρυθμίσεων cabal για να περιέχει τις ακόλουθες γραμμές : extra-prog-path: C:\Program Files\Haskell Platform\8.0.2\msys\usr\bin extra-lib-dirs: C:\Program Files\Haskell Platform\8.0.2\mingw\lib extra-include-dirs: C:\Program Files\Haskell Platform\8.0.2\mingw\include ΒΗΜΑ 5 Μεταβείτε στην γραμμή εντολών (cmd) και εκτελέστε τις ακόλουθες εντολές με τη σειρά που δίνονται : cabal update cabal install random cabal install mtl cabal install primes cabal install Lattices cabal install zlib cabal install easyrender cabal install fixedprec cabal install newsynth cabal install containers cabal install set-monad cabal install QuickCheck ΒΗΜΑ 6 Κάντε λήψη και ύστερα αποσυμπίεση της Quipper στο C:\quipper (από www.mathstat.dal.ca/~selinger/quipper/ ) ΒΗΜΑ 7 Προσθέστε " {-# OVERLAPPABLE #-} " στα instance στο Libraries\ShowAll.hs Προσθέστε " {-# OVERLAPPABLE #-} " στα instance στο quipper\quipper\labels.hs Προσθέστε " {-# OVERLAPPABLE #-} " στα instance στο quipper\quipper\qdata.hs 4

ΒΗΜΑ 8 Μεταβείτε στην γραμμή εντολών (cmd) και εκτελέστε make στον κεντρικό φάκελο της quipper ( χρόνος μεταγλώττισης ~1h με 1h 30m σε Dual Core Pentium 2GHz). Αυτό θα μεταγλωττίσει όλες τις απαραίτητες βιβλιοθήκες για κβαντικούς υπολογισμούς, αλλά και την κεντρική βιβλιοθήκη για τη γλώσσα Quipper και τα παραδείγματα που περιέχονται στη γλώσσα. ΒΗΜΑ 9 Πρόσθεσε το "C:\quipper\quipper\scripts" στο PATH του χρήστη. Έτσι θα μπορεί να εκτελείται το βοηθητικό πρόγραμμα quipper για την μεταγλώττιση των προγραμμάτων. ΒΗΜΑ 10 Για να μεταγλωττίσετε και να εκτελέσετε κάποιο πρόγραμμα, πρέπει να μεταβείτε σε γραμμή εντολών (cmd) και στον φάκελο που έχετε το πρόγραμμα προς μεταγλώττιση και να εκτελέσετε π.χ. quipper.bat And_gate.hs ΕΚΤΕΛΕΣΗ Μετάβαση στην γραμμή εντολών (cmd) Εκτέλεση των εξής εντολών: o cd / o cd file (όπου file ο φάκελος στον οποίο βρίσκονται τα αρχεία προς μεταγλώττιση) o quipper name.hs ( όπου name το όνομα του αρχείου που θέλουμε να μεταγλωττίσουμε) o name.exe ( εκτέλεση του εκτελέσιμου αρχείου που δημιουργήθηκε από την παραπάνω εντολή) 5

Βήματα εγκατάστασης Quipper σε linux Ακολουθούν τα βήματα για εγκατάσταση της Quipper σε σύστημα linux. Για την εγκατάσταση χρησιμοποιήθηκε σύστημα Linux Ubuntu 16.04.02 LTS 64bit. Γενικά τα βήματα που θα χρειαστούν είναι τα ακόλουθα: 1. Εγκατάσταση Haskell-platform 8.0.2 2. Εγκατάσταση γλώσσας Quipper. Στη συνέχεια παρουσιάζονται αναλυτικά. Εγκατάσταση Haskell-platform 8.0.2 Για τα επόμενα βήματα θεωρούμε ότι το κατέβασμα των αρχείων γίνεται στον προσωπικό φάκελο του ενεργού χρήστη. Έτσι χρησιμοποιούμε λογαριασμό χρήστη με όνομα user, με τον προσωπικό του φάκελο να βρίσκεται στην θέση: /home/user Σε περίπτωση διαφορετικού ονόματος χρήστη, όπου παρακάτω αναφέρονται τα στοιχεία του user, τροποποιείτε ανάλογα. Βήμα 1 - Κατέβασμα της Haskell Κατεβάζουμε την τρέχουσα generic έκδοση 8.0.2 χειροκίνητα, επειδή στο repository του Ubuntu η υπάρχουσα έκδοση είναι η 7.10.3 η οποία έχει πρόβλημα με την Quipper. Θα κάνουμε λήψη της Haskell από την διεύθυνση https://www.haskell.org/platform/linux.html, επιλέγοντας την έκδοση generic. Στη συνέχεια θα κατεβάσουμε την έκδοση 8.0.2 core, για x86 ή x64. Η έκδοση που θα κατεβάσουμε περιέχει το cabal-install. wget https://haskell.org/platform/download/8.0.2/haskell-platform- 8.0.2-unknown-posix--minimal-x86_64.tar.gz Βήμα 2 - Αποσυμπίεση και εγκατάσταση Haskell 8.0.2 Αποσυμπιέζουμε το αρχείο του προηγούμενου βήματος και κάνουμε την εγκατάσταση με τις ακόλουθες εντολές. Η εγκατάσταση απαιτεί δικαιώματα διαχειριστή. $ tar xf haskell-platform-8.0.2-unknown-posix--minimal-x86_64.tar.gz $ sudo./install-haskell-platform.sh 6

Σημ.: Εάν η εγκατάσταση γίνει σε νεότερη έκδοση linux (π.χ. Ubuntu > 16.04) ή σε σύστημα που υποστηρίζει εξατομικευμένη εγκατάσταση εκτελέσιμων αρχείων, θα πρέπει να αλλαχθεί στο αρχείο usr/local/haskell/ghc- /lib/ghc- /settings η flag "compiler supports -no-pie" από "NO" σε "YES". Βήμα 3 Ενημέρωση του cabal Πριν την εγκατάσταση των απαιτούμενων για την μεταγλώττιση της Quipper βιβλιοθηκών, θα πρέπει να γίνει ενημέρωση του συστήματος cabal. Αυτό γίνεται εκτελώντας την εντολή cabal update Βήμα 4 - Εγκατάσταση απαραίτητων βιβλιοθηκών Εγκαθιστούμε τις απαραίτητες για την μεταγλώττιση της Quipper βιβλιοθήκες με την σειρά που ακολουθεί : cabal install random cabal install mtl (αν βγάζει σφάλμα ότι δεν βρίσκει το -lgmp, εγκαθιστούμε την βιβλιοθήκη libgmp10: sudo apt-get install libgmp10) cabal install primes cabal install Lattices cabal install zlib (αν βγάζει σφάλμα ότι δεν βρίσκει το zlib.h, εγκαθιστούμε τη βιβλιοθήκη zlib: sudo apt-get install zlib1g-dev) cabal install easyrender 7

cabal install fixedprec cabal install newsynth cabal install containers cabal install set-monad cabal install QuickCheck Εάν υπάρξει σφάλμα κατά την εγκατάσταση σε κάποια από τις προηγούμενες βιβλιοθήκες, η συνήθης λύση είναι παρόμοια με τις υποδείξεις στις παρενθέσεις. Δηλαδή, ψάχνουμε να εγκαταστήσουμε την βιβλιοθήκη που εμφανίζεται να λείπει από το σύστημα Εγκατάσταση γλώσσας Quipper Βήμα 5 - Κατέβασμα της Quipper Κατεβάζουμε το αρχείο της Quipper με την εντολή: wget http://www.mathstat.dal.ca/~selinger/quipper/downloads/quipper- 0.8.tgz Κατόπιν αποσυμπιέζουμε το αρχείο και μπαίνουμε στον φάκελο. $ tar xf quipper-0.8.tgz $ cd quipper-0.8 Βήμα 6 - Διόρθωση αρχείων της Quipper 0.8 Για να ολοκληρωθεί σωστά η μεταγλώττιση της Quipper την τρέχουσα έκδοση της Haskell, θα πρέπει να επέμβουμε στον κώδικα τριών (3) αρχείων. Θα πρέπει στα αρχεία : Libraries/ShowAll.hs quipper/quipper/labels.hs quipper/quipper/qdata.hs να προσθέσουμε μπροστά από κάθε instance το {-# OVERLAPPABLE #-}. Για παράδειγμα στο αρχείο ShowAll.hs στη γραμμή 28, η εντολή : instance Show (a -> b) where θα πρέπει να γίνει : instance {-# OVERLAPPABLE #-} Show (a -> b) where Παρόμοια τροποποιούμε και τα υπόλοιπα instance στα προαναφερθέντα αρχεία. 8

Βήμα 7 - Μεταγλώττιση της Quipper Κάνουμε μεταγλώττιση της γλώσσας Quipper εκτελώντας την εντολή make στον κεντρικό φάκελο. Βήμα 8 - Ενημέρωση του PATH Η εγκατάσταση της γλώσσας περιλαμβάνει και ένα εκτελέσιμο με όνομα quipper το οποίο θα μας βοηθήσει στο να μεταγλωττίσουμε τα δικά μας προγράμματα. Στην ουσία καλεί με τη σειρά του τον μεταγλωττιστή της Haskell (ghc) αλλά πρώτα κάνει μερικές απαραίτητες ρυθμίσεις για τις ανάγκες της Quipper. Στο τρέχον σύστημα Ubuntu το περιβάλλον της κονσόλας λειτουργεί με το bash shell. Έτσι στην τελευταία γραμμή του αρχείου.bashrc προσθέτουμε την εντολή: export PATH="$HOME/quipper-0.8/quipper/scripts:$PATH" Αντίστοιχα πρέπει να γίνει η προσθήκη στο αρχείο εκκίνησης ανάλογα με το shell που χρησιμοποιείται, σε άλλη έκδοση του linux. 9

Παραδείγματα χρήσης Ακολουθούν δυο παραδείγματα χρήσης της quipper για την μεταγλώττιση ενός προγράμματος σε περιβάλλοντα Windows και Linux. Το παράδειγμα Windows πραγματοποιείται σε υπολογιστή με Windows 7 32bit, ενώ το παράδειγμα με το Linux σε υπολογιστή με Linux Ubuntu 16.02 LTS 64bit χωρίς γραφικό περιβάλλον. Παράδειγμα χρήσης σε Windows Έστω το παρακάτω πρόγραμμα σε Quipper. import Quipper feynman :: (Qubit, Qubit) -> Circ (Qubit, Qubit) feynman (q1, q2) = do qnot_at q2 `controlled` [q1] return (q1, q2) main = print_simple Preview feynman Οι εντολές του αρχείου συντάσσονται σε κάποιον κειμενογράφο, πχ Notepad.exe, και αποθηκεύουμε σε αρχείο κειμένου με κατάληξη.hs, έστω στο αρχείο: mytest1.hs Κατόπιν περνάμε σε περιβάλλον γραμμής εντολών. Μεταβαίνουμε στο φάκελο με το αρχείο που δημιουργήσαμε και καλούμε την quipper για να το μεταγλωττίσουμε. Για παράδειγμα έστω το αρχείο mytest1.hs στο φάκελο C:\quipper-0.8\project2017. Θα το μεταγλωττίσουμε όπως παρακάτω: C:\quipper-0.8\project2017>quipper mytest1.hs Το αποτέλεσμα θα είναι η παραγωγή του εκτελέσιμου mytest1.exe στον ίδιο φάκελο. Επειδή η τελευταία γραμμή του παραπάνω κώδικα κάνει χρήση της Preview, τρέχοντας το mytest1.exe θα ανοίξει ο Acrobat Reader δείχνοντάς μας το προσωρινά δημιουργημένο αρχείο pdf του κυκλώματος. Δείτε το παράδειγμα στο ακόλουθο στιγμιότυπο. 10

Εξομοίωση παραδείγματος Για να ελέγξουμε τη λειτουργία του παραπάνω παραδείγματος θα πρέπει να κάνουμε μερικές προσθήκες στον κώδικα και να εκτελέσουμε μια εξομοίωση του κυκλώματος. Θα χρειαστεί να προσθέσουμε στις βιβλιοθήκες στην κορυφή του αρχείου την QuipperLib, η οποία περιλαμβάνει την συνάρτηση εξομοίωσης run_generic_io. Στην βιβλιοθήκη αυτή περιέχονται και άλλες υλοποιήσεις της εξομοίωσης κβαντικού 11

κυκλώματος, αλλά εδώ θα δείξουμε την run_generic_io η οποία χρησιμοποιεί ως πηγή τυχαιότητας την αντίστοιχη του IO Monad της Haskell. Έτσι τώρα ο κώδικας θα γίνει: import Quipper import QuipperLib.Simulation feynman :: (Qubit, Qubit) -> Circ (Qubit, Qubit) feynman (q1, q2) = do qnot_at q2 `controlled` [q1] return (q1, q2) main = do test_run <- run_generic_io d feynman(true, True) putstrln("feynman gate test run = " ++ show test_run) where d :: Double d = undefined Εδώ ορίζουμε μια μεταβλητή d ως Double και την περνάμε ως παράμετρο της run_generic_io, μαζί με την συνάρτηση που θα εξομοιώσουμε. Η μεταβλητή d χρειάζεται για να ορίσουμε απλά τον τύπο double. Αφού τροποποιήσουμε το αρχείο και το αποθηκεύσουμε ως mytest1b.hs περνάμε σε περιβάλλον γραμμής εντολών. Μεταβαίνουμε στο φάκελο με το αρχείο και καλούμε την quipper για να το μεταγλωττίσουμε. Σύμφωνα με το προηγούμενο παράδειγμα, μεταβαίνουμε στο φάκελο C:\quipper-0.8\project2017, και κάνουμε την μεταγλώττιση όπως παρακάτω: C:\quipper-0.8\project2017>quipper mytest1b.hs Κατόπιν τρέχοντας το mytest1b.exe θα εκτελεστεί η εξομοίωση του κυκλώματος και θα μας εμφανίσει το αποτέλεσμα στην κονσόλα: Στο παραπάνω παράδειγμα βλέπουμε ότι το πρώτο qubit έχει τιμή TRUE άρα θα περιμένουμε να επηρεάσει την τιμή του δεύτερου, πράγμα που επιβεβαιώνουμε από το αποτέλεσμα της εκτέλεσης του προγράμματος. 12

Παράδειγμα χρήσης σε Linux Έστω το παρακάτω πρόγραμμα σε Quipper. import Quipper feynman :: (Qubit, Qubit) -> Circ (Qubit, Qubit) feynman (q1, q2) = do qnot_at q2 `controlled` [q1] return (q1, q2) main = print_simple PDF feynman Οι εντολές του αρχείου συντάσσονται σε κάποιον κειμενογράφο, πχ pico, και αποθηκεύουμε σε αρχείο κειμένου με κατάληξη.hs, έστω στο αρχείο: mytest1.hs Κατόπιν περνάμε σε περιβάλλον γραμμής εντολών. Μεταβαίνουμε στο φάκελο με το αρχείο που δημιουργήσαμε και καλούμε την quipper για να το μεταγλωττίσουμε. Για παράδειγμα έστω το αρχείο mytest1.hs στο φάκελο ~/project2017/. Θα το μεταγλωττίσουμε όπως παρακάτω: ~$ cd project2017/ ~/project2017$ quipper mytest1.hs Αυτό θα δημιουργήσει το εκτελέσιμο αρχείο mytest1 στον τρέχον φάκελο. Επειδή στο συγκεκριμένο παράδειγμα, στην τελευταία γραμμή ζητάμε παραγωγή ενός αρχείου pdf, κατά την εκτέλεση του προγράμματος θα πρέπει να κάνουμε ανακατεύθυνση της εξόδου του σε κάποιο αρχείο. Έτσι, για παράδειγμα, αν θέλουμε να αποθηκεύσουμε το κύκλωμα σε ένα αρχείο με όνομα kikloma.pdf τότε θα εκτελέσουμε το πρόγραμμά μας με την ακόλουθη εντολή: ~/project2017$./mytest1 >> kikloma.pdf Έτσι θα έχει δημιουργηθεί στον τρέχον φάκελο το αρχείο kikloma.pdf με το αντίστοιχο κύκλωμα του κώδικά μας. Δείτε το παράδειγμα στο παρακάτω στιγμιότυπο: 13

Εξομοίωση παραδείγματος Για να ελέγξουμε τη λειτουργία του παραπάνω παραδείγματος θα πρέπει να κάνουμε μερικές προσθήκες στον κώδικα και να εκτελέσουμε μια εξομοίωση του κυκλώματος. Θα χρειαστεί να προσθέσουμε στις βιβλιοθήκες στην κορυφή του αρχείου την QuipperLib, η οποία περιλαμβάνει την συνάρτηση εξομοίωσης run_generic_io. Στην βιβλιοθήκη αυτή περιέχονται και άλλες υλοποιήσεις της εξομοίωσης κβαντικού κυκλώματος, αλλά εδώ θα δείξουμε την run_generic_io η οποία χρησιμοποιεί ως πηγή τυχαιότητας την αντίστοιχη του IO Monad της Haskell. Έτσι τώρα ο κώδικας θα γίνει: import Quipper import QuipperLib.Simulation feynman :: (Qubit, Qubit) -> Circ (Qubit, Qubit) feynman (q1, q2) = do qnot_at q2 `controlled` [q1] return (q1, q2) main = do test_run <- run_generic_io d feynman(true, True) putstrln("feynman gate test run = " ++ show test_run) where d :: Double d = undefined Εδώ ορίζουμε μια μεταβλητή d ως Double και την περνάμε ως παράμετρο της run_generic_io, μαζί με την συνάρτηση που θα εξομοιώσουμε. Η μεταβλητή d χρειάζεται για να ορίσουμε απλά τον τύπο double. Αφού τροποποιήσουμε το αρχείο και το αποθηκεύσουμε ως mytest1b.hs περνάμε σε περιβάλλον γραμμής εντολών. Μεταβαίνουμε στο φάκελο με το αρχείο και καλούμε την quipper για να το μεταγλωττίσουμε. Σύμφωνα με το προηγούμενο παράδειγμα, μεταβαίνουμε στο φάκελο ~/project2017/, και κάνουμε την μεταγλώττιση όπως παρακάτω: ~/project2017$ quipper mytest1b.hs Κατόπιν τρέχοντας το mytest1b θα εκτελεστεί η εξομοίωση του κυκλώματος και θα μας εμφανίσει το αποτέλεσμα στην κονσόλα: 14

Στο παραπάνω παράδειγμα βλέπουμε ότι το πρώτο qubit έχει τιμή TRUE άρα θα περιμένουμε να επηρεάσει την τιμή του δεύτερου, πράγμα που επιβεβαιώνουμε από το αποτέλεσμα της εκτέλεσης του προγράμματος. 15