当前位置: 首页 > 面试题库 >

如何在每个CPU上运行代码

郗唯
2023-03-14
问题内容

我正在尝试在运行mako内核的Nexus 4的所有cpus上设置性能监视器用户模式启用寄存器。

现在,我在可加载模块中设置寄存器:

    void enable_registers(void* info)
    {
        unsigned int set = 1;
        /* enable user-mode access to the performance counter*/
        asm volatile ("mcr p15,  0, %0, c9,  c14, 0\n\t" : : "r" (set));
    }

    int init_module(void)
    {
       online = num_online_cpus();
       possible = num_possible_cpus();
       present = num_present_cpus();
       printk (KERN_INFO "Online Cpus=%d\nPossible Cpus=%d\nPresent Cpus=%d\n", online, possible, present);
       on_each_cpu(enable_registers , NULL, 1);
       return 0;
    }

问题是on_each_cpu仅在Online cpus上运行该功能,如printk语句所示:

Online Cpus=1
Possible Cpus=4
Present Cpus=4

当我调用on_each_cpu时,只有四个在线。所以我的问题是,如何强制cpu联机,或者如何强制某个cpu执行代码?谢谢


问题答案:

你并不需要运行在每个CPU的代码 现在 。您需要做的是安排以便离线cpus重新联机时,您的代码能够执行并启用对PMU的访问。

实现该目标的一种方法是使用CPU热插拔通知程序。



 类似资料:
  • 我已经在Ubuntu 14.04上安装了tensorflow的GPU版本。 我在一个GPU服务器上,在那里Tenorflow可以访问可用的GPU。 我想在CPU上运行tenorflow。 通常我可以使用env CUDA\u VISIBLE\u DEVICES=0在0号GPU上运行。 如何在CPU之间进行选择? 我对用tf重写代码不感兴趣。设备(“/cpu:0”):

  • 问题内容: 我真的很喜欢使用sublime text 2编写Python代码,但是,每当我尝试运行具有输入的脚本时,sublime text控制台都会报告错误。因此,我决定尝试,但是我已经搜索了几个小时,却没有找到如何运行Python代码的方法……你们能帮我吗? 我想像使用sublime文本控制台()一样运行代码。我真正想知道的是是否有一种方法可以做到这一点。 先感谢您! 问题答案: 来自http

  • 如果我不控制代码每秒执行的次数,当我添加一行时,程序会发生变化,我必须再次调整常量。(谷歌翻译)我的代码失控了:

  • 我有一个C++程序,我想编译成汇编,然后汇编器会把它编译成机器代码。 现在,据我所知,为了将汇编代码转换为机器代码,汇编程序需要某种表来映射汇编指令到实际的机器指令。 汇编程序将使用哪个表?我的C++程序是否有可能不能在所有CPU上运行,因为CPU使用不同的表,这意味着相同的机器代码在不同的CPU上会做不同的事情?

  • 我正在尝试让TensorFlow的函数在我的GPU上运行;假设这个TensorFlow源页面有一个函数,该函数在CPU和GPU上运行时比较的输出,那么这似乎是可能的。但是,在使用代码进行测试时: 我得到了错误: 谢了!

  • 问题内容: 是否可以让linux库(例如“ libloader.so”)加载另一个库来解析任何外部符号? 我有一堆代码,这些代码有条件地被编译以支持SIMD级别(SSE2,AVX,AVX2)。如果构建平台与运行时平台相同,则此方法运行良好。但这阻碍了不同处理器代之间的重用。 一种想法是让哪个调用链接不直接实现。而是根据cpuflags 从另一个已加载的库(例如,等等)中解析(绑定?)该符号。 需要