草庐IT

mpi_send

全部标签

c++ - 写入套接字时使用 write() 而不是 send() 的性能影响

我正在使用典型的套接字API在Linux平台上用C++编写网络应用程序,并且我正在研究将字节数组写入TCP流的两种替代方法:通过调用write()或通过调用发送()。我知道,由于这是Linux,套接字句柄只是一个文件描述符,因此对套接字执行read()和write()调用是有效的,但是套接字API还提供了send()和recv()函数来执行相同的任务。因此,我想知道是否有任何特别的理由选择一类函数而不是另一类——发送/接收函数是否针对网络写入/读取进行了优化,它们的性能是否更好等?或者我使用哪些功能真的很随意?read()和write()在所有情况下都能正常运行吗?感谢您的任何见解!

c++ - N*(connect + send + close) vs (Nagle disable + connect + N*send + close),N > 1

我是套接字编程的新手(正如您已经从我的愚蠢问题中弄清楚的那样),但不要让我感到羞耻,我正在使用TCPposix编写程序。我的约束如下:从客户端发送到服务器的消息应该被读取为字节流,虽然我的应用程序性能不高,但消息应该尽快传递。我编写了一个TCP客户端类,目的是执行以下操作:1次连接-多次发送-1次在流式传输结束时关闭。问题是消息没有近乎实时地传递(我假设它等待有一个更大的包裹更好吞吐量)在网上做了一些研究后,我发现虽然你可以禁用Nagle算法(NA),但这样做是一个非常糟糕的主意。由于我是套接字编程的新手,我不想禁用我不完全理解的功能。所以我有两个(不好的?)选择:连接-发送-关闭每条

c++ - 如何使用 MPI_Type_create_subarray?

很明显,它的论点是:intMPI_Type_create_subarray(intndims,intarray_of_sizes[],intarray_of_subsizes[],intarray_of_starts[],intorder,MPI_Datatypeoldtype,MPI_Datatype*newtype);但是,我无法理解此方法如何接收我们要拆分的原始数组以及它返回新子数组的位置(因为此方法应返回一个整数)。换句话说,我只是想看看这个方法在C++中的简单实现,我在网上找不到。 最佳答案 MPI_Type_create

c++ - 使用 MPI 通过命令行传递参数

我正在使用MPI调用来使用c++在多个进程上运行一个过程。我的Main函数中的前几行如下所示:intmain(intargc,char*argv[]){intcomm_sz;intmy_rank;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&comm_sz);MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);x=atoi(argv[4]);y=atoi(argv[5]);现在当我使用执行和运行我的程序时mpiexec-n1program1010我希望为x和y分配值10和10,因为它们是传递的第4和第5

c++ - 共享内存、MPI 和排队系统

我的unix/windowsC++应用程序已经使用MPI进行了并行化:作业被拆分到N个cpus中,每个block并行执行,非常高效,非常好的速度扩展,作业做得很好。但有些数据在每个流程中重复出现,并且由于技术原因,这些数据不能轻易地通过MPI进行拆分(...)。例如:5Gb静态数据,为每个进程加载完全相同的数据可以在MPI中分布的4Gb数据,使用的CPU越多,每个CPU的RAM越小。在4CPU作业中,这意味着至少需要20Gb的RAM负载,大部分内存都“浪费”了,这太糟糕了。我正在考虑使用共享内存来减少整体负载,“静态”block每台计算机只会加载一次。所以,主要问题是:是否有任何标准的

c++ - 通过 MPI 发送和接收二维数组

我要解决的问题如下:我在大型二维矩阵中计算的C++串行代码。为了优化这个过程,我希望分割这个大的2D矩阵并使用MPI在4个节点(比如)上运行。节点之间发生的唯一通信是在每个时间步结束时共享边值。每个节点与其邻居共享边数组数据A[i][j]。基于对MPI的阅读,我有以下方案要实现。if(myrank==0){for(i=0tox)for(y=0toy){C++CODEIMPLEMENTATION....MPI_SEND(A[x][0],A[x][1],A[x][2],Destination=1.....)MPI_RECEIVE(B[0][0],B[0][1]......Sender=1.

node.js - Microsoft Bot 框架 : Sending Message on connect

我是MicrosoftBot框架的新手。现在我正在模拟器上测试我的代码。我想在您连接后立即发送Hello消息。以下是我的代码。varrestify=require('restify');varbuilder=require('botbuilder');varserver=restify.createServer();server.listen(process.env.port||process.env.PORT||3978,function(){console.log('%slisteningto%s',server.name,server.url);});varconnector=n

javascript - Node.js res.send 不是一个函数

我正在尝试以下代码,但它给了我一个错误,“res.send不是函数”。请帮我。代码如下:varhttp=require('http');varfs=require('fs');varconnect=require('connect');varexpress=require('express');varapp=express();app.get('/',function(res,req){res.send('HelloWorld');});varserver=app.listen(8888,function(){varhost=server.address().address;varpo

node.js - process.send 在 Node.js 中有条件地定义

无论出于何种原因,在Node.js中,函数process.send在某些环境中定义,但在其他环境中未定义。例如,当我像这样从Node.js中的父进程派生子进程时://parentprocessvarcp=require('child_process');vark=cp.fork('./child.js',['arg1','arg2','arg3']);k.send('fail');//k.sendisdefined...process.send("ok,let'strythis...");//process.sendisNOTdefined子进程内部://child.jsprocess

node.js - Express - res.send() 工作一次

我是Node和Express的新手,我试图用Express做一些东西只是为了开始,然后我遇到了这个问题。第一个res.send()效果很好,但第二个没有触发。这是我的代码:varexpress=require('express'),app=express(),fs=require('fs'),visits;app.listen(8080);app.get('/',function(req,res){res.send('Hello');fs.readFile('counter.txt','utf-8',function(e,d){if(e){console.log(e);}else{co