Di era digital yang sangat saling terhubung saat ini, portabilitas kinerja telah menjadi isu penting dalam pengembangan perangkat lunak. Portabilitas kinerja mengacu pada kemampuan aplikasi untuk berjalan secara efektif pada berbagai platform perangkat keras. Saat pengembang merancang aplikasi yang mendukung kinerja dan portabel, mereka perlu mendukung berbagai platform tanpa mengorbankan kinerja, idealnya sambil meminimalkan kode khusus platform.
Portabilitas kinerja dianggap sebagai fitur yang sangat dicari dalam komunitas komputasi kinerja tinggi (HPC), tetapi saat ini tidak ada standar pengukuran yang universal atau konsisten.
Kinerja diukur dengan dua cara: satu dengan membandingkan kinerja versi aplikasi yang dioptimalkan dengan versi portabelnya; yang lain didasarkan pada jumlah operasi floating point (FLOP) yang dilakukan dan dipindahkan dari memori utama selama eksekusi. Data ke frekuensi prosesor untuk membandingkan kinerja puncak teoritis aplikasi. Seiring dengan meningkatnya keragaman perangkat keras, pengembangan perangkat lunak yang dapat berjalan pada berbagai mesin menjadi semakin penting, yang memengaruhi penggunaan aplikasi dalam jangka panjang dan kemungkinan untuk memperbaruinya.
Portabilitas kinerja banyak dibicarakan dalam industri, dan biasanya mengacu pada: pertama, kemampuan untuk menjalankan aplikasi yang sama pada beberapa platform perangkat keras; kedua, mencapai target kinerja tertentu pada platform ini. Pada Konferensi Portabilitas Kinerja yang diadakan oleh Departemen Energi AS (DOE) pada tahun 2016, seorang pakar menyatakan bahwa "suatu aplikasi dapat dianggap sebagai aplikasi jika dapat mencapai tingkat kinerja yang konsisten pada setiap platform relatif terhadap implementasi yang paling dikenal." Untuk efisiensi dan portabilitas."
Jeff Larkin (NVIDIA) secara langsung menunjukkan bahwa portabilitas kinerja adalah "kode sumber yang sama dapat berjalan secara produktif pada beberapa arsitektur yang berbeda."
Oleh karena itu, portabilitas kinerja telah menjadi topik diskusi penting dalam komunitas komputasi kinerja tinggi. Mitra dari industri, akademisi, dan Laboratorium Nasional DOE telah secara rutin menyelenggarakan "Forum Kinerja, Portabilitas, dan Produktivitas Komputasi Efisiensi Tinggi" sejak 2016 untuk mempromosikan penelitian dan pengembangan portabilitas kinerja.
Seiring dengan terus berkembangnya arsitektur komputasi, portabilitas kinerja tetap penting. Pengembang berasumsi bahwa basis kode tunggal mereka akan mencapai kinerja yang dapat diterima pada arsitektur yang lebih baru, serta pada berbagai arsitektur terkini yang belum diuji. Seiring dengan meningkatnya keragaman perangkat keras, akan menjadi perlu untuk mengembangkan perangkat lunak yang dapat berjalan di berbagai platform. Hal ini terkait dengan vitalitas dan relevansi aplikasi yang berkelanjutan.
Departemen EProyek Komputasi Exascale (ECP) nergy menekankan bahwa portabilitas kinerja merupakan masalah yang terus berlanjut, terutama dalam lingkungan multi-platform.
Sejak 2016, DOE telah menyelenggarakan beberapa lokakarya untuk membahas semakin pentingnya portabilitas kinerja. Konferensi 2017 mengundang partisipasi dari banyak lembaga terkenal termasuk Pusat Komputasi Ilmiah Riset Energi Nasional (NERSC) dan Laboratorium Nasional Los Alamos (LANL).
Untuk mengukur kapan suatu program telah mencapai portabilitas kinerja, dua faktor perlu dipertimbangkan. Pertama, portabilitas kinerja dapat diukur dengan membandingkan jumlah baris kode yang digunakan di seluruh arsitektur versus jumlah baris kode yang hanya digunakan untuk satu arsitektur. Kedua, kinerja dapat diukur dengan berbagai cara. Misalnya, untuk membandingkan kinerja versi aplikasi yang dioptimalkan untuk platform dengan versi portabel, metode pengukuran yang efektif adalah dengan menggunakan model kinerja atap, yang dapat memperoleh kinerja puncak teoritis aplikasi.
Pada konferensi tahun 2016, seorang peserta menyebutkan, "Ketika tim aplikasi mengklaim bahwa aplikasi tersebut portabel kinerjanya, kode ini dianggap portabel kinerjanya."
Dalam beberapa tahun terakhir, penelitian telah menunjukkan bahwa kode portabel yang ditulis untuk berbagai arsitektur komputasi paralel perlu mematuhi model pemrograman standar terbuka, dan kode tersebut harus dikembangkan dan ditingkatkan pada beberapa platform secara bersamaan. Strategi ini dapat membantu pengembang menemukan parameter yang sesuai untuk berbagai platform.
Ada berbagai aplikasi dan sistem pemrograman di pasaran yang dirancang untuk membantu pengembang mencapai portabilitas kinerja. Beberapa kerangka kerja umum meliputi OpenCL, SYCL, Kokkos, RAJA, dll. Antarmuka pemrograman ini mendukung pemrograman multi-platform dan multi-proses. Beberapa solusi non-kerangka kerja mencakup bahasa yang dapat disetel sendiri dan bahasa khusus domain.
Seiring kemajuan teknologi, apakah kita siap untuk era baru pemrograman yang membawa kemungkinan portabilitas kinerja ke tingkat yang lebih tinggi?