diff --git a/CMakeLists.txt b/CMakeLists.txt index 99c0adea5..a456afdae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,8 +20,7 @@ endif() add_definitions(${BACKEND_DEFINES}) if(WIN32) add_definitions("-DNOMINMAX") -endif() -if(CMAKE_COMPILER_IS_GNUCXX) +else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic") endif() diff --git a/bench/blas.cpp b/bench/blas.cpp index b006151da..46ed16fd5 100644 --- a/bench/blas.cpp +++ b/bench/blas.cpp @@ -104,6 +104,7 @@ void bench(isc::numeric_type dtype, std::string operation) while(total_time*1e-9 < 1e-3){\ std::list events;\ flush = isc::zeros(1e6, 1, dtype);\ + queue.synchronize();\ OP;\ queue.synchronize();\ times.push_back(std::accumulate(events.begin(), events.end(), 0, &time_event));\ diff --git a/include/isaac/kernels/templates/gemv.h b/include/isaac/kernels/templates/gemv.h index 573e16034..164a299a0 100644 --- a/include/isaac/kernels/templates/gemv.h +++ b/include/isaac/kernels/templates/gemv.h @@ -32,7 +32,7 @@ protected: gemv(gemv::parameters_type const & , dot_type, binding_policy_t); private: virtual int is_invalid_impl(driver::Device const &, expressions_tuple const &) const; - unsigned int lmem_usage() const; + unsigned int lmem_usage(expressions_tuple const &) const; std::string generate_impl(const char * suffix, expressions_tuple const &, driver::Device const & device, std::vector const &) const; public: virtual std::vector input_sizes(expressions_tuple const & expressions) const; diff --git a/include/isaac/tools/make_map.hpp b/include/isaac/tools/make_map.hpp index e79155182..c73f288ed 100644 --- a/include/isaac/tools/make_map.hpp +++ b/include/isaac/tools/make_map.hpp @@ -1,5 +1,5 @@ #ifndef ISAAC_TOOLS_MAKE_MAP_HPP -#define ISAAC_TOOLD_MAKE_MAP_HPP +#define ISAAC_TOOLS_MAKE_MAP_HPP #include diff --git a/include/isaac/tools/make_vector.hpp b/include/isaac/tools/make_vector.hpp index 3d34358f6..ef8333351 100644 --- a/include/isaac/tools/make_vector.hpp +++ b/include/isaac/tools/make_vector.hpp @@ -1,5 +1,5 @@ #ifndef ISAAC_TOOLS_MAKE_VECTOR_HPP -#define ISAAC_TOOLD_MAKE_VECTOR_HPP +#define ISAAC_TOOLS_MAKE_VECTOR_HPP #include diff --git a/lib/kernels/mapped_object.cpp b/lib/kernels/mapped_object.cpp index da1fd888a..dcc98732e 100644 --- a/lib/kernels/mapped_object.cpp +++ b/lib/kernels/mapped_object.cpp @@ -176,7 +176,7 @@ void mapped_array::preprocess(std::string & str) const struct MorphValue : public MorphBase { - MorphValue(std::string const & _ld, char _type) : ld(_ld), type(_type){ } + MorphValue(std::string const & _ld) : ld(_ld){ } std::string operator()(std::string const & i) const { return "#pointer[" + i + "]"; } @@ -185,12 +185,11 @@ void mapped_array::preprocess(std::string & str) const { return "#pointer[(" + i + ") + (" + j + ") * " + ld + "]"; } private: std::string const & ld; - char type; }; struct MorphOffset : public MorphBase { - MorphOffset(std::string const & _ld, char _type) : ld(_ld), type(_type){ } + MorphOffset(std::string const & _ld) : ld(_ld){ } std::string operator()(std::string const & i) const { return i; } @@ -199,11 +198,10 @@ void mapped_array::preprocess(std::string & str) const {return "(" + i + ") + (" + j + ") * " + ld; } private: std::string const & ld; - char type; }; - replace_macro(str, "$VALUE", MorphValue(ld_, type_)); - replace_macro(str, "$OFFSET", MorphOffset(ld_, type_)); + replace_macro(str, "$VALUE", MorphValue(ld_)); + replace_macro(str, "$OFFSET", MorphOffset(ld_)); } mapped_array::mapped_array(std::string const & scalartype, unsigned int id, char type) : mapped_buffer(scalartype, id, type=='s'?"array0":(type=='m'?"array2":"array1")), type_(type) diff --git a/lib/kernels/templates/gemm.cpp b/lib/kernels/templates/gemm.cpp index 864833d9d..d2b675014 100644 --- a/lib/kernels/templates/gemm.cpp +++ b/lib/kernels/templates/gemm.cpp @@ -51,8 +51,8 @@ gemm_parameters::gemm_parameters(unsigned int simd_width if(p_.A_fetching_policy!=FETCH_FROM_LOCAL || p_.B_fetching_policy!=FETCH_FROM_LOCAL) throw operation_not_supported_exception("Only local memory is supported for GEMM"); -// if(p_.depth > 1 && M*N*p_.depth > 2e6) -// throw operation_not_supported_exception("This would necessitate a temporary larger than 1MB"); + if(p_.depth > 1 && M*N*p_.depth > 2e6) + throw operation_not_supported_exception("This would necessitate a temporary larger than 1MB"); if ((p_.mS % p_.simd_width) > 0 || (p_.nS % p_.simd_width) > 0) return TEMPLATE_MS_NS_MUST_BE_SIMD_WIDTH_MULTIPLE; diff --git a/lib/kernels/templates/gemv.cpp b/lib/kernels/templates/gemv.cpp index bf2226893..e207a8203 100644 --- a/lib/kernels/templates/gemv.cpp +++ b/lib/kernels/templates/gemv.cpp @@ -27,7 +27,7 @@ int gemv::is_invalid_impl(driver::Device const &, expressions_tuple const &) con return TEMPLATE_VALID; } -unsigned int gemv::lmem_usage() const +unsigned int gemv::lmem_usage(const expressions_tuple &) const { return (p_.local_size_0+1)*p_.local_size_1; } diff --git a/python/setup.py b/python/setup.py index 673e63502..7537f9f0a 100644 --- a/python/setup.py +++ b/python/setup.py @@ -115,7 +115,7 @@ def main(): include =' src/include'.split() + ['external/boost/include', os.path.join(find_module("numpy")[1], "core", "include")] #Source files - src = 'src/lib/symbolic/preset.cpp src/lib/symbolic/execute.cpp src/lib/symbolic/io.cpp src/lib/symbolic/expression.cpp src/lib/model/model.cpp src/lib/model/predictors/random_forest.cpp src/lib/array.cpp src/lib/value_scalar.cpp src/lib/driver/backend.cpp src/lib/driver/device.cpp src/lib/driver/kernel.cpp src/lib/driver/buffer.cpp src/lib/driver/platform.cpp src/lib/driver/check.cpp src/lib/driver/program.cpp src/lib/driver/command_queue.cpp src/lib/driver/program_cache.cpp src/lib/driver/context.cpp src/lib/driver/event.cpp src/lib/driver/ndrange.cpp src/lib/driver/handle.cpp src/lib/exception/unknown_datatype.cpp src/lib/exception/operation_not_supported.cpp src/lib/kernels/templates/gemv.cpp src/lib/kernels/templates/axpy.cpp src/lib/kernels/templates/gemm.cpp src/lib/kernels/templates/ger.cpp src/lib/kernels/templates/dot.cpp src/lib/kernels/templates/base.cpp src/lib/kernels/mapped_object.cpp src/lib/kernels/stream.cpp src/lib/kernels/parse.cpp src/lib/kernels/keywords.cpp src/lib/kernels/binder.cpp src/lib/wrap/clBLAS.cpp '.split() + [os.path.join('src', 'wrap', sf) for sf in ['_isaac.cpp', 'core.cpp', 'driver.cpp', 'model.cpp', 'exceptions.cpp']] + src = 'src/lib/kernels/templates/ger.cpp src/lib/kernels/templates/gemv.cpp src/lib/kernels/templates/gemm.cpp src/lib/kernels/templates/dot.cpp src/lib/kernels/templates/base.cpp src/lib/kernels/templates/axpy.cpp src/lib/kernels/stream.cpp src/lib/kernels/parse.cpp src/lib/kernels/mapped_object.cpp src/lib/kernels/keywords.cpp src/lib/kernels/binder.cpp src/lib/array.cpp src/lib/value_scalar.cpp src/lib/wrap/clBLAS.cpp src/lib/symbolic/expression.cpp src/lib/symbolic/preset.cpp src/lib/symbolic/io.cpp src/lib/symbolic/execute.cpp src/lib/model/model.cpp src/lib/model/predictors/random_forest.cpp src/lib/exception/unknown_datatype.cpp src/lib/exception/operation_not_supported.cpp src/lib/driver/backend.cpp src/lib/driver/context.cpp src/lib/driver/platform.cpp src/lib/driver/device.cpp src/lib/driver/program.cpp src/lib/driver/kernel.cpp src/lib/driver/event.cpp src/lib/driver/check.cpp src/lib/driver/program_cache.cpp src/lib/driver/ndrange.cpp src/lib/driver/command_queue.cpp src/lib/driver/buffer.cpp src/lib/driver/handle.cpp '.split() + [os.path.join('src', 'wrap', sf) for sf in ['_isaac.cpp', 'core.cpp', 'driver.cpp', 'model.cpp', 'exceptions.cpp']] boostsrc = 'external/boost/libs/' for s in ['numpy','python','smart_ptr','system','thread']: src = src + [x for x in recursive_glob('external/boost/libs/' + s + '/src/','.cpp') if 'win32' not in x and 'pthread' not in x]