I'm trying to code up a GCD algorithm. Given two dense containers, num and sum, I want to reduce corresponding elements to lowest terms (as if they were a ratio). One version of my GCD code that works is...
Intel® Array Building Blocks
problem with bitwise_cast
Hello!
I try use bitwise_cast, but I get error: no instance of overloaded function "bitwise_cast" matches the argument list.
dense N(2);
dense N_11(2);
N_11 = arbb::bitwise_cast(N);
What's wrong?
Thank you.
PDE Stencil and efficiency of the treament of boundary conditions.
Hi
Solving PDE, the stencil possibility in arbb is useful. My question is about the vectorization/parallelization of the boundary conditions where the stencil doesn't apply.
For example i use the stencil in that way :
// first the stencil
// ********************
ARBB and classes
Hi In order to parallelize function in class member i'd like to use this kind of structure : class toto { public : toto() {}; void valuate(arbb::f64 & ret) { ret =0. ; }; void values( arbb::dense & ret ) { arbb::map(toto::valuate)(ret); } void paral_call( arbb::dense & ret) { arbb::call(toto::values)(ret); } } Why is it impossible. Of course no problem if used outside class. Is there a workaround to achieve the parallelization Thank you
Manipulating row, columns of dense<f32,2>
Hi I am using dense vector and i try to fill row or columns without _for nest in order to get parallelization: For exemple is it possible to fill a row or column with a given value : dense a; a(0, all) = val ; // all for all elements of row 0 If yes is it possible for a section : a(0,[1:3])= val ; // This possibility is available in all C++ libraries i use (eigen, blitz++). Thank you very much
Excessively long error messages
gauss.cpp:198:4: error: no matching function for call to call() gauss.cpp:198:4: note: candidates are: /opt/intel/arbb/1.0.0.022/include/arbb/cpp/detail/call_template.hpp:41:25: note: arbb_2::closure arbb_2::call(void (*)())
Big kernel with internal error
Hi I developped a kernel with ARBB for solving Partial Differentiel Equation in 2D with stencil. Everything is fine with the emulator (ARBB_EMULATE=1)though being very slow comparing with a pure C++ version. Without the emulator, even withARBB_OPT_LEVL=O0, the code runs a long time ending with a Low level optimization (LLO) got the exceptions: ILLEGAL_MEM_OP: Access the illegal memory address => Accessing not mapped address [0x50] at IP[0x7fd6736ffad5]. Failed! terminate called after throwing an instance of 'arbb_2::internal_error'
Invalid scope 'function' to arbb_end_loop: invalid control pairs
Hi
I still have another example where i get an error due to the boolean data in the code below :
// pay off class to valuate option
class PayOffSimple2
{
public :
arbb::f64 strike ;
arbb::boolean bVendeur;
PayOffSimple2() : strike(0.),bVendeur(true){}
PayOffSimple2( arbb::f64 strike_, arbb::boolean bVendeur_):strike(strike_),bVendeur(bVendeur_){}
arbb::f64 operator()( const arbb::f64 & x) const
{
_if (bVendeur)
{
return arbb::max(arbb::exp(x)-strike,0.);
}
_end_if;
return -arbb::max(arbb::exp(x)-strike,0.);
}
};
// arbb wrapper
another issue on what(): zero types captured
Hi
On simple another example i still get a "what(): zero types captured" although an arrb data is a member.
// using bool so that the capture will recall the function behavior
class PayOffSimple1
{
private :
arbb::f64 strike ;
bool bVendeur;
public :
PayOffSimple1() : strike(0.),bVendeur(true){}
PayOffSimple1( arbb::f64 strike_, bool bVendeur_):strike(strike_),bVendeur(bVendeur_){}
arbb::f64 operator()( const arbb::f64 & x) const
{
if (bVendeur)
{
return arbb::max(arbb::exp(x)-strike,0.);
}
return -arbb::max(arbb::exp(x)-strike,0.);
}
};
Passing class to arbb code
Hi
Trying to have large arbb function, i face a problem with executing function captured by arbb.
Here is the small exemple i took :
// a small class
class PayOffSoSimple
{
public :
PayOffSoSimple() {}
PayOffSoSimple( const PayOffSoSimple & pay)
{}
arbb::f64 operator()() const
{
return 1.;
}
};
// a first caller with payoff function instanciated inside the caller
void caller_( const arbb::usize & N)
{
PayOffSoSimple pay;
arbb::dense Sol(N);
_for (arbb::usize i= 0 , i < N , ++i)
{
Sol[i] = pay();
}
_end_for;
}
