Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: script to toggle clang-format on/off, clang-format exercises and examples #1748

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 56 additions & 13 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,27 +1,70 @@
BasedOnStyle : google
BasedOnStyle : LLVM
# Indent formatting
IndentWidth : 2
BreakBeforeBraces : Linux
Language: Cpp
UseTab: Never
KeepEmptyLinesAtTheStartOfBlocks : true
MaxEmptyLinesToKeep : 2
AccessModifierOffset : -2
UseTab: Never
# This must be off so that include order in RAJA is preserved
SortIncludes: false

# Alignment of consecutive declarations, assignments etc
AlignConsecutiveAssignments : true
AlignConsecutiveDeclarations : false
AlignConsecutiveMacros : true
AlignTrailingComments : true
AlwaysBreakAfterDefinitionReturnType: false

# Control curly brace placement
BreakBeforeBraces : Custom
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false

# Pointer alignment
DerivePointerAlignment: false
PointerAlignment: Left
AllowShortIfStatementsOnASingleLine : true
ConstructorInitializerAllOnOneLineOrOnePerLine : true
AllowShortFunctionsOnASingleLine : true
AllowShortLoopsOnASingleLine : false
BinPackParameters : false
AllowAllArgumentsOnNextLine : true
AllowAllParametersOfDeclarationOnNextLine : false
AlignTrailingComments : true
BinPackArguments : true
BinPackParameters : false
ConstructorInitializerAllOnOneLineOrOnePerLine : true
ColumnLimit : 80
PenaltyBreakBeforeFirstCallParameter : 100
PenaltyReturnTypeOnItsOwnLine : 65000
PenaltyBreakString : 10

# These improve formatting results but require clang 3.6/7 or higher
BreakBeforeBinaryOperators : None
AlignAfterOpenBracket: true
BinPackArguments : false
AlignAfterOpenBracket: Align
AlignOperands : true
AlwaysBreakTemplateDeclarations : true
Cpp11BracedListStyle : true
BreakBeforeBinaryOperators : None

SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInConditionalStatement: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ project(RAJA LANGUAGES CXX C
VERSION ${RAJA_LOADED})

set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/thirdparty" ${CMAKE_MODULE_PATH})

set(BLT_REQUIRED_CLANGFORMAT_VERSION "14" CACHE STRING "")
include(cmake/SetupRajaOptions.cmake)

cmake_minimum_required(VERSION 3.23)
Expand Down Expand Up @@ -136,6 +136,9 @@ include(cmake/SetupCompilers.cmake)
# Macros for building executables and libraries
include (cmake/RAJAMacros.cmake)

# Configure `style` target for enforcing code style
raja_add_code_checks()

set (raja_sources
src/AlignedRangeIndexSetBuilders.cpp
src/DepGraphNode.cpp
Expand Down
68 changes: 68 additions & 0 deletions cmake/RAJAMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -204,3 +204,71 @@ macro(raja_add_benchmark)
NUM_OMP_THREADS ${arg_NUM_OMP_THREADS}
COMMAND ${TEST_DRIVER} ${arg_NAME})
endmacro(raja_add_benchmark)

##------------------------------------------------------------------------------
## raja_add_code_checks()
##
## Adds code checks for all source files recursively in the RAJA repository.
##
## This creates the following parent build targets:
## check - Runs a non file changing style check and CppCheck
## style - In-place code formatting
##
## Creates various child build targets that follow this pattern:
## raja_<check|style>
## raja_<cppcheck|clangformat>_<check|style>
##------------------------------------------------------------------------------
macro(raja_add_code_checks)

set(options)
set(singleValueArgs)
set(multiValueArgs)

# Parse the arguments to the macro
cmake_parse_arguments(arg
"${options}" "${singleValueArgs}" "${multiValueArgs}" ${ARGN})

# Only do code checks if building raja by itself and not included in
# another project
if ("${PROJECT_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
# Create file globbing expressions that only include directories that contain source
# TODO(bowen) Add examples, exercises and benchmark to the list below
set(_base_dirs "RAJA" "examples" "exercises" "benchmark" "include" "src" "test")
set(_ext_expressions "*.cpp" "*.hpp" "*.inl"
"*.cxx" "*.hxx" "*.cc" "*.c" "*.h" "*.hh")

set(_glob_expressions)
foreach(_exp ${_ext_expressions})
foreach(_base_dir ${_base_dirs})
list(APPEND _glob_expressions "${PROJECT_SOURCE_DIR}/${_base_dir}/${_exp}")
endforeach()
endforeach()

# Glob for list of files to run code checks on
set(_sources)
file(GLOB_RECURSE _sources ${_glob_expressions})

# Filter out exclusions
#set(_exclude_expressions
# "${PROJECT_SOURCE_DIR}/axom/sidre/examples/lulesh2/*"
# "${PROJECT_SOURCE_DIR}/axom/slam/examples/lulesh2.0.3/*"
# "${PROJECT_SOURCE_DIR}/axom/slam/examples/tinyHydro/*")
#foreach(_exp ${_exclude_expressions})
# list(FILTER _sources EXCLUDE REGEX ${_exp})
#endforeach()
#
blt_add_code_checks(PREFIX RAJA
SOURCES ${_sources}
CLANGFORMAT_CFG_FILE ${PROJECT_SOURCE_DIR}/.clang-format
CPPCHECK_FLAGS --enable=all --inconclusive)

# Set FOLDER property for code check targets
foreach(_suffix clangformat_check clangformat_style clang_tidy_check clang_tidy_style)
set(_tgt ${arg_PREFIX}_${_suffix})
if(TARGET ${_tgt})
set_target_properties(${_tgt} PROPERTIES FOLDER "RAJA/code_checks")
endif()
endforeach()
endif()

endmacro(raja_add_code_checks)
82 changes: 48 additions & 34 deletions examples/dynamic-forall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
void checkResult(int* res, int len);
void printResult(int* res, int len);

// clang-format off
using policy_list = camp::list<RAJA::seq_exec
,RAJA::simd_exec
#if defined(RAJA_ENABLE_OPENMP)
Expand All @@ -39,11 +40,14 @@ using policy_list = camp::list<RAJA::seq_exec
#endif
>;

int main(int argc, char *argv[])
// clang-format on
int main(int argc, char* argv[])
{

if(argc != 2) {
RAJA_ABORT_OR_THROW("Usage ./dynamic-forall N, where N is the index of the policy to run");
if (argc != 2)
{
RAJA_ABORT_OR_THROW(
"Usage ./dynamic-forall N, where N is the index of the policy to run");
}

//
Expand All @@ -55,58 +59,60 @@ int main(int argc, char *argv[])
const int pol = std::stoi(argv[1]);

std::cout << "\n\nRAJA vector addition example...\n";
std::cout << "Using policy # "<<pol<<std::endl;
std::cout << "Using policy # " << pol << std::endl;

//
// Define vector length
//
//
// Define vector length
//
const int N = 1000000;

//
// Allocate and initialize vector data
//
int *a = memoryManager::allocate<int>(N);
int *b = memoryManager::allocate<int>(N);
int *c = memoryManager::allocate<int>(N);
//
// Allocate and initialize vector data
//
int* a = memoryManager::allocate<int>(N);
int* b = memoryManager::allocate<int>(N);
int* c = memoryManager::allocate<int>(N);

for (int i = 0; i < N; ++i) {
for (int i = 0; i < N; ++i)
{
a[i] = -i;
b[i] = i;
}


//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//

std::cout << "\n Running C-style vector addition...\n";

// _cstyle_vector_add_start
for (int i = 0; i < N; ++i) {
for (int i = 0; i < N; ++i)
{
c[i] = a[i] + b[i];
}
// _cstyle_vector_add_end

checkResult(c, N);
//printResult(c, N);
// printResult(c, N);


//----------------------------------------------------------------------------//
// Example of dynamic policy selection for forall
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
// Example of dynamic policy selection for forall
//----------------------------------------------------------------------------//

//policy is chosen from the list
RAJA::expt::dynamic_forall<policy_list>(pol, RAJA::RangeSegment(0, N), [=] RAJA_HOST_DEVICE (int i) {
c[i] = a[i] + b[i];
});
// policy is chosen from the list
RAJA::expt::dynamic_forall<policy_list>(pol, RAJA::RangeSegment(0, N),
[=] RAJA_HOST_DEVICE(int i)
{ c[i] = a[i] + b[i]; });
// _rajaseq_vector_add_end

checkResult(c, N);
//printResult(c, N);
// printResult(c, N);


//----------------------------------------------------------------------------//
//
// Clean up.
//
//----------------------------------------------------------------------------//
//
// Clean up.
//
memoryManager::deallocate(a);
memoryManager::deallocate(b);
memoryManager::deallocate(c);
Expand All @@ -122,12 +128,19 @@ int main(int argc, char *argv[])
void checkResult(int* res, int len)
{
bool correct = true;
for (int i = 0; i < len; i++) {
if ( res[i] != 0 ) { correct = false; }
for (int i = 0; i < len; i++)
{
if (res[i] != 0)
{
correct = false;
}
}
if ( correct ) {
if (correct)
{
std::cout << "\n\t result -- PASS\n";
} else {
}
else
{
std::cout << "\n\t result -- FAIL\n";
}
}
Expand All @@ -138,7 +151,8 @@ void checkResult(int* res, int len)
void printResult(int* res, int len)
{
std::cout << std::endl;
for (int i = 0; i < len; i++) {
for (int i = 0; i < len; i++)
{
std::cout << "result[" << i << "] = " << res[i] << std::endl;
}
std::cout << std::endl;
Expand Down
Loading
Loading