小编chr*_*hvz的帖子

名为connect()的函数如何阻止MPI C程序运行?

我正在使用MPI编写一个项目用于并行编程课程,并决定命名我的一个函数connect().但每当我尝试使用mpirun该程序时(在Linux和OS X上使用最新版本的Open MPI)connect(),即使我没有connect()从中调用,我也会收到函数的输出main().另外,一些输出main()不会出现.

这是一个带有问题的简化程序:

#include <stdlib.h>
#include <stdio.h>
#include <mpi.h>

void connect(); //function name breaks mpi

int main(void) {

    int comm_sz, my_rank;
    MPI_Init(NULL, NULL);
    MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
    printf("my_rank is %d\n", my_rank);
    fflush(stdout);
    MPI_Finalize();
    return EXIT_SUCCESS;
}

void connect() {

    printf("\nNot main! \n");
    return;
}
Run Code Online (Sandbox Code Playgroud)

和输出:

[me@host ~]$ mpicc bad.c -Wall
[me@host ~]$ mpirun -n 1 a.out 

Not main! 
--------------------------------------------------------------------------
orterun noticed that process rank 0 with PID …
Run Code Online (Sandbox Code Playgroud)

c program-entry-point runtime-error function mpi

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

检索 SymPy 图的 matplotlib ContourSet

使用 SymPy,我可以使用以下代码手动创建等高线图(还没有内置的等高线绘图功能 更新SymPy 现在具有等高线绘图功能):

from sympy import init_session
init_session()
from sympy.plotting.plot import Plot, ContourSeries

# show plot centered at 0,0
x_min = -7
x_max = 7
y_min = -5
y_max = 5

# contour plot of inverted cone
my_plot = Plot(
    ContourSeries(
        sqrt(x**2 + y**2),
        (x,x_min,x_max),
        (y,y_min,y_max)
    )
)
my_plot.show()
Run Code Online (Sandbox Code Playgroud)

等高线图 14x10

目前,当 SymPy 调用 时contour()它似乎没有保存返回的 ContourSet更新:我已经提交了一个问题,看看是否可以保存 ContourSet):

class MatplotlibBackend(BaseBackend):
    ...
    def process_series(self):  
        ... 
        for s in self.parent._series:
            # Create …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib sympy

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

Streams API:可以撤消 .pipeTo() 吗?

Streams APIReadableStream提供了一种通过管道将 a 传送到WritableStreamusing的巧妙方法readableStream.pipeTo(writableStream)。这似乎比获取readableStream.getReader()并手动将其粘合到writableStream.getWriter()或直接粘合到底层功能更方便。

\n

我有一个用例,其中向我提供了一个ReadableStream对象,该对象最终可能需要“消失”并被新ReadableStream对象替换。最好使用单个自定义WritableStream来包装这些对象所连接的功能,ReadableStream并根据需要将它们通过管道连接在一起,但还没有找到如何“撤消”管道过程。

\n

问:是否可以“撤消”/“中断”/“拆卸”使用 创建的管道.pipeTo(),或者管道是否“永久”且不适合此用例?

\n

使用Serial API 的示例,我希望能够调用doConnectPort()然后doDisconnectPort()重复:

\n
var customWritable = new WritableStream(\xe2\x80\xa6);\nvar port;\n\nasync function doConnectPort() {\n  port = await navigator.serial.requestPort();\n  await port.open({ baudrate: \xe2\x80\xa6});\n  await port.readable.pipeTo(customWritable);\n}\n\nasync function doDisconnectPort() {\n  // What to do here? Can\'t close the port yet\xe2\x80\x94port.readable is still locked!\n  await port.close();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

目前,我手动将东西粘合在一起,并在需要断开端口时进行清理:

\n
var …
Run Code Online (Sandbox Code Playgroud)

javascript serial-port whatwg-streams-api

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