Dalam dunia komputasi performa tinggi (HPC), portabilitas performa merupakan tujuan yang dikejar oleh banyak pengembang. Namun, dengan diversifikasi platform komputasi, tujuan ini menghadapi banyak tantangan. Portabilitas performa bukan hanya tentang membuat aplikasi berjalan pada platform perangkat keras yang berbeda, tetapi yang lebih penting, bagaimana mempertahankan kompatibilitasnya tanpa mengorbankan performa. Hingga saat ini, tidak ada standar universal untuk mengukur dan mengevaluasi portabilitas performa, yang menyulitkan pengembang saat merancang perangkat lunak.
Portabilitas performa merupakan asumsi bahwa basis kode tunggal pengembang akan berkinerja baik pada arsitektur baru dan mempertahankan batasan performa yang dapat diterima pada berbagai arsitektur terkini yang belum diuji.
Definisi dan pengukuran portabilitas performa diperdebatkan dengan sengit. Beberapa berpendapat bahwa portabilitas aplikasi adalah yang utama, sementara yang lain bersikeras bahwa portabilitas kode sumber adalah kuncinya. Terutama dalam situasi saat ini di mana perangkat keras terus berubah setiap harinya, pengembang perlu mempertimbangkan cara agar produk mereka dapat terus berjalan di berbagai platform. Program Superkomputer (ECP) Departemen Energi AS menekankan hal ini karena mereka perlu menciptakan ekosistem komputasi yang kompatibel untuk berbagai arsitektur perangkat keras.
Secara umum diyakini bahwa "satu kode dapat berjalan dengan baik di berbagai arsitektur, yang merupakan portabilitas kinerja."
Saat mengevaluasi portabilitas kinerja, pengembang biasanya mempertimbangkan dua faktor: portabilitas dan kinerja. Portabilitas dapat diukur dengan melihat baris kode yang digunakan pada berbagai arsitektur, sementara kinerja dapat ditentukan dengan membandingkan versi yang dioptimalkan untuk platform dengan versi portabel. Meskipun menggunakan metode pengukuran ini, industri ini masih kekurangan standar yang transparan, yang membuat pengembang sulit memahami dengan jelas cara mencapai portabilitas kinerja terbaik.
Pada Konferensi Portabilitas DOE (Departemen Energi AS) 2016, para peserta terlibat dalam perdebatan sengit tentang portabilitas kinerja. Banyak pengembang dan ilmuwan terkenal menghadiri pertemuan tersebut untuk berbagi wawasan dan persyaratan baru untuk portabilitas kinerja. Perlu dicatat bahwa ada pandangan bahwa portabilitas kinerja yang disediakan oleh model pemrograman paralel di masa mendatang akan lebih signifikan daripada apa yang dapat disediakan oleh aplikasi itu sendiri.
Seperti yang disebutkan dalam pertemuan tersebut, "Sebuah kode bersifat portabel ketika tim aplikasi menganggapnya portabel."
Dihadapkan dengan berbagai platform perangkat keras, pengembang perlu menemukan kerangka kerja yang sesuai untuk mendukung kode mereka. Kerangka kerja terkenal seperti OpenCL, SYCL, dan OpenMP mengklaim dapat memfasilitasi portabilitas fungsionalitas. Kerangka kerja ini mendukung pemrograman paralel pada berbagai platform, yang memungkinkan pengembang untuk memprogram dalam berbagai bahasa. Namun, selain kerangka kerja, ada juga solusi nonkerangka kerja, seperti bahasa yang dapat disetel sendiri dan bahasa khusus domain, yang juga dapat membantu meningkatkan portabilitas kinerja.
Singkatnya, masalah portabilitas kinerja menjadi semakin penting dalam komputasi kinerja tinggi karena secara langsung memengaruhi efisiensi kerja pengembang dan pengembangan aplikasi yang berkelanjutan. Karena kebutuhan komputasi berubah di masa depan dan teknologi komputasi berkembang pesat, bagaimana pengembang harus beradaptasi dan menghadapi tantangan ini?