MPICH2 Kurulumu ve Visual Studio 2008 ile Konfigürasyonu

MPICH2, Parallel Programming dersimizde paralel programlar yazmak için kullandığımız bir programdır. Bu programın kurulması ve kurduktan sonraki ayarlarının yapılması sırasında ben ve birçok arkadaşım birtakım sorunlarla karşılaştık. Aslında mpi kütüphanesini VS2003 ya da VS 6.0 ile kullanacaksanız ayarlarda herhangi bir sorun çıkmadığını öğrendim. Ancak ben VS2008 ile çalışmak istediğim için bunun ayarlarını nasıl yapacağım konusunda oldukça arastırma yaptım ve sonunda çözüme ulaştım. Baktım ki birçok kişi benzer problemlere cevap arıyor ben de arastırırken öğrendiklerimi burda paylaşmaya karar verdim.
Öncelikle mpich2 programını indirip kurun. Ben mpich2-1.0.5p2-win32-ia32 sürümünü kurdum. Kurulum oldukça kolay ve de kısa sürüyor. Kurulumun hem birçok sitede anlatılıyor olması hem de klasik next next diyerek tamamlanan bir işlem olması sebebiyle kurulum işlemlerini uzun uzun anlatmaya  gerek duymadım. Sadece üstünde durmak istediğim, kurulum sırasında “Select Installation Folder” kısmındaki Everyone, Just me seçeneklerinden Everyone’ı seçelim. Bir de “Process Manager Setup” kısmındaki passphrase bölümünde default olarak ”behappy” yazmaktadır. Buna, eğer bilgisayarınız açılırken şifre sormuyor ise, register işlemleri sırasında ihtiyaç duyulacaktır.
Kurulum tamamlandıktan sonra MPICH2 programının altındaki wmpiregister.exe bölümünden register ayarları yapılır. Şekilde görüldüğü gibi Account bölümüne bilgisayar adı ve  password bölümüne şifre girilir. Eğer bilgisayar açılırken şifre soruyorsa buradaki şifre bölümüne o şifreyi yazmak gerekir. Ancak bilgisayarınız açılırken şifre sormuyor ise,  şifre bölümüne behappy yazın. Bu bilgileri yazdıktan sonra önce Register sonra da OK butonuna basılır.

Register işlemi tamamlandıktan sonra aşağıdaki adımlar izlenmelidir. İlk olarak Visual Studio açılır, açılan pencerede Tools-> options-> projects and solutions->VC++ Directories bölümünden MPICH2’nin include ve library dosyaları directorylere eklenir. Ekleme işlemini gözat penceresinden MPICH2 ‘nin içinde yer alan include ve lib dosyalarını seçip kaydederek yapalım.


Bu işlemler tamamlandıktan sonra geriye 2 adım kaldı. Bu iki adımı her proje için yapmanız gereklidir. Birinci adım proje açıldıktan sonra üstteki bölümden Project->Properties->Configuration Properties ->Linker->Input bölümündeki Additional Dependencies bölümüne mpich2.lib yazıp tamama basalım.

Son adım ise aynı şekilde Project->Properties-> Configuration Properties -> C/C++->Command Line bölümündeki Additional options bölümüne -DMPICH_IGNORE_CXX_SEEK yazmaktır. Bu işlemi yapmadığımız takdirde VS2008' de "SEEK_SET is #defined but must not be for the C++ binding of MPI"   hatasını vermektedir.


Tüm bu işlemler tamamlandıktan sonra artık mpi kütüphanesi ile sorunsuz paralel programlar yazabilirsiniz. Programı Visual Studio ile debug ettikten sonra oluşan .exe uzantılı belgeyi wmpiexec.exe ile execute edebilirsiniz.




Veritabanında Back Up ve Restore İşlemi

Veritabanı yedeklemek ve yedeklenen veritabanını başka bilgisayarda kullanmak için back up ve restore işlemlerine ihtiyaç duyarız. Bu işlemlerin birkaç yolu mevcut ancak bana göre en basit olan yöntemi sizlerle paylaşacağım. Öncelikle yedekleme (Back Up) işleminin nasıl yapıldığına bakalım:

Diyelim ki dergi adlı veritabanının yedeğini almak isteyelim. dergi adlı  veritabanına sağ tıklayıp Tasks->Back Up a tıklayarak Back Up Database adlı pencereyi açalım. 
Daha sonra açılan pencerede sağ alt köşedeki Add butonuna tıkladığınızda Locate Database Files adlı bölümden yedeğin nereye kaydedileceği seçelim ve alttaki File name kısmına .bak uzantılı bir dosya adı verelim ( "yedek.bak" gibi).

Ok butonuna bastıktan sonra açık olan  Select Backup Destination penceresine de ok diyelim. Bunun ardından altta acık olan Back Up Database penceresinde yedek.bak dosyamız uzantısı ile birlikte gözükecektir. Onu seçip ok dediğiizde yedekleme işleminiz basarıyla gercekleştirilmiş olacaktır.

 Şimdi bu  yedeği kopyalayıp baska bilgisayarlara tasıyabilir bu sayede de ordaki bir veritababına ekleyebiliriz.

Şimdi ise yedeklediğimiz veritabanını başka ortamlara nasıl entegre  (restore işlemi)  edebileceğimize bakalım:
Yedeği taşımak istediğimiz bilgisayarda mevcut olan veritabanına dergi adında yeni bir veritabanı oluşturalım ve oluşturduğumuz bu  veritabanına sağ tıklayıp Tasks->Restore-> Database seçeneklerini seçelim.

Açılan pencerede from device ve from database seklinde 2 secenek karsımıza gelecek. Biz yedek.bak dosyamızı bu yeni bilgisayarda yine Backup dosyasının içine kopyaladığımızı düşünelim. Bu durumda kendi aygıtımızdan restore işlemi yapacağımızdan from device seçeneğini seciyoruz. Daha sonra yedeği kopyaladığımız yeri belirtiyoruz.

Bu işlem bittikten sonra altta halihazırda açık olan Restore Database penceresinde “Select the back up sets to restore” bölümüne restore edilecek olan veritabanı ile ilgili bilgiler geliyor. Yanındaki checkboxa tıklıyoruz. Ok demeden önce Resotre database penceresinin sol üst köşesindeki options bölümüne tıklayıp “overrite the existing database” seceneğini seciyoruz ki daha önce  dergi adında bir veritabanı oluşturulmuşsa bu güncellemeleri onun üzerine kaydetmesini sağlıyoruz.

Bu seceneği seçip ok tusuna basıldıgında veritabanı yeni bir bilgisayara başarıyla restore  edilmiş oluyor.











Bulut Hesaplama (Cloud Computing)

Bulut Hesaplama, yazılım ya da donanım ihtiyaçlarının internet aracılığıyla uzaktaki birçok bilgisayardan karşılanabilmesidir. Yani ihtiyaç duyduğunuz veriler ve hesaplamalar sizin bilgisayarınızda değil de uzaktaki birçok bilgisayarda tutuluyor ve siz ihtiyaç duymanız halinde bunlara internet üzerinden erişebiliyorsunuz. Bu durumda sizin bilgisayarınızda kullanacağınız programın yüklü olup olmamasının ya da işlemcinizin gücünün bir önemi kalmıyor. İnternet bağlantısı olan ve herhangi bir işletim sistemine sahip bir bilgisayarla bu hizmete erişebiliyorsunuz. Böylece platform bağımsızlık sağlanmış oluyor.  

Bulut Hesaplama gelişen sanallaştırma teknolojileri sayesinde hizmet verebilen bir dağıtık yapıdır ve kullanıcıların ihtiyaç duyduğu anda sunucu ekleyip çıkararak arten talebi karşılayacak şekilde çalışmaktadır. Bu mimarinin sanallaştırma teknolojisi ile gelişmiş olmasının nedeni de aslında sanallaştırmanın donanım, sürücü gibi farklılıkları ortadan kaldırması , bir nevi platform bağımsızlığını sağlayarak tüm kullanıcılara hizmet verecek şekilde ortak bir taban yaratmasıdır. 


Bulut Hesaplama denince iki önemli kavram öne çıkmaktadır. Bunlar Grid Computing ve Utility Computing. Grid computing tek bir bilgisayar yerine çok fazla küçük bilgisayarın işlem gücünün kullanılması demektir. Yani siz uygulamalarınızı uzaktaki sunuculara göndererek depoluyorsunuz daha sonra bu uygulamaların ihtiyaç duyduğu işlem gücü birden fazla bilgisayardan karşılanıyor. Aslında  bu çok yeni bir uygulama sayılmaz, yıllardan beri bir çok projede kullanılmaktadır.
Bulut Hesaplama’daki bir diğer önemli kavram olan Utility Computing ise aslında kullanıcının almış olduğu hesaplama hizmetlerinin ölçülmesi mantığına dayanıyor. Bulut Hesaplama hizmetlerini sunan şirketlerden bu uygulamaları kiralayarak kullanıyor ve kullandığınız disk alanına ve işlem kapasitesine göre ödeme yapıyorsunuz. Aşağıda belirttiğim servisler ise günümzde bu tarz hizmetleri sağlamaktadırlar.
1.      Microsoft Azure :  Windows Azure, Microsoft’un geliştirmiş olduğu genellikle .Net platformunu destekleyen bir servistir. Bu servis .Net platform hizmetleri, Sql Server hizmetleri, Live servisleri, SharePoint servisleri ve Dynamics servislerini içermektedir. Siz uygulamanızı Azure’ye göre modifiye edip, Visual Studio ile geliştirebilirsiniz. Tabi bu servislerlerden belirli bir ücret karşılığında yararlanabilirsiniz (Utility Computing).

2.      Sun Open Cloud:  Sun  Open Cloud ise açık kaynak Bulut hesaplama sistemidir. Java platformu, Open Solaris ve MySql servislerini sunmaktadır. Windows Azure’ de olduğu gibi Sun Open Cloud’da da bu servisleri kullanma oranınıza göre para ödüyorsunuz. 

3.      Google App Engine:   Google tarafından sunulan bu hizmet daha çok Phyton üzerinde ve Django kütüphanesi ile kulanılmaktadır.

Adobe Air teknolojisi de benzer mantıkla çalışmaktadır. Bu teknoloji ile internet üzerindeki uygulamaları kendi bilgisayarınızdaki bir program gibi çalıştırabilirsiniz. Bulut Hesaplama’yı servis sağlayıcılar açısından düşünürsek sağlanılan hizmet tipleri şunlardır:

·         Servis Olarak Yazılım (SAAS- Software as a Service) :  Kullanıcı uygulamaya tarayıcı veya istemci programı ile bağlanır. Yani kullanıcı geleneksel mantığın dışına çıkarak kullanacağı programı satın almak yerine ihtiyaçları ölçüsünde kiralayabiliyor. Örnek olarak; Google Docs, Zoho Office, Yahoo Mail.

·         Servis Olarak Altyapı (IAAS-Infrastructure as a Service):  Burada bir servis sağlayıcı, kullanıcının sistem ve altyapı servislerini sanallaştırma hizmetleri gibi sunuculardan sağlar. Örneğin; Amazon ve GoGrid.

·         Platform Olarak Servis (PAAS- Platform as a Service):  Müşteriler, servis sağlayıcının hazırladığı altyapıyı kullanarak uygulama geliştirirler. Yani bilgisayarınıza kütüphane indirmeden işleminizi yapabilirsiniz. Örnek olarak; Google Apps Engine. 
Peki neden Bulut Hesaplama’ya ihtiyaç duyalım ki?
Bu soruya bir çok cevap verebiliriz. Birincisi bilişim ihtiyacınızı aynı elektrik, su, telefon servisleri gibi, ihtiyacınız olduğu kadar kullanarak ve kullandığınız kadar ödeyerek, karşılayabilirsiniz. Ayrıca sürekli güncellemek zorunda olduğunuz bir donanım masrafından kurtulursunuz.

Yazılımcılar açısından düşünüldüğünde de mantık aynıdır. Yazılım kullanıldığı kadar ücretlendirilen bir hizmet haline geliyor. Programın kendisini satın almak yerine o programın servislerini kullanarak yazılım geliştirilebiliniyor. Bu sayede kullanmadığınız kaynaklara para ödemek durumunda kalmıyorsunuz.

Bütün bu sayılanlar göz önünde bulundurulduğunda Bulut Hesaplama’nın maliyeti optimize etmek, kullanım kolaylığı, güvenlik, ölçeklenebilirlik, sürdürülebilirlik gibi getirileri vardır.

Elbette ki geleceğin bu teknoloji üzerine kurulabileceği kanısını taşımakla beraber akla takılabilecek birkaç soruya da değinmek istiyorum.

·         Birincisi sunucularda bulunan verilerimiz ne kadar güvenli? Bu verilere herkes erişebilir mi? Bu verileri şifrelemek mümkün mü?

·         Bir diğeri servis sağlayıcıların değiştirilmek istenmesi durumunda tüm veri ve ayarların diğer sağlayıcıya taşınması mümkün müdür? Servis sağlayıcılar arasında da standartlaşmalar gerekecektir. Sun Open Cloud bir nevi bu sorunu çözmeye yöneliktir.

·         Üçüncü bir sorun ise yasal engellerdir. Servis sağlayıcıları sürekliliği tam olarak sağlayabileceklerini garanti edebilirler mi?

Tüm bu artı ve eksiler değerlendirildiğinde Bulut Hesaplama’nın tam anlamıyla geliştirilmesi ve insanların bu sisteme alışmaları zaman alacaktır. Bir gün insanlar yer, zaman ve platformdan bağımsız olarak bilgiye erişebilir ve kullanabilir olacaklardır.
Not: Bu yazıyı okulumuzun e-dergisi Readmee için yazdım. Diğer yazılarıma ulaşmak ya da başka arkadaşların yazılarını okumak için www.readmee.com adresini ziyaret edebilirsiniz.