代码之家  ›  专栏  ›  技术社区  ›  Dervin Thunk

如何找到有关CPU并行架构的信息?

  •  5
  • Dervin Thunk  · 技术社区  · 14 年前

    我是英特尔(R)酷睿(TM)2双核处理器T6600@2.20GHz cat /proc/cpuinfo ),但我需要尽可能深入研究。用于并行编程的体系结构(可能使用 pthreads ). 有什么线索吗?

    3 回复  |  直到 11 年前
        1
  •  10
  •   Alex Brown    14 年前

    sys文件系统知道 全部的 关于这个:

    $ ls /sys/devices/system/cpu 
    cpu0  cpu2  cpuidle  possible  sched_mc_power_savings
    cpu1  cpu3  online   present
    
    $ ls /sys/devices/system/cpu/cpu0/topology/
    core_id        core_siblings_list   thread_siblings
    core_siblings  physical_package_id  thread_siblings_list
    

    这是 documentation

    使用这个文件系统,您可以了解您有多少个CPU,它们有多少线程,哪些CPU位于哪个其他CPU的旁边,以及哪些CPU与哪个其他CPU共享缓存。

    例如-Q:cpu0与哪个cpu共享二级缓存?

    $ cat /sys/devices/system/cpu/cpu0/cache/index2/{type,level,shared_cpu_list}
    Unified
    2
    0-1
    

    答:它与cpu1(及其自身)共享统一的二级缓存。

    另一个例子:Q:哪个cpu与cpu0在同一物理包中(在更大的机器上):

    cat /sys/devices/system/cpu/cpu0/topology/core_siblings
    00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000055
    

    A:核心0、2、4和6。(取自上面的位模式,lsb=cpu0)


    不是所有的linux系统都有sys文件系统,而且它并不总是在根目录下。(可能在过程/系统中?)。线程同级(位模式)列表表单并不总是可用,但线程同级(位模式)列表是可用的。

        2
  •  2
  •   Andre Holzner    12 年前

    我发现 lstopo hwloc project 很有用。这将为您提供图形输出 (基于 /proc /sys 如亚历克斯·布朗所述) 系统的拓扑结构(请参阅他们的网页以获取示例)。从图形 输出您可以很容易地看到

    • 如果存在超线程内核
    • 同一个物理核上对应的cpu号是不同的超线程
    • 使用了多少个CPU插槽
    • 哪些核心共享L3缓存
    • 如果主内存在CPU插槽之间是公共的,或者您是否在NUMA系统上

    等。

    如果需要以编程方式访问此信息,有一些文档说明如何 hwloc 可以用作库。

        3
  •  -2
  •   Developer    14 年前

    为了获得关于处理器的最低细节,系统工程师可以运行与CPUZ相当的程序,并在法律允许的情况下,将处理器安装和使用的家庭或办公室地址降到最低级别。通常不允许软件工程师和开发人员知道这种详细程度,但我可以告诉您,体系结构可以是这样一种类型:处理器生成或实例提供接近x1.75处理等效的虚拟第二处理器,或者在同一个模具上有真实的物理多核,使用技术和控制方法作为先前设计实现的增强。核心处理器有一个供系统程序员、应用程序开发人员使用的接口,这种访问模式是英特尔的期望,可以从他们那里获得详细信息。