Skip to content

Commit

Permalink
Release v0.2.0
Browse files Browse the repository at this point in the history
This release contains a large number of commits focused on improving internal performance and code maintainability. New features include support for scan operations.
  • Loading branch information
davidbeckingsale authored Dec 2, 2016
2 parents 6586123 + 9bf3aac commit a74e2aa
Show file tree
Hide file tree
Showing 288 changed files with 14,279 additions and 95,611 deletions.
6 changes: 4 additions & 2 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
BasedOnStyle : google
IndentWidth : 2
# BreakBeforeBraces : Linux
BreakBeforeBraces : Attach
BreakBeforeBraces : Linux
KeepEmptyLinesAtTheStartOfBlocks : true
MaxEmptyLinesToKeep : 2
AccessModifierOffset : -2
UseTab: Never
AllowShortIfStatementsOnASingleLine : true
ConstructorInitializerAllOnOneLineOrOnePerLine : true
Expand Down
26 changes: 26 additions & 0 deletions .pullapprove.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
approve_by_comment: true
approve_regex: '^([Aa]pproved|:shipit:|:\+1:|I [Aa]pprove|LGTM)'
reject_regex: ^Rejected
reset_on_push: false
author_approval: ignored
reviewers:
- name: core
members:
- keasler
- trws
- rhornung67
- davidbeckingsale
- DavidPoliakoff
- jonesholger
required: 1
- name: everyone
members:
- ajkunen
- trws
- davidbeckingsale
- DavidPoliakoff
- keasler
- rhornung67
- jonesholger
- willkill07
required: 2
9 changes: 0 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,3 @@ script:
- cmake ../ -DCMAKE_CXX_COMPILER="$COMPILER"
- make -j
- make test # currently does nothing, this is how testing should be done
- ./test/unit-tests/CPUtests/CPUnested-test.exe | tee test.out
- grep "All Tests" test.out | sed -e 's/.* \([0-9]\+\) \/ \([0-9]\+\)$/\1\t\2/' | awk '{print $1 "/" $2; exit !($1 == $2)}'
- ./test/unit-tests/CPUtests/CPUnested_reduce-test.exe | tee test.out
- grep "All Tests" test.out | sed -e 's/.* \([0-9]\+\) \/ \([0-9]\+\)$/\1\t\2/' | awk '{print $1 "/" $2; exit !($1 == $2)}'
- ./test/unit-tests/CPUtests/CPUreduce-test.exe | tee test.out
- grep "All Tests" test.out | sed -e 's/.* \([0-9]\+\) \/ \([0-9]\+\)$/\1\t\2/' | awk '{print $1 "/" $2; exit !($1 == $2)}'
- ./test/unit-tests/CPUtests/CPUtraversal-test.exe | tee test.out
- grep "All Tests" test.out | sed -e 's/.* \([0-9]\+\) \/ \([0-9]\+\)$/\1\t\2/' | awk '{print $1 "/" $2; exit !($1 == $2)}'

74 changes: 46 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,52 +1,54 @@
###############################################################################
# Copyright (c) 2016, Lawrence Livermore National Security, LLC.
#
#
# Produced at the Lawrence Livermore National Laboratory
#
#
# LLNL-CODE-689114
#
#
# All rights reserved.
#
# This file is part of RAJA.
#
#
# This file is part of RAJA.
#
# For additional details, please also read raja/README-license.txt.
#
# Redistribution and use in source and binary forms, with or without
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the disclaimer below.
#
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the disclaimer (as noted below) in the
# documentation and/or other materials provided with the distribution.
#
#
# * Neither the name of the LLNS/LLNL nor the names of its contributors may
# be used to endorse or promote products derived from this software without
# specific prior written permission.
#
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
# LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
#
###############################################################################

cmake_minimum_required (VERSION 2.8)
cmake_minimum_required (VERSION 3.0)

project(RAJA LANGUAGES CXX)
project(RAJA LANGUAGES CXX C)

set(CMAKE_CXX_STANDARD 14) # note, will decay automatically

# Set version number
set(RAJA_VERSION_MAJOR 0)
set(RAJA_VERSION_MINOR 1)
set(RAJA_VERSION_MINOR 2)
set(RAJA_VERSION_PATCHLEVEL 0)

set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH})
Expand All @@ -55,9 +57,12 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}
option(RAJA_ENABLE_OPENMP "Build OpenMP support" On)
option(RAJA_ENABLE_CUDA "Build CUDA support" Off)
option(RAJA_ENABLE_CILK "Build Cilk support" Off)
option(RAJA_ENABLE_TESTS "Build tests and exmaple applications" On)
option(RAJA_ENABLE_TESTS "Build tests" On)
option(RAJA_ENABLE_EXAMPLES "Build simple examples" On)
option(RAJA_ENABLE_NESTED "Enable nested loop support" Off)

set(TEST_DRIVER "" CACHE STRING "driver used to wrap test commands")

# Setup basic CMake options
include(cmake/SetupBasics.cmake)
# Setup vendor-specific compiler flags
Expand All @@ -67,11 +72,6 @@ include(cmake/SetupPackages.cmake)
# Setup internal RAJA configuration options
include(cmake/SetupRajaConfig.cmake)

# Configure a header file with all the variables we found.
configure_file(${PROJECT_SOURCE_DIR}/include/RAJA/config.hxx.in
${PROJECT_BINARY_DIR}/include/RAJA/config.hxx)
configure_file(${PROJECT_SOURCE_DIR}/include/RAJA/RAJA-config.cmake.in
${PROJECT_BINARY_DIR}/include/RAJA/raja-config.cmake)
include_directories(${PROJECT_BINARY_DIR}/include/RAJA)
include_directories(${PROJECT_BINARY_DIR}/include)

Expand All @@ -80,11 +80,29 @@ include_directories(include)
install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN *.hxx)
install(FILES ${PROJECT_BINARY_DIR}/include/RAJA/config.hxx DESTINATION "include/RAJA")


add_subdirectory(src)

install(FILES ${PROJECT_BINARY_DIR}/include/RAJA/raja-config.cmake DESTINATION share/cmake/raja)

if(RAJA_ENABLE_TESTS)
add_subdirectory(test)
endif()

if(RAJA_ENABLE_EXAMPLES)
add_subdirectory(examples)
endif()

if(RAJA_ENABLE_APPLICATIONS)
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/extra/llnl-raja-proxies/CMakeLists.txt)
message(STATUS "Cloning RAJA proxy applications...")
execute_process(COMMAND git clone https://github.com/LLNL/RAJA-examples.git ${PROJECT_SOURCE_DIR}/extra/llnl-raja-proxies)
endif()
add_subdirectory(extra/llnl-raja-proxies)
endif()

if(RAJA_ENABLE_PERFSUITE)
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/extra/performance/CMakeLists.txt)
message(STATUS "Cannot find performance suite")
message(STATUS "Clone it to ./extra/performance")
endif()
add_subdirectory(extra/performance)
endif()
6 changes: 4 additions & 2 deletions LICENSE.txt → LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@ Unlimited Open Source - BSD Distribution
LLNL-CODE-689114
OCEC-16-063

The core developers of RAJA are:
The original developers of RAJA are:

Rich Hornung ([email protected])
Jeff Keasler ([email protected])

Other contributors include:
Contributors include:

David Beckingsale ([email protected])
Jason Burmark ([email protected])
Holger Jones ([email protected])
Will Killian ([email protected])
Adam Kunen ([email protected])
David Poliakoff ([email protected])
Tom Scogland ([email protected])
Expand Down
18 changes: 14 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
RAJA v0.1.0
RAJA v0.2.0
============

[![Build Status](https://travis-ci.org/LLNL/RAJA.svg?branch=develop)](https://travis-ci.org/LLNL/RAJA)
Expand Down Expand Up @@ -56,6 +56,15 @@ are not allowed!):
More details about RAJA configuration options are located in the User
Documentation.

Example Applications
--------------------

The [RAJA-examples](https://github.com/LLNL/RAJA-examples) repository contains three proxy applications that use the RAJA
programming model. These applications can be built along with the rest of the
RAJA framework by setting `-DRAJA_ENABLE_APPLICATIONS=On` when running CMake.

When this option is passed to CMake, the RAJA-examples repository is cloned using `git` to the directory `extra/llnl-raja-proxies` in the project root. The example applications will be built using the same configuration that the RAJA library uses.

User Documentation
-------------------

Expand Down Expand Up @@ -95,21 +104,22 @@ develop branch into the `master` branch and tag a new release.
Authors
-----------

The main RAJA developers are:
The original developers of RAJA are:

* Rich Hornung ([email protected])
* Jeff Keasler ([email protected])

Other contributors include:
Contributors include:

* David Beckingsale ([email protected])
* Jason Burmark ([email protected])
* Holger Jones ([email protected])
* Will Killian ([email protected])
* Adam Kunen ([email protected])
* David Poliakoff ([email protected])
* Tom Scogland ([email protected])



Release
-----------

Expand Down
6 changes: 6 additions & 0 deletions cmake/SetupCompilers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,15 @@ if (CMAKE_CXX_COMPILER_ID MATCHES Clang)
set(RAJA_COMPILER "RAJA_COMPILER_CLANG")
elseif (CMAKE_CXX_COMPILER_ID MATCHES GNU)
set(RAJA_COMPILER "RAJA_COMPILER_GNU")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
message(FATAL_ERROR "RAJA requires GCC 4.9 or greater!")
endif ()
elseif (CMAKE_CXX_COMPILER_ID MATCHES Intel)
set(RAJA_COMPILER "RAJA_COMPILER_ICC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(CMAKE_CXX_COMPILER_ID MATCHES XL)
set(RAJA_COMPILER "RAJA_COMPILER_XLC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
set(RAJA_COMPILER "RAJA_COMPILER_${CMAKE_CXX_COMPILER_ID}")
endif()
Expand Down
54 changes: 37 additions & 17 deletions cmake/SetupPackages.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -62,22 +62,42 @@ if (RAJA_ENABLE_CUDA)
endif()
endif()

if (RAJA_ENABLE_CALIPER)
find_package(CALIPER)
if(CALIPER_FOUND)
message(STATUS "CALIPER")
include_directories(${caliper_INCLUDE_DIR})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRAJA_USE_CALIPER")
endif()
endif()

if (RAJA_ENABLE_TESTS)
include(ExternalProject)
# Set default ExternalProject root directory
SET_DIRECTORY_PROPERTIES(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/tpl)

ExternalProject_Add(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.7.0
CMAKE_ARGS
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON)

ExternalProject_Get_Property(googletest source_dir)
include_directories(${source_dir}/include)

#Used for timing
find_library(RT_LIBRARY rt)
if (RT_LIBRARY STREQUAL "RT_LIBRARIES-NOTFOUND")
message(WARNING "librt not found, some test applications might not link")
set(RT_LIBRARY "" CACHE STRING "timing libraries" FORCE)
ExternalProject_Get_Property(googletest binary_dir)
add_library(gtest UNKNOWN IMPORTED)
add_library(gtest_main UNKNOWN IMPORTED)
set_target_properties(gtest PROPERTIES
IMPORTED_LOCATION ${binary_dir}/libgtest.a
)
set_target_properties(gtest_main PROPERTIES
IMPORTED_LOCATION ${binary_dir}/libgtest_main.a
)
add_dependencies(gtest googletest)
add_dependencies(gtest_main googletest)

# GoogleTest requires threading
find_package(Threads)

enable_testing()
endif ()
if (CALIPER_FOUND)
set(RT_LIBRARIES "${RT_LIBRARY} ${caliper_LIB_DIR}/libcaliper.so" CACHE STRING "testing libraries" FORCE)
endif()
36 changes: 36 additions & 0 deletions cmake/SetupRajaConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,39 @@ if (RAJA_TIMER STREQUAL "cycle")
else ()
set(RAJA_USE_CYCLE OFF CACHE BOOL "Use clock_gettime for timer" )
endif ()

# Configure a header file with all the variables we found.
configure_file(${PROJECT_SOURCE_DIR}/include/RAJA/config.hxx.in
${PROJECT_BINARY_DIR}/include/RAJA/config.hxx)

# Configure CMake config
configure_file(${PROJECT_SOURCE_DIR}/share/raja/cmake/RAJA-config.cmake.in
${PROJECT_BINARY_DIR}/share/raja/cmake/raja-config.cmake)

install(FILES ${PROJECT_BINARY_DIR}/share/raja/cmake/raja-config.cmake
DESTINATION share/raja/cmake/)

# Setup pkg-config
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
# convert lists of link libraries into -lstdc++ -lm etc..
foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS} ${CUDA_LIBRARIES})
set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
endforeach()
foreach(INCDIR ${INCLUDE_DIRECTORIES} ${CUDA_INCLUDE_DIRS})
set(PC_C_FLAGS "${PC_C_FLAGS} -I${INCDIR}")
endforeach()
if(RAJA_ENABLE_CUDA)
foreach(FLAG ${RAJA_NVCC_FLAGS})
set(PC_C_FLAGS "${PC_C_FLAGS} ${FLAG}")
endforeach()
else()
foreach(FLAG ${CMAKE_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS})
set(PC_C_FLAGS "${PC_C_FLAGS} ${FLAG}")
endforeach()
endif()
# Produce a pkg-config file for linking against the shared lib
configure_file("share/raja/pkg-config/RAJA.pc.in" "RAJA.pc" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/RAJA.pc"
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
endif()
4 changes: 2 additions & 2 deletions docs/sphinx/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@
# built documents.
#
# The short X.Y version.
version = u'0.1'
version = u'0.2'
# The full version, including alpha/beta/rc tags.
release = u'0.1.0'
release = u'0.2.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
13 changes: 9 additions & 4 deletions test/Kripke-v1.1/CMakeLists.txt → examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,13 @@
#
###############################################################################

add_subdirectory(Kripke-v1.1-baseline)

if(RAJA_ENABLE_OPENMP)
add_subdirectory(Kripke-v1.1-RAJA)
endif()
if (RAJA_ENABLE_CUDA)
cuda_add_executable(raja-pi
pi.cxx)
else ()
add_executable(raja-pi
pi.cxx)
endif ()

target_link_libraries(raja-pi RAJA)
Loading

0 comments on commit a74e2aa

Please sign in to comment.