Nmap-0.1.0 (narray + mmap = persistant grids)


#1

NAME

nmap (reference ruby class which combines narray and mmap)
na_str (c extension)

REQUIREMENTS

mmap : http://moulon.inra.fr/ruby/mmap.html
narray : http://narray.rubyforge.org/

URIS

http://codeforpeople.com/lib/ruby/nmap/

SYNOPSIS

na_str is designed to allow data sharing between narray object and
other ruby
objects. the shared data is that returned by the objects to_s or
to_str method
and rb_string_new4. using this technique memory mapped (using guy’s
mmap
extensions) data can be altered with no explicit io on the users part
and
partial changed to numerical grids can occur very quickly and
persistently.

the nmap.rb reference impl is a concrete example of this usage and is
included in the distribution.

EXAMPLE USAGE

 jib:~/eg/ruby/na_str > cat a.rb
 #
 # the nmap extension is installed along with na_str
 #
   require 'nmap'
 #
 # the NMap ctor interface is similar to NArray's, but a backing 

file must also
# be specified
#
path, x, y = ‘int.data’, 3, 4
nmap = NMap.int path, x, y
#
# copy the last row to the first
#
nmap.na[true, 0] = nmap.na[true, 3]
#
# set the last row to be the current time. if you run this a few
times you’ll
# notice that changes to the narray are automatically written to
the to
# backing file via the magic of mmap
#
nmap.na[true, 3] = Time.now.to_i
#
# show the narray
#
p nmap.na

jib:~/eg/ruby/na_str > ruby a.rb
NArray(ref).int(3,4):
[ [ 0, 0, 0 ],
[ 0, 0, 0 ],
[ 0, 0, 0 ],
[ 1151439012, 1151439012, 1151439012 ] ]

jib:~/eg/ruby/na_str > ruby a.rb
NArray(ref).int(3,4):
[ [ 1151439012, 1151439012, 1151439012 ],
[ 0, 0, 0 ],
[ 0, 0, 0 ],
[ 1151439014, 1151439014, 1151439014 ] ]

SPEED

jib:~/eg/ruby/na_str > cat a.rb

reference impl installed with na_str

 require 'nmap'

setup a narray grid containing 1 gb of ints

 gb = 2 ** 30
 mb = 2 ** 20
 sizeof_int = [42].pack('i').size
 gig_of_ints = gb / sizeof_int
 nmap = NMap.int '1GB',  gig_of_ints

set about 1 million of the ints to 42

 nmap.na[0 .. mb] = 42

show that the data was written

 p nmap.na[mb - 1]

jib:~/eg/ruby/na_str > time ruby a.rb
42

real 0m0.078s
user 0m0.020s
sys 0m0.020s

jib:~/eg/ruby/na_str > ls -ltar 1GB
-rw-rw-r-- 1 ahoward ahoward 1073741824 Jun 27 14:28 1GB

highly experimental. enjoy.

-a


#2

Ara.T.Howard wrote:

NAME

nmap (reference ruby class which combines narray and mmap)

Ara, have you considered a name that won’t get confused with the nmap
utility? Someone might want to write a ruby-nmap for port scanning etc.


#3

On Thu, 1 Mar 2007, Joel VanderWerf wrote:

Ara.T.Howard wrote:

NAME

nmap (reference ruby class which combines narray and mmap)

Ara, have you considered a name that won’t get confused with the nmap
utility? Someone might want to write a ruby-nmap for port scanning etc.

um. no. never heard of that! suggestions?

na_map?

-a


#4

memray?


#5

removed_email_address@domain.invalid wrote:

um. no. never heard of that! suggestions?

na_map?

amap

num_map

narray_map

array_map

virtual_array


#6

On 2/28/07, John M. removed_email_address@domain.invalid wrote:

Ara, have you considered a name that won’t get confused with the nmap

pnarray (sounds like canary but with a ‘p’)

for persistent narray

TwP


#7

On Thu, 1 Mar 2007, William S. wrote:

memray?

ohhhh. i like.

maybe

memarray

-a


#8

2007/3/1, Joel VanderWerf removed_email_address@domain.invalid:

utility? Someone might want to write a ruby-nmap for port scanning etc.

um. no. never heard of that! suggestions?

na_map?

amap

n-ara-map ?


#9

From: removed_email_address@domain.invalid

On Thu, 1 Mar 2007, William S. wrote:

memray?

or just

marray

Sounds good… “vmarray” is probably too literalist :smiley:

Regards,

Bill


#10

On Thu, 1 Mar 2007, William S. wrote:

memray?

or just

marray

-a


#11

On Thu, 1 Mar 2007, Phrogz wrote:

I remember
The time I knew not what Narrays were
Let the memray live again"

LOL!

-a


#12

On Thu, 2007-03-01 at 13:25 +0900, removed_email_address@domain.invalid wrote:

On Thu, 1 Mar 2007, William S. wrote:

memray?

or just

marray
Well, array -> ary, so:

mary

?

Cheers,
Daniel


#13

On Feb 28, 9:24 pm, removed_email_address@domain.invalid wrote:

On Thu, 1 Mar 2007, William S. wrote:

memray?

ohhhh. i like.

"Meeeemray
All alone, in the moonlight.
I can smile at the old days.
When my tests were not Zen.

I remember
The time I knew not what Narrays were
Let the memray live again"


#14

On Thu, Mar 01, 2007 at 07:53:57PM +0900, Martin DeMello wrote:

mary

mnemmap

do dooo, di do-do…


#15

On Thu, 1 Mar 2007, Martin DeMello wrote:

mary

mnemmap

eminmap ?? :wink:

-a


#16

On 3/1/07, removed_email_address@domain.invalid removed_email_address@domain.invalid wrote:

marray
be kind whenever possible… it is always possible.

  • the dalai lama

eigenmap?


#17

On 3/1/07, Daniel S. removed_email_address@domain.invalid wrote:

mary
mnemmap

martin


#18

On Fri, Mar 02, 2007 at 07:10:29AM +0900, Chris C. wrote:

eigenmap?

One of these days, we’ll have to name something eigeneigen.


#19

On 3/1/07, Chad P. removed_email_address@domain.invalid wrote:

On Fri, Mar 02, 2007 at 07:10:29AM +0900, Chris C. wrote:

eigenmap?

One of these days, we’ll have to name something eigeneigen.

eigeneigen = lambda {|obj| class << obj; class << self; self; end; end}

Should I make a gem?

TwP


#20

On Mar 1, 2007, at 6:26 PM, Chad P. wrote:

On Fri, Mar 02, 2007 at 07:10:29AM +0900, Chris C. wrote:

eigenmap?

One of these days, we’ll have to name something eigeneigen.

Here we go eigen.

Gary W.