[squeak-dev] Smallapack

Yoshiki Ohshima Yoshiki.Ohshima at acm.org
Sat Jul 30 15:23:10 UTC 2016


But some of TestLapackMatrix tests fail.  A few external functions
cannot be found, it looks like.

On Sat, Jul 30, 2016 at 7:55 AM, Yoshiki Ohshima
<Yoshiki.Ohshima at acm.org> wrote:
> Great!
>
> Before (I got into a meeting and then entered the "Friday mode", I was
> going down the path of trying to call the Framework functions but
> copying files anyway was a simpler solution for now.
>
> Yes, I got all tests green.  Thank  you!
>
> On Fri, Jul 29, 2016 at 3:24 PM, Nicolas Cellier
> <nicolas.cellier.aka.nice at gmail.com> wrote:
>> OK, what I did on my Mac:
>>
>> 1) look under the Squeak app and edit the Contents/Info.plist
>> 2) change value of SqueakPluginsBuiltInOrLocalOnly to "No"
>>    otherwise library loading is restricted to the Squeak app bundle
>> 3) copy the veclib framework library files (dylib) in same directory as
>> squeak image
>> 4) launch Squeak
>> 5) install Smallapack
>>     follow instruction from
>> https://github.com/nicolas-cellier-aka-nice/smallapack/wiki/SmallapackSqueak
>> 6) change CBlasLibrary class>>moduleName 'libcblas.dylib' -> 'libBlas.dylib'
>>     nowadays, cblas and blas are in the same dylib...
>> 7) change CLapackLibrary class>>moduleName 'libclapack.dylib' ->
>> 'libLapack.dylib'
>>     idem
>> 8) re-initialize the cache (I know, I know, there are too many...)
>>     CBlasLibrary install. CLapackLibrary install. LapackMatrix
>> resetBlasInterfaces; resetLapackInterfaces.
>> 9) run the TestCBlas suite
>>
>> It should be green
>> I will commit the changes later, and will probably implement moduleNames as
>> a Preference (pragma oriented).
>> No need to override code anymore :)
>>
>> I think step 3) is necessary because of ioLoadModuleRaw() in
>> platforms/iOS/vm/OSX/sqMacUnixExternalPrims.m
>> https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/platforms/iOS/vm/OSX/sqMacUnixExternalPrims.m
>> It would only look those frameworks:
>>
>>                 static char *frameworks[]=
>>                 {
>>                         "",
>>                         "/CoreServices.framework/Frameworks",
>>                         "/ApplicationServices.framework/Frameworks",
>>                         "/Carbon.framework/Frameworks",
>>                         0
>>                 };
>>
>> But I did step 3) before I tried 1) + 2), adn did not retry, so maybe I'm
>> wrong...
>> Scanning all the frameworks is not a solution. And what if we want a
>> specific version?
>> It would be far better to be able to specify the path to the library from
>> within the image like VW...
>>
>>
>> 2016-07-29 19:41 GMT+02:00 Nicolas Cellier
>> <nicolas.cellier.aka.nice at gmail.com>:
>>>
>>>
>>>
>>> 2016-07-29 19:28 GMT+02:00 Nicolas Cellier
>>> <nicolas.cellier.aka.nice at gmail.com>:
>>>>
>>>>
>>>>
>>>> 2016-07-29 19:02 GMT+02:00 Yoshiki Ohshima <Yoshiki.Ohshima at acm.org>:
>>>>>
>>>>> First question:
>>>>>
>>>>> The Mac OS comes with Accelerate.Framework and that contains BLAS.
>>>>> But probably I still should compile those libraries, right?
>>>>>
>>>>
>>>> No, it's better to link to accelerated library.
>>>> I don't have a Mac handy here to verify how to link to it though.
>>>> I'll be able to check latter in the evening
>>>>
>>>
>>>
>>> I've downloaded the code, and I see it now: the library names are
>>> hardcoded (see implementors of moduleName).
>>> For Mac it is libblas.dylib and libcblas.dylib
>>> Also note that there is a preference for switching to cblas (blas
>>> functions with C interface).
>>> This should be faster because we pass some parameters by value rather than
>>> allocating them and pass reference...
>>>
>>> Module names could also be replaced by Preferences eventually, but by now,
>>> you'll have to override...
>>>
>>>>>
>>>>>
>>>>> On Thu, Jul 28, 2016 at 4:11 PM, Yoshiki Ohshima
>>>>> <Yoshiki.Ohshima at acm.org> wrote:
>>>>> > Thanks!
>>>>> >
>>>>> > On Thu, Jul 28, 2016 at 4:04 PM, Nicolas Cellier
>>>>> > <nicolas.cellier.aka.nice at gmail.com> wrote:
>>>>> >> Hi Yoshiki,
>>>>> >>
>>>>> >> Thanks for inquiring about Smallapack.
>>>>> >>
>>>>> >> This problem has been solved in 2011 as the post tells.
>>>>> >> Moreover, it was about alignment of squeak objects that was on
>>>>> >> multiple of 4
>>>>> >> on SqueakV3 memory.
>>>>> >> Spur is 8 byte aligned, so the problem would have also vanished
>>>>> >> without any
>>>>> >> patch for those being patient :)
>>>>> >>
>>>>> >> For the 15 arguments limit, Smallapack comes with it's own compiler,
>>>>> >> so it's
>>>>> >> a non issue.
>>>>> >> Maybe I should make the documentation more clear on
>>>>> >>
>>>>> >> https://github.com/nicolas-cellier-aka-nice/smallapack/wiki/SmallapackSqueak
>>>>> >> ?
>>>>> >>
>>>>> >> Unfortunately, there's no Sparse Matrix representation in Lapack.
>>>>> >> If you know of a good package for that, it could be integrated.
>>>>> >>
>>>>> >> If you have other questions, don't hesitate to ask.
>>>>> >>
>>>>> >> cheers
>>>>> >>
>>>>> >> Nicolas
>>>>> >>
>>>>> >> 2016-07-29 0:22 GMT+02:00 Yoshiki Ohshima <Yoshiki.Ohshima at acm.org>:
>>>>> >>>
>>>>> >>> I am trying to do a bit of linear algebra stuff that involves to
>>>>> >>> solve
>>>>> >>> a sparse 2D matrix (for a variation of doing least square fit).
>>>>> >>>
>>>>> >>> There was a message from Nicolas:
>>>>> >>>
>>>>> >>>
>>>>> >>> http://lists.squeakfoundation.org/pipermail/squeak-dev/2011-August/161113.html
>>>>> >>>
>>>>> >>> Is this where it stands today, too?  It looks like that arg count
>>>>> >>> problem is still there in 5.0, but is it in a way non-issue as it is
>>>>> >>> still FFI based?
>>>>> >>>
>>>>> >>> Thanks!
>>>>> >>>
>>>>> >>> --
>>>>> >>> -- Yoshiki
>>>>> >>>
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> > -- Yoshiki
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> -- Yoshiki
>>>>>
>>>>
>>>
>>
>>
>>
>>
>
>
>
> --
> -- Yoshiki



-- 
-- Yoshiki


More information about the Squeak-dev mailing list