我将在这个问题前面说,我对Linux和C语言都很陌生......所以请耐心等待。
我也会说,我已经问过我的一些朋友,我认为他们在这个问题上知识渊博,但他们也表达了混淆......
我的任务是尝试在Linux机器系统上实现套接字通信。目前,有一台主机使用两个Intel Xeon Phi协处理器来提供额外的计算能力。这些协处理器中的每一个实际上都有自己的Linux内核,我试图访问它们,因此我可以控制主机的自动负载平衡机制。基本上,最终目标是控制哪个协处理器处理哪些进程。
希望定期(每隔几秒或更短)对重型数据集进行一些非常广泛的计算。需要接收数十万个数据点,并使用各种不同的参数和数据分段执行贝叶斯均值回归。
话虽如此,可靠性是必须的......并且每个被委派的流程都会相当大(而不是强制执行简单快速的任务)。
我希望你们都能就可能有用的(最好是免费的,在线的)资源提出建议。任何建议将不胜感激。
谢谢,
James Elmore
答案 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)。
当然,您可以查看XMLRPC,SOAP,JSONRPC,ASN1,Corba,libs11n,{{3} }(又名RPC-XDR),以及ONC和serialization以及remote procedure call。
您可以使用共享内存或线程。详细了解message passing,pthreads,NUMA等。
inter-process communication也可能相关,例如Cloud computing
专业数据并行语言(如openstack)也可能相关!另请参阅OpenCL,OpenMP,Par4All等
也许使用Pips4u自定义GCC编译器也可能是相关的!
你的问题有点过于宽泛。您应该解释您要求哪个并行计算域。延迟,带宽,数据大小,可靠性等等都很重要。