Skip to content

Commit

Permalink
removed unnecessary cmake option file, fixed bug in forall.hpp, added…
Browse files Browse the repository at this point in the history
… upper and lower bounds tests.
  • Loading branch information
rrsettgast committed Jun 15, 2018
1 parent a0a6664 commit f38337d
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 14 deletions.
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ endif()
set(ENABLE_COPY_HEADERS On CACHE BOOL "")
set(BLT_CXX_STD c++11 CACHE STRING "")

if( CMAKE_BUILD_TYPE STREQUAL "Debug" )
set( CHAI_ENABLE_BOUNDS_CHECK ON CACHE BOOL "Enable Bounds Checking for chai::ManagedArray<>::operator[]" FORCE )
endif()

################################
# BLT
Expand Down
1 change: 0 additions & 1 deletion cmake/ChaiBasics.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,3 @@
set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda")
include(${CMAKE_SOURCE_DIR}/cmake/thirdparty/SetupChaiThirdparty.cmake)

include("${CMAKE_CURRENT_LIST_DIR}/ChaiOptions.cmake")
2 changes: 0 additions & 2 deletions cmake/ChaiOptions.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion src/ManagedArray.inl
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ template<typename T>
template<typename Idx>
CHAI_INLINE
CHAI_HOST_DEVICE T& ManagedArray<T>::operator[](const Idx i) const {
#if defined(CHAI_ARRAY_BOUNDS_CHECK)
#if defined(CHAI_ENABLE_BOUNDS_CHECK)
assert( i>=0 && static_cast<size_t>(i) < m_elems );
#endif
return m_active_pointer[i];
Expand Down
2 changes: 1 addition & 1 deletion src/config.hpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@
#cmakedefine CHAI_ENABLE_IMPLICIT_CONVERSIONS
#cmakedefine CHAI_DISABLE_RM
#cmakedefine CHAI_ENABLE_UM
#cmakedefine CHAI_ARRAY_BOUNDS_CHECK
#cmakedefine CHAI_ENABLE_BOUNDS_CHECK

#endif // CHAI_config_HPP
32 changes: 24 additions & 8 deletions src/tests/managed_array_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -393,28 +393,44 @@ CUDA_TEST(ManagedArray, UserCallback)
#endif
#endif

#if !defined(NDEBUG)
TEST(ManagedArray, OutOfRangeAccess)
#if defined(CHAI_ENABLE_BOUNDS_CHECK)
TEST(ManagedArray, UpperOutOfRangeAccess)
{
chai::ManagedArray<float> array(20);

array[19] = 0.0;
EXPECT_DEATH_IF_SUPPORTED( array[20] = 0.0, ".*" );
}

TEST(ManagedArray, LowerOutOfRangeAccess)
{
chai::ManagedArray<float> array(20);

array[0] = 0.0;
EXPECT_DEATH_IF_SUPPORTED( array[-1] = 0.0, ".*" );
}

#if defined(CHAI_ENABLE_CUDA)
CUDA_TEST(ManagedArray, UpperOutOfRangeAccessGPU)
{
chai::ManagedArray<float> array(20);

EXPECT_DEATH(
forall(sequential(), 10, 50, [=] (int i) {
forall(cuda(), 19, 20, [=] __device__ (int i) {
array[i] = 0.0f;
});,
"i < m_elems");
"i > m_elems");
}

#if defined(CHAI_ENABLE_CUDA)
CUDA_TEST(ManagedArray, OutOfRangeAccessGPU)
CUDA_TEST(ManagedArray, LowerOutOfRangeAccessGPU)
{
chai::ManagedArray<float> array(20);

EXPECT_DEATH(
forall(cuda(), 10, 50, [=] __device__ (int i) {
forall(cuda(), -1, 0, [=] __device__ (int i) {
array[i] = 0.0f;
});,
"i < m_elems");
"i < 0");
}
#endif // defined(CHAI_ENABLE_CUDA)
#endif // !defined(NDEBUG)
2 changes: 1 addition & 1 deletion src/util/forall.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ template <typename LOOP_BODY>
void forall_kernel_cpu(int begin, int end, LOOP_BODY body)
{
for (int i = 0; i < (end - begin); ++i) {
body(i);
body(begin+i);
}
}

Expand Down

0 comments on commit f38337d

Please sign in to comment.