enable large page linux, enhance openblas performance

Assalamu’alaikum warahmatullahi wabarakatuh..

Kemarin kita telah mencoba bagaimana menginstall openblas, nah sekarang kita akan mencoba men-setting linux agar bisa lebih cepat lagi dalam mengerjakan sebuah job komputasi. Oia, langkah instalasi yang kemarin itu bisa digunakan untuk cpu dengan multi core atau jika kalian memiliki kluster komputer di mana user akan mengakses cpu secara dalam waktu yang bersamaan.

Jika kalian hanya memiliki komputer dengan single core seperti Pentium 4. Oia, sepengalamanku HyperThreading tidak banyak membantu dalam mempercepat sebuah job komputasi, gunakan saja satu prosesor kalian. Kita perlu mengaktifkan AFFINITY ketika kompilasi openblas untuk meningkatkan kecepatan prosesor karena yang tidak ada user lain yang melakukan running dalam waktu bersamaan, jika ada user lain yang melakukan run pada waktu bersamaan gunakan saja NO_AFFINITY=1, opsi lain seperti jumlah maksimum thread yang akan dikerjakan akan dideteksi secara otomatis oleh script instalasi. Untuk OS 64 bit kita juga bisa membuat library 64 bit dengan menambahkan BINARY=64, begitu juga dengan kompiler fortran yang akan kita gunakan, FC=kompiler fortran. Kembali lagi ke bahasan awal, ada beberapa settingan yang perlu ditambahkan untuk meningkatkan performa openblas antara lain dengan mengaktifkan large page, caranya :

LINUX
x86   32bit    … (number of core) * 4 pages
x86   64bit    … (number of core) * 8 pages
POWER 32/64bit … (number of core) * 1 pages

# echo  0 > /proc/sys/vm/nr_hugepages # need to be reset
# echo 65 > /pros/sys/vm/nr_hugepages # add 1 extra page
# echo 3355443200 > /pros/sys/kernel/shmmax   # just large number
# echo 3355443200 > /pros/sys/kernel/shmall

Dua step pertama bisa diatur agar permanen, tergantung distro kalian dan dua step terakhir agar permanen bisa ditambahkan di /etc/sysctl.conf lalu restart.

kita juga bisa menambahkan beberapa baris ke /etc/security/limit.conf

*       hard    memlock          unlimited
*       soft    memlock          unlimited

Lalu restart sshd (/etc/init.d/sshd restart)

Hasilnya? berikut adalah input yang aku gunakan

start benzene

geometry units angstroms
C  0.100  1.396  0.000
C  1.209  0.698  0.000
C  1.209 -0.698  0.000
C  0.000 -1.396  0.000
C -1.209 -0.698  0.000
C -1.209  0.698  0.000
H  0.000  2.479  0.000
H  2.147  1.240  0.000
H  2.147 -1.240  0.000
H  0.000 -2.479  0.000
H -2.147 -1.240  0.000
H -2.147  1.240  0.000
end

basis
H library “6-31+g*”
c library “6-31+g*”
end
dft
direct
end

Sebelum :
sebelum
Sesudah :
sesudah
Tidak terlalu signifikan sih hehe🙂, tapi itu sudah lumayan lho. Oia, di sini aku menggunakan direct scf artinya integeral dua elektron tidak akan ditulis di harddisk tetapi akan langsung dievaluasi oleh prosesor, karena kecepatan baca tulis harddisk juga akan berpengaruh dalam menentukan waktu lamanya komputasi, contohnya saja jika kita melakukan perhitungan dengan file scratch sebesar 1 GB, maka akan diperlukan beberapa menit sebelum iterasi scf dimulai untuk menulisnya di dalam harddisk, nah scratch ini akan dihapus lalu ditulis lagi setiap iterasi sehingga diperlukan waktu yang lebih lama lagi kan? Kurang lebih sih begitu. Oleh karena itu, biasanya program komputasi menggunakan semi direct scf sebagai defaultnya atau jika kita memiliki memori RAM yang cukup besar bisa menggunakan in core scf.

Agak sedikit OOT ya, jika opsi direct dihapus, hasilnya akan seperti ini :
coba
Oke, cukup sekian dan semoga bermanfa’at!

# Enable Large Page diambil dari GOtoBlas5_LargePage.txt
# Distro yang aku gunakan Debian 7 Wheezy

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s