From: Tim H. <tim...@ie...> - 2006-10-05 16:52:52
|
Ivan Vilata i Balaguer wrote: > En/na Tim Hochberg ha escrit:: > > >> Ivan Vilata i Balaguer wrote: >> >>> It seemed that discontiguous arrays worked OK in Numexpr since r1977 or >>> so, but I have come across some alignment or striding problems which can >>> be seen with the following code:: >>> >> I looked at this just a little bit and clearly this bit from interp_body >> cannot work in the presence of recor arrays: >> >> //.... >> intp sf1 = sb1 / sizeof(double); \ >> //... >> #define f1 ((double *)x1)[j*sf1] >> >> There are clearly some assumptions that sb1 is evenly divisible by >> sizeof(double). [...] >> > > I noticed something strange in those statements when implementing > support for strings, and I must confess that I didn't grasp their > meaning, so I implemented it a little differently for strings:: > > #define s1 ((char *)x1 + j*params.memsteps[arg1]) > I believe that these approaches are the same as long as memstep is a multiple of itemsize. I chose the indexing rather than the pointer foo version[1] because there's a rumor that compilers will sometimes generate faster code for it. One additional potential slowdown in the above is the compiler may not be able to tell that memsteps[arg1]) is constant and may do that lookup repeatedly. Or maybe not, I try not to second guess compilers too much. -tim [1] I'm pretty sure I used the pointer foo version at least for a while. and may have gone back and forth several times. > That seemed to work, but it might not be right (though I tested a bit), > and certainly it may not be efficient enough. Here you have my previous > patches if you want to have a look at how I (try to) do it: > > 1.http://www.mail-archive.com/numpy-discussion%40lists.sourceforge.net/msg01551.html > 2.http://www.mail-archive.com/numpy-discussion%40lists.sourceforge.net/msg02261.html > 3.http://www.mail-archive.com/numpy-discussion%40lists.sourceforge.net/msg02644.html > > :: > > Ivan Vilata i Balaguer >qo< http://www.carabos.com/ > Cárabos Coop. V. V V Enjoy Data > "" > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > ------------------------------------------------------------------------ > > _______________________________________________ > Numpy-discussion mailing list > Num...@li... > https://lists.sourceforge.net/lists/listinfo/numpy-discussion > |