O fato de a API NVIDIA PhysX funcionar melhor quando está acelerada pela GPU é conhecido há um bom tempo, e, inclusive, este foi um dos motivos que levou a NVIDIA a comprar a tecnologia da Ageia. Entretanto, essa diferença brutal de performance entre Physx rodando em CPU e GPU (em GPU muitas vezes mais rápida) pode ser decorrente de algo previamente concebido pela NVIDIA.
O website Real World Technologies promoveu uma análise do funcionamento do NVIDIA PhysX rodando em um processador Intel Core i7 920 operando a uma frequencia de 3.2GHz. Foi usado também o software Intel VTune para verificar a forma como o Physx usa os recursos da CPU.
Os resultados mostram-se, no mínimo, curiosos. Em primeiro lugar, verificou-se que o Physx não usa o recurso Intel Hyper-Threading, mesmo quando uma thread está atingindo mais de 90% de nível de utilização.
Outro aspecto interessante foi a constatação de muitas das DLLs do Physx, incluindo a PhysXCore.dll, só faz uso de instruções x87 no processamento de cálculos em ponto flutuante. A pergunta que fica é: qual o motivo de o Physx preferir usar as instruções x87 ao invés das instruções SSE2, que são muitas vezes mais rápidos nesse tipo de operação?
Na realidade, observou-se que as instruções SSE são usadas pelo NVIDIA Physx em poucas e insignificantes situações de carga de trabalho. No teste Dark Basic PhysX Soft Body Demo, por exemplo, o PhysXCore.dll executou 91% de suas operações de cálculos em ponto flutuante usando instruções x87.
O fato de a NVIDIA não usar as instruções SSE e optar pelas antiquadas e legadas instruções x87 certamente não é decorrência de falta de atualização do código, tendo em vista que o set de instruções SSE2 já estava presente na primeira CPU Intel Pentium 4 de 1.4Ghz de dez anos atrás.
Se a NVIDIA tivesse optado por usar instruções SSE2, a performance do Physx na execução de cálculos em precisão simples dobraria em relação ao observado atualmente. "Não há nenhuma razão técnica para o PhysX estar usando código x87, sobretudo pelo fato de que o Physx para console já usa as extensões AltiVec, que são muito similares às SSE", relata o Real World Technologies em sua análise.
Ainda segundo o site, a adaptação do Physx para passar a usar as instruções SSE2 não levaria mais do que um ou dois dias de trabalho, seguida de poucas semanas de testes de compatibilidade.
Ainda segundo o site, a adaptação do Physx para passar a usar as instruções SSE2 não levaria mais do que um ou dois dias de trabalho, seguida de poucas semanas de testes de compatibilidade.
O site também considera que o fato de o Physx deliberadamente não usar as instruções SSE2 pode ter razões comerciais, pois, da forma como está programado, ele auxilia a NVIDIA a vender mais GPUs.
Fonte: The Real World Tech
Comentários
Postar um comentário
Deixe seu comentário aqui. Não esqueça de deixar seu nome. Mensagens que façam uso de termos de baixo calão (palavrões) ou conteúdo ofensivo será apagado sem prévio aviso.