When I set up this location

    http://www.cs.bham.ac.uk/research/projects/poplog/amd64/poplog16

with the new 64-bit poplog and installation and use scripts I had forgotten
Waldek's previous warning about the popvision and neural libraries:

        $usepop/pop/packages/popvision
        $usepop/pop/packages/neural

namely (slightly edited version of Waldek's note):

The packages currently contain 32-bit libraries which will not work on
64-bit machines.

As a quick workaround, to remove/update everything from
        'packages/popvision/lib/bin/linux/'
and from
        'packages/popvision/lib'

in the lib directory do:

for A in *.c ; do gcc -O2 -fPIC -shared $A -o bin/linux/${A%c}so; done

to create libraries appropriate for the current machine.

A better approach would use per architecture subdirectory like 'arm',
'i386' and 'x86_64', or maybe 'arm-linux', 'i386-linux' and 'x86_64-linux'
if we want support more operationg systems.  But that would require some
work to propagate information about the architecture and use it when
needed...

Similarly, 'packages/neural/bin/pclinux' contains 32-bit libraries.
Again one needs to remove them.  Then after changing directory
to 'packages/neural/src/c' do the following:

for A in *.c ; do gcc -O2 -fPIC -shared $A -o ../../bin/pclinux/${A%c}so; done

to create libraries for the current machine.

----

He also added:

To load 'mlp' I also needed the diff below (poplog_base defines 'bytevec'
and 'ushortvec').  But results
still look wrong...

--- packages/popvision/lib/array_random.p       1998-08-13 13:46:41.000000000 
+0000
+++ packages/popvision/lib/array_random.p       2019-07-06 23:23:38.859218572 
+0000
@@ -47,7 +47,7 @@
     (seed >> shift) /* -> s3 */;
 enddefine;

-defclass lconstant ushortvec :ushort;
+;;; defclass lconstant ushortvec :ushort;
 lconstant seedvec = initushortvec(3),
     shortbits = 2**SIZEOFTYPE(:ushort,:1) - 1;

--- packages/popvision/lib/mlp.p        2000-03-02 10:50:55.000000000 +0000
+++ packages/popvision/lib/mlp.p        2019-07-06 23:25:32.099069863 +0000
@@ -89,7 +89,7 @@
     (seed >> shift) /* -> s3 */;
 enddefine;

-defclass lconstant ushortvec :ushort;
+;;; defclass lconstant ushortvec :ushort;
 lconstant seedvec = initushortvec(3),
     shortbits = 2**SIZEOFTYPE(:ushort,:1) - 1;

--- packages/popvision/lib/newbytearray.p       2003-07-15 08:36:48.000000000 
+0000
+++ packages/popvision/lib/newbytearray.p       2019-07-06 23:22:05.831409167 
+0000
@@ -12,7 +12,7 @@
 uses popvision
 uses oldarray

-defclass bytevec :byte;
+;;; defclass bytevec :byte;

 define newbytearray = newanyarray(% bytevec_key %); enddefine;

--

====
I shall not have time to do anything about this in the foreseeable future,
but I'll add copies of this note to the information about the packages.

If anyone is willing to try the instructions and/or suggest modifications,
please let me know the outcome.

Thanks

Aaron
http://www.cs.bham.ac.uk/~axs

Reply via email to