Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

MCSTL on MSVC

Edgar
2011-03-02
2013-04-25
  • Edgar
    Edgar
    2011-03-02

    Hi,

    is there a chance to partially compile MCSTL on MSVC (especially multiway_merge)?
    If not - why? What are the main difficulties regarding OMP. Can you give me some light on that?

    Regards
    Edgar

     
  • The main problems consisted in transparently integrating the library into the MSVC STL.  Compiling single routines should work with MSVC.  The OpenMP functionality should also be compatible, I just don't know about the performance.  So give it a try.

    Johannes

     
  • Edgar
    Edgar
    2011-03-06

    Thank you for clarification.
    So MCSTL modifies the STL provided by the GNU toolchain.
    GPL prohibits use of MCSTL in commercial projects!
    Therefore commercial projects won't benefit from the mc optimizations in the STXXL library.
    As you stated in your article about asynchronous pipelining io processing becomes
    more CPU bound with MC-CPU's and larger disks/ssd's.  My naive approach e.g. using
    a classical mt-quicksort in the stream sort already shows a significant performance boost
    compared to the sequential stl variation.
    So it would be -:) if MCSTL would support MSVC too or provides a basic interface in a
    separate non-std namespace.

    Edgar

     
  • The libstdc++ parallel mode integrates closely with the GCC STL (libstdc++), the MCSTL (former version) does not, and is also dual-licensed under the permissive Boost license.  Futhermore, for the libstdc++, there exists a special "runtime exception", i. e. commercial software does not have to be GPL just because of including (compiled) libstdc++ code.

    http://www.cs.huji.ac.il/~etsman/Docs/gcc-3.4-base/libstdc++/html/17_intro/license.html

    Johannes

     
  • Edgar
    Edgar
    2011-03-07

    So what would you suggest how to efficiently integrate stxxl with mc concurrency support for MSVC projects?
    Edgar

     
  • I don't know.  The options are:

    1.  Convince MS of providing a parallel STL.
    2.  Take the MCSTL / parallel mode code and port it (partly) to MSVC (find out about possible copyleft issues for parallel mode in detail).
    3.  Take some other code/library (and port it to MSVC).
    4.  Write your own parallel routines.

    Johannes

     
  • Edgar
    Edgar
    2011-03-08

    to:

    1.  With VC10 MS starts introducing a new concurrency model (namespace Concurrency) and a Parallel Patterns Library (PPL.h). So far I haven't  try it. On the first sight it is very limited i.e. it provides parallel_for and parallel_for_each. Perhaps PPL.h will be extended in the future i.e. supporting other algorithms like parallel_sort … (VC15?).  Currently it is not an option for me.

    2. Best option I think.

    3. ?

    4. That's not an easy task and seems to be a lengthy one too -:)

    Thanks
    Edgar