Tengo algunas computadoras multi-core conectadas por la red Infiniband. Me gustaría tener un cálculo de baja latencia en un grupo de memoria compartida, con operaciones atómicas remotas. Sé que RDMA es el camino a seguir. En cada nodo, registraría una región de memoria (y un dominio de protección) para compartir datos.Compartir memoria RDMA
Los ejemplos de RDMA en línea a menudo se centran en una única conexión entre un servidor de subproceso único y un cliente de subproceso único. Ahora me gustaría tener un proceso multiproceso en cada nodo Infiniband. Estoy muy confundido acerca de la siguiente ...
¿Cuántos pares cola debería preparar en cada nodo, para un grupo de n nodos y los hilos de m en total? Para ser más específico, ¿pueden los subprocesos múltiples en el mismo nodo compartir el mismo par de colas?
¿Cuántas colas de finalización debo preparar en cada nodo? Tendré múltiples hilos que emiten operaciones remotas de lectura/escritura/cas en cada nodo. Si compartieran una cola de finalización común, los eventos de finalización se mezclarán. Si los hilos tienen sus propias colas de finalización separadas, habría realmente muchas de ellas.
¿Sugiere que tenga alguna biblioteca existente en lugar de escribir este software? (hmm, ¿o debería escribir uno y de código abierto? :-)
Gracias por su amable sugerencia (s).
Y el código fuente de los pares de cola (QP), cola de finalización (CQ) y colas de recepción compartidas (SRQ) tienen que escribir el suyo, o puedo preparar su implementación (como mejor práctica) y dónde pueden ¿tomar? – Alex