Batasi ukuran cluster dengan modul sumber tertutup di program sumber terbuka


10

Saya bekerja di lembaga penelitian akademik yang sangat bergantung pada komputasi kinerja tinggi. Dalam 10 tahun kami telah mengembangkan kode Fortran kami sendiri yang sangat dihormati dan dapat dijalankan pada kelompok yang sangat besar. Agar komunitas riset yang lebih besar mendapat manfaat dari kode ini, kami mempertimbangkan untuk menjadikannya open-source. Namun, karena dana kami sangat tergantung pada penelitian yang dapat kami lakukan dengan kode, kami akan menjadi semacam penembakan di kaki.

Salah satu idenya adalah membatasi jumlah CPU yang dapat dijalankan oleh kode, mis. Maksimum 1000 CPU, bukan 100.000 yang kami gunakan. Dengan begitu komunitas riset global dapat mengambil manfaat dari kode tersebut, tetapi kami akan memiliki keuntungan pada ukuran masalah yang dapat kami jalankan.

Apakah fitur seperti itu dimungkinkan secara konseptual? Dan bagaimana fitur seperti itu diimplementasikan? Pada dasarnya kami ingin open-source kode lengkap, tetapi membatasi paralelisasi (menggunakan MPI) ke sejumlah thread MPI, misalnya menggunakan modul (sumber tertutup).


Apa yang akan dilakukan oleh modul sumber tertutup itu? Seberapa sulit bagi orang lain untuk mengimplementasikannya kembali?
svick

Jawaban:


16

Anda mencoba membiarkan komunitas riset mendapat manfaat dengan membuat mereka dapat melakukan apa yang Anda lakukan, tanpa membuat mereka mampu melakukan apa yang Anda lakukan. Kedengarannya seperti Anda belum benar-benar membuat pilihan yang berprinsip.

Solusi perangkat lunak seperti itu dalam perangkat lunak open source sepertinya tidak akan berfungsi: kodenya adalah open source. Hal pertama yang akan dilakukan oleh lembaga lain adalah merobek bit sumber tertutup, menggantinya dengan bit sumber terbuka tanpa batasan seperti itu, dan kemudian semua orang akan menggunakannya.

Ada mungkin menjadi kompromi yang mungkin: tidak open source software, tetapi lisensi menjual. Lembaga dengan lisensi juga mendapatkan hak untuk membaca dan memodifikasi kode, tetapi tidak untuk mendistribusikannya. Mengisi daya setiap tahun. Dengan begitu Anda mungkin bisa menebus kehilangan dana dengan mengambil sebagian dari mereka.

Pilihan lain adalah merilis versi yang lebih lama, yang terus diperbarui tetapi selalu tertinggal beberapa tahun. Namun, komunitas open source dapat mengambil proyek dan mengembangkan fitur baru lebih cepat dari yang Anda lakukan (atau mungkin tidak; kebanyakan orang melebih-lebihkan minat orang lain terhadap perangkat lunak mereka).

Atau lepaskan saja dan manfaatkan pekerjaan yang dilakukan orang lain di sana. Anda akan selalu menjadi ahli teratas di perangkat lunak.


4

Ini tidak bisa dilakukan.

Ide di balik open source adalah bahwa sumber adalah terbuka , dengan kata lain, orang akan memiliki akses ke sana. Dari Wikipedia :

Dalam produksi dan pengembangan, sumber terbuka sebagai model pengembangan mempromosikan akses universal melalui lisensi gratis ke desain atau cetak biru produk, dan redistribusi universal desain atau cetak biru itu, termasuk perbaikan selanjutnya oleh siapa saja.

Dengan memberikan akses universal ke desain atau cetak biru, meskipun versi yang dirilis hanya terbatas pada 1000 core, akan cukup mudah untuk hanya mengubah angka itu menjadi 100000 atau sesuatu.


Berikut ini beberapa opsi yang dapat Anda lakukan:

  • Pertimbangkan untuk melepaskan kode di bawah lisensi yang membatasi pengguna kode Anda
  • Lepaskan pustaka API sumber tertutup yang memungkinkan peneliti lain memperoleh fungsionalitas Anda tanpa memiliki akses ke kode itu sendiri.

Benar. Jika Anda memasukkan kode ke sana untuk mengatakan "periksa jumlah CPU dan jangan gunakan lebih dari X" dengan benar, siapa pun dapat menyisir sumber terbuka Anda, hapus centang itu, dan kompilasi ulang.

4

Ada sangat sedikit yang dapat Anda lakukan untuk membatasi apa yang orang lain akan lakukan dengan kode sumber Anda. Mereka dapat membuat modul lain dari awal yang dapat membuka kemampuan multiprosesing, atau bahkan meningkatkannya: itu akan menghabiskan waktu dan keahlian, tetapi jika penting bagi mereka, mereka akan melakukannya.

Dengan sepuluh tahun sebelum memulai, Anda masih memiliki kesempatan untuk menggunakan pengalaman dan pengetahuan Anda tentang kode untuk terus melakukan penelitian terbaik, bahkan jika Anda memberi orang lain kode sumber yang memungkinkan mereka untuk mereplikasi eksperimen Anda. Pendana Anda mungkin memiliki lebih banyak alasan untuk mendatangi Anda, karena dampak riset Anda mungkin lebih besar jika Anda adalah pemimpin proyek sumber terbuka yang digunakan di beberapa universitas.

Alih-alih open source, Anda dapat mencoba untuk membatasi orang lain secara legal, dengan menerbitkan sumber Anda tetapi menempatkan pembatasan kepemilikan pada lisensi sumber. Saya dapat memikirkan beberapa proyek yang telah melakukan ini: Ghostscript, AT&T Unix, Microsoft .NET dan Xerox PARC Smalltalk-80. Sementara yang akhirnya menjadi open source sepenuhnya, saya berharap ada yang kurang terkenal yang masih menempatkan batasan bagaimana lisensi menggunakan kode sumber. Tentu saja, sementara menerbitkan sumber Anda akan berarti mereka yang kurang menghormati hukum dapat melanggar persyaratan, itu harus menjaga peneliti akademis dari menjalankan kode Anda pada superkomputer sekuat milik Anda.



@musiKk Pada tahun 2002, rotor dari inti .NET dimulai sebagai 'sumber bersama' yang dipatenkan , tetapi baru-baru ini sebagian besar sumber komersial diterbitkan di bawah lisensi referensi , dan kemudian, pada versi 4.6, sumber sepenuhnya terbuka . Saya tidak menyadari betapa rumitnya pengaturan berbagi sumber Microsoft .
dcorking

1
Anda benar-benar membuat hati saya berdebar. Saya pikir saya menggali jawaban 13 tahun. Sudahlah SO diluncurkan pada 2008 ... Cukup adil.
musiKk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.