小编mar*_*arc的帖子

在旧的Linux内核上安装perf

我在我的服务器上运行linux 2.6.18并想使用'perf'subytem.这个内核版本没有perf.所以我下载了最新版本的linux 2.6.38并遍历到/ tools/perf /并安装了它.

从命令行,我可以列出可用的性能计数器.但是当我尝试获得一个事件的功能时,它就会出现

"错误:open_counter返回38(功能未实现)./ bin/dmesg可能提供其他信息.

致命:并非所有事件都可以打开."

旧的Linux内核是否支持perf.鉴于我无法在服务器上更新内核版本的限制,请建议我如何让它运行.

linux kernel performancecounter

6
推荐指数
1
解决办法
1688
查看次数

如何在bash中选择值的子集

我有一个文件说input.dat像这样

column1 column2
 0       0
 1.3     1.6
 1.8     2.1
 2.0      
 2.6
Run Code Online (Sandbox Code Playgroud)

我需要从第1列中提取最接近第2列的值的子集,以便两列中的条目总数相等.在这个例子中,我需要获得输出

column1 column2
0      0 
1.8    1.6
2.0    2.1
Run Code Online (Sandbox Code Playgroud)

我怎么能得到这个?

bash subset

3
推荐指数
1
解决办法
322
查看次数

使用openmp并行执行功能

我有几个独立功能的一系列调用。

func1(arg);
func2(arg);
func3(arg);
Run Code Online (Sandbox Code Playgroud)

我不想并行执行它们,而是想并行执行它们。我目前正在使用

#pragma omp parallel
{
func1(arg);
func2(arg);
func3(arg)
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试的其他方式是使用切换用例,然后并行执行此操作以将任务拆分为不同的线程,例如

function(arg, value)
{
 switch(value)
 {
  case 1: // code of func1
  case 2: // code of func2
  case 3 :// code of func3
 }
}

#pragma omp parallel for
for(j=0; j<3; j++)
    function(arg, j);
Run Code Online (Sandbox Code Playgroud)

我的问题是,这两种方法都不比顺序调用函数更好。如何并行调用这些函数。

谢谢,K

openmp

3
推荐指数
1
解决办法
1103
查看次数

如何舍入值而不是单位步骤

我试图使用awk在bash中舍入几个小数值.例如:如果值为6.79

awk 'BEGIN {rounded = sprintf("%.0f", 6.79); print rounded }'
Run Code Online (Sandbox Code Playgroud)

这让我回报7.

有没有办法我可以舍入到最接近的整数(1,2,3,..),但步骤为0.5(0,0.5,1,1.5,2,2.5 ......)

任何在python或perl中工作的替代方法也都可以.python中的当前方式

python -c "from math import ceil; print round(6.79)"
Run Code Online (Sandbox Code Playgroud)

也返回7.0

python bash perl rounding

2
推荐指数
1
解决办法
330
查看次数

如何更新C中的extern变量

我有这些文件

test1.h

extern int value;
void inc_value();
int print_value();
Run Code Online (Sandbox Code Playgroud)

test1.c

#include "test1.h"

int value=0;
void inc_value() 
{

printf("inc value from test3.c = %d\n", value++); 
}

int print_value() 
{

    printf(" value in test1.c  = %d\n", value);
    return value;
}
Run Code Online (Sandbox Code Playgroud)

test3.c

# include "test1.h"

main()
{

inc_value();

}  
Run Code Online (Sandbox Code Playgroud)

test4.c

# include <stdio.h>
#include "test1.h"

main()

{
    printf("value from test4 = %d\n", print_value());
}  
Run Code Online (Sandbox Code Playgroud)

我正在从test3.c更新变量"value"并尝试从test4.c中读取它.但是test3.c无法更新test1.h中声明的并在test1.c中定义的"value"

我在这里错过了什么...

c global-variables extern

1
推荐指数
1
解决办法
2992
查看次数

从C文件创建库时出错

我试图从C++代码调用sample_c.c中定义的C函数(带有sample_c.h中的函数声明).我在sample_c.h中使用了这个声明

extern "C" void print_c(void);
Run Code Online (Sandbox Code Playgroud)

和sample_c.c中的这个定义

extern void print_c(void) {....}
Run Code Online (Sandbox Code Playgroud)

并尝试生成我想与我的cpp代码链接的lib.我试图用这个C代码生成lib时遇到错误.

gcc -c sample_c.c
error: expected identifier or ‘(’ before string constant
Run Code Online (Sandbox Code Playgroud)

我无法纠正这个问题.有人可以建议我哪里出错了.

c c++

1
推荐指数
1
解决办法
39
查看次数