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



在回答这个问题之前,我会说我对Linux和C语言都很陌生。。。所以请耐心等待。

我也要说的是,我已经问了我的一些朋友,我认为他们在这方面很有知识,但他们也表示困惑。。。

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

希望定期(每隔几秒钟或更短时间)对大量数据集进行一些相当广泛的计算。需要获取数十万个数据点,并使用各种不同的参数和数据分割进行贝叶斯均值回归。

也就是说,可靠性是必须的。。。并且被委派的每个进程都将相当大(而不是粗暴地强迫简单而快速的任务)。

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

谢谢,

James Elmore

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

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

您还可以考虑使用消息传递接口(也称为MPI)。

当然,您可能会研究XMLRPC、SOAP、JSONRPC、ASN1、Corba、libs11、ONC(又名RPC-XDR),以及序列化和远程过程调用和消息传递。

您可以使用共享内存或线程。了解更多关于pthreads、NUMA、进程间通信等的信息。

云计算也可能相关,例如使用openstack

专门的数据并行语言(如OpenCL)可能也很相关!还可以查看OpenMP、Par4All、Pips4u等

也许用MELT定制GCC编译器也很重要!

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

最新更新