Ok, now I'm getting some success!
I start over with the VM: Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1044] Squeak Cog Spur 5.0.3248
and followed Nicolas' instruction in this thread. The image is 32-bit 5.0 image. In this setting all tests passed. Yay. To run the above mentioned example:
------------------- a := LapackDGEMatrix rows: #(#(3 2 4) #(2 -5 -1) #(1 -2 2)). b := LapackDGEMatrix rows: #(#(1) (2) (3)). c := LapackLeastSquareProblem matrix: a rhsMatrix: b.
c solution. -------------------
I needed to fix the processSVD to make it work. The changes are to change:
rank := WordArray new: 1.
into:
rank := ExternalLongArray new: 1.
(otherwise #arrayPointer is not understood by 'rank') and also the return value from gelssWithm: has to be stored in 'info' (otherwise it will be always nil).
On Thu, Aug 11, 2016 at 6:05 PM, Yoshiki Ohshima Yoshiki.Ohshima@acm.org wrote:
I have not reached the conclusion but would like to give some status report.
My test case is simple:
a := LapackDGEMatrix rows: #(#(3 2 4) #(2 -5 -1) #(1 -2 2)). b := LapackDGEMatrix rows: #(#(1) (2) (3)). c := LapackLeastSquareProblem matrix: a rhsMatrix: b.
c solution.
If I evaluate this, the external call for 'dgesvd_' in CLapackDLibrary>>xgesvdWithjobu:jobvt:m:n:a:lda:s:u:ldu:vt:ldvt:work: lwork:info: fails.
But if I fix it by rewriting the cdecl line to:
<cdecl: long 'dgesvd_'( char * char * long * long * double * long * double * double * long * double * long * double * long * long * ) module: 'libLAPACK'>
from
<cdecl: long 'dgesvd_'( char * char * long * long * double * long * double * double * long * double * long * double * long * long * )>
it passes.
However, the value that gets stored in the 's' instance variable of LapackSVDecomposition is a LapackDGEMatrix, and when the resulting value is used in the #defaultTolerance, I get DNU for '*".
On Tue, Aug 9, 2016 at 3:26 PM, Yoshiki Ohshima Yoshiki.Ohshima@acm.org wrote:
Correction: (sorry)
In a 64 bit image, TestCBlas runs fine but the ones listed above fails in a 32-bit image.
On Tue, Aug 9, 2016 at 3:12 PM, Yoshiki Ohshima Yoshiki.Ohshima@acm.org
wrote:
Thanks!
I am trying this from a vanilla 5.0 image and I see that ConfigurationOfSmallapack-nice.18 is loaded. Now, however, the following tests from Smallapack-SUnitTests category fail:
#('TestCBlas>>#testCsscal' 'TestCBlas>>#testSaxpy' 'TestCBlas>>#testSgemv' 'TestCBlas>>#testSgemvTrans' 'TestCBlas>>#testSger' 'TestCBlas>>#testSscal' 'TestCBlas>>#testStrsm' 'TestLapackMatrix>>#testMatrixProduct' 'TestLapackMatrix>>#testSum' 'TestRandMatrix>>#testOperationTiming')
As I wrote, TestCBlas used to be all green. I'll check what has changed since -nice.16...
On Sat, Aug 6, 2016 at 4:56 PM, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
This should be fixed in ConfigurationOfSmallapack-nice.18 BTW, I think you can provide the absolute path to the .dylib instead of copying in local repository...
2016-08-06 23:29 GMT+02:00 Nicolas Cellier nicolas.cellier.aka.nice@gmail.com:
Hi Yoshiki, thanks for reporting, I'll try better...
2016-08-01 0:48 GMT+02:00 Yoshiki Ohshima Yoshiki.Ohshima@acm.org:
I see you have some changes but it appears that evaluating the Installer do it goes into an infinite loop of #moduleName and #masOsxModuleName.
(Thanks again!)
On Sat, Jul 30, 2016 at 8:23 AM, Yoshiki Ohshima Yoshiki.Ohshima@acm.org wrote: > 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@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@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@gmail.com: >>>> >>>> >>>> >>>> 2016-07-29 19:28 GMT+02:00 Nicolas Cellier >>>> nicolas.cellier.aka.nice@gmail.com: >>>>> >>>>> >>>>> >>>>> 2016-07-29 19:02 GMT+02:00 Yoshiki Ohshima >>>>> Yoshiki.Ohshima@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@acm.org wrote: >>>>>> > Thanks! >>>>>> > >>>>>> > On Thu, Jul 28, 2016 at 4:04 PM, Nicolas Cellier >>>>>> > nicolas.cellier.aka.nice@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@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
-- -- Yoshiki
-- -- Yoshiki
-- -- Yoshiki
-- -- Yoshiki