Communication Socket

download Communication Socket

of 7

description

Electrical Intrumentasi

Transcript of Communication Socket

  • 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 satu-

    satunya 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 multi-

    core. 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.