用于在单独的Linux机器上设置套接字通信的资源,C ++

时间:2013-07-16 14:22:41

标签: linux parallel-processing local-network

我将在这个问题前面说,我对Linux和C语言都很陌生......所以请耐心等待。

我也会说,我已经问过我的一些朋友,我认为他们在这个问题上知识渊博,但他们也表达了混淆......

我的任务是尝试在Linux机器系统上实现套接字通信。目前,有一台主机使用两个Intel Xeon Phi协处理器来提供额外的计算能力。这些协处理器中的每一个实际上都有自己的Linux内核,我试图访问它们,因此我可以控制主机的自动负载平衡机制。基本上,最终目标是控制哪个协处理器处理哪些进程。

希望定期(每隔几秒或更短)对重型数据集进行一些非常广泛的计算。需要接收数十万个数据点,并使用各种不同的参数和数据分段执行贝叶斯均值回归。

话虽如此,可靠性是必须的.​​.....并且每个被委派的流程都会相当大(而不是强制执行简单快速的任务)。

我希望你们都能就可能有用的(最好是免费的,在线的)资源提出建议。任何建议将不胜感激。

谢谢,

James Elmore

2 个答案:

答案 0 :(得分:1)

您可能需要在以下链接中查看tcpclient和tcpserver。基本上,这些处理所有套接字和网络,您可以专注于程序的核心逻辑。然后,您只需在tcpclient下运行您的客户端程序。这将打开与服务器的连接。程序的标准输出的输出将通过管道输出到套接字并发送到服务器,输入到套接字的输入将通过管道传输到程序的标准输入。同样,您将在tcpserver下运行您的服务器程序。这将侦听端口上的传入连接。在建立连接之后,对套接字的输入将传递到程序的stdin,并且从stdout输出的程序将通过套接字输出。看到:     http://cr.yp.to/ucspi-tcp/tcpclient.html     http://cr.yp.to/ucspi-tcp/tcpserver.html

答案 1 :(得分:1)

您还可以考虑构建一些Web services(这可能需要包含Onion等C ++ HTTP服务器库,Poco的网络部分或Wt以及C ++ HTTP客户端库,例如libcurl)。

你也可以考虑使用Message Passing Interface(a.k.a. MPI)。

当然,您可以查看XMLRPCSOAPJSONRPCASN1Corbalibs11n,{{3} }(又名RPC-XDR),以及ONCserialization以及remote procedure call

您可以使用共享内存或线程。详细了解message passingpthreadsNUMA等。

inter-process communication也可能相关,例如Cloud computing

专业数据并行语言(如openstack)也可能相关!另请参阅OpenCLOpenMPPar4All

也许使用Pips4u自定义GCC编译器也可能是相关的!

你的问题有点过于宽泛。您应该解释您要求哪个并行计算域。延迟,带宽,数据大小,可靠性等等都很重要。