Skip to content

Commit f38337d

Browse files
committed
removed unnecessary cmake option file, fixed bug in forall.hpp, added upper and lower bounds tests.
1 parent a0a6664 commit f38337d

File tree

7 files changed

+30
-14
lines changed

7 files changed

+30
-14
lines changed

CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ endif()
7171
set(ENABLE_COPY_HEADERS On CACHE BOOL "")
7272
set(BLT_CXX_STD c++11 CACHE STRING "")
7373

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

7578
################################
7679
# BLT

cmake/ChaiBasics.cmake

-1
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,3 @@
4444
set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda")
4545
include(${CMAKE_SOURCE_DIR}/cmake/thirdparty/SetupChaiThirdparty.cmake)
4646

47-
include("${CMAKE_CURRENT_LIST_DIR}/ChaiOptions.cmake")

cmake/ChaiOptions.cmake

-2
This file was deleted.

src/ManagedArray.inl

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ template<typename T>
208208
template<typename Idx>
209209
CHAI_INLINE
210210
CHAI_HOST_DEVICE T& ManagedArray<T>::operator[](const Idx i) const {
211-
#if defined(CHAI_ARRAY_BOUNDS_CHECK)
211+
#if defined(CHAI_ENABLE_BOUNDS_CHECK)
212212
assert( i>=0 && static_cast<size_t>(i) < m_elems );
213213
#endif
214214
return m_active_pointer[i];

src/config.hpp.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@
4747
#cmakedefine CHAI_ENABLE_IMPLICIT_CONVERSIONS
4848
#cmakedefine CHAI_DISABLE_RM
4949
#cmakedefine CHAI_ENABLE_UM
50-
#cmakedefine CHAI_ARRAY_BOUNDS_CHECK
50+
#cmakedefine CHAI_ENABLE_BOUNDS_CHECK
5151

5252
#endif // CHAI_config_HPP

src/tests/managed_array_tests.cpp

+24-8
Original file line numberDiff line numberDiff line change
@@ -393,28 +393,44 @@ CUDA_TEST(ManagedArray, UserCallback)
393393
#endif
394394
#endif
395395

396-
#if !defined(NDEBUG)
397-
TEST(ManagedArray, OutOfRangeAccess)
396+
#if defined(CHAI_ENABLE_BOUNDS_CHECK)
397+
TEST(ManagedArray, UpperOutOfRangeAccess)
398+
{
399+
chai::ManagedArray<float> array(20);
400+
401+
array[19] = 0.0;
402+
EXPECT_DEATH_IF_SUPPORTED( array[20] = 0.0, ".*" );
403+
}
404+
405+
TEST(ManagedArray, LowerOutOfRangeAccess)
406+
{
407+
chai::ManagedArray<float> array(20);
408+
409+
array[0] = 0.0;
410+
EXPECT_DEATH_IF_SUPPORTED( array[-1] = 0.0, ".*" );
411+
}
412+
413+
#if defined(CHAI_ENABLE_CUDA)
414+
CUDA_TEST(ManagedArray, UpperOutOfRangeAccessGPU)
398415
{
399416
chai::ManagedArray<float> array(20);
400417

401418
EXPECT_DEATH(
402-
forall(sequential(), 10, 50, [=] (int i) {
419+
forall(cuda(), 19, 20, [=] __device__ (int i) {
403420
array[i] = 0.0f;
404421
});,
405-
"i < m_elems");
422+
"i > m_elems");
406423
}
407424

408-
#if defined(CHAI_ENABLE_CUDA)
409-
CUDA_TEST(ManagedArray, OutOfRangeAccessGPU)
425+
CUDA_TEST(ManagedArray, LowerOutOfRangeAccessGPU)
410426
{
411427
chai::ManagedArray<float> array(20);
412428

413429
EXPECT_DEATH(
414-
forall(cuda(), 10, 50, [=] __device__ (int i) {
430+
forall(cuda(), -1, 0, [=] __device__ (int i) {
415431
array[i] = 0.0f;
416432
});,
417-
"i < m_elems");
433+
"i < 0");
418434
}
419435
#endif // defined(CHAI_ENABLE_CUDA)
420436
#endif // !defined(NDEBUG)

src/util/forall.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ template <typename LOOP_BODY>
6060
void forall_kernel_cpu(int begin, int end, LOOP_BODY body)
6161
{
6262
for (int i = 0; i < (end - begin); ++i) {
63-
body(i);
63+
body(begin+i);
6464
}
6565
}
6666

0 commit comments

Comments
 (0)