0

在这个问题的开头,我会说我对 Linux 和 C 语言都很陌生……所以请耐心等待。

我还要说,我问了几个我认为在这方面知识渊博的朋友,但他们也表示困惑......

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

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

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

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

谢谢,

詹姆斯·埃尔莫尔

4

2 回答 2

1

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

于 2013-07-16T15:39:10.680 回答
1

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

您还可以考虑使用消息传递接口(又名 MPI)。

当然,您可能会研究XMLRPCSOAPJSONRPCASN1Corbalibs11nONC(又名 RPC-XDR)以及一般的序列化远程过程调用消息传递

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

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

专门的数据并行语言(如OpenCL)也可能是相关的!还可以查看OpenMPPar4AllPips4u

也许使用MELT定制 GCC 编译器也可能是相关的!

你的问题有点太笼统了。您应该解释您询问的是哪个并行计算领域。延迟、带宽、数据大小、可靠性等...非常重要。

于 2013-07-16T16:17:56.177 回答