Estoy perfilando el rendimiento de los solucionadores lineales de PETSc. Según lo entiendo,
Sé que ejecutar el código paralelo en un procesador se puede usar como proxy para el rendimiento secuencial. Sin embargo, no creo que sea una buena medida de un código secuencial equivalente debido a la sobrecarga paralela incurrida. A menudo, el rendimiento de un código secuencial es más rápido que el rendimiento paralelo en un único procesador. Supongo que podría buscar bibliotecas numéricas que implementen el mismo solucionador, pero no hay garantía de que el algoritmo sea realmente equivalente.
Según lo entiendo,
Por lo tanto, si hay una manera de cuantificar la sobrecarga paralela, podríamos restarla del tiempo paralelo en un procesador para obtener una mejor medida del tiempo secuencial.
Entonces, mis preguntas serían:
- ¿Hay alguna manera de calcular la sobrecarga paralela de un código paralelo ejecutado en un solo procesador cuando no hay un código secuencial disponible?
- ¿Es realmente necesario? ¿Es el rendimiento paralelo en un procesador lo suficientemente bueno como para aproximarse al rendimiento secuencial, en general?