Commit 854f776e authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

Pushing updated build

parent 1c1e17d8
......@@ -18,10 +18,11 @@ The following third party libraries (TPLs) are used by XACC:
| C++14 (GCC 6.1+) | Required | N/A |
| CMake | Required | 2.8+ |
| Boost | Required | 1.59.0+ |
| CppMicroServices | Required | Master |
| spdlog | Required | N/A |
| MPI | Required | N/A |
## Fedora 25 Build Instructions
## Fedora/CentOS/Redhat Build Instructions
```bash
#Install 3rd party tools/libraries
......@@ -30,6 +31,12 @@ $ dnf install -y gcc-c++ cmake mpich-devel boost-mpich-devel make git spdlog env
# Install Scaffold support (Required as of 2017-06-14)
$ dnf install https://github.com/ORNL-QCI/ScaffCC/releases/download/v2.0/scaffold-2.0-1.fc25.x86_64.rpm
# Clone CppMicroServices
$ git clone https://github.com/cppmicroservices/cppmicroservices
$ cd cppmicroservices && mkdir build && cd build
$ cmake .. && make install
$ cd ../..
# Clone XACC
$ git clone --recursive https://github.com/ORNL-QCI/xacc
......@@ -56,6 +63,12 @@ $ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/
$ wget https://github.com/ORNL-QCI/ScaffCC/releases/download/v2.0/scaffold_2.0_amd64.deb
$ apt-get -y update && apt-get -y install $(dpkg --info scaffold_2.0_amd64.deb | grep Depends | sed "s/.*ends: //" | sed 's/,//g') && dpkg -i scaffold_2.0_amd64.deb
# Clone CppMicroServices
$ git clone https://github.com/cppmicroservices/cppmicroservices
$ cd cppmicroservices && mkdir build && cd build
$ cmake .. && make install
$ cd ../..
# Build XACC
$ git clone --recursive https://github.com/ORNL-QCI/xacc
$ cd xacc && mkdir build && cd build
......
......@@ -8,24 +8,27 @@ category: build
# XACC Install Pre-Built Binaries
## Fedora 25 Install Instructions
## Fedora 25/26 Install Instructions
```bash
# For Scaffold support... (Required as of 2017-06-14)
$ dnf install -y https://github.com/ORNL-QCI/ScaffCC/releases/download/v2.0/scaffold-2.0-1.fc25.x86_64.rpm
# For Fedora 25, replace fc26 with fc25...
$ dnf install -y https://github.com/ORNL-QCI/ScaffCC/releases/download/v2.0/scaffold-2.0-1.fc26.x86_64.rpm
# Install XACC
$ dnf install -y http://eclipseice.ornl.gov/downloads/xacc/rpms/x86_64/xacc-1.0-1.fc25.x86_64.rpm
# For Fedora 25, replace fc26 with fc25...
$ dnf install -y http://eclipseice.ornl.gov/downloads/xacc/rpms/x86_64/xacc-1.0-1.fc26.x86_64.rpm
```
## Ubuntu 16.04 Install Instructions
## Ubuntu 16.04 / 17.04 Install Instructions
```bash
# Install boilerplate
$ apt-get -y upgrade && apt-get -y update && apt-get install -y software-properties-common wget && add-apt-repository ppa:ubuntu-toolchain-r/test
# Pull down XACC and Scaffold
$ wget http://eclipseice.ornl.gov/downloads/xacc/debs/xacc_1.0_amd64.deb
# For Ubuntu 16.04, update directory from 17.04 to 16.04
$ wget http://eclipseice.ornl.gov/downloads/xacc/debs/17.04/xacc_1.0_amd64.deb
$ wget https://github.com/ORNL-QCI/ScaffCC/releases/download/v2.0/scaffold_2.0_amd64.deb
# Install Scaffold Dependencies
......
......@@ -11,3 +11,9 @@ for next-gen computing hardware architectures like quantum and neuromorphic
computing. It lets computational scientists efficiently off-load classically
intractable work to attached accelerators through a user-friendly kernel API.
XACC makes post-exascale hybrid programming approachable for domain computational scientists.
The XACC programming model, and associated open-source reference implementation, follows the traditional co-processor model, akin to OpenCL or CUDA for GPUs, but takes into account the subtleties and complexities inherent to the interplay between classical and quantum hardware. XACC provides a high-level API that enables classical applications to offload computationally intractable work (represented as quantum kernels) to an attached quantum accelerator in a manner that is agnostic to the quantum programming language and the quantum hardware. This enables one to write quantum code once, and perform benchmarking, verification and validation, and performance studies for a set of virtual (simulators) or physical hardware.
To achieve this interoperability, XACC defines four primary abstractions or concepts: quantum kernels, intermediate representation, compilers, and accelerators. Quantum kernels are C-like functions that contain code intended for execution on the QPU. These kernels are compiled to the XACC intermediate representation (IR), an object model that is key for promoting the integration of a diverse set of languages and hardware. The IR provides four main forms for use by algorithm programmers: (1) an in-memory representation and API, (2) an on-disk persisted representation, (3) human-readable quantum assembly representation, and (4) a control flow graph or quantum circuit representation. This IR is produced by realizations of the XACC compiler concept, which delegates to the kernel language’s appropriate parser, compiler, and optimizer. Finally, XACC IR instances (and therefore programmed kernels) are executed by realizations of the Accelerator concept, which defines an interface for injecting physical or virtual quantum accelerators. Accelerators take this IR as input and delegate execution to vendor-supplied APIs for the QPU (or API for a simulator). The orchestration of these concepts enable an expressive API for quantum acceleration of classical applications.
XACC has support for a number of languages and physical and virtual hardware instances. XACC provides a Compiler realization that enables quantum kernel programming in the Scaffold programming language - an effort that came out of the IARPA QCS program. This compiler leverages the Clang/LLVM library extensions developed under that project that extend the LLVM IR with quantum gate operations. XACC extends this compiler with support for new constructs, like custom quantum functions and source-to-source translations (mapping Scaffold to other languages). XACC provides an Accelerator realization that enables execution of quantum kernels in any available language for both the Rigetti Quantum Virtual Machine (QVM, Forest API) and the physical two qubit (pyquillow) Rigetti QPU. These Accelerators map the XACC IR to Quil (the Rigetti low-level assembly language) and leverage an HTTP Rest client to post compiled quantum kernel code to the Rigetti QVM/QPU driver servers. XACC also has support for the D-Wave QPU, which demonstrates the wide applicability of this heterogeneous hybrid programming model across quantum computing models. XACC has Compiler and Accelerator realizations that enable minor graph embedding of binary optimization problems and execution on the D-Wave Qubist QPU driver server, respectively.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment