Anda di halaman 1dari 7

Bab I

Pendahuluan

Abstrak
Meningkatnya tuntutan komputasi dan komunikasi dari masyarakat secara ilmiah dan
didalam industri memerlukan pemahaman yang jelas tentang kinerja perdagangan -yang terlibat
dalam bentuk multi-core komputasi. Analisis tersebut dapat membantu aplikasi dan peralatan
pengembang dalam merancang yang lebih baik, komunikasi yang dimaksudkan untuk memenuhi
kebutuhan berbagai aplikasi komputasi besar samapai akhir. Dalam tulisan ini, kita mengambil
tantangan merancang dan mengimplementasikan kerangka komunikasi intra-core portabel untuk
mengalirkan komputasi dan mengevaluasi kinerja pada beberapa arsitektur multi-core populer
yang dikembangkan oleh Intel, AMD dan Sun. Hasil eksperimen kami, diperoleh pada Intel
Nehalem, AMD Opteron dan Sun Niagara 2 platform, menunjukkan bahwa kita mampu mencapai
intra-socket latency pesan kecil antara 120 dan 271 nanodetik, sedangkan antar-socket latency
pesan kecil adalah antara 218 dan 320 nanodetik. Bandwidth komunikasi intra-socket maksimum
berkisar dari 0,179 (Sun Niagara 2) menjadi 6,5 (Intel Nehalem) Gbytes / detik. Kami juga dapat
memperoleh kinerja komunikasi antar-socket 1,2 dan 6,6 Gbytes / detik pada AMD Opteron dan
Intel Nehalem, masing-masing.

1. Perkenalan
DI hari-hari awal komputasi yang mempunyai kinerja tinggi, kinerja komunikasi hampir
selalu tidak terlihat pertukaran data antar simpul terjadi melalui beberapa jenis jaringan
interkoneksi, seperti Myrinet , quadrics atau InfiniBand. Munculnya prosesor multi-core modern
telah mengubah skenario komputasi kinerja tinggi, dengan semakin banyak pengguna mencoba
untuk mengkonsolidasikan beban kerja mereka didistribusikan dalam node tunggal atau satu set
kecil node. Dalam konteks ini intranode komunikasi, dan dukungan hardware untuk mempercepat
itu, telah menjadi penting untuk mendapatkan kinerja aplikasi yang optimal.
Dalam tulisan ini, kami akan menjelaskan rincian desain pemikiran dan pelaksanaan
perpustakaan inti-komunikasi portabel untuk arsitektur multi-prosesor. Kita mempelajari kinerja
trade-off yang terlibat dalam mekanisme komunikasi dan mengevaluasi bagaimana mereka skala
pada arsitektur yang berbeda, termasuk dampak dari skenario antar dan intrasocket.
Analisis kami menunjukkan bahwa strategi komunikasi tunggal tidak dapat mencapai kinerja
terbaik untuk semua ukuran pesan. Sementara skema copy berbasis memori dasar (memcpy)
memberikan kinerja yang baik untuk pesan kecil, handcoded beban vektor dan toko memberikan
kinerja yang lebih baik untuk pesan berukuran sedang. Tapi, karena kedua ini
Skema yang melibatkan dua operasi untuk memindahkan data dari sumber ke tujuan, ini
dapat mempengaruhi kinerja komunikasi untuk pesan besar: dalam skenario ini kami mencapai
kinerja yang lebih baik dengan menggunakan pendekatan kernelbased. Efek yang menarik kami
mengamati adalah kinerja yang buruk jelas dari instruksi streaming intra-socket serta antar-socket
komunikasi. Analisis lebih dalam menggunakan berbagai counter kinerja, menunjukkan bahwa

penurunan kinerja terkait dengan tingginya jumlah kios sumber daya yang disebabkan oleh
petunjuk streaming.
Lebih khusus, kontribusi dari makalah ini dapat disimpulkan sebagai berikut:
1. Desain dan implementasi kerangka komunikasi baru untuk arsitektur streaming.
2. Evaluasi kinerja dari kerangka komunikasi ini pada arsitektur multi-core, dan
3. Analisis mendalam dari hasil kinerja menggunakan counter kinerja hardware.
2. Metodelogi
Pada bagian ini, kita menggambarkan pendekatan yang digunakan untuk mengevaluasi mekanisme
komunikasi dari berbagai arsitektur multicore.Kami menggunakan fungsi dasar untuk menyalin
data dari buffer pengguna untuk buffer komunikasi bersama dan kembali ke buffer pengguna di
sisi penerima. Bentuk transfer data akan mengambil jalur 3 sampai 8, seperti yang ditunjukkan
pada Gambar 1.

Gambar. 1. Jalur 1 (intra-socket) dan 2 (inter-socket) mengidentifikasi unit-unit fungsional yang


digunakan oleh instruksi streaming. Jalur 3 & 8 menunjukkan unit fungsional yang digunakan oleh
petunjuk non-streaming saat transfer menggunakan cache L1 dari kedua pengirim dan penerima,
untuk intra-socket dan komunikasi inti antar-socket. Jalur 4 & 7 menggambarkan transfer yang
menggunakan cache L2 baik pengirim dan penerima. Jalan 5 menggambarkan mekanisme
komunikasi ketika cache L3 digunakan untuk intra-socket komunikasi. Jalan 6 menggambarkan
mekanisme ketika komunikasi menggunakan memori utama untuk antar

Bab II
Isi

1.

Vector Instruksi

Intel SIMD Extensions 2 (SSE2) pengaturan instruksi termasuk movdqa dan movdqu instruksi
untuk mentransfer 16 byte data dari buffer sumber ke buffer tujuan. Sementara instruksi movdqa
membutuhkan 16-byte lokasi memori selaras, instruksi movdqu dapat digunakan dengan baik yang
sama atau un-blok pointer memori. Masalah keselarasan tersebut tidak mempengaruhi kinerja
aplikasi dalam prosesor Nehalem terbaru berkat unit hardware yang membuat koreksi yang sesuai.
Data yang ditransfer menggunakan mekanisme ini akan mengambil jalur 3 sampai 8, seperti yang
ditunjukkan pada
SSE2 mencakup seperangkat streaming instruksi yang tidak mencemari hirarki cache.
Petunjuk Streaming akan mengikuti jalur 1 dan 2, seperti yang ditunjukkan pada Gambar 1. Ada
dua petunjuk streaming yang tersedia di set instruksi SSE2.
Ini adalah toko non-temporal yang salinan data dari sumber alamat ke alamat tujuan tanpa
mencemari baris cache. Jika data sudah dalam cache, maka baris cache diperbarui. Instruksi ini
mampu menyalin 16 byte data selaras pada suatu waktu. Instruksi tingkat perakitan ini
dihubungkan oleh intrinsik mm aliran si128.
Ini adalah instruksi non-temporal mirip dengan movntdq kecuali bahwa kita hanya
menyalin 4 byte dan data tidak perlu disesuaikan dengan setiap byte-batas. Instruksi tingkat
perakitan ini dapat diakses melalui intrinsic

Kernel pada tingkat Direct Copy


Pendekatan salinan memori standar melibatkan dua salinan untuk mentransfer data dari
sumber ke buffer tujuan. Untuk pesan yang besar kita memilih untuk pendekatan salinan dengan
salinan memori kernel-level menggunakan perpustakaan [5] LiMIC2. Abstrak perpustakaan keluar
transfer memori ke dalam fungsi tingkat pengguna beberapa. Pendekatan kernel-level memiliki
beberapa biaya yang terkait dengan itu juga, seperti konteks switch antara pengguna dan ruang
kernel.
Jadi metode ini tidak ideal untuk mentransfer pesan berukuran kecil atau menengah sebagai
overhead yang disebabkan oleh switch konteks akan mengimbangi manfaat yang diperoleh dari
pengurangan satu salinan memori. Kami hanya menerapkan copy kernel untuk pesan besar dan
memanfaatkan SSE2 salinan yang tercantum dalam Bagian 2.2 untuk pesan kecil dari 32 KB.
HASIL
Intel Nehalem-: Sebuah sistem Intel Nehalem dengan dua soket quad-core beroperasi pada 2,93
GHz dengan 48 GB RAM dan antarmuka PCIe 2.0, berjalan Red Hat Enterprise Linux Server
melepaskan 5,2 dengan Linux 2.6.28.

AMD Opteron-: A empat-socket, quad-core AMD Opteron papan beroperasi pada 1,95 GHz
dengan 16 GB RAM dan antarmuka PCIe 1.0, berjalan Red Hat Enterprise Linux Server
melepaskan 5,4 dengan Linux 2.6.18.
Sun-Niagara: A Sun prosesor UltraSPARC T2-dengan 8 core pada chip. Setiap inti beroperasi
pada 1,2 GHz, dan mendukung 8 thread hardware untuk menyembunyikan latency memori.
Dalam legenda Gambar 2 semester pertama mengacu pada mekanisme komunikasi yang
digunakan (memcpy, Stream, Vector dan, LiMIC) dan babak kedua untuk compiler yang
digunakan - GCC atau ICC. GCC versi 4.4.0 dan ICC Compiler versi 11.0 digunakan dalam
evaluasi eksperimental. Satu-satunya optimasi compiler yang digunakan adalah bendera
O3.Sideration. Seperti yang kita lihat, sementara memcpy-ICC menyediakan latency terbaik untuk
pesan yang sangat kecil, LiMIC-ICC memberikan bandwidth terbaik untuk menengah ke pesan
yang besar. Perbedaan kinerja ini disebabkan oleh fakta bahwa instruksi berbasis vektor hanya
dapat mentransfer data dalam potongan 16 byte dan akan dikenakan biaya overhead yang bahkan
untuk pesan lebih kecil dari 16 byte. Secara keseluruhan, kami melihat bahwa pendekatan
berdasarkan memcpy memberikan kinerja terbaik untuk pesan yang sangat kecil, pendekatan
berbasis SSE2 memberikan kinerja terbaik untuk kecil untuk pesan berukuran menengah
sementara

Gambar. 2. Intra dan inter-socket latency dan bandwidth dari Intel Nehalem.
Kernel berdasarkan pendekatan copy menggunakan LiMIC memberikan kinerja terbaik untuk
pesan besar. Perlu dicatat kesenjangan kinerja antara GCC dan ICC dari skema memcpy standar.
Untuk lebih memahami alasan di balik ini, kami menggunakan counter kinerja yang disediakan
oleh Intel-64 arsitektur. Secara khusus, kami mempelajari compiler yang mampu menggunakan
terbaik hirarki cache. Untuk tujuan kita ini

memandang hits cache dan merindukan dari tiga tingkat cache dari Intel Nehalem. Gambar 3
menunjukkan bahwa jumlah cache L3 merindukan untuk versi GCC kode jauh lebih daripada ICC
dihasilkan versi untuk set yang sama flag optimasi. Kami mengamati pola serupa antara kinerja
SSE instruksi dilaksanakan oleh GCC dan ICC kompiler untuk pesan besar ukuran saja.
Kami juga melihat bahwa kinerja Stream-ICC adalah sebanding dengan memcpy-ICC, sementara
ada perbedaan substansial antara versi GCC dari dua instruksi. Analisis kami dari kode tingkat
perakitan dihasilkan oleh dua kompiler mengungkapkan bahwa compiler ICC itu menggantikan
petunjuk non-temporal, yang membentuk jantung instruksi streaming, dengan versi kinerja yang
optimal dari memcpy disebut intel memcpy cepat. Akibatnya, kode yang dihasilkan adalah bahwa
untuk operasi memcpy normal. Yang sama terjadi penggantian untuk kode memcpy biasa juga.
Kami sedang menjajaki beberapa pilihan di mana kita dapat menonaktifkan penggantian ini
sementara tetap mempertahankan peningkatan kinerja lainnya dilakukan oleh kompilator.

Gambar. 3. Intra-socket L3 untuk pesan besar di Intel Nehalem menggunakan instruksi


penggandaan.
Kami juga mengamati bahwa instruksi streaming, secara umum, menghasilkan kinerja
yang sangat buruk. Untuk menganalisis ini lebih lanjut, kita menggunakan penghitung kinerja
untuk mengeksplorasi kemungkinan pertentangan sumber daya dalam sistem. Kami mengamati
bahwa jumlah kios tertinggi untuk GCC dihasilkan petunjuk Streaming diikuti oleh petunjuk
streaming yang dihasilkan oleh ICC. Kami percaya bahwa ini adalah penyebab dari kinerja yang
buruk.
Perbandingan Kinerja Berbagai Multi-Core Arsitektur
Membandingkan intra-socket dan antar-socket kinerja berbagai arsitektur multi-core. Kami
menggunakan memcpy-GCC untuk membandingkan semua arsitektur sebagai GCC adalah satusatunya compiler umum dan memcpy hanya instruksi tersedia pada semua mesin yang digunakan
untuk eksperimen kami, dengan pengecualian dari Intel Nehalem mana kita menggunakan LiMIC2
dengan pesan yang besar. Kami melihat bahwa untuk intra-socket komunikasi, Intel Nehalem
memberikan kinerja terbaik diikuti oleh AMD Opteron. Nomor AMD diambil pada soket yang
satu hop tunggal terpisah yang sebanding dengan arsitektur Nehalem. Karena kesulitan teknis,
kami tidak mampu mengumpulkan angka antar-soket pada SunNiagara.

Bab III
Penutup

KESIMPULAN
Dalam makalah ini kami telah mengevaluasi kinerja komunikasi tiga keluarga dari arsitektur multicore. Kami telah menganalisis hasil dan mengumpulkan pemahaman yang berharga tentang
beberapa aspek kinerja. Kami telah menemukan bahwa, meskipun petunjuk streaming yang
diharapkan untuk memberikan kinerja yang baik, implementasi saat menghasilkan sejumlah besar
kios sumber daya dan akibatnya menghasilkan kinerja yang buruk. Kami juga telah menemukan
bahwa kinerja komunikasi simpul intra sangat tergantung pada arsitektur dan cache memori seperti
yang kita lihat dari analisis kinerja memori copy berdasarkan dasar serta SSE2 petunjuk vektor.
Hasil analisis eksperimental dilakukan dengan infrastruktur komunikasi intra-node kami
menunjukkan bahwa kita dapat mencapai intra-socket latency pesan kecil dari 120, 222 dan 371
nanodetik pada Intel Nehalem, AMD Opteron dan Sun Niagara 2, masing-masing. Antar-socket
latency pesan kecil untuk Intel Nehalem dan AMD Opteron 320 dan 218 nanodetik. Maksimum
intra-socket bandwith komunikasi yang diperoleh 6,5, 1,37 dan 0,179 Gbytes / detik untuk Intel
Nehalem, AMD Opteron dan Sun Niagara 2. Kami mampu juga mendapatkan kinerja komunikasi
antar-socket 1,2 dan 6,6 Gbytes / detik untuk AMD Opteron dan Intel.

Referensi
N. Boden, D. Cohen, R. Felderman, A. Kulawik, C. Seitz, J. Seizovic, and S. Wen-King, Myrinet A
Gigabit-per-Second Local-Area Network, IEEE Micro, vol. 15, no. 1, pp. 2936, February 1995.
F. Petrini, W. chun Feng, A. Hoisie, S. Coll, and E. Frachtenberg, The Quadrics Network: High Performance
Clustering Technology, IEEE Micro, vol. 22, no. 1, pp. 4657, January-February 2002.
H. Subramoni, M. Koop, and D. K. Panda, Designing Next Generation Clusters: Evaluation of InfiniBand
DDR/QDR on Intel Computing Platforms, in 17th Annual Symposium on High-Performance Interconnects (HotI09),
New York City, New York, August 2009.
Hyun-Wook Jin and Sayantan Sur and Lei Chai and Dhabaleswar K. Panda, Lightweight kernel-level
primitives for highperformance MPI intra-node communication over multi-core systems, in IEEE International
Conference on Cluster Computing, Austin, TX, September 2007.
Axel Busch and Julien Leduc, Evaluation of Energy Consumption and Performance of Intels Nehalem
Architecture, CERN Openlab, Tech. Rep., 2009
SPEC Benchmark, http://www.spec.org/.
H. O. Bugge, An evaluation of Intels core i7 architecture using a comparative approach, Computer Science
- Research and Development, vol. 23, no. 3-4, May 2009.

Anda mungkin juga menyukai