Re: BLAS (was Matlisp tests)

Akshay Srinivasan <[email protected]> Wed, 14 Mar 2012 08:49:46 +0530
Newsgroups gmane.lisp.matlisp.devel
Message-ID <[email protected]>
On 03/14/2012 07:30 AM, Raymond Toy wrote:
> On 3/13/12 9:45 AM, Akshay Srinivasan wrote:
>> On 03/12/2012 12:18 AM, Raymond Toy wrote:
>>> On 3/11/12 11:11 AM, Akshay Srinivasan wrote:
>>>> On 03/11/2012 12:37 PM, Raymond Toy wrote:
>>>>> On 3/10/12 7:03 PM, Akshay Srinivasan wrote:
>>>>>> On 03/10/2012 11:16 PM, Raymond Toy wrote:
>>>>>>> On 3/10/12 8:40 AM, Akshay Srinivasan wrote:
>>>>>>> 
>>>>>>>>> It would be nice to be able to detect either mode
>>>>>>>>> and have the ffi do the right thing, but I think
>>>>>>>>> many lisps do not support structure returns the way
>>>>>>>>> gcc is doing it now.
>>>>>>>> It returns a struct ? I never could get hold of the 
>>>>>>>> documentation for that.
>>>>>>> That's my understanding.  And when I look at the 
>>>>>>> disassembly for a simple Fortran function, it returns
>>>>>>> the real and imaginary parts in xmm0 and xmm1 (at least
>>>>>>> on OSX).
>>>>>> Hmm. Too clumsy and non-portable to support all that, no
>>>>>> ?
>>>>> It would be good if cffi supported that, but I suspect
>>>>> not.
>>>>>>>>> We also have an alternative: Add simple C wrappers 
>>>>>>>>> that use the f2c-mode return and call the Fortran 
>>>>>>>>> routine directly.
>>>>>>>> CBLAS :) (not the netlib version).
>>>> After some more thinking, I vote for adding wrapper
>>>> subroutine around zdotu/zdotc in F77. It'll be far too much
>>>> boring work to migrate to CBLAS, given that I seem to be able
>>>> to handle ordering quite well within lisp itself. There
>>>> aren't any other complex returning functions in BLAS, are
>>>> there ?
>>> Let me do a grep....Nope.  Looks like those are the only two.
>>> 
>>> Not quite sure what you're going to do here.  You want to write
>>> two C wrapper functions that call zdotu/zdotc correctly, and
>>> have the wrapper use the f2c convention?
>>> 
>>> Since we already detect if we need -ff2c, what is the utility
>>> for this when matlisp builds its own libraries?  Of course, for
>>> atlas, I can see that we would want this if we've determined
>>> that atlas is not compatible.  That would be a nice
>>> enhancement.
>>>> We probably don't need any other f2c features, since most 
>>>> functions I know only take character arguments instead of
>>>> string ones.
>>> Fortunately, matlisp is in control of that because I think it
>>> is valid fortran to pass in, say, 'Transpose', instead of 'T'.
>> I have to flip back on my words. I now think CBLAS is the only
>> way forward. I was writing a wrapper for dgemv (y <- alpha * A .
>> x + beta y) today and really couldn't figure out a way to support
>> row-ordered
> 
> Can you give an example?  You can't just transpose A?  Oh.  Maybe
> not because the elements still need to be in column-major order?

That will only work when A is square though.

Akshay

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/