我正在使用gcc和OpenMPI.通常我使用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)?
这是一个非常简单的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().
谢谢.
每隔一个半小时我就会收到来自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) 当我编译下面的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) 计算机程序的结构和解释(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中:
通过指向侧面或两个项目之间非常清楚地指向整个盒子.
我是否错误地理解了盒子和指针图或其他完全不同的东西?
我已经从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 system和target images?
从生成的所有图像中,我如何知道应该使用哪一个(例如,WRT54GL不在上面的列表中;如何判断是否可以使用" openwrt-wrt54g-jffs2.bin"?
我可以使用什么标准来决定是否使用jffs或squashfs图像?
谢谢!
有没有办法从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这样的东西,但我想知道是否还有我可以使用的东西.
我搜索过,但只能找到面向行的方法.
谢谢!
我一直在编写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)
是否有某种技术使用这些模式?
谢谢!
delayScheme中返回的对象是"承诺",但承诺不被视为类型(因此没有promise?过程,并且它未在R5RS或R6RS中列为类型).
有这么强烈的共鸣吗?例如(if (promise? x) (force x) x),对我来说,做一些事情似乎很自然.(我看到一些实现会让我强迫非承诺,而其他实现则不会).此外,如果我可以存储一个变量并传递它,我觉得它应该有一个类型.
我正在寻找Elgamal加密算法的免费实现.据我所知,即使它是一个广为人知的算法,似乎只有两个免费的实现:
OpenSSL,beecrypt,Nettle没有实现Elgamal.
列表中是否还缺少其他免费且经过良好测试的Elgamal实现?
scheme ×3
c ×2
lisp ×2
compilation ×1
elgamal ×1
facebook ×1
gcc ×1
macros ×1
open-source ×1
openmpi ×1
openwrt ×1
python ×1
sicp ×1
syntax-rules ×1
warnings ×1
web-crawler ×1
while-loop ×1