Skip to content

Commit

Permalink
update to CUDA 7.0
Browse files Browse the repository at this point in the history
  • Loading branch information
BenjaminW3 committed Mar 30, 2015
1 parent 80ff875 commit 8d00bdb
Show file tree
Hide file tree
Showing 38 changed files with 763 additions and 651 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
~data
/doc/doxygen/*
!/doc/doxygen/Doxyfile
**/build
96 changes: 44 additions & 52 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,22 @@ compiler:
# \TODO: Test full matrix:
# ALPAKA_INTEGRATION_TEST : {ON}
# CXX : {g++, clang++}
# [clang++] ALPAKA_CLANG_LIBSTDCPP_VERSION : {4.8, 4.9}
# [clang++] ALPAKA_CLANG_LIBSTDCPP_VERSION : {4.9}
# [clang++] ALPAKA_CLANG_VER : {3.5, 3.6, 3.7}
# [g++] ALPAKA_GCC_VER : {4.8, 4.9}
# [g++] ALPAKA_GCC_VER : {4.9}
# ALPAKA_BOOST_VER : {1.56, 1.57}
# ALPAKA_CMAKE_VER : {2.8.12.2, 3.0.0, 3.0.1, 3.0.2, 3.1.0, 3.1.1}
# ALPAKA_CMAKE_VER : {2.8.12.2, 3.0.0, 3.0.1, 3.0.2, 3.1.0, 3.1.1, 3.2.0, 3.2.1}
# CMAKE_BUILD_TYPE : {DEBUG, RELEASE}
# ALPAKA_DEBUG : {0, 1, 2}
# ALPAKA_SERIAL_ENABLE : {ON, OFF}
# ALPAKA_THREADS_ENABLE : {ON, OFF}
# ALPAKA_OPENMP_ENABLE : {ON, OFF}
# [ON] OMP_NUM_THREADS : {1, 2, 3, 4}
# ALPAKA_CUDA_ENABLE : {ON, OFF}
# [ON] ALPAKA_CUDA_VERSION : {6.5, 7.0}
# [ON] ALPAKA_CUDA_VERSION : {7.0}
# ALPAKA_FIBERS_ENABLE : {ON, OFF}
# And one analysis build
# ALPAKA_ANALYSIS : {ON, OFF}
#
# NOTE: boost 1.55.0 is supported but bootstrap of this version fails because the boost.build of the tagged git release is buggy.
################################################################################
env:
global:
Expand All @@ -50,23 +48,23 @@ env:
- ALPAKA_OPENMP_ENABLE=ON
- ALPAKA_FIBERS_ENABLE=ON
- ALPAKA_CUDA_ENABLE=ON
- ALPAKA_CUDA_VERSION=6.5
- ALPAKA_CUDA_VERSION=7.0
- ALPAKA_CLANG_LIBSTDCPP_VERSION=4.9

matrix:
- ALPAKA_ANALYSIS=ON CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.8 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.0
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.1
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=2 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.8 ALPAKA_CLANG_VER=3.4 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.1.0
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=1 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.1.1
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.8 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.0
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.1.1
- ALPAKA_ANALYSIS=ON CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.0 ALPAKA_CUDA_ENABLE=ON
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.1 ALPAKA_CUDA_ENABLE=ON
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=2 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.2.0 ALPAKA_CUDA_ENABLE=OFF
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=1 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.2.1 ALPAKA_CUDA_ENABLE=OFF
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.0 ALPAKA_CUDA_ENABLE=OFF
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=DEBUG ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.1.1 ALPAKA_CUDA_ENABLE=ON

- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.8 ALPAKA_CLANG_VER=3.4 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=2.8.12.2
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.0.0
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=2 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.8 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.0.1
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=1 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.0.2
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.8 ALPAKA_CLANG_VER=3.4 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.0
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.1.1
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=2.8.12.2 ALPAKA_CUDA_ENABLE=ON
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=2 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.0.0 ALPAKA_CUDA_ENABLE=ON
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=2 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.0.1 ALPAKA_CUDA_ENABLE=OFF
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=1 OMP_NUM_THREADS=1 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.6 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.0.2 ALPAKA_CUDA_ENABLE=OFF
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.5 ALPAKA_BOOST_VER=1.56.0 ALPAKA_CMAKE_VER=3.1.0 ALPAKA_CUDA_ENABLE=OFF
- ALPAKA_ANALYSIS=OFF CMAKE_BUILD_TYPE=RELEASE ALPAKA_DEBUG=0 OMP_NUM_THREADS=4 ALPAKA_GCC_VER=4.9 ALPAKA_CLANG_VER=3.7 ALPAKA_BOOST_VER=1.57.0 ALPAKA_CMAKE_VER=3.1.1 ALPAKA_CUDA_ENABLE=ON

matrix:
# exclude:
Expand Down Expand Up @@ -102,8 +100,7 @@ before_install:
# g++ 4.8 / 4.9 / clang dependencies
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test

# clang 3.4 / 3.5 / 3.6 / current
- if [ "${CXX}" == "clang++" ] ;then sudo add-apt-repository -y 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.4 main' ;fi
# clang 3.5 / 3.6 / current
- if [ "${CXX}" == "clang++" ] ;then sudo add-apt-repository -y 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.5 main' ;fi
- if [ "${CXX}" == "clang++" ] ;then sudo add-apt-repository -y 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.6 main' ;fi
- if [ "${CXX}" == "clang++" ] ;then sudo add-apt-repository -y 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main' ;fi
Expand All @@ -127,7 +124,8 @@ install:

#-------------------------------------------------------------------------------
# Install cppcheck
- if [ "${ALPAKA_ANALYSIS}" == "ON" ] ;then sudo apt-get install cppcheck ;fi
# FIXME: Use a better static analysis tool. cppcheck does not support c++11 correctly.
#- if [ "${ALPAKA_ANALYSIS}" == "ON" ] ;then sudo apt-get install cppcheck ;fi

#-------------------------------------------------------------------------------
# Get the curent gcc version.
Expand All @@ -151,15 +149,6 @@ install:
&& echo ${ALPAKA_GCC_VER_MAJOR}
&& echo ${ALPAKA_GCC_VER_MINOR}
;fi
# Disable fibers for old gcc versions not supporting it.
- if [ "${CXX}" == "g++" ]
;then
if (( (( ${ALPAKA_GCC_VER_MAJOR} < 4 )) || ( (( ${ALPAKA_GCC_VER_MAJOR} == 4 )) && (( ${ALPAKA_GCC_VER_MINOR} < 9 )) ) ))
;then
export ALPAKA_FIBERS_ENABLE=OFF
&& echo ALPAKA_FIBERS_ENABLE=${ALPAKA_FIBERS_ENABLE} because the gcc version does not support it!
;fi
;fi

#-------------------------------------------------------------------------------
# Install clang.
Expand All @@ -182,7 +171,7 @@ install:
&& echo ${ALPAKA_CLANG_VER_MAJOR}
&& echo ${ALPAKA_CLANG_VER_MINOR}
;fi
# Clang versions lower than 3.8 do not (currently) support OpenMP correctly.
# clang versions lower than 3.8 do not (currently) support OpenMP correctly.
- if [ "${CXX}" == "clang++" ]
;then
if (( (( ${ALPAKA_CLANG_VER_MAJOR} < 3 )) || ( (( ${ALPAKA_CLANG_VER_MAJOR} == 3 )) && (( ${ALPAKA_CLANG_VER_MINOR} < 8 )) ) ))
Expand All @@ -191,16 +180,16 @@ install:
&& echo ALPAKA_OPENMP_ENABLE=${ALPAKA_OPENMP_ENABLE} because the clang version does not support it!
;fi
;fi
# Disable fibers for old clang versions.
# Old boost versions produce too much warnings when using clang so that the 4 MiB log is too short.
- if [ "${CXX}" == "clang++" ]
;then
if (( (( ${ALPAKA_CLANG_VER_MAJOR} < 3 )) || ( (( ${ALPAKA_CLANG_VER_MAJOR} == 3 )) && (( ${ALPAKA_CLANG_VER_MINOR} < 5 )) ) ))
;then
export ALPAKA_FIBERS_ENABLE=OFF
&& echo ALPAKA_FIBERS_ENABLE=${ALPAKA_FIBERS_ENABLE} because the clang version does not support it!
if (( (( ${ALPAKA_CLANG_VER_MAJOR} < 3 )) || ( (( ${ALPAKA_CLANG_VER_MAJOR} == 3 )) && (( ${ALPAKA_CLANG_VER_MINOR} < 8 )) ) ))
;then
export ALPAKA_BOOST_VER=1.57.0
&& echo ALPAKA_BOOST_VER=${ALPAKA_BOOST_VER} because old boost versions produce too much warnings when using clang!
;fi
;fi

#-------------------------------------------------------------------------------
# Extract the CUDA version numbers.
- if [ "${ALPAKA_CUDA_ENABLE}" == "ON" ]
Expand All @@ -210,29 +199,32 @@ install:
&& echo ${ALPAKA_CUDA_VER_MAJOR}
&& echo ${ALPAKA_CUDA_VER_MINOR}
;fi
# CUDA 6.5 does not support gcc > 4.8.
- if [ "${CXX}" == "g++" ]
# CUDA 7.0 does not support gcc > 4.9.2
- if [ "${ALPAKA_CUDA_ENABLE}" == "ON" ]
;then
if (( (( ${ALPAKA_GCC_VER_MAJOR} > 4 )) || ( (( ${ALPAKA_GCC_VER_MAJOR} == 4 )) && (( ${ALPAKA_GCC_VER_MINOR} > 8 )) ) ))
if (( (( ${ALPAKA_GCC_VER_MAJOR} > 4 )) || ( (( ${ALPAKA_GCC_VER_MAJOR} == 4 )) && (( ${ALPAKA_GCC_VER_MINOR} > 9 )) ) ))
;then
if (( (( ${ALPAKA_CUDA_VER_MAJOR} == 6 )) && (( ${ALPAKA_CUDA_VER_MINOR} == 5 )) ))
if (( (( ${ALPAKA_CUDA_VER_MAJOR} == 7 )) && (( ${ALPAKA_CUDA_VER_MINOR} == 0 )) ))
;then
export ALPAKA_CUDA_ENABLE=OFF
&& echo ALPAKA_CUDA_ENABLE=${ALPAKA_CUDA_ENABLE} because nvcc 6.5 does not support the gcc version!
&& echo ALPAKA_CUDA_ENABLE=${ALPAKA_CUDA_ENABLE} because nvcc 7.0 does not support the gcc version!
;fi
;fi
;fi
# CUDA 6.5 does not support clang as c++11 compiler.
- if [ "${CXX}" == "clang++" ]
;then
export ALPAKA_CUDA_ENABLE=OFF
&& echo ALPAKA_CUDA_ENABLE=${ALPAKA_CUDA_ENABLE} because nvcc 6.5 does not support clang for c++11!
# nvcc does not currently support boost correctly so fibers / threads have to be disabled.
# boost/utility/detail/result_of_iterate.hpp:148:75: error: invalid use of qualified-name 'std::allocator_traits<_Alloc>::propagate_on_container_swap'
- if [ "${ALPAKA_CUDA_ENABLE}" == "ON" ]
;then
export ALPAKA_FIBERS_ENABLE=OFF
&& echo ALPAKA_FIBERS_ENABLE=${ALPAKA_FIBERS_ENABLE} because nvcc does not support boost correctly!
&& export ALPAKA_THREADS_ENABLE=OFF
&& echo ALPAKA_THREADS_ENABLE=${ALPAKA_THREADS_ENABLE} because nvcc does not support boost correctly!
;fi
# Install nvcc
- if [ "${ALPAKA_CUDA_ENABLE}" == "ON" ]
;then
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1204/x86_64/cuda-repo-ubuntu1204_6.5-14_amd64.deb
&& sudo dpkg -i cuda-repo-ubuntu1204_6.5-14_amd64.deb
wget http://developer.download.nvidia.com/compute/cuda/${ALPAKA_CUDA_VER_MAJOR}_${ALPAKA_CUDA_VER_MINOR}/Prod/local_installers/rpmdeb/cuda-repo-ubuntu1204-${ALPAKA_CUDA_VER_MAJOR}-${ALPAKA_CUDA_VER_MINOR}-local_${ALPAKA_CUDA_VERSION}-28_amd64.deb
&& sudo dpkg -i cuda-repo-ubuntu1204-${ALPAKA_CUDA_VER_MAJOR}-${ALPAKA_CUDA_VER_MINOR}-local_${ALPAKA_CUDA_VERSION}-28_amd64.deb
&& sudo apt-get -y update
&& sudo apt-get -y install cuda-core-${ALPAKA_CUDA_VERSION} cuda-cudart-${ALPAKA_CUDA_VERSION} cuda-cudart-dev-${ALPAKA_CUDA_VERSION}
&& sudo ln -s /usr/local/cuda-${ALPAKA_CUDA_VERSION} /usr/local/cuda
Expand Down Expand Up @@ -361,9 +353,9 @@ script:
# cppcheck
# --inline-suppr
# Once only with errors returning error a failure on error.
- if [ "${ALPAKA_ANALYSIS}" == "ON" ] ;then cppcheck --force --verbose --error-exitcode=1 -j2 vectorAdd/src/ matMul/src/ sharedMem/src/ mandelbrot/src/ ;fi
#- if [ "${ALPAKA_ANALYSIS}" == "ON" ] ;then cppcheck --force --verbose --error-exitcode=1 -j2 vectorAdd/src/ matMul/src/ sharedMem/src/ mandelbrot/src/ ;fi
# Once with warnings but no failure return code.
- if [ "${ALPAKA_ANALYSIS}" == "ON" ] ;then cppcheck --force --verbose --enable=all -j2 vectorAdd/src/ matMul/src/ sharedMem/src/ mandelbrot/src/ ;fi
#- if [ "${ALPAKA_ANALYSIS}" == "ON" ] ;then cppcheck --force --verbose --enable=all -j2 vectorAdd/src/ matMul/src/ sharedMem/src/ mandelbrot/src/ ;fi

#-------------------------------------------------------------------------------
- cd mandelbrot/
Expand Down
13 changes: 4 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# ALPAKA_FIBERS_ENABLE {ON, OFF}
# ALPAKA_OPENMP_ENABLE {ON, OFF}
# ALPAKA_CUDA_ENABLE {ON, OFF}
# ALPAKA_CUDA_VERSION {6.5, 7.0, ...}
# ALPAKA_CUDA_VERSION {7.0, ...}
# ALPAKA_CUDA_ARCH {sm_20, sm...}
# ALPAKA_CUDA_SHOW_REGISTER {ON, OFF}
# ALPAKA_CUDA_KEEP_FILES {ON, OFF}
Expand Down Expand Up @@ -145,15 +145,10 @@ IF(ALPAKA_CUDA_ENABLE)

IF(NOT DEFINED ALPAKA_CUDA_VERSION)
SET(ALPAKA_CUDA_VERSION 7.0)
#ELSE()
# STRING(COMPARE EQUAL "${ALPAKA_CUDA_VERSION}" "" IS_CUDA_VERSION_EMPTY)
# IF(IS_CUDA_VERSION_EMPTY)
# SET(ALPAKA_CUDA_VERSION 7.0)
# ENDIF()
ENDIF()

IF(ALPAKA_CUDA_VERSION VERSION_LESS 6.5)
MESSAGE(FATAL_ERROR "CUDA Toolkit < 6.5 is not supported!")
IF(ALPAKA_CUDA_VERSION VERSION_LESS 7.0)
MESSAGE(FATAL_ERROR "CUDA Toolkit < 7.0 is not supported!")
ENDIF()

FIND_PACKAGE(CUDA ${ALPAKA_CUDA_VERSION} REQUIRED)
Expand Down Expand Up @@ -227,7 +222,7 @@ ELSE()
# Clang or AppleClang
ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
LIST(APPEND ALPAKA_COMPILE_OPTIONS "-Wall")
#Clang 3.7 seems to require libr: undefined reference to `clock_gettime'
#Clang 3.7 seems to require librt: undefined reference to `clock_gettime'
# \TODO: Remove when using fiber develop.
#LIST(APPEND ALPAKA_LIBRARY_DEPENDENCIES "general;lrt")
# ICC
Expand Down
24 changes: 10 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
**alpaka** - Abstraction Library for Parallel Kernel Acceleration
=============================================================
=================================================================

The **alpaka** library allows users to utilize a multitude of different accelerator types that require different libraries/compilers by providing a uniform kernel interface.
Users have to write only one implementation of their algorithms and can benefit from all supported accelerators.
Expand All @@ -25,24 +25,24 @@ By using this abstraction the execution can be optimally adapted to the availabl
Software License
----------------

**alpaka** is licensed under the **LGPLv3+**.
**alpaka** is licensed under **LGPLv3** or later.


Documentation
-------------

The source code documentation generated with [doxygen](www.doxygen.org) is available [here](http://computationalradiationphysics.github.io/alpaka/).
The source code documentation generated with [doxygen](http://www.doxygen.org) is available [here](http://computationalradiationphysics.github.io/alpaka/).


Supported Compilers
-------------------

This library uses a subset of C++11 supported by many compilers to keep the code clean and readable.
This library uses a subset of C++11 to keep the code clean and readable.

Supported compilers are:
- gcc 4.8.2+ (boost-fibers only supported in gcc 4.9+)
- gcc 4.9.2+
- MSVC 2013+ (boost-fibers only supported in MSVC 2015)
- clang 3.4+ (currently OpenMP only supported in `clang-omp` )
- clang 3.5+ (currently OpenMP only supported in `clang-omp` )
- icc 15.0+ (untested)

Build status master branch: [![Build Status](https://travis-ci.org/ComputationalRadiationPhysics/alpaka.svg?branch=master)](https://travis-ci.org/ComputationalRadiationPhysics/alpaka)
Expand All @@ -53,12 +53,12 @@ Build status develop branch: [![Build Status](https://travis-ci.org/Computationa
Requirements
------------

[Boost](http://boost.org/) 1.55+ is the only required external dependency.
[Boost](http://boost.org/) 1.56+ is the only required external dependency.
By default just header-only libraries are used.

When the *Fibers-Accelerator* is enabled, `boost-coroutine`, `boost-context` and the proposed boost library [`boost-fibers`](https://github.com/olk/boost-fiber) (develop branch commit 6a1257442bb82e9082a55cacc2c6ebe02b4aa540) are required to be build.

When the *CUDA-Accelerator* is enabled, version *6.5* of the *CUDA SDK* is the minimum requirement.
When the *CUDA-Accelerator* is enabled, version *7.0* of the *CUDA SDK* is the minimum requirement.

When the *OpenMP-Accelerator* is enabled, the compiler and the platform have to support *OpenMP 2.0* or newer.

Expand All @@ -74,7 +74,7 @@ Accelerators
|-|serial|threads|fibers|OpenMP|CUDA|
|---|---|---|---|---|---|
|Devices|Host Core|Host Cores|Host Core|Host Cores|NVIDIA GPUs|
|Lib/API|n/a| std::thread | boost::fibers::fiber |OpenMP 2.0|CUDA 6.5|
|Lib/API|n/a| std::thread | boost::fibers::fiber |OpenMP 2.0|CUDA 7.0|
|Execution strategy grid-blocks|sequential|sequential|sequential|sequential|undefined|
|Execution strategy block-threads|sequential|preemptive multitasking|cooperative multitasking|preemptive multitasking|lock-step within warps|

Expand All @@ -84,11 +84,7 @@ Usage

The library is header only so nothing has to be build.
Only the include path (`-I` or `export CPLUS_INCLUDE_PATH=`) has to be set to `<PATH-TO-ALPAKA-LIB>/include/`.
This allows the usage of header inclusion in the following way:

```c++
#include <alpaka/alpaka.hpp>
```
This allows to include the whole alpaka library with: `c++#include <alpaka/alpaka.hpp>`

Code not intended to be utilized by users is hidden in the `detail` namespace.

Expand Down
7 changes: 7 additions & 0 deletions doc/Abstract.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
**alpaka** - Abstraction Library for Parallel Kernel Acceleration
=================================================================

**alpaka** defines and implements an abstract hierarchical redundant parallelism model.
It exploits parallelism and memory hierarchies at all levels.
This allows to achieve performance portability across various types of accelerators by ignoring specific unsupported levels and utilizing only the ones supported on a specific accelerator.
All hardware types (multi- and many-core CPUs, GPUs and other accelerators) are treated and can be programmed in the same way.
Loading

0 comments on commit 8d00bdb

Please sign in to comment.