Boost logo

Boost :

From: Martin Schulz (Martin.Schulz_at_[hidden])
Date: 2007-07-02 02:53:59


Hello,

that seems promising to me. Can I download that library somewhere on the
net to have a closer look at it?

I have to apologize that I probably wont find much time really soon,
though. At least I would like to get a better idea of it.

Yours,
        Martin.

-- 
Dr. Martin Schulz (schulz_at_[hidden])
Software Engineer 
Synopsys GmbH 
Karl-Hammerschmidt-Str. 34
D-85609 Dornach, Germany
Phone: +49 (89) 993-20203
http://www.synopsys.com
 
> -----Original Message-----
> From: boost-bounces_at_[hidden] 
> [mailto:boost-bounces_at_[hidden]] On Behalf Of Jeremy Bruestle
> Sent: Freitag, 29. Juni 2007 22:10
> To: boost_at_[hidden]
> Subject: [boost] Interest in tensor library?
> 
> Greetings,
> 
> I have developed a C++ tensor library using template 
> expressions which allows Einstein summation convention to be 
> used to describe mathematical operations on tensors in C++.  
> This allows a great simplification in syntax, while retaining 
> execution speeds identical to hand optimized C code in most 
> cases.  An example of the syntax is:
> 
> // Declare three rank 2 tensors (rank = # of dimensions) of 
> doubles with sizes of // 6 x 5, 6 x 10, and 10 x 5 respectively
> 
> tensor<double, 2> A(6, 5);
> tensor<double, 2> B(6, 10);
> tensor<double, 2> C(10, 5);
> 
> // Name three index variable to be used in what follows 
> index_variable<0> i; index_variable<1> j; index_variable<2> k;
> 
> A[i][j] = 1.0;  // Initialize A to all 1's B[i][j] = 4.5;  // 
> Initalize B to all 4.5
> 
> boost::mt19937 rng;
> C[i][j] = trand(rng);  // Initalize C to uniform random 
> numbers 0-1 C[i][2] = 2.1;  // Set row 2 to 2.1 C[2][i] = 
> 5.5;  // Set col 2 to 5.5 C[2][2] = 0.0;  // Zero out 2,2
> 
> A[i][j] = B[i][k] * C[k][j];  // Perform a matrix multiply
> 
> /* The above line translates roughly as:
> for(size_t i = 0; i < A.size<0>(); i++)
> {
>   for(size_t j = 0; j < A.size<1>(); j++)
>   {
>     double total = 0.0;
>     for(size_t k = 0; k < B.size<1>(); k++)
>       total += B[i][k] * C[k][j];
>     A[i][j] = total;
>   }
> }
> */
> An unlimited number of dimensions are supported, arbitrary 
> operations are allowed, and for cases where you wish to 
> perform other types of cumulative functions, such as finding 
> the maximum element, a syntax such as: A[i] = max(j, 
> B[i][j]); is allowed.  There are lots of other interesting 
> features but I don't wish to make this email too long.
> 
> As far as efficency, Intel's compiler builds every example 
> I've tried so far into code as good as doing the work by 
> hand.  GCC does so for expressions of reasonably complexity, 
> and MSVC's optimizer does alright, but not nearly as well as 
> the others.
> 
> I was interested in knowing what the interest level of 
> providing such a library as part of boost would be.  I've 
> tried to adhere to the boost coding guidelines during the 
> construction.  I've been using this library for over 6 months 
> myself for scientific computing.  However, I've so far 
> avoiding sending a query to the boost mailing lists as the 
> procedures for submission and review seem quite daunting.  
> I'm usually crushingly busy, and I'm also especially bad at 
> documentation.  Still, I thought I would float the idea to 
> guage interest, and also ask if anyone would be interested in 
> helping me through the process somewhat.
> 
> Thank you for you time.
> 
> -Jeremy Bruestle
> _______________________________________________
> Unsubscribe & other changes: 
> http://lists.boost.org/mailman/listinfo.cgi/boost
> 

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk