Kernels: Bugfix with large temporary sizes

This commit is contained in:
Philippe Tillet
2015-08-17 16:30:21 -07:00
parent 470ae7f4be
commit a23e976ca7
2 changed files with 11 additions and 8 deletions

View File

@@ -12,6 +12,7 @@
#include "isaac/kernels/templates/base.h"
#include "isaac/kernels/parse.h"
#include "isaac/exception/unknown_datatype.h"
#include "isaac/exception/operation_not_supported.h"
#include "isaac/symbolic/io.h"
#include "tools/map.hpp"
@@ -83,6 +84,10 @@ std::string base::generate(std::string const & suffix, expressions_tuple const &
expressions_tuple::data_type::const_iterator sit;
std::vector<mapping_type>::iterator mit;
int err = is_invalid(expressions, device);
if(err != 0)
throw operation_not_supported_exception("The supplied parameters for this template are invalid : err " + tools::to_string(err));
//Create mapping
std::vector<mapping_type> mappings(expressions.data().size());
std::unique_ptr<symbolic_binder> binder;
@@ -141,10 +146,6 @@ int base_impl<TType, PType>::is_invalid(expressions_tuple const & expressions, d
if (p_.simd_width!=1 && p_.simd_width!=2 && p_.simd_width!=3 && p_.simd_width!=4)
return TEMPLATE_INVALID_SIMD_WIDTH;
//Temporary workspace
if(temporary_workspace(expressions) > 2e6)
return TEMPLATE_TEMPORARY_TOO_LARGE;
return is_invalid_impl(device, expressions);
}