[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [asmlib] - Library of optimized subroutines coded in assembly language.



Hey Andreas,

On Thu, Nov 6, 2014 at 12:50 PM, Andreas Tille <andreas@an3as.eu> wrote:
> KMC said:
>
>  Asmlib is essential in performance sense. In KMC there is a lot of work
> with buffers, sometimes these buffers or its part must be copied and asmlib
> provide quicker copying than standard implementation.

I'd keep on asking two things:

  1. How quick means "quicker".  What factor of speed does the usage of
     asmlib gain?

  2. Is there any chance to provide a compile time option

         --without-amslib

     or whatever name which simply uses the native implementation?


Brilliant.
I'll do that.
 
> > In the sense what I wrote above I personally would be happy if KMC
> > authors would use plain C/C++ code and do some serious testing what
> > speed they really gain and how maintainable their code would be.
> >
>
> I will see if I can get some evidence form the KMC authors as to why they
> choose this implementation, rather than native.

Fine.  At least an optional usage should come pretty cheap with some
preprocessor statements.


yeap!
 
> I also thought this task would be much simpler than what it's turning out
> to be.

... as always. ;-)

:)
 

> > Here we are facing another drawback of asmlib usage:  KMC authors are
> > excluding promising architectures like arm64 and ppc64el which might in
> > the not so distant future could become relevant for tasks in
> > bioinformatics.
>
> Very valid point. I will bring this point accross on the next communication.
> I can cc you if you want. If you want to talk to them directly, that could
> also help.

I'd consider it the best idea to CC debian-med list.  I'm definitely no
expert about assembly code and we could easily ask for further help on
other Debian lists if the discussion is archived online.

Sounds good.
Will CC debian-med on the next communication.
 

BTW, I had a *very* short sneak into the code and by doing one pretty simple
experiment with

kmc-2.0/kmer_counter $ diff -u mem_disk_file.cpp.orig mem_disk_file.cpp
--- mem_disk_file.cpp.orig      2014-10-23 16:22:21.000000000 +0200
+++ mem_disk_file.cpp   2014-11-06 13:47:09.834995768 +0100
@@ -10,7 +10,10 @@
 */

 #include "mem_disk_file.h"
-#include "libs/asmlib.h"
+
+// #include "libs/asmlib.h"
+#define A_memcpy memcpy
+#define nullptr  NULL

 //----------------------------------------------------------------------------------
 // Constructor


The compiler revealed only issues which are probably caused by something
else than asmlib.  So wrapping this into #ifdef statements could help
here - but please consider this as the most simple experiment to look
how our chances to avoid asmlib are and not as real code.


I understand.
We had a chat around the office and were thinking of building kmc without using asmlib to understand the trade off.
But also here we put this as plan b for now.


Thanks for having a look at this.

Regards,

Jorge


Reply to: