Mơi trường cài đặt

Một phần của tài liệu CNTT1001 (Trang 69 - 81)

3.3.3.1. Tồng quan

Chúng em đã thử cài đặt Globus phiên bản 3.2 nhưng hiệu quả cài đặt khơng cao. Việc cài đặt và lập trình trên máy đơn hầu như đơn giản ,chỉ cần vài thao tác cĩ thể xong. Nhưng việc cài đặt trên một mạng LAN thì khĩ khăn trong việc thơng nhau giữa các máy sử dụng Globus.

Chúng em quyết định sử dụng mơi trường lập trình truyền thơng điệp LAM. LAM/MPI khơng phải là một cơng cụ hỗ trợ tính tốn phân bố .Mà LAM là cơng cụ dùng cho việc viết các chương trình theo chuẩn MPI chạy trên nhiều máy đã cài

đặt LAM.Ta xem LAM như là một dịch vụ trên hệ điều hành phục vụ cho việc biên dich,thực thi chương trình MPI.

Là phiên bản nguồn mở, cung cấp miễn phí với chuẩn MPI. LAM/MPI

được nghiên cứu, phát triển và hỗ trợ bởi Phịng thí nghiệm hệ thống mở (Open Systems Lab) ở trường đại học Indiana. LAM/MPI hỗ trợ tất cả các chuẩn MPI- 1và nhiều chuẩn MPI-2.

LAM/MPI khơng chỉ là thư viện bổ sung các hàm API của MPI ,mà cịn là mơi trường thực thi LAM : 1 tầng user,mơi trường nền tảng trung gian ,nĩ cung cấp nhiều dịch vụ cho những chương trình MPI .Cả những thành phần chính của LAM/MPI được thiết kế như những thành phần cĩ chức năng riêng biệt, cĩ khả

năng mở rộng với những mơ đun vào lúc thi hành .Thành phần này được biết như

là Hệ thống Giao tiếp Dịch vụ (System Services Interface _SSI). 3.3.3.2. Cài đặt

3.3.3.2.1. Những yêu cầu o Những yêu cầu chung Hệđiều hành:

http://etrithuc.vn

LAM/MPI được sử dụng trên Linux .Mặc dù MPI/MPI được thử nghiệm trên Red Hat và hệ thống Mandrake Linux sử dụng phiên bản kernel hiện tại nhưng nĩ vẫn chay tốt trên các phiên bản Linux phân phối khác

Các phiên bản Linux cũ hơn như kernel phiên bản 2.2.0 đến 2.2.9 cĩ vài lỗi trong vấn đề mạng TCP/IP .Phiên bản 2.2.10 đã sửa được các vấn đề này . Vì thế các bạn cĩ thể nâng cấp phiên bản Linux lên 2.2.10 hay mới hơn để

việc cài đặt và thực hiện chương trình LAM/MPI được chắc chắn hơn Phiên bản Linux chúng tơi sử dụng là RedHat 10 core 1 , hay các phiên bản Linux 9 .

Trình biên dịch trên hệđiều hành Trình biên dịch ANSI C

Trình biên dịch C++ cĩ hỗ trợ namespace

Các tiện ích Unix shell như sed, awk,và grep v.v. hay các tiện ích của Linux như emacs,gedit,terminal v.v...

o Những yêu cầu của mơ đun dịch vụ hệ thống

Nhưđã nĩi LAM/MPI được xây dựng xung quanh một thành phần kiến trúc cốt lõi được biết như Hệ thống giao tiếp dịch vụ (System Services Interface _SSI) .Một trong những nguyên tắc chủ yếu là khả năng thực hiện “gắn vào _tháo ra” (plug-in) lúc thực thi để mở rơng khả năng của các mơ đun của LAM.

Mỗi mơ đun thành phần được chọn từ mỗi loại lúc thực thi và được sử dụng

đê thực hiện hiệu quả mơi trường LAM và thư viện MPI (Xem chi tiết trong chun lp trình song song MPI)

Hiện thời LAM/MPI sử dụng 4 dạng thành phần mơ đun

boot :Bắt đầu mơi trường thực thi LAM, được sử dụng với dịng lệnh lamboot

coll :quản lý những hàm MPI truyền thơng đa xử lý, sử dụng bên trong xử lý MPI.

http://etrithuc.vn

cr :Khởi động lại những chức năng , được sử dụng bên trong xử

lý MPI và dịng lệnh LAM

rpi : quản lý những hàm MPI truyền thơng điểm điểm, chỉ sử

dụng bên trong xử lý MPI

Mỗi mơ đun hệ thống giao tiếp dịch vụ cĩ cấu hình chính của nĩ và xây dựng hệ thống phụ. Một số mơ đun cấu hình bị lỗi sẽ cĩ thể bỏ qua và nĩ khơng gây ra việc cài đặt bị lỗi, giống như cài đặt chương trình nào đĩ mà ta bấm qua nút Skip

Mỗi SSI mơ đun cĩ thể cĩ những yêu cầu cho việc cài đặt thêm, ngoại trừ

nhứng yêu cầu chung của LAM.

Chi tiết các mơ đun trên :

Bproc Boot:chỉ được kiểm thử với tập hợp 3.2.x với phiên bản v3.2.5.Những phiên bản trước đĩ của 3.2.x bị lỗi và cĩ thể gây cho LAM/MPI hỏng khi đang chaỵ.

SLURM Boot:Hỗ trợ việc thực thi trong những mơi trường SLURM .Khơng cấu hình bổ sung hay xây dựng những tham số

là cần thiết cho việc hỗ trợ SLURM.Dịng lệnh laminfo cĩ thể được sử dụng để xác nhận lại rằng mơ đun boot slurm sẵn cĩ trong gĩi việc cài đặt LAM

Các mơ đun cịn lại cĩ thể tham khảo thêm

TM Boot :

BLCR Checkpoint /Restart

Myrinet (gm) RPI

Infiniband(ib) RPI

Shared Memory RPI 3.3.3.2.2. Cấu hình LAM/MPI

http://etrithuc.vn

Bước đầu tiên và cũng phức tạp nhất trong việc cài đặt LAM/MPI là cấu hình xử lý .Nhiều lựa chọn cĩ thểđược thiết lập lúc cài đặt hay khi thực thi chương trình , việc cấu hình đơn giản chỉđể trạng thái mặc định

Các bước trong vic cài đặt :

Giải nén

Phiên bản phân phối LAM được đĩng gĩi như một tập tin được nén cĩ

định dạng gzip hay bzip2 .

shell$ gunzip –c lam-7.1.tar.gz|tar xf shell$ tar zxf lam-7.1.tar.gz

Nhng cu hình cơ bn :

LAM sử dụng một đoạn script cấu hình GNU để hiển thị các trang cài

đặt và đặt tả các cấu hình:

Chuyển đường dẫn tới thư mục chứa tập tin Lam đã được giải nén .Thiết lập các biến mơit trường cần thiết và thực thi tập tin script configure shell$cd lam-7.1

shell$ ./configure <tuỳ chọn>

Mặc định thì tập tin script configure thiết lập thư mục cài đặt LAM ở

thư mục cha nơi mà dịng lệnh lamclean được tìm thấy ,hay đường đẫn /usr/local nếu dịng lệnh lamclean khơng tìm thấy .Cách cài đặt như thế

này cĩ thểđược chồng lắp với tuỳ chọn –prefix Tuỳ chọn trình biên dịch :

Đoạn mã trong tập tin configure tìm kiếm các trình biên dịch đúng cho việc xây dựng LAM/MPI

Tu chn trình biên dch

Đặc tả trình biên dịch và những tuỳ chọn trình biên dịch

Những biến mơi trường được sử dụng để chồng lắp lên những thơng số đã cài đặt mặc định

http://etrithuc.vn

Trình biên dịch :Những biến mơi trường CC,CXX,và FC đặc tả trình biên dịch C, C++ và Fortran được sử dụng để xây dựng LAM .Dịng lệnh tương ứng sẽ là mpicc,mpic++ và mpiff7

Những cờ biên dịch :Những biến mơi trường CFLAGS,CXXFLAGS,và FFFLAGS đặc tả những cờ biên dịch để thơng qua các trình biên dịch thích hợp .Những cờ này chỉ được sử dụng khi xây dựng LAM và khơng

được thêm vào những danh sách tham số của trình biên dịch cĩ tính chất như vỏ bọc bên ngồi chẳng hạn như mpicc,mpic++. Các trình biên dịch này được gọi như vậy bởi vì nĩ bao bọc một trình biên dịch bên trong, chẳng hạn như trình mpicc bao bọc trình biên dịch gcc,trình mpic++ bao bọc trình gc++ v.v...

Những cờ liên kết : Những biến mơi trường như

LDFLAGS,CXXLDFLAGS được sử dụng để thêm những tham số vào trình liên kết (hay trình biên dịch C++ khi sử dụng một trình liên kết ). Chúng cũng khơng được thêm vào danh sách tham số của trình biên dịch cĩ tính chất như vỏ bọc bên ngồi các trình biên dịch khác

Tu chn cu hình :

Đoạn mã cấu hình trong tập tin configure sẽ tạo một số tập tin cấu hình sử dụng trong suốt pha xây dựng LAM .Bao gồm những tập tin dùng để định nghĩa như /share/include/lam_config.h.

Nhng tu chn tng quát :

Những tuỳ chọn sau đây liên quan đến những kiến trúc cơ bản LAM/MPI:

o--disable-static :

Khơng xây dựng các thư viện tĩnh .Cờ trạng thái này chỉ cĩ nghĩa khi –enalble-shared được thiết lập,nếu cờ này được đặc tả mà –enable- shared khơng thiết lập thì nĩ coi nhưđược bỏ qua và thư viện tĩnh được tạo ra

http://etrithuc.vn

o--enalble-shared: Xây dựng thư viện được chia sẻ . o--disable-tv-queue

o--prefix=PATH:Thiết lập thư mục cài đặt cho những tập tin nhị

phân ,thư viện v..v.. của LAM là PATH .PATH phải được

đặt tả như một tên thư mục cốđịnh o--with-boot=MODULE_NAME

MODULE_NAME được thiết lập mơ đun SSI khởi động (SSI boot) mặc định .MODULE_NAME phải là một trong những kỹ thuật khởi động liên thơng các máy tr ên mạng với nhau .Hiện thời ,những kỹ thuật này bao gồm : rsh,tm,slurm,và bproc,và globus

Gía trị mặc định cho tuỳ chọn này là rsh .Chú ý rằng cấu hình của LAM / xây dựng hệ thống sẽ cố gắng xây dựng những mơ đun RPI sẵn dùng . 3.3.3.2.3. Xây dựng LAM

Một khi đã hồn thành bước cấu hình ,tiếp theo là tạo dựng nên mơi trường LAM

shell$make

shell$make install shell$make all install Thay đổi thư mục cài đặt

LAM xây dựng hệ thống là khả năng của việc cài đặt vào một thư mục một khi đặc tả bằng tuỳ chọn cấu hình –prefix .LAM sẽ khơng thực thi một cách chắc chắn khi được cài đặt trong thư mục chuyển đổi .Tuy nhiên đặc điểm này là hữu ích cho việc xây dựng những gĩi nhị phân .

Bổ sung những ví dụ cĩ sẵn trong mơi trường LAM/MPI

LAM bao gồm 2 gĩi ví dụ : những ví dụ LAM nĩi chung và những ví dụ

ROMIO .Cả hai gĩi này cĩ thể được xây dựng từ một tầng đơn giản là “make lamexamples”.Chú ý rằng ,những ví dụ chỉ cĩ thể được xây dựng

http://etrithuc.vn

sau khi đã thành cơng trong việc tạo mơi trường LAM ở trên và biến mơi trường PATH đã được thiết lập ($PATH=$prefix/bin)

3.3.3.3. Hướng dẫn sử dụng •Khởi tạo mơi trường

Trước khi những chương trình MPI được thực thi ,thì mơi trường LAM phải được khởi động .

Tập tin Boot (“Hostfile ,Machinefile”):quản lý tất cả các máy trên mạng, để tạo thành một hệ LAM

Khi sử dụng giao thức tuyền tập tin trên Linux là rsh hoặc ssh để

khởi động LAM, phải cần một tập tin dạng văn bản liệt kê danh sách những tên máy được LAM khởi động .Tập tin này điển hình đựơc xem như là “boot schema”,”hostfile”,hay “machinefile” ở trên. Ví dụ # My boot schema node1.cluster.example.com node2.cluster.example.com node3.cluster.example.com cpu=2 node4.cluster.example.com cpu=2

LAM cung cấp một số dịng lệnh để khởi tạo hệ LAM như sau

Dịng lệnh lamboot

Dịng lệnh lamboot được sử dụng để khởi chạy mơi trường LAM .Cho mỗi máy được liệt kê trong lược đồ khởi động , những điều kiện sau đây phải được thoả mãn để khởi động mơi trường LAM

đúng :

Mạng máy tính phải thơng

Người dùng (user) cĩ thể thực thi trên dịng lệnh mỗi máy mà khơng cần password

http://etrithuc.vn

Người dùng (user) phải cĩ thể được viết trên thư mục phiên làm việc LAM (thường là /tmp)

Những đọan mã khởi động của shell cấm in bất cứ thứ gì lỗi chuẫn

Dịng lệnh lamnodes

Một cách dễ nhất để xem xét cĩ bao nhiêu nút và CPUs trên hệ

thống LAM hiện thời là sử dụng lệnh lamnodes .Ví dụ dịng lệnh lamnodes sẽ cho ra kết quả như sau :

shell$ lamnodes

n0 node1.cluster.example.com:1:origin,this node n1 node2.cluster.example.com:1:

n2 node3.cluster.example.com:2: n3 node4.cluster.example.com:2:

Trong ví dụ trên cĩ tổng cộng 6 CPU sẵn dùng cho việc chạy những xử lý .

•Biên dịch chương trình

Khơng cần thiết phải khởi tạo mơi trường LAM/MPI .

Việc biên dịch chương trình MPI cĩ thể là một xử lý phức tạp :

Cùng những trình biên dịch nên được sử dụng để biên dịch /liên kết những chương trình MPI

Tuỳ thuộc vào việc cấu hình cài đặt cụ thể của LAM ,mà những cờ - I,-Lvà –l v.v... cĩ thể cần thiết trong khi biên dịch và liên kết chương trình MPI

LAM/MPI cung cấp những trình biên dịch được xem như là vỏ bọc bên ngồi để che dấu hết những sự phức tạp trong việc biên dịch . Những trình biên dịch kiểu này là mpicc(cho chương trình C),mpic++(cho chương trình C++)và mpiff7(cho chương trình Fortran).Ví dụ

http://etrithuc.vn

shell$ mpicc −g −c foo.c

shell$ mpicc −g −c bar.c

shell$ mpicc −g foo.o bar.o −o my mpi program

•Thực thi chương trình

Dịng lnh mpirun

Dịng lệnh mpirun cĩ nhiều tuỳ chọn khác nhau cĩ thểđược sử dụng để điều khiển sự thực thi của một chương trình song song. Chúng tơi chỉđề

cập một số tuỳ chọn đơn giản và dùng thường xuyên sau đây:

Cách đơn giản để khởi chạy tất cả chương trình ví dụ Hello với tất cả các CPU được liệt kê trong tập tin lược đồ khởi động (boot schema) là : shell$ mpirun C hello

Tuỳ chọn C cĩ nghĩa là sẽ chuyển giao một bản sao chép cho mỗi CPU

được liệt kê trong tập tin lược đồ khởi động.

Một phương pháp khác để thực thi chương trình song song là shell$mpirun N hello

Tuỳ chọn N khác với tuỳ chọn C ,tuỳ chọn N cĩ nghĩa là chuyển giao một bản sao chép cho tất cả các nút trên hệ LAM. Vì thế số lượng nút sẽ nhỏ

hơn số lượng CPU. Điều này rất thích hợp với chương trình MPI đa tiểu trình.

Cuối cùng , để chạy một chương trình MPI với số lượng xử lý cốđịnh (khơng quan tâm đến số lượng CPU hay số lượng nut trên hệ LAM) shell$mpirun –np 4 hello

LAM sẽ lập biểu số lượng bản sao của chương trình sẽ chạy theo hình thức vịng trịn trên mỗi nút với số lượng CPU được liệt kêt trong tập tin lược đồ

khởi động.

Chú ý rằng ,bất kỳ số lượng xử lý cĩ thểđược sử dụng.Nếu số lượng xử lý

được sử dụng cĩ lớn hơn số lượng CPU cĩ trên hệ LAM,LAM sẽ dùng cơ

http://etrithuc.vn

Dịng lnh mpiexec

Chuẩn MPI-2 địi hỏi sử dụng dịng liện mpiexec cho việc khởi động xử lý MPI một cách linh động. Trên LAM/MPI ,dịng lệnh này cũng tương tự như

dịng lệnh mpirun.Một vài tuỳ chọn của mpirun khơng cĩ cho mpiexec và ngược lại. Kết quả thì như nhau.

Dịng lnh mpitask

Dịng lệnh mpitask cũng gần giống với dịng lện ps của Linux. Nĩ cho biết trạng thái của chương trình MPI đang được thực thi trên hệ LAM và hiển thị những thơng tin chính về hàm MPI nào trên xử lý đang được thi hành.

Dịng lệnh này cĩ thểđược thi hành trên bất kỳ nút nào của hệ LAM

Dịng lnh lamclean :

Xố hồn tồn tất cả các chương trình đang chạy trên mơi trường LAM . Điều này cĩ thể hữu ích nếu một cơng việc song song bị hỏng và để

lại trạng thái trên mơi trường LAM .Lệnh này chạy khơng cần tham số shell$ lamclean

lamclean chỉ thiết yếu khi phát triển hay gỡ rối những ứng dụng MPI .Ví dụ ,những chương trình bị treo , những thơng điệp lẩn quẩn v.v...Những chương trình MPI đúng thực sự thì sẽ kết thúc mà khơng gây ra lỗi nào , vì thế nĩ xố tất cả các thơng điệp của nĩ ,

•Kết thúc LAM

Khi kết thúc chương trình MPI khơng dùng mơi trường LAM nữa ,ta dùng dịng lệnh lamhalt

shell$lamhalt

Trong nhiều trường hợp , điều này hiệu quả khi tắt tất cả các xử lý MPI

đang chạy và tắt mơi trường LAM .Tuy nhiên , trong một số điều kiện hiếm gặp ,lamhalt cĩ thể khơng thực hiện được .Ví dụ ,nếu một số nút trong mơi trường LAM bị hỏng , khơng truy xuất được (crash) trước khi

http://etrithuc.vn

chạy lệnh lamhalt ,lamhalt sẽ thiết lập thời đoạn timeout và sẽ khơng tất mơi trường LAM .Trong trường hợp này ,chúng ta sẽ sử dụng lệnh lamwipe để bảo đảm rằng mơi trường LAM đã tắt hồn tồn

shell$lamwipe –v hostfile

3.3.3.4. Gỡ rối chương trình song song Đặt tên những đối tượng MPI :

LAM/MPI hỗ trợ những hàm MPI-2 như MPI<type>_SET_NAME và MPI_<type>_GET_NAME ,<type> cĩ thể là COMM, WIN,hay TYPE .Những hàm này nên được khuyến cáo sử dụng khi gỡ rối những ứng dụng MPI .

Lý do sử dụng các hàm này là cho phép LAM hiển thị chính xác về MPI communicator , dạng dữ liệu v.v...

Trình g ri song song TotalView

LAM/MPI khơng cần cấu hình hay được biên biên dịch một cách đặc biệt

để thêm trình gỡ rối TotalView với những xử lý MPI

Chúng ta cĩ thể gắn TotalView với những xử lý MPI trực tiếp bằng dịng lệnh mpirun/mpiexec với những cách thức sau đây :

S dng tham s -tv khi chy mpirun hay mpiexec

shell$mpirun -tv[..những tham số khác của mpirun]

Ví dụ :shell$ mpirun –tv C my_mpi_program arg1 arg2 arg3

Khi chy mpirun mt cách trc tiếp trong trình g ri TotalView (khơng dùng được vi mpiexec)

shell$ totalview mpirun –a[...mpirun arguments... ]

Ví dụ : shell$ totalview mpirun –a C my_mpi_program tham số 1 tham số 2

Một phần của tài liệu CNTT1001 (Trang 69 - 81)