2009-10-31 14 views
6

Niedawno dostałem mój domowy komputer zaktualizowany do czterordzeniowego procesora i 64-bitowego systemu operacyjnego. Mam pewne wcześniejsze doświadczenia z C/C++ i naprawdę czuję "swędzenie", aby spróbować korzystać z 64-bitowych możliwości procesora. Jaki jest dobry program typu "Hello World", który demonstruje 64-bitowe, wielordzeniowe możliwości, wykonując proste czynności, które nie działają dobrze w 32-bitowym jedno-rdzeniowym kodzie?Co to jest dobry wielordzeniowy 64-bitowy program "Hello World"?

Po prostu próbuję wyczuć, jak te nowe procesory mogą wpływać na wydajność kodu C/C++ w skrajnych przypadkach.

+3

prawie jeszcze "cout <<" Hello World "<< endl;' – Jherico

Odpowiedz

2

OpenMP byłby łatwym sposobem na zabawę z programowaniem wielordzeniowym w C++. Przykład wikipedii tak naprawdę nie robi niczego, co wymaga intensywnego procesora, ale można zastąpić "cout" pewną niezależną, długo działającą funkcją.

OpenMP

Jeśli chodzi o 64-bitowej, dużo swojej wzrost wydajności będzie pochodzić z kilku miejscach.

Zwiększona przepustowość, ponieważ wszystkie elementy danych są szersze, procesor może przetwarzać więcej danych w dowolnym cyklu zegara. Zapoznaj się z niektórymi benchmarkami Microsoft dla Exchange Server, teraz przenieśli się do obsługi 64-bitowej tylko dlatego, że wzrost przepustowości jest niesamowity.

Więcej rejestrów, ponieważ architektura 64-bitowa ma dużą liczbę rejestrów, większość parametrów funkcji i wartość zwrotną można przekazać za pomocą rejestrów.

W ABI x86 z pewnym numerem calling conventions można przekazać jeden lub dwa parametry za pośrednictwem rejestrów, a resztę należy przekazać na stos. W przypadku wspólnej konwencji wywoływania, takiej jak cdecl, pojedynczy rejestr lub wartość zwracana nie jest umieszczana w rejestrze. Ponieważ stos znajduje się w pamięci głównej, może to być hitem wydajności.

1

Prawdopodobnie chcesz zrobić coś, co Tist wykonuje obliczeniowo kosztowne operacje z dużych liczb lub dużych obszarów pamięci w niezależny sposób, takie jak raytracing lub zwijanie białek.

Należy pamiętać, że procesory 64-bitowe lub wielordzeniowe nie mogą zrobić niczego, czego NIE MOŻNA zrobić w jednordzeniowych procesorach, zasadniczo robią to szybciej i na większą liczbę.

1

Biorąc pod uwagę, ile różnych modeli równoległości są i jak są one dostosowane do różnych zadań, nie ma zadowalającej odpowiedzi na twoje pytanie. Wszystko zależy od tego, co naprawdę chcesz zrobić. Powinieneś wybrać model, który jest dostosowany do tego, co chcesz zrobić (jeśli nie jest to sprzeczne z poprzednim ograniczeniem, spróbuj message-passing, to jest odświeżająco łatwe w porównaniu do innych).

Chciałbym powiedzieć, że odpowiedź Jherico na język w komentarzach jest właściwa. Dla tak prostego zadania jak "cześć świat" najlepszy model nie jest wcale równoległy.