psteinb / compass

drop-in header-only C++ library to detect hardware capabilities at runtime and at compiletime
BSD 3-Clause "New" or "Revised" License
17 stars 0 forks source link

Other "compass"-like libraries #5

Open tdd11235813 opened 7 years ago

tdd11235813 commented 7 years ago

There are other libraries around which try to provide a generic hardware discovering. What is done there and what can be re-used in compass? The ideal case would be to gather the authors and merge the work into compass. I will try to list them in this issue...

tdd11235813 commented 7 years ago

DASH

DASH DASH, the C++ Template Library for Distributed Data Structures with Support for Hierarchical Locality for HPC and Data-Driven Science http://www.dash-project.org/ Readme

Choosing a DASH runtime (DART)
DASH provides the following variants:
    MPI: the Message Passing Interface
    CUDA: nNvidia’s Compute Unified Device Architecture (contributor distribution only)
    SHMEM: Symmetric Hierarchical Memory access (contributor distribution only)

DASH already implements a hardware information API with hierarchical levels (nested "domains").

Backend

Conclusion

psteinb commented 7 years ago

that is an effort highly appreciated! thanks a mllion.

tdd11235813 commented 7 years ago

talked with a fellow from our institute, he also wants a hardware info tool, but focus is quite I/O low-level. nevertheless, there are common features and we should talk together, maybe at a GCOE meeting. but first, we should gather more information to find must-haves, nice-to-have and must-not-haves :)

tdd11235813 commented 7 years ago

hwloc

hwloc (Open-MPI)

... provides a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern architectures,

Supported OS

 hwloc supports the following operating systems:
    Linux (including old kernels not having sysfs topology information, with knowledge of cgroups, offline CPUs, ScaleMP vSMP, and NumaScale NumaConnect) on all supported hardware, including Intel Xeon Phi.
    Solaris, AIX, HP-UX and OSF/1 (a.k.a., Tru64)
    NetBSD, FreeBSD and kFreeBSD/GNU
    Darwin / OS X
    Microsoft Windows (either using MinGW or a native Visual Studio solution)
    IBM BlueGene/Q Compute Node Kernel (CNK)

Conclusion

psteinb commented 7 years ago

yes and no, is hwloc working on Windows?

tdd11235813 commented 7 years ago

yes it does, see updated hwloc post. We still have to check features which are not covered by hwloc et. al.

tdd11235813 commented 7 years ago

Boost::Predef

Boost::Predef contains system information which can be retrieved by the compiler.

provides information about:

First released in Boost 1.55.0.

Conclusion

psteinb commented 6 years ago

and of course we should not forget cpu_features