小编bob*_*nto的帖子

Makefile Puzzle:多种编程语言

我有一个简单的测试Makefile:

hello: hello.o
.SUFFIXES: .c .f90 .o
.f90.o:
    pgf90 -c -o $@ $<
.c.o:
    cc -c -o $@ $<
Run Code Online (Sandbox Code Playgroud)

您不必告诉我它在同一目录中有foo.c和foo.f90会造成混淆.我永远不会真的这样做.我只是想知道Make如何处理一些先例.所以,当我只发出make命令时,make运行:

pgf90 -c -o hello.o hello.f90
cc hello.o -o hello
Run Code Online (Sandbox Code Playgroud)

当然,"cc"链接失败,因为"cc"无法链接FORTRAN对象以生成可执行文件.精细.但我的问题是:我已经尝试了一些我能想到的阻止make使用pgf90命令作为其第一个编译命令,并选择cc命令.我已经改变了后缀规则的顺序.我在.SUFFIXES语句中更改了后缀的顺序.唯一可行的方法是完全不使用.f90后缀规则.为什么会这样,可以改变吗?谢谢.(如果不言而喻,我的目录中确实有简单的hello.f90和hello.c源文件,并且编译和执行都很好.)

更新:使用-d进行运行.相关输出(AFAICT)如下所示:

Considering target file 'hello.o'.
 File 'hello.o' does not exist.
 Looking for an implicit rule for 'hello.o'.
 Trying pattern rule with stem 'hello'.
 Trying implicit prerequisite 'hello.c'.
Run Code Online (Sandbox Code Playgroud)

没有给"隐含的先决条件'hello.c'留下深刻的印象",make会在它之前尝试一大堆其他的东西

 Found an implicit rule for 'hello.o'.
  Considering target file 'hello.f90'.
   Looking for an implicit rule with stem 'hello.f90'
    .
    .
    .
   No …
Run Code Online (Sandbox Code Playgroud)

c makefile fortran90

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

numpy数组乘法与任意维度的数组

我有一个numpy数组A,它有形状(10,).

我也有,作为此时的,具有形状(10,3,5)一个numpy的数组B中.我想在这两者之间进行乘法以得到C,使得C [0,:,] = A [0]*B [0,:,],C [1] = A [1]*B [1 ,:,]]等

我不想用循环来解决这个问题,其中一个原因是事物的美学,另一个原因是这个代码需要非常通用.我希望用户能够输入几乎任何形状的任何B,只要前导尺寸为10.例如,我希望用户能够放入形状B(10,4).

那么:如何使用numpy实现这种乘法?谢谢.

ADDENDUM:有人问过例子.会变小.假设A是numpy数组[1,2,3],B是numpy数组[[1,2],[4,5],[7,8]].我希望两者的乘法得到[[1,2],[8,10],[21,24]]....

>>> a
array([1, 2, 3])
>>> b
array([[1, 2],
       [4, 5],
       [7, 8]])
>>> #result
>>> c
array([[ 1,  2],
       [ 8, 10],
       [21, 24]])
>>>
Run Code Online (Sandbox Code Playgroud)

python arrays numpy multiplication

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

gfortran中为零

有没有办法在gfortran强制下溢到下溢?

我不敢相信这是第一次有人问这个,但我找不到任何东西.Mea culpa如果这是重复的话.

fortran gfortran underflow

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

Linux - 如何从一个文件中剪切列并在单行命令中粘贴到另一个文件中?

我想使用linux cut命令从文件中提取列,然后使用paste命令将同一列插入第二个文件.我可以通过保存剪切命令的结果,然后在其上运行粘贴和第二个文件来完成此操作.但在我看来,必须有一些单行程,这不涉及保存中间结果.谁知道那是什么?谢谢.

例如,第一个文件可能看起来像

date        weight
1-1-2010    weight1
1-2-2010    weight2
1-3-2010    weight3
Run Code Online (Sandbox Code Playgroud)

而第二个可能看起来像

date        blood_press
1-1-2010    bp1
1-2-2010    bp2
1-3-2010    bp3
Run Code Online (Sandbox Code Playgroud)

我希望输出像

date       weight     blood_press
1-1-2010   weight1    bp1
1-2-2010   weight2    bp2
1-3-2010   weight3    bp3
Run Code Online (Sandbox Code Playgroud)

不用说,数据比这更大,更复杂.但是这给出了我需要做的事情的想法.再次感谢.

PS由于原因太详细,"join"命令不起作用.

linux cut paste

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

mpi_file_write与mpi_file_write_all有何不同?

这几乎是个问题.我的意思是,我知道mpi_file_write_all是"集体"版本,但我认为mpi_file_write将会被几个进程同时调用,那么它们的操作实际差异是什么?谢谢.

io mpi

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

git -- 如何从未完成的合并中恢复

我启动了合并工具...

> git mergetool
Run Code Online (Sandbox Code Playgroud)

它说了类似的话......

merge tool candidates: blah blah blah
Merging:
file1.c
Run Code Online (Sandbox Code Playgroud)

然后我想,“你知道,我还没准备好。” 不知道有什么干净的方法可以关闭它,我按了 ctrl-C。现在我想检查另一个分支,但我不能......

> git checkout other_branch
error: path 'file1.c' is unmerged
Run Code Online (Sandbox Code Playgroud)

有什么方法可以从中恢复吗?我强调在运行 mergetool 时我没有做任何实际的更改。

git merge mergetool

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

使用MPI发送size_t类型数据

在MPI中发送size_t类型号码最安全的方法是什么?举例来说,我相信它是不是安全的,盲目地将它作为MPI_INT.MPI_LONG会一直有效吗?

c size-t mpi

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

Git:将更改应用于两个分支

我的存储库中有两个分支(出于此问题的目的):masterperformance_testing。我已收到该master分支机构的更改。我也需要把它们放进去performance_testing。我需要保持两个分支存在并分开,因此合并是不合适的。我想我可以在一个分支中引入更改并提交,然后在另一分支中执行相同的操作。但这似乎容易出错,我认为git可以通过某种方式更直接地做到这一点。我该怎么做呢?

git branch git-branch

4
推荐指数
2
解决办法
1322
查看次数

git apply 不对文件做任何更改

我必须对我的 repo 应用补丁并且正在运行

git apply --directory=$PWD xxxxx.patch
Run Code Online (Sandbox Code Playgroud)

由于我不会深入的原因,我不能git am在这个实例中使用,我需要使用目录标志。

git 告诉我:

$> git apply --directory=$PWD xxxxx.patch
code1/xxxxx.patch:337: trailing whitespace.
         < one partial line of code >
warning: 1 line adds whitespace errors.
Run Code Online (Sandbox Code Playgroud)

我已经读到空白警告并不严重,不应阻止 git 应用补丁。但是,无论什么原因,git 都没有应用补丁。存储库中的当前文件均未更改。知道该怎么做吗?

git patch

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

Mac OSX 应该有一个“malloc.h”文件吗?

客户的代码期望malloc.h在“通常的可疑”位置之一中找到包含文件。在我的Mac,AFAICT,没有malloc.h,至少没有在任何地方,你会期望找到它,例如/usr/include/usr/local/include/opt/local/include。由于malloc()通常在 中定义stdlib.h,并且由于代码无论如何都包含 stdlib.h,因此我能够通过注释掉malloc.h. 我正在用gcc.

但有两个问题:我的 gcc 不知何故搞砸了?那个文件应该在那里?此外,代码炸弹几乎立即出现了一个我还无法追踪到的段错误。这可能是使用错误的后果malloc()吗?

c macos include-path

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