Amazon Best VPN GoSearch

Favicon OnWorks

PDL::ParallelCPUp - Dalam Talian di Awan

Jalankan PDL::ParallelCPUp dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan PDL::ParallelCPUp yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

JADUAL:

NAMA


PDL::ParallelCPU - Sokongan MultiThreading Pemproses Selari dalam PDL (Percubaan)

DESCRIPTION


PDL mempunyai sokongan (kini percubaan) untuk memisahkan pemprosesan berangka antara
berbilang benang pemproses selari (atau pthread) menggunakan set_autopthread_targ and
set_autopthread_size fungsi. Ini boleh meningkatkan prestasi pemprosesan (lebih besar daripada
2-4X dalam kebanyakan kes) dengan memanfaatkan mesin berbilang teras dan/atau berbilang pemproses.

SINOPSIS


gunakan PDL;

# Tetapkan sasaran 4 pthread selari untuk dibuat, dengan had yang lebih rendah
# 5Meg elemen untuk membelah pemprosesan kepada pthread selari.
set_autopthread_targ(4);
set_autopthread_size(5);

$a = sifar(5000,5000); # Buat tatasusunan elemen 25Meg

$b = $a + 5; # Pemprosesan akan dibahagikan kepada berbilang pthread

# Dapatkan bilangan sebenar pthreads untuk yang terakhir
# operasi pemprosesan.
$actualPthreads = get_autopthread_actual();

Istilah


Penggunaan istilah itu menjalar boleh mengelirukan dengan PDL, kerana ia boleh merujuk kepada PDL
menjalar, seperti yang ditakrifkan dalam PDL::Threading docs, atau kepada pemproses pelbagai threading.

Untuk mengurangkan kekeliruan dengan terminologi benang PDL sedia ada, dokumen ini menggunakan
pthreading untuk merujuk kepada pemproses pelbagai threading, iaitu penggunaan pemproses berbilang
benang untuk memisahkan pemprosesan berangka kepada operasi selari.

Fungsi Bahawa kawalan PDL PTthreads


Ini ialah penyenaraian ringkas dan penerangan tentang fungsi pthreading PDL, lihat PDL::Core
dokumen untuk maklumat terperinci.

set_autopthread_targ
Tetapkan bilangan sasaran pemproses-benang (pthreads) untuk pemprosesan berbilang-benang.
Menetapkan auto_pthread_targ kepada 0 bermakna tiada pthreading akan berlaku.

Lihat PDL::Teras untuk butiran.

set_autopthread_size
Tetapkan saiz minimum (dalam elemen Meg atau 2**20 elemen) PDL terbesar yang terlibat
dalam fungsi di mana auto-pthreading akan dilakukan. Untuk PDL kecil, mungkin
tidak bernilai memulakan berbilang pthread, jadi fungsi ini digunakan untuk menentukan minimum
ambang di mana auto-pthreading tidak akan dicuba.

Lihat PDL::Teras untuk butiran.

dapatkan_autopthread_actual
Dapatkan bilangan sebenar pthread yang dilaksanakan untuk fungsi pemprosesan pdl terakhir.

Lihat PDL::get_autopthread_actual untuk butiran.

Global Mengawal of PDL PTthreading menggunakan alam Sekitar Pembolehubah


PDL PThreading boleh dihidupkan secara global, tanpa mengubah suai kod sedia ada dengan menetapkan
pemboleh ubah persekitaran PDL_AUTOPTHREAD_TARG and PDL_AUTOPTHREAD_SIZE sebelum menjalankan PDL
skrip. Pembolehubah persekitaran ini disemak apabila PDL dimulakan dan memanggil ke
set_autopthread_targ and set_autopthread_size fungsi yang dibuat dengan persekitaran
nilai pembolehubah.

Sebagai contoh, jika persekitaran var PDL_AUTOPTHREAD_TARG ditetapkan kepada 3, dan
PDL_AUTOPTHREAD_SIZE ditetapkan kepada 10, maka mana-mana skrip pdl akan berjalan seolah-olah baris berikut
berada di bahagian atas fail:

set_autopthread_targ(3);
set_autopthread_size(10);

Cara It Kerja


Proses auto-pthreading berfungsi dengan menganalisis dimensi tatasusunan berulir dalam operasi PDL
dan pembahagian pemprosesan berdasarkan saiz dimensi benang dan bilangan yang dikehendaki
pthreads (iaitu sasaran pthread atau pthread_targ). Offset dan kenaikan yang PDL
kegunaan untuk melangkah melalui data dalam ingatan diubah suai untuk setiap pthread supaya setiap satu melihat a
set data yang berbeza semasa melakukan pemprosesan.

Contoh

$a = jujukan(20,4,3); # Susunan 3-D Kecil, saiz 20,4,3

# Sediakan auto-pthreading:
set_autopthread_targ(2); # Sasaran 2 pthreads
set_autopthread_size(0); # Sifar supaya PDL kecil dalam contoh ini akan dipthread

# Ini akan dibahagikan kepada 2 pthreads
$c = maksimum($a);

Untuk contoh di atas, yang maksimum fungsi mempunyai tandatangan "(a(n); [o]c())", yang
bermakna dimensi pertama $a (saiz 20) ialah a Teras dimensi daripada maksimum
fungsi. Dimensi lain $a (saiz 4,3) ialah threaded dimensi (iaitu akan menjadi
berulir dalam maksimum fungsi.

Algoritma auto-pthreading memeriksa malap berulir saiz (4,3) dan memilih 4
dimensi, kerana ia boleh dibahagikan sama rata oleh autothread_targ 2. Pemprosesan
fungsi maksimum kemudiannya dibahagikan kepada dua pthread pada dimensi saiz-4, dengan malap
indeks 0,2 diproses oleh satu pthread
dan indeks malap 1,3 diproses oleh pthread yang lain.

Batasan


Mesti mempunyai POSIX Benang didayakan
Auto-PTThreading hanya berfungsi jika pemasangan PDL anda telah disusun dengan urutan POSIX
didayakan. Ini biasanya berlaku jika anda menjalankan linux, atau varian unix lain.

Bukan Threadsafe Kod
Tidak semua pustaka yang disambungkan oleh PDL adalah selamat untuk benang, iaitu, ia tidak ditulis
beroperasi dalam persekitaran berbilang benang tanpa terhempas atau menyebabkan kesan sampingan. Beberapa
contoh dalam teras PDL ialah fft fungsi dan pnmout fungsi.

Untuk beroperasi dengan betul dengan jenis fungsi ini, bendera PPCode NoPthread telah
diperkenalkan untuk menunjukkan fungsi sebagai tidak selamat kepada pthread. Lihat PDL::PP docs untuk butiran.

Saiz of PDL Ukuran and PTthread Sasaran
Disebabkan oleh cara PDL dipisahkan untuk operasi menggunakan berbilang pthread, saiz a
dimensi mesti boleh dibahagikan sama rata oleh sasaran pthread. Sebagai contoh, jika PDL mempunyai
saiz dimensi berulir (4,3,3) dan auto_pthread_targ telah ditetapkan kepada 2, kemudian
dimensi berulir pertama (saiz 4) akan dipilih untuk dibahagikan kepada dua pthread bersaiz
2 dan 2. Walau bagaimanapun, jika saiz dimensi berulir ialah (3,3,3) dan auto_pthread_targ is
masih 2, maka pthreading tidak akan berlaku, kerana tiada dimensi berulir yang boleh dibahagikan dengan 2.

Algoritma yang memilih bilangan sebenar pthreads mempunyai beberapa kecerdasan (tetapi mungkin
diperbaiki) untuk menyesuaikan turun dari auto_pthread_targ untuk mendapatkan beberapa pthreads itu
boleh membahagi sama rata satu daripada dimensi berulir. Sebagai contoh, jika PDL telah berulir
saiz dimensi (9,2,2) dan auto_pthread_targ ialah 4, algoritma akan melihat bahawa tidak
dimensi boleh dibahagikan dengan 4, kemudian laraskan ke bawah sasaran kepada 3, mengakibatkan pemisahan
dimensi berulir pertama (saiz 9) menjadi 3 pthread.

Mempercepatkan penambahbaikan kekuatan be kurang daripada anda menjangkakan.
Jika anda mempunyai mesin 8 teras dan hubungi auto_pthread_targ dengan 8 untuk menjana 8 selari
pthreads, anda mungkin tidak akan mendapat peningkatan 8X dalam kelajuan, disebabkan jalur lebar memori
isu. Walaupun anda mempunyai 8 CPU berasingan yang memusnahkan data, anda akan mempunyai (untuk
seni bina mesin yang paling biasa) RAM biasa yang kini menjadi hambatan anda. Untuk ringkas
pengiraan (contohnya penambahan mudah) anda boleh menghadapi had prestasi pada kira-kira
4 pthreads. Untuk pengiraan yang lebih kompleks had akan lebih tinggi.

HAKCIPTA


Hak Cipta 2011 John Cerney. Anda boleh mengedarkan dan/atau mengubah suai dokumen ini di bawah dokumen yang sama
syarat sebagai lesen Perl semasa.

Lihat: http://dev.perl.org/licenses/

Gunakan PDL::ParallelCPUp dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad




×
Pengiklanan
❤ ️Beli, tempah atau beli di sini — tanpa kos, membantu memastikan perkhidmatan percuma.