小编Jay*_*Jay的帖子

没有mpirun运行OpenMPI程序

我正在使用gccOpenMPI.通常我使用mpirun包装器运行MPI程序- 例如,

mpirun -np 4 myprogram
Run Code Online (Sandbox Code Playgroud)

开始4个过程.

但是,我想知道是否可以轻松生成一个自动执行该操作的二进制文件(可能使用-np 4上面的一些硬编码选项).

我知道我可以编写一个调用我的程序的C包装器,如下所示:

#include <stdlib.h>
#include <unistd.h>

int main() {
        char *options[] = { "mpirun", "-np", "4", "myprogram" };

        execvp("mpirun", options);
        /* Ignoring return value to keep example simple */

        return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

但这似乎有点笨拙,我最终得到两个可执行文件,而不是一个.

我试图明确地链接MPI库,比如

gcc -o myprogram -I/usr/lib/openmpi/include/ \
    -lmpi -L/usr/lib/openmpi/lib/ myprogram.c
Run Code Online (Sandbox Code Playgroud)

但是当我运行生成的可执行文件时,MPI_Comm_size将0设置为组大小(就像我-np 0作为参数一样).我可以使用环境变量或其他东西来传递组大小吗?或者,是否有另一种方法来构建单可执行MPI程序(使用Linux和gcc)?

compilation openmpi

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

在C中while循环中的后递增

这是一个非常简单的C程序:

int main()
{
    int i = 0;
    while(i++ < 10)
         printf("%d\n", i);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

1
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)

为什么0不打印第一个数字?如果我更换了i++,++i我会得到这个:

1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

对于两者而言i++,++i第一个数字是1.
我期望0在while循环中看到for post增量while().
谢谢.

c while-loop pre-increment post-increment

10
推荐指数
2
解决办法
2万
查看次数

为什么Facebook充斥我的网站?

每隔一个半小时我就会收到来自http://www.facebook.com/externalhit_uatext.php的大量请求.

我知道这些请求应该是什么意思,但这种行为很奇怪.

定期(大约每1.5小时),我每分钟都会收到十几个这样的请求到我网站的旧帖子 - 这让我头疼,因为他们没有缓存......

有谁知道这可能是什么?在什么情况下facebook会这样做?

狮子座,,

记录样本:

66.220.158.251, 200.147.35.64 (5715) - - [19/Mar/2012:09:44:40 -0300] "GET /2009/10/catraca-ensina-como-fazer-um-bom-negocio-no-sebo/ HTTP/1.0" 200 23538 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
69.171.229.251, 200.147.96.73 (590684) - - [19/Mar/2012:09:45:08 -0300] "GET /2012/02/ganhador-da-promocao-comece-2012-discotecando/ HTTP/1.0" 200 22716 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
69.171.242.248, 200.147.35.65 (661588) - - [19/Mar/2012:09:45:28 -0300] "GET /2012/01/elza-soares-e-trio-no-palco-do-auditorio-ibirapuera/ HTTP/1.0" 200 24699 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
66.220.149.248, 200.147.35.65 (5367) - - [19/Mar/2012:09:45:43 -0300] "GET /2011/03/projeto-coisa-fina-leva-musica-instrumental-ao-ccsp/ HTTP/1.0" 200 22555 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
Run Code Online (Sandbox Code Playgroud)

facebook web-crawler

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

'noreturn'功能确实会回归

当我编译下面的C程序时,我得到了这个警告: ‘noreturn’ function does return.这是功能:

void hello(void){
  int i;
  i=1;
 }
Run Code Online (Sandbox Code Playgroud)

为什么会这样?所有对此功能的调用都是hello();

编辑:完整的错误输出:

 home.c: In function ‘hello’:
 hhme.c:838:7: error: variable ‘i’ set but not used [-Werror=unused-but-set-variable]
 home.c:840:1: error: ‘noreturn’ function does return [-Werror]
 cc1: all warnings being treated as errors
 make: *** [home.o] Error 1
Run Code Online (Sandbox Code Playgroud)

c gcc warnings compiler-errors compiler-warnings

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

SICP中的盒子和指针图表不一致

计算机程序的结构和解释(SICP)的图3.16和3.17中的方框图和指针图看起来并不相同(纯粹是关于价值,而不是记忆),尽管它们是这样的.("当被认为是一个列表,z1并且z2都代表"相同"列表时,((a b) a b))",第258页)

(define x (list 'a 'b))
(define z1 (cons x x))
(define z2 (cons (list 'a 'b) (list 'a 'b)))
Run Code Online (Sandbox Code Playgroud)

SICP像这样绘制对z1:

在此输入图像描述

和z2像这样:

在此输入图像描述

这对中的箭头z1似乎都没有指向整个对,x.他们甚至没有指出相同的事情,尽管两者都收到了相同的(记忆和价值)对.我会将第一个图表评估为(a b),而第二个图表评估为((a b) a b)

我猜可能每个箭头实际上指向整个对x,但是在第98页的图2.3中:

在此输入图像描述

通过指向侧面或两个项目之间非常清楚地指向整个盒子.

我是否错误地理解了盒子和指针图或其他完全不同的东西?

lisp scheme sicp

8
推荐指数
2
解决办法
974
查看次数

如何在OpenWRT buildroot中选择目标和其他功能?

我已经从subversion存储库成功克隆了OpenWRT buildroot,我一直用它来构建我在Qemu上运行的图像.我可以在Qemu中运行图像就好了.

现在我试图为路由器构建一个图像 - 一个Linksys WRT54GL - 但我在文档中找不到我应该如何选择目标.

这些是正确的选择:

  • 我选择了Broadcom BCM947xx/953xx

  • 在"目标图像"中,我选择了jffs2和squashfs

然后,编译完成后,我去了目录bin/brcm47xx,发现了大量的图片:

openwrt-brcm47xx-jffs2-128k.trx
openwrt-brcm47xx-jffs2-64k.trx
openwrt-brcm47xx-squashfs.trx
.
.
.
openwrt-wrt54g3g-em-jffs2.bin
openwrt-wrt54g3g-em-squashfs.bin
openwrt-wrt54g3g-jffs2.bin
openwrt-wrt54g3g-squashfs.bin
openwrt-wrt54g3gv2-vf-jffs2.bin
openwrt-wrt54g3gv2-vf-jffs2.noheader.bin
openwrt-wrt54g3gv2-vf-squashfs.bin
openwrt-wrt54g3gv2-vf-squashfs.noheader.bin
openwrt-wrt54g-jffs2.bin
openwrt-wrt54gs-jffs2.bin
openwrt-wrt54g-squashfs.bin
openwrt-wrt54gs-squashfs.bin
openwrt-wrt54gs_v4-jffs2.bin
openwrt-wrt54gs_v4-squashfs.bin
openwrt-wrt610n_v1-jffs2.bin
openwrt-wrt610n_v1-squashfs.bin
openwrt-wrtsl54gs-jffs2.bin
openwrt-wrtsl54gs-squashfs.bin
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 我怎么知道该怎么选择target systemtarget images

  • 从生成的所有图像中,我如何知道应该使用哪一个(例如,WRT54GL不在上面的列表中;如何判断是否可以使用" openwrt-wrt54g-jffs2.bin"?

  • 我可以使用什么标准来决定是否使用jffs或squashfs图像?

谢谢!

openwrt

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

如何从Python中的文件中获取下一个标记(int,float或string)?

有没有办法从Python中的文件中获取下一个标记,例如Scanner类在Java中?

File file = new File("something");
Scanner myinput = new Scanner(file);
double a = myinput.nextDouble();
String s = myinput.next();
Run Code Online (Sandbox Code Playgroud)

我想忽略空格,制表符,换行符,然后从文件中获取下一个int/float/word.我知道我可以阅读线条并自己构建像Scanner这样的东西,但我想知道是否还有我可以使用的东西.

我搜索过,但只能找到面向行的方法.

谢谢!

python

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

如何在语法规则中使用矢量模式?

我一直在编写Common Lisp宏,所以Scheme的R5Rs宏对我来说有点不自然.我我有了这个想法,除了我不明白如何在语法规则中使用矢量模式:

(define-syntax mac
  (syntax-rules ()
    ((mac #(a b c d))
     (let ()
       (display a)
       (newline)
       (display d)
       (newline)))))

(expand '(mac #(1 2 3 4)))  ;; Chicken's expand-full extension shows macroexpansion

=> (let746 () (display747 1) (newline748) (display747 4) (newline748))
Run Code Online (Sandbox Code Playgroud)

我不知道我是如何使用一个需要将其参数写成向量的宏:

(mac #(1 2 3 4))
=>
1
4
Run Code Online (Sandbox Code Playgroud)

是否有某种技术使用这些模式?

谢谢!

lisp macros scheme syntax-rules define-syntax

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

为什么不承诺Scheme中的数据类型?

delayScheme中返回的对象是"承诺",但承诺不被视为类型(因此没有promise?过程,并且它未在R5RS或R6RS中列为类型).

有这么强烈的共鸣吗?例如(if (promise? x) (force x) x),对我来说,做一些事情似乎很自然.(我看到一些实现会让我强迫非承诺,而其他实现则不会).此外,如果我可以存储一个变量并传递它,我觉得它应该有一个类型.

scheme lazy-evaluation

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

免费实施Elgamal

我正在寻找Elgamal加密算法的免费实现.据我所知,即使它是一个广为人知的算法,似乎只有两个免费的实现:

OpenSSL,beecrypt,Nettle没有实现Elgamal.

列表中是否还缺少其他免费且经过良好测试的Elgamal实现?

open-source public-key-encryption elgamal

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