From c69ca0abdb6c2e006d202db6eafd0f139046973d Mon Sep 17 00:00:00 2001 From: Shehzan Mohammed Date: Tue, 14 Jul 2015 11:53:27 -0400 Subject: [PATCH 1/2] Added 64-bit integer type support for functions * iota * range * diff1 * diff2 * accum * join * shift * tile --- src/api/c/data.cpp | 4 ++++ src/api/c/diff.cpp | 4 ++++ src/api/c/flip.cpp | 2 ++ src/api/c/join.cpp | 2 ++ src/api/c/scan.cpp | 2 ++ src/api/c/shift.cpp | 2 ++ src/api/c/tile.cpp | 2 ++ src/backend/cpu/diff.cpp | 2 ++ src/backend/cpu/iota.cpp | 2 ++ src/backend/cpu/range.cpp | 2 ++ src/backend/cpu/scan.cpp | 2 ++ src/backend/cpu/shift.cpp | 2 ++ src/backend/cpu/tile.cpp | 2 ++ src/backend/cuda/diff.cu | 2 ++ src/backend/cuda/iota.cu | 2 ++ src/backend/cuda/range.cu | 2 ++ src/backend/cuda/scan.cu | 2 ++ src/backend/cuda/shift.cu | 2 ++ src/backend/cuda/tile.cu | 2 ++ src/backend/opencl/diff.cpp | 2 ++ src/backend/opencl/iota.cpp | 2 ++ src/backend/opencl/range.cpp | 2 ++ src/backend/opencl/scan.cpp | 2 ++ src/backend/opencl/shift.cpp | 2 ++ src/backend/opencl/tile.cpp | 2 ++ test/diff1.cpp | 2 +- test/diff2.cpp | 2 +- test/iota.cpp | 2 +- test/range.cpp | 2 +- test/scan.cpp | 6 ++++-- test/shift.cpp | 2 +- test/tile.cpp | 2 +- 32 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/api/c/data.cpp b/src/api/c/data.cpp index 183e69fcaa..50acaad1d3 100644 --- a/src/api/c/data.cpp +++ b/src/api/c/data.cpp @@ -468,6 +468,8 @@ af_err af_range(af_array *result, const unsigned ndims, const dim_t * const dims case f64: out = range_(d, seq_dim); break; case s32: out = range_(d, seq_dim); break; case u32: out = range_(d, seq_dim); break; + case s64: out = range_(d, seq_dim); break; + case u64: out = range_(d, seq_dim); break; case u8: out = range_(d, seq_dim); break; default: TYPE_ERROR(4, type); } @@ -509,6 +511,8 @@ af_err af_iota(af_array *result, const unsigned ndims, const dim_t * const dims, case f64: out = iota_(d, t); break; case s32: out = iota_(d, t); break; case u32: out = iota_(d, t); break; + case s64: out = iota_(d, t); break; + case u64: out = iota_(d, t); break; case u8: out = iota_(d, t); break; default: TYPE_ERROR(4, type); } diff --git a/src/api/c/diff.cpp b/src/api/c/diff.cpp index c3f8c5c4e9..75ce5d82e4 100644 --- a/src/api/c/diff.cpp +++ b/src/api/c/diff.cpp @@ -52,6 +52,8 @@ af_err af_diff1(af_array *out, const af_array in, const int dim) case b8: output = diff1(in,dim); break; case s32: output = diff1(in,dim); break; case u32: output = diff1(in,dim); break; + case s64: output = diff1(in,dim); break; + case u64: output = diff1(in,dim); break; case u8: output = diff1(in,dim); break; default: TYPE_ERROR(1, type); } @@ -85,6 +87,8 @@ af_err af_diff2(af_array *out, const af_array in, const int dim) case b8: output = diff2(in,dim); break; case s32: output = diff2(in,dim); break; case u32: output = diff2(in,dim); break; + case s64: output = diff2(in,dim); break; + case u64: output = diff2(in,dim); break; case u8: output = diff2(in,dim); break; default: TYPE_ERROR(1, type); } diff --git a/src/api/c/flip.cpp b/src/api/c/flip.cpp index b7778e8fa7..a88c217780 100644 --- a/src/api/c/flip.cpp +++ b/src/api/c/flip.cpp @@ -67,6 +67,8 @@ af_err af_flip(af_array *result, const af_array in, const unsigned dim) case b8: out = flipArray (in, dim); break; case s32: out = flipArray (in, dim); break; case u32: out = flipArray(in, dim); break; + case s64: out = flipArray (in, dim); break; + case u64: out = flipArray (in, dim); break; case u8: out = flipArray (in, dim); break; default: TYPE_ERROR(1, in_type); } diff --git a/src/api/c/join.cpp b/src/api/c/join.cpp index 423859c495..67035f3181 100644 --- a/src/api/c/join.cpp +++ b/src/api/c/join.cpp @@ -117,6 +117,8 @@ af_err af_join_many(af_array *out, const int dim, const unsigned n_arrays, const case b8: output = join_many(dim, n_arrays, inputs); break; case s32: output = join_many(dim, n_arrays, inputs); break; case u32: output = join_many(dim, n_arrays, inputs); break; + case s64: output = join_many(dim, n_arrays, inputs); break; + case u64: output = join_many(dim, n_arrays, inputs); break; case u8: output = join_many(dim, n_arrays, inputs); break; default: TYPE_ERROR(1, info[0].getType()); } diff --git a/src/api/c/scan.cpp b/src/api/c/scan.cpp index 34f4c897b9..d0c9e8e6df 100644 --- a/src/api/c/scan.cpp +++ b/src/api/c/scan.cpp @@ -51,6 +51,8 @@ af_err af_accum(af_array *out, const af_array in, const int dim) case c64: res = scan(in, dim); break; case u32: res = scan(in, dim); break; case s32: res = scan(in, dim); break; + case u64: res = scan(in, dim); break; + case s64: res = scan(in, dim); break; case u8: res = scan(in, dim); break; // Make sure you are adding only "1" for every non zero value, even if op == af_add_t case b8: res = scan(in, dim); break; diff --git a/src/api/c/shift.cpp b/src/api/c/shift.cpp index e5c2b836bb..28e21804cf 100644 --- a/src/api/c/shift.cpp +++ b/src/api/c/shift.cpp @@ -41,6 +41,8 @@ af_err af_shift(af_array *out, const af_array in, const int sdims[4]) case b8: output = shift(in, sdims); break; case s32: output = shift(in, sdims); break; case u32: output = shift(in, sdims); break; + case s64: output = shift(in, sdims); break; + case u64: output = shift(in, sdims); break; case u8: output = shift(in, sdims); break; default: TYPE_ERROR(1, type); } diff --git a/src/api/c/tile.cpp b/src/api/c/tile.cpp index 5064677f1d..7d546c2ead 100644 --- a/src/api/c/tile.cpp +++ b/src/api/c/tile.cpp @@ -68,6 +68,8 @@ af_err af_tile(af_array *out, const af_array in, const af::dim4 &tileDims) case b8: output = tile(in, tileDims); break; case s32: output = tile(in, tileDims); break; case u32: output = tile(in, tileDims); break; + case s64: output = tile(in, tileDims); break; + case u64: output = tile(in, tileDims); break; case u8: output = tile(in, tileDims); break; default: TYPE_ERROR(1, type); } diff --git a/src/backend/cpu/diff.cpp b/src/backend/cpu/diff.cpp index 733de8fcb2..907c111c0b 100644 --- a/src/backend/cpu/diff.cpp +++ b/src/backend/cpu/diff.cpp @@ -116,6 +116,8 @@ namespace cpu INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) } diff --git a/src/backend/cpu/iota.cpp b/src/backend/cpu/iota.cpp index e6111e8b03..668500f697 100644 --- a/src/backend/cpu/iota.cpp +++ b/src/backend/cpu/iota.cpp @@ -64,5 +64,7 @@ namespace cpu INSTANTIATE(double) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) } diff --git a/src/backend/cpu/range.cpp b/src/backend/cpu/range.cpp index 1d042899f2..f0c8de11f3 100644 --- a/src/backend/cpu/range.cpp +++ b/src/backend/cpu/range.cpp @@ -79,5 +79,7 @@ namespace cpu INSTANTIATE(double) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) } diff --git a/src/backend/cpu/scan.cpp b/src/backend/cpu/scan.cpp index cdd359f822..9cd4163ec3 100644 --- a/src/backend/cpu/scan.cpp +++ b/src/backend/cpu/scan.cpp @@ -104,6 +104,8 @@ namespace cpu INSTANTIATE(af_add_t, cdouble, cdouble) INSTANTIATE(af_add_t, int , int ) INSTANTIATE(af_add_t, uint , uint ) + INSTANTIATE(af_add_t, intl , intl ) + INSTANTIATE(af_add_t, uintl , uintl ) INSTANTIATE(af_add_t, char , int ) INSTANTIATE(af_add_t, uchar , uint ) INSTANTIATE(af_notzero_t, char , uint ) diff --git a/src/backend/cpu/shift.cpp b/src/backend/cpu/shift.cpp index a9d12b99c4..eff5c0923c 100644 --- a/src/backend/cpu/shift.cpp +++ b/src/backend/cpu/shift.cpp @@ -78,6 +78,8 @@ namespace cpu INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) diff --git a/src/backend/cpu/tile.cpp b/src/backend/cpu/tile.cpp index e1ee43f519..4ca30d2f3c 100644 --- a/src/backend/cpu/tile.cpp +++ b/src/backend/cpu/tile.cpp @@ -67,6 +67,8 @@ namespace cpu INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) diff --git a/src/backend/cuda/diff.cu b/src/backend/cuda/diff.cu index f7b1a6ec18..a50ba2652c 100644 --- a/src/backend/cuda/diff.cu +++ b/src/backend/cuda/diff.cu @@ -66,6 +66,8 @@ namespace cuda INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) diff --git a/src/backend/cuda/iota.cu b/src/backend/cuda/iota.cu index b5aa16cab4..ee9bcdccd4 100644 --- a/src/backend/cuda/iota.cu +++ b/src/backend/cuda/iota.cu @@ -34,6 +34,8 @@ namespace cuda INSTANTIATE(double) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) } diff --git a/src/backend/cuda/range.cu b/src/backend/cuda/range.cu index 17e6472b72..9a1a7cd3f0 100644 --- a/src/backend/cuda/range.cu +++ b/src/backend/cuda/range.cu @@ -42,5 +42,7 @@ namespace cuda INSTANTIATE(double) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) } diff --git a/src/backend/cuda/scan.cu b/src/backend/cuda/scan.cu index 0a29d6a0cd..a76abc2338 100644 --- a/src/backend/cuda/scan.cu +++ b/src/backend/cuda/scan.cu @@ -47,6 +47,8 @@ namespace cuda INSTANTIATE(af_add_t, cdouble, cdouble) INSTANTIATE(af_add_t, int , int ) INSTANTIATE(af_add_t, uint , uint ) + INSTANTIATE(af_add_t, intl , intl ) + INSTANTIATE(af_add_t, uintl , uintl ) INSTANTIATE(af_add_t, char , int ) INSTANTIATE(af_add_t, uchar , uint ) INSTANTIATE(af_notzero_t, char , uint ) diff --git a/src/backend/cuda/shift.cu b/src/backend/cuda/shift.cu index 2d59b39bd0..f97eb4aff8 100644 --- a/src/backend/cuda/shift.cu +++ b/src/backend/cuda/shift.cu @@ -37,6 +37,8 @@ namespace cuda INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) } diff --git a/src/backend/cuda/tile.cu b/src/backend/cuda/tile.cu index b44d8b9a7a..2a9af87820 100644 --- a/src/backend/cuda/tile.cu +++ b/src/backend/cuda/tile.cu @@ -42,6 +42,8 @@ namespace cuda INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) diff --git a/src/backend/opencl/diff.cpp b/src/backend/opencl/diff.cpp index 981062a2d4..cfcd684080 100644 --- a/src/backend/opencl/diff.cpp +++ b/src/backend/opencl/diff.cpp @@ -71,5 +71,7 @@ namespace opencl INSTANTIATE(int) INSTANTIATE(uint) INSTANTIATE(uchar) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(char) } diff --git a/src/backend/opencl/iota.cpp b/src/backend/opencl/iota.cpp index 7a1d369b42..fb98bca6c4 100644 --- a/src/backend/opencl/iota.cpp +++ b/src/backend/opencl/iota.cpp @@ -34,5 +34,7 @@ namespace opencl INSTANTIATE(double) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) } diff --git a/src/backend/opencl/range.cpp b/src/backend/opencl/range.cpp index 521a4fbeb7..faeb4fa80e 100644 --- a/src/backend/opencl/range.cpp +++ b/src/backend/opencl/range.cpp @@ -42,5 +42,7 @@ namespace opencl INSTANTIATE(double) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) } diff --git a/src/backend/opencl/scan.cpp b/src/backend/opencl/scan.cpp index 52b8c9a1a7..ff657a485e 100644 --- a/src/backend/opencl/scan.cpp +++ b/src/backend/opencl/scan.cpp @@ -52,6 +52,8 @@ namespace opencl INSTANTIATE(af_add_t, cdouble, cdouble) INSTANTIATE(af_add_t, int , int ) INSTANTIATE(af_add_t, uint , uint ) + INSTANTIATE(af_add_t, intl , intl ) + INSTANTIATE(af_add_t, uintl , uintl ) INSTANTIATE(af_add_t, char , int ) INSTANTIATE(af_add_t, uchar , uint ) INSTANTIATE(af_notzero_t, char , uint) diff --git a/src/backend/opencl/shift.cpp b/src/backend/opencl/shift.cpp index c00033e08f..5cbb71dcd2 100644 --- a/src/backend/opencl/shift.cpp +++ b/src/backend/opencl/shift.cpp @@ -37,6 +37,8 @@ namespace opencl INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) } diff --git a/src/backend/opencl/tile.cpp b/src/backend/opencl/tile.cpp index 104f4ac53a..794059d7aa 100644 --- a/src/backend/opencl/tile.cpp +++ b/src/backend/opencl/tile.cpp @@ -37,6 +37,8 @@ namespace opencl INSTANTIATE(cdouble) INSTANTIATE(int) INSTANTIATE(uint) + INSTANTIATE(intl) + INSTANTIATE(uintl) INSTANTIATE(uchar) INSTANTIATE(char) diff --git a/test/diff1.cpp b/test/diff1.cpp index 13b6054541..7fe19db859 100644 --- a/test/diff1.cpp +++ b/test/diff1.cpp @@ -46,7 +46,7 @@ class Diff1 : public ::testing::Test }; // create a list of types to be tested -typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; // register the type list TYPED_TEST_CASE(Diff1, TestTypes); diff --git a/test/diff2.cpp b/test/diff2.cpp index 16b957f69f..9f7d0cb0a3 100644 --- a/test/diff2.cpp +++ b/test/diff2.cpp @@ -46,7 +46,7 @@ class Diff2 : public ::testing::Test }; // create a list of types to be tested -typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; // register the type list TYPED_TEST_CASE(Diff2, TestTypes); diff --git a/test/iota.cpp b/test/iota.cpp index fae4f72c1d..1c1ca6c116 100644 --- a/test/iota.cpp +++ b/test/iota.cpp @@ -38,7 +38,7 @@ class Iota : public ::testing::Test }; // create a list of types to be tested -typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; // register the type list TYPED_TEST_CASE(Iota, TestTypes); diff --git a/test/range.cpp b/test/range.cpp index bd09137a6c..6d7d9b7bc7 100644 --- a/test/range.cpp +++ b/test/range.cpp @@ -38,7 +38,7 @@ class Range : public ::testing::Test }; // create a list of types to be tested -typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; // register the type list TYPED_TEST_CASE(Range, TestTypes); diff --git a/test/scan.cpp b/test/scan.cpp index 1a855ca66f..88ee8b4f45 100644 --- a/test/scan.cpp +++ b/test/scan.cpp @@ -103,9 +103,11 @@ vector init_subs() SCAN_TESTS(accum, float , float , float ); SCAN_TESTS(accum, double , double , double ); SCAN_TESTS(accum, int , int , int ); -SCAN_TESTS(accum, cfloat , cfloat , cfloat ); -SCAN_TESTS(accum, cdouble , cdouble, cdouble); +SCAN_TESTS(accum, cfloat , cfloat , cfloat ); +SCAN_TESTS(accum, cdouble , cdouble , cdouble ); SCAN_TESTS(accum, unsigned, unsigned , unsigned ); +SCAN_TESTS(accum, intl , intl , intl ); +SCAN_TESTS(accum, uintl , uintl , uintl ); SCAN_TESTS(accum, uchar , unsigned char, unsigned); TEST(Scan,Test_Scan_Big0) diff --git a/test/shift.cpp b/test/shift.cpp index 1fe72ec86f..a3cf35d679 100644 --- a/test/shift.cpp +++ b/test/shift.cpp @@ -38,7 +38,7 @@ class Shift : public ::testing::Test }; // create a list of types to be tested -typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; // register the type list TYPED_TEST_CASE(Shift, TestTypes); diff --git a/test/tile.cpp b/test/tile.cpp index fc38827fe2..adeda5b4e4 100644 --- a/test/tile.cpp +++ b/test/tile.cpp @@ -38,7 +38,7 @@ class Tile : public ::testing::Test }; // create a list of types to be tested -typedef ::testing::Types TestTypes; +typedef ::testing::Types TestTypes; // register the type list TYPED_TEST_CASE(Tile, TestTypes); From 426dc0b220ddc99816fa697f8986615d47dd1353 Mon Sep 17 00:00:00 2001 From: Shehzan Mohammed Date: Tue, 14 Jul 2015 12:33:55 -0400 Subject: [PATCH 2/2] Added print errors to documentation --- docs/pages/configuring_arrayfire_environment.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/pages/configuring_arrayfire_environment.md b/docs/pages/configuring_arrayfire_environment.md index fbb421f17d..054068e224 100644 --- a/docs/pages/configuring_arrayfire_environment.md +++ b/docs/pages/configuring_arrayfire_environment.md @@ -56,3 +56,13 @@ This is a useful enviornment variable when running code on servers and systems without displays. When graphics calls are run on such machines, they will print warning about window creation failing. To suppress those calls, set this variable. + +AF_PRINT_ERRORS {#af_print_errors} +------------------------------------------------------------------------------- + +When AF_PRINT_ERRORS is set to 1, the exceptions thrown are more verbose and +detailed. This helps in locating the exact failure. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +AF_PRINT_ERRORS=1 ./myprogram_opencl +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~