mir-cpuid ~master

CPU Characteristics Identification


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

Gitter

Build Status Build Status

Dub version Dub downloads License

CPU Information

void main()
{
    import std.stdio;
    import cpuid.unified;

    enum fmt = "%14s: %s";

    fmt.writefln("cores", cores);
    fmt.writefln("threads", threads);

    fmt.writefln("data caches", dCache.length);
    fmt.writefln("code caches", iCache.length);
    fmt.writefln("unified caches", uCache.length);

    fmt.writefln("data TLBs", dTlb.length);
    fmt.writefln("code TLBs", iTlb.length);
    fmt.writefln("unified TLBs", uTlb.length);
}

This package also can be used as workaround for core.cpuid Issue 16028.

Documentation

http://mir-cpuid.libmir.org

Testing

See all reports.

Run the following command from the project's directory to receive a report about your CPU

dub --single report.d

Please report dub log in a new GitHub issue!

See also output example.

Building a betterC library

BetterC mode works when compiled with LDC only.

dub build --compiler=ldmd2 --build-mode=singleFile --parallel

API Features

  • API was split to unified, target specified, and vendor specified parts.
  • Complex cache topology (number of cores per cache) is supported. This feature is required by ARM CPUs.
  • Translation lookaside buffers are supported. They are used in server and math software, for example cache optimized BLAS requires TLB information.
  • Caches and TLBs are split into three types:
  • Data
  • Instruction (code)
  • Unified (data and code)
  • _cpuid function is available for x86/x86-64 targets.

Implementation Features

  • The library was written completely from scratch.
  • Code is clean and simple.
  • Unions and mir.bitmanip.bitfields are used instead of bit operations.
  • Slim betterC library with extern(C) insterface.

TODO

  • [x] Add information about recent features like AVX2, AVX512F.
  • [ ] Add information about ARM target and ARM vendors.
  • [x] Test a lot of different CPUs.
  • [ ] Extend testing infrastructure.
  • [ ] CPU(package) count identification.
  • [ ] Per CPU(package) CPUID information.
Authors:
  • Ilia Ki
Dependencies:
mir-core
Versions:
1.2.11 2023-Jul-19
1.2.10 2022-Sep-23
1.2.9 2022-Sep-23
1.2.8 2022-Sep-22
1.2.7 2020-Oct-04
Show all 28 versions
Download Stats:
  • 19 downloads today

  • 103 downloads this week

  • 417 downloads this month

  • 190664 downloads total

Score:
4.5
Short URL:
mir-cpuid.dub.pm