Tải bản đầy đủ (.pdf) (66 trang)

Tổ chức xử lí tri thức đồng thời trên các cụm máy của máy tính hiệu năng cao

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (27.96 MB, 66 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC T ự NHIÊN
> [« »2* * t« «1# »[ «
wjw » Ị 1* ì ị » *ỊW » Ị» » Ị * r p r ] S « n
TÊN ĐỂ TÀI
Tổ chức xử lí tri thức đồng thời
trên các cụm máy của M áy tính hiệu năng cao
MẢ SỐ: QT 0708
CHỦ TRÌ ĐÊ T À I: PGS. TS. Đỗ Trung Tuấn
CÁC CÁN BỘ THAM GIA:
1. Ths. Trần Thị Thúy
2. Ths. Đỗ Văn Bình
3. Ks. Đỗ Minh Tiến
4. Ks. Đỗ Thị Phương Ngân
5. TS. Nguyễn Văn Tảo
6. Ths. Nguyễn Thị Thanh Duyên
7. Ks. Lê Trung Nghĩa
HÀ NỘI - 2007
ĐAI H O C Q U Ố C GIA HÀ NỘI
TRƯNG TẦM THÒNG TlN THƯ VIỀN
Dĩ/
BÁO CÁO TÓM TẮT
a. Tên đề t à ỉ:
Tổ chức xử lí tri thức đồng thòi trên các cụm máy của Máy tính hiệu năng cao
b. Mã s ố :
QT 0708
c. Chủ trì đề tài:
PGS. TS. Đỗ Trung Tuấn
Các cán bộ tham gia
1. Ths. Trần Thị Thúy
2. Ths. Đỗ Vãn Bình


3. Ks. Đỗ Minh Tiến
4. Ks. Đỗ Thị Phương Ngân
5. TS. Nguyễn Văn Tảo
6. Ths. Nguyễn Thị Thanh Duyên
7. Ks. Lê Trung Nghĩa
d. Mục tiêu và nội dung nghiên cứu
Mục tiêu : Tim hiểu và nghiên cứu về chương trình xử lí tri thức trên các máy tính
cụm tại Trung tâm tính toán hiệu năng cao, Trường Đại học Khoa học Tự nhiên, Đại học
Quốc gia Hà Nội.
Nội dung :
■ Tim hiểu về hệ thống máy tính hiệu năng cao;
■ Cài đặt và thử nghiệm chương trình GNƯ Prolog;
■ Đề xuất xử lí tri thức trên máy tính cụm.
e. Các kết quả đạt được
■ Tìm hiểu về máy tính cụm tại Trung tâm Tính toán hiệu năng cao, Trường Đại học
Khoa học Tự nhiên, Đại học Quốc gia Hà Nội;
■ Cài đặt chương trình cho phép xử lí tri thức GNU Prolog trên máy tính hiệu năng
cao;
■ Chương trình thử nghiệm về ngổn ngữ Prolog trên máy tính hiệu nãng cao ;
■ Một số luận vãn tốt nghiệp đại học, cao học liên quan đến đề tài;
■ Bài báo khoa học.
f. Tình hình kinh phí của đề tài
Tổng kinh phí 20.000.000 đ (Hai mươi triệu đồng chẵn)
KHOA QUẢN LÝ
(Ký và ghi rõ họ tên)
GS. TS. Nguyễn Hữu D ư Dỗ Trung T
TRƯỜNG ĐẠI HỌC KHOA HỌC T ự NHIÊN
CHÚ TRÌ ĐỂ TÀI
(Ký và
BRIEF REPORT

a. Project title
Organizing knowledge simultaneously in clusters of High Performance Computer
b. Project code
QT 0708
c. Responsible
Ass. Prof. Dr. Tuan DoTrung
Participants
■ MA. Thuy TranThi
■ MA. Binh DoVan
■ Tien DoMinh
■ Ngan DoThiPhuong
■ Dr. Tao NguyenVan
* MA. Duyen NguyenThiThanh
■ Nghia LeTrung
d. Project Objective and Content
Objective : Researching and studying on programs for manipulating knowledge on
clusters of High Performance Computer, University of Science, Vietnam National University,
Hanoi.
Content:
■ Studying about High Performance Computer systems;
■ Installing and testing GNU Prolog programs;
■ Proposals of knowledge manipulation in clusters.
e. Some results
■ Studying about High Performance Computer systems, University of Science,
Vietnam National University, Hanoi;
■ Installing and testing GNU Prolog programs on High Performance Computer;
■ Some test programs in GNU Prolog;
■ Thesis concerning the project content;
■ Some articles.
Lời cám ơn

ĐỀ tài nghiên cứu khoa học cấp Đại học Quốc gia Hà Nội mã số QT0708 xin chân
thành cảm ơn :
ũ Ban khoa học Đại học Quốc gia Hà Nội;
□ Trường Đại học Khoa học tự nhiên, đặc biệt Phòng quản ỉý khoa học và
công nghệ, Phòng Tài vụ; Khoa Toán Cơ Tin học,
đã tạo điều kiện cho các cán bộ tham gia đề tài này được nghiên cứu và tìm hiểu, thừ
nghiệm về tri thức và xử ỉỉ tri thức trên hệ thống mảy tính hiệu năng cao.
Xin chân thành cám om lãnh đạo, cán bộ nhân viên Trung tâm tính toán hiệu năng
cao Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội đã tạo điêu kiện
đẻ đề tài được thực hiện.
Hà nôi, 3 / 2008
Thav mặt đề tài
Ẩ X f '
Báo cáo kêt quả đê tàỉ nghiên cứu khoa học câp Đại học Quôc gia
Hà Nội
________

_________

__
Đề tài mã số QT 07 08.
Tên để tài : Tổ chức xử lí tri thức đồng thời trên các cụm máy của Máy tính hiệu năng
cao
Chủ nhiệm đề tài : PGS. TS. Đỗ Trung Tuấn,
Khoa Toán Cơ Tin học, trường Đại học Khoa học tự nhiên.
Đại học Quốc gia Hà nội
Đe tài nghiên cứu cơ bản đã thực hiện các nhiệm vụ đã đăng kí trong hợp đồng nghiên
cứu khoa học, kí giữa
ũ Trường Đại học Khoa học tự nhiên,
Đại diện : GS. TS. Trần Nghi, Phó Hiệu trường, Trường Đại học Khoa học tự

nhiên,
Q Chủ nhiệm đề tài, PGS. TS. Đỗ Trung Tuấn
Đề tài đã thực hiện các công việc với kinh phí cấp năm 2007 là
20.000.000 đ (hai mươi triệu đồng chẵn)
Các kết quả kèm theo gồm :
■ Tìm hiểu về máy tính cụm tại Trung tâm Tính taón hiệu năng cao, Trường Đại
học Khoa học Tự nhiên, Đại học Quổc gia Hà Nội;
■ Cài đặt chương trình cho phép xử lí tri thức GNU Prolog trên máy tính hiệu năng
cao;
■ Chương trình thử nghiệm;
■ Một số luận văn tổt nghiệp đại học, cao học liên quan đến đề tài;
■ Bài báo khoa học.
Hà nội, 15 tháng 3 năm 2008
Chù nhiệm đề tài 201606
Đồ Trung Tuấn
1
M uc luc
____

_____
#
1. Giới thiệu về hệ thống máy tính hiện năng cao trang 4
2. Cài đặt phần mềm GNƯ Prolog trên máy tính hiệu năng cao trang 11
Phần mềm xử lí tri thức GNU Prolog
3. Thử nghiệm chương trình với phần mềm cài đặt trang 17
4. Một số luận văn trang 40
5. Báo cáo khoa học trang 41
6. Tài liệu tham khảo trang 42
2
Các thành VĨ2r. LÌ tài

1. Trần Thị Thú'/
2. Đỗ Văn Binh
3. Đỗ Minh Tiến
4. Đỗ Thị phirơng Nsln
5. Nguyễn V'ln. T ào
6. NgiiVcn thị Thanh Duvên
7. Lê Truns Nghĩa
w w
Thời gian thực hiện đề tà i: thán-: 4/ 2C07 - 4/ 2CCS
3
1. Giới thiệu về hệ thống máy tính hiệu nảng cao
1.1. về hệ thống máy tính cụm
Đòi hỏi xử lí nhiều dữ liệu, song song và cấu trúc dữ liệu phức tạp dẫn đến nhu cầu về
nhiêu máy tính làm việc đồng thời, có liên kết với nhau. Người dùng máy tính là người dùng
đa dạng, luôn có yêu cầu mới về dịch vụ cũng như giá tính toán. Giải pháp tính toán cụm với
cụm nhiều máy tính có thể đáp ứng yêu cầu đó.
Lắp cụm máy tính sử dụng nhiều máy tính tính hiệu năng cao, đảm bảo không những về
tốc độ tính toán, mà còn giảm chi phí cho người dùng. Đặc biệt đối với một số vấn đề về trí
tuệ nhân tạo, công nghệ, tài chính, dự báo, máy tính cụm có tác dụng hơn hẳn nhiều máy
tính đơn.
Máy tính cụm thực chất là liên kết của nhiều bộ xử lí để hợp tác trong việc giải bài toán
như một thực thể đom. Do vậy quản lí các nhiệm vụ trên các bộ xử lí, quản trị các tài nguyên,
như bộ nhớ, thời gian cần đến các kĩ thuật phù hợp.
Do máy tính cụm làm việc như một thực thể nên tạo ra một số điểm lợi nổi bật, bao gồm
1. Khả năng tính toán cao, do kết hợp năng lực của nhiều bộ xử lí và thiết bị phức tạp;
2. Quản lí tài nguyên hợp lí. Đối với vấn đề yêu cầu tài nguyên, như bộ xử lí, thời gian,
bộ nhớ, thiết bị ngoại vi hệ thống điều phối và kết hợp nhiều tài nguyên nhỏ lẻ với
nhau;
3. Sử dụng tối ưu các tài nguyên. Máy tính cụm chia sẻ nhiều tài nguyên, có cái nhìn
tổng quát về tài nguyên. Điều này tạo điều kiện để thực hiện nhiệm vụ một cách hợp

lí, tiến đến tối ưu;
4. Phục vụ theo vùng địa lí. Việc chia sẻ tài nguyên với hạ tầng mạng không bị không
gian địa lí hạn chế;
5. Đảm bảo phục vụ đều đặn và giảm rủi ro. Do tập các bộ xử lí làm việc liên tục, thay
thế nhau qua hệ thống quản lí tài nguyên, người dùng được phục vụ liên tục;
6. Khắc phục lỗi. Các sau sót, rủi ro trên một máy tính được kiểm định và thực hiện
đối chứng trên máy tính khác. Một máy tính hỏng sẽ được máy tính khác chia sẻ
nhiệm vụ thay thế. Máy tính này không nhất thiết ở ngay vùng có sai sót;
7. Phân tán theo các chiều không gian và thời gian. Việc dùng chung các bộ xử lí và
thiết bị ngoại vi cho phép thể hiện tính phân tán theo nhiều chiều;
8. Quản lí hệ thống tập trung. Công ty lớn như IBM cho phép bảo trì các hệ thống cụm
phân tán tại một số trạm nhất định. Kiến trúc quản lí tập trung là hiệu quả.
1.2. Hệ thống máy tính cụm IBM 1600
Máy tính cụm IBM 1600 là kết hợp của các máy tính dịch vụ IBM POWER5™ và
POWER5+™ với bộ đa xử lí đối xứng (SMP). Hệ thống điều hành sử dụng là AIX 5L™ hay
Linux®. Máy tính cụm 1600 sử dụng cho mô hình tính toán đa hướng, cho phép xây dựng
4
v ề liên kết mạng, hệ thống IBM 1600 có thể dùng mạng Ethernet, mạng InfiniBand hay
Chuyển mạch hiệu năng cao của IBM. Hệ thống được phần mềm quản trị cụm CSM quản lí.
Đây là công cụ thiết kế phù hợp cho hệ thống máy tính cụm.
1.2.1. Một số nét chung
• Các giải pháp AIX 5L hay Linux là phù họp đổi với mô hình hóa tính toán qui mô
lớn, cơ sở dữ liệu lớn và trung tâm dữ liệu hiệu quả, máy tính chủ;
• Hệ thống quản trị cụm CSM cho phép quản lí mềm dẻo, linh động;
• Các tùy chọn kết nối cụm : có thể dùng mạng Ethernet 1/ 10Gb đối với AIX 5L hay
Linux, dùng chuyển mạch hiệu năng cao IBM đổi với AIX 5L và CSM;
• Tùy chọn về hệ thống điều hành : AIX 5L thể hệ 5.2 hay 5.3, dùng Server Linux
SUSE 8/ 9, dùng Linux Red Hat 4;
• Bộ phần mềm hoàn thiện cho phép tạo, tinh chinhe các ứng dụng song song như
ESSL (Engineering & Scientific Subroutine Library), ESSL song song, môi trường

song song, Fortran XL, hay VisualAge c++;
• Hệ thong file song song đổi với cụm GPFS, có độ sẵn sàng và hiệu năng cao;
• Phần mềm đặt lịch công việc để tối ưu tài nguyên và thông lượng truyền thông cụm;
• Phần mềm HACMP™ (High Availability Cluster Multiprocessing) cho phép truy
cập phần mềm và ứng dụng.
1.2.2. Tổng quát về phần cứng
Các máy chủ POWERS+ và IBM POWERS dưới đây là phù hợp với nhau :
• IBM System p5™ 595, 590, 575, 570, 560Q, 550Q, 550, 520Q, 520, 510Q, 510,
505Q và 505
• IBM eServer™ p5 595, 590, 575, 570, 550, 520, và 510
Người ta có thể dùng đến 128 máy chủ hay các máy LPAR, tức hệ thống điều hành máy
AIX 5L hay Linux, đối với mỗi cụm, tùy theo phần cứng.
Hình 1. Máy tính cụm IBM
5
1.2.3. Tham số về bộ xử lí POWER™ dựa trên AIX 5L™ và các cụm Linux
m m •
Người ta sử dụng bộ xử lí này nhằm tính toán khoa học, kĩ thuật, dùng cho cơ sở dừ liệu
lớn.
Máy dịch vụ : IBM System p5 595, 590, 575, 570, 560Q, 550Q, 550, 520Q, 520, 510Q,
510, 505Q và 505
■ Bộ xử lí : 1.5 GHz đến 2.3 GHz IBM POWER5+, POWER5
■ Số các máy tính chủ , phần logic (LPAR):
o Có đến 64 bộ với 1 đến 8 nhân SMPs và 128 LPARs
o Có đến 32 bộ với 16 đến 32 nhân SMPs và 128 LPARs
o Có đến 16 bộ với 48 đến 64 nhân SMPs và 128 LPARs
• Liên kết mạng :
o 10/100Mbps Ethernet (AIX 5L hoặc Linux)
o 1/10 Gigabit Ethernet (AIX 5L hoặc Linux)
o 4x/12x GX HCA (AIX 5L hoặc Linux)
o SP Switch2 (AIX 5L và PSSP)

o Chuyển mạch hiệu năng cao Switch (AIX 5L và CSM)
o Myrinet-2000 (AIX 5L và Linux)
1.3. Hệ thống máy tính cụm IBM 1350
Nhiều ứng dụng được xây dựng trong môi trường Windows của Microsoft và Linux, Cá
hai hệ thống đều sử dụng cùng tài nguyên, trên cùng thiết bị cứng và hạ tầng mạng máy tính.
Ngoài ra hai hệ thống điều hành cũng sử dụng mã nguồn mở, cùng dùng sản phẩm của hãng
thứ ba khác. Để đáp ứng hiện thực khách quan như vậy, máy tính cụm cần có khả năng dù
cho tốn kém về chi phí.
Công ty IBM thiết kế máy tính cụm IBM 1350 đáp ứng các yêu cầu trên. Người dùng có
thể làm việc với máy tính hiệu năng cao HPC. Họ được sừ dụng các công nghệ tiến tiến của
Intel® Xeon®, AMD Opteron™ và của IBM Power Architecture™ trên các nút máy tính
chủ. Phần mềm quản trị cụm với nối kểt của IBM 1350 được đánh giá sử đụng công nghệ
tot của IBM và của hãng khác.
Máy tính cụm IBM 1350 được thiết kế để ứng dụng được nhiều trong môi trường thiết
kế công nghệ, dịch vụ tài chính Các lĩnh vực này cần đến quản lí tốc độ cao và khối lượng
lớn các thao tác xử lí dữ liệu.
1.3.1. Tổng quan về máy tính cụm IBM 1350
Máy tính IBM System Cluster 1350 có tổng quan về hệ thống : Blade servers: HS21,
LS21, LS41, JS22, ỌS21; Rack servers: x3455, x3550, x3650, x3655, x3755
về mạng máy tính
• Ethernet
• Blade Network Technologies, Brocade, Cisco, ForcelO, Nortel, Qlogic, SMC
• InfiniBand
6
• Cisco, Voltaire
• Myrinet, Myricom
• Accelerator
• Clearspeed
• PCI-X
Bộ nhớ

• Bộ nhớ ngoài;
• Bộ nhớ máy chủ;
• Bộ nhớ hệ thống DS4800, DS4700, DS4200, DS3400, DS3200, EXP3000
Thiết bị mở rộng
• Bộ nhớ mở rộng
• EXP810
• Storage Expansion Unit
• Chuyển mạch SAN 2005-16B
• Hệ thống lưu trữ IBM SAN 16B-2 SAN Switch
Phần mềm
• Red Hat Enterprise Linux (RHEL) 5 , SUSE Linux Enterprise Server (SLES) 10,
Microsoft®) Windows, Microsoft Windows Compute Cluster Server
• Phần mềm quản trị cụm
• Phần mềm quản trị cụm IBM (CSM) cho Linux V I.5.1 (tùy chọn)
• Hệ thống quản trị tệp song song IBM (GPFS) cho Linux V3.2 (tùy chọn)
1.3.2. Lắp đặt IBM 1350
Các hộp nối ghép
• Nối mở rộng thứ cập với sơ cấp 42U : 79.5" H X 25.2" w X 43.3" D (2020 mm X
640 mm X 1100 mm); 574.2 bảng Anh (tức 261 kg)
• Nối 25Ư : 49.0" H X 23.8" w X 39.4" D (1344 mm X 605 mm X 1001 mm);
221 bảng Anh (tức 100.2 kg);
• Hệ thống nguồn và hệ thống làm mát : các rãnh xoắn làm mát, bộ cung cấp
điện, bộ xử lí năng lượng, bộ quản lí năng lượng, bộ cấu hình IBM, bộ chẩn đoán
nhiệt độ.
Qui mô
• Hệ thông trang bị một nút quản trị và một nút dự trữ. Tùy theo yêu cầu người
dùng, có thể dùng hai đến tối đa là 1,024 nút. Tuy nhiên, số bản quyền phần mềm
có thể hạn chế trên một số nút, Có thể sử dụng đến 64 nút được phép lưu trữ.
• Cấu hình tối đa là 1,026 nút, gồm cả nút tính toán, nút lưu trừ và nút quàn trị. Có
thể sử dụng cấu hình cao hơn với xử lí đặc biệt.

Các dịch vụ
• Phần cứng cụm 1350 nhất thiết trên bộ nổi 42Ư và 25Ư.
• Các dịch vụ phần mềm HPC và SupportLine cho các cụm Linux Clusters đêu săn
7
sàng, như dịch vụ miễn phí.
• Các dịch vụ trợ giúp cài đặt đã có thône qua CET (Cluster Enablement Team),
như phần mềm miễn phí.
1.3.3. Thông tin k ĩ thuật chi tiết cùa máy tính cụm IBM 1350
Máy tính cụm IBiM 1350 có bộ xử lí Intel® Xeon®, AMD Opteron™ và dùno các nút
cụm HPC với công nehệ dựa trên IBM Power Architecture™, cho phép thực hiện các giải
pháp về Linux hay Windows để tăng hiệu năng tính toán.
Máy chủ có thể lựa chọn trong :
■ IBM System x3650, x3550, x3455, x3655, x3755
■ IBM BladeCenter® HS21, HS21 XM, JS22, LS21, LS41, QS21
Bộ xử lí
■ Bộ xử lí Dual-Core Intel Xeon Processor, có khả năng đến 3.0 GHz, và trên 1333
MHz với bus ra ngoài, hav bộ xử lí Quad-Core Intel Xeon Processor, có khả
năng 3.0 GHz, và đến 1333 MHz đối với bus nsoài (x3650, x3550)
■ Bộ xử lí Dual-core AMD Opteron, có khả năns đến 3.0 GHz (x3455)
■ Bộ xử lí Duaỉ-core AMD Opteron có khà năns đến 2.8 GHz AMD Opteron
(x3655)
■ Bộ xử lí Dual-core AMD Opteron có khả năng đen 3.0 GHz (x3755)
* Bộ xử lí Duaỉ-Core Intel Xeon có khả năns đến 3.0 GHz, với bus có khả năng
đến 1333 MHz, hoặc bộ xử lí Quad-Core Intel Xeon có kha năns đến 2.33 GHz,
với bus có khả năng đến 1333 MHz (HS21 XM)
■ Bộ xử lí Dual-Core Intel Xeon có khả năng đến 3.0 GHz, với bus có khả năng
đến 1333 MHz, hoặc bộ xừ lí Quad-Core Intel Xeon có khả năne đến 3.0 GHz,
với bus có khả năns đển 1333 MHz (HS21)
- Four 64-bit 4.0 GHz POWER6 (JS22)
■ Bộ xử lí Dual-core AMD Opteron có khả năng đến 3.0 GHz (LS21, LS41)

■ Đa bộ xừ lí Multi-core 3.2 GHz Cell Broadband Engine™(QS21)
Hình 2. Máv tính IBiVl 1350
8
số các máy chủ : lên đến 1,024 cluster nodes; 1- to 8-core nodes
Liên kết mạng :
■ Gigabit Ethernet
■ Myrinet
■ InfiniBand
1.4. Một số thiết bị mạng
1.4.1. Chuyển mạch Cisco 3750
Interactive Model of the Cisco Catalyst 3750 Series Switches
Hình 3.
1.4.2. Chuyển mạch Cisco 3550
Chuyển mạch Cisco Catalyst 3550 24 DC là phần tử của họ chuyển mạch thông minh sử
dụng như chuyển mạch Ethernet Catalyst 3550. Đây là chuyển mạch nhiều tầng, chia ngăn,
đảm bảo chất lượng an toàn, mức sẵn sàng cao, đáp ứng nhu cầu nối mạng.
Với hạ tầng Ethernet nhanh, hay Ethernet Giga, chuyển mạch này có thể dùng làm
chuyển mạch đường trục đối với ứng dụng mức vừa phải.
Người dùng có thể thực hiện chia đường IP chất lượng cao trên chuyển mạch này. Vậy
có thể dùng nó trong chuyển mạch LAN truyền thống hay mạng Intranet.
Chuyển mạch CISCO 3750
9
1.5. Cơ chế truy cập máy tính và hạ tầng mạng tại Trung tâm
Việc truy cập mạng chủ tại Trung tâm theo kiến trúc khách/ chủ. Người dùna sừ dụna
máy đơn.
Trao đổi thông qua Putty
Hệ điều hành Windows
2000 hay Linux
máy chủ
máy của người dùng

trong trung tâm tính toán hiệu năng cao
Hình 5. Truv cập hệ thống máy cụm
Hệ thổng đàm bào truv cập là Secure Shell, eiao thửc SSH. côns 22. Địa chi IP máy tính
chủ hiện là 10.8.75.1.
■ Máy chủ là máy tính cụm, có 8 nút.
■ Trong các nứt, có nút làm chức năng quản trị; các nút còn lại sừ dụnc cho tính
toán hay íô chức dừ liệu;
" Hệ thống điều hành Linux;
■ Bộ nhớ RAM hiện là 2G cho mồi nút.
Để lập trình dùng hết năns lực của các cụm máy tínhT người ta có hai cơ chế :
1. Lập trình theo Open MP : cho phép tự động chọn quản trị bộ nhớ chuns. tự động
chia sẻ tải nguyên;
2. Lập trình theo MPI. yêu cầu nsười dùng tự quản li tài nguyên, tự chia công việc
ứng với bài toán ra các nhiệm vụ nhỏ.
Có hai máy tinh cụm, IBM 1600 và IBM 1350. Thôn2 số k ĩ thuật của hai máy tính này
đã nêu trên. Địa chi IP hiện thời của máv IBM 1600 lã 172.72.20.0.
■ Máy tính IBM 1600 là cụm 5 máy. Mồi máv có 8 CPU. Hệ thống điều hành nhận
8 CPU.
■ Chuyển mạch Cisco Catalvst 3750 và 3550.
A IX Advanced
Interactive executive
16C0
máy
Hình 6. Nối các máy tính qua LAN
10
Việc chuyển dữ liệu, dưới dạng các file trong hệ thống được tiến hành theo :
■ Sử dụng hệ thống điều hành Linux và các lệnh xử lí file; hoặc
■ Sử dụng cơ chế giao diện Windows với Linux.
Hình 7. Hệ thống điều hành trên một số máy
Từ máy trạm trong Trung tâm tính toán hiệu năng cao, người ta có thể truy cập mạng

Internet qua máy chủ của Đại học Quốc gia Hà Nội, hay qua máy chủ VDC, nhờ đường thuê
bao ADSL. Hệ quản trị mạng tại Trung tâm là NIS (network information service), và
Windows NT sử dụng TCP/IP.
AIX
Hình 8. Nổi mạng với INTRANET của đại học Quốc gia Hà nội
11
2. Phần mềm xử lí tri thức GNU Prolog
2.1 về GNU Prolog
GNƯ Prolog là chương trình dịch Prolog với việc giải các ràng buộc trên lĩnh vực vô hnạ
do Daniel Diaz phát triển.
Ngôn ngữ này chấp nhận Prolog và chương trình với ràng buộc, sinh các mã nhị phân,
giống như gcc sinh ra từ chương trình ngôn ngữ c.
Chương trình trực khai thu được sau khi dịch và liên kết là chương trình chạy độc lập.
Kích thước của chương trình nhỏ do GNU Prolog có thể tránh việc liên kết đến các vị từ
không cần thiết của quá trình xử lí tri thức. Vậy nên hiệu quả của GNƯ Prolog cao.
Ngoài việc dịch ra mã nguồn, GNU Prolog cho phép tìm lỗi chương trình theo chế dodọ
có giải thích.
Phần làm việc với chương trình Prolog hoàn toàn tương thích với chuẩn ISO cho ngôn
ngữ Prolog, về các biến đùng chung, giao diện với hệ thống điều hành,
GNƯ Prolog cho phép thành phần giải các ràng buộc hiệu quả theo lĩnh vực vô hạn FD.
Điều này tạo dữ liệu cho việc đưa chương trình logic có ràng buộc vào chương trình logic
theo mô tả.
2.2. Cài đặt GNU Prolog trên máy tính hiệu năng cao
2.2.1. Bước 1. Kiểm tra cấu hình
[tuandt@portaI src]$ ./configure — prefix=$HOME
checking for gcc gcc
checking for c compiler default output file name a .out
checking whether the c compiler works yes
checking whether we are cross compiling no
checking for suffix of executables

checking for suffix of object files o
checking whether we are using the GNU c compiler , yes
checking whether gcc accepts -g yes
checking for gcc option to accept ISO C89 none needed
checking for ranlib ranlib
checking whether make sets $ (MAKE) yes
checking for a BSD-compatible install /usr/local/bin/install -c
checking whether In -s works yes
checking build system type i686-pc-linux-gnu
checking host system type i686-pc-linux-gnu
checking
how
to run the c preprocessor gcc -E
checking
for grep that
handles long
lines and -e /bin/grep
checking for
egrep
/bin/grep -E
checking
for
ANSI c header files
yes
checking
for
sys/types .h yes
checking
for
sys/stat.h yes

checking
for
stdlib.h. . . yes
checking
for
string.h . yes
checking
for
memory.h.
. . yes
checking
for
strings.h
yes
12
checking for inttypes.h yes
checking for stdint.h yes
checking for unistd.h yes
checking for long yes
checking size of long 4
checking sys/ioctl_compat.h usability no
checking sys/ioctl_compat.h presence no
checking for sys/ioctl_compat.h no
checking termios.h usability yes
checking termios.h presence yes
checking for termios.h yes
checking malloc.h usability yes
checking malloc.h presence yes
checking for malloc.h yes
checking for stdlib.h (cached) yes

checking for unistd.h (cached) yes
checking for getpagesize yes
checking for working mmap yes
checking for mprotect yes
checking for mallopt yes
checking for fgetc yes
checking for socklen_t yes
checking for inline inline
checking for socket yes
checking for gethostbyname yes
DIRECTORIES
> Installation:
> Link to binaries :
> Documentation:
> HTML documentation:
> Examples:
/home/tuandt/gprolog-1.3.0
/home/tuandt/bin
/home/tuandt/gprolog-1.3.0/doc
/home/tuandt/gprolog-1.3.0/doc/html_node
/home/tuandt/gprolog-1.3.0
configure: creating ./config.status
config.status
config.status
config.status
config.status
config.status
config.status
config.status
config.status

config.status
config.status
config.status
config.status
config.status
config.status
config.status
config.status
config.status
2 .2 .2 .B lp&c 2
creating Makefile
creating TopComp/Makefile
creating P12Wam/Makefile
creating Wam2Ma/Makefile
creating Ma2Asm/Makefile
creating Fd2C/Makefile
creating Linedit/Makefile
creating W32GUICons/Makefile
creating EnginePl/Makefile
creating BipsPl/Makefile
creating EngineFD/Makefile
creating BipsFD/Makefile
creating Ma2Asm/FromC/Makefile
creating Win32/Makefile
creating Win32/gp-setup.iss
creating EnginePl/gp_config.h
EnginePl/gp_config.h is unchanged
[tuandt@portal src]$ make
(cd EnginePl; make config)
make[l]: Entering directory '/home/tuandt/src/EnginePl'

make[l]: Nothing to be done for 'config’.
13
make[l]: Leaving directory '/home/tuandt/src/EnginePl'
. •/SETVARS;for i in TopComp EnginePl Wara2Ma Ma2Asm Linedit BipsPl Pl2Wam
Fd2C EngineFD BipsFD;do (cd $i; make) I I exit 1; done;\
(cd TopComp; make gprolog)
makefl]: Entering directory '/home/tuandt/src/TopComp'
make[l]: Nothing to be done for 'first'.
make[l]: Leaving directory '/home/tuandt/src/TopComp'
make[l]: Entering directory '/home/tuandt/src/EnginePl'
make[l]: Nothing to be done for 'all'.
make[l]: Leaving directory '/home/tuandt/src/EnginePl'
make[l]: Entering directory '/home/tuandt/src/Wam2Ma'
make[l]: Nothing to be done for 'all'.
make[l]: Leaving directory '/home/tuandt/src/Wam2Ma'
make[l]: Entering directory '/home/tuandt/src/Ma2Asm'
make[l]: Nothing to be done for 'all'.
make[l]: Leaving directory '/home/tuandt/src/Ma2Asm'
make[l]: Entering directory '/home/tuandt/src/Linedit'
make[l]: 'liblinedit.a ' is up to date.
make[l]: Leaving directory '/home/tuandt/src/Linedit1
make[l]: Entering directory '/home/tuandt/src/BipsPl'
make[l]: 'libbips_pl.a ' is up to date.
make[l]: Leaving directory '/home/tuandt/src/BipsPl'
make[l]: Entering directory '/home/tuandt/src/P12Wam'
make[l]: 'pl2wam' is up to date.
make[l]: Leaving directory '/home/tuandt/src/P12Wam'
make[l]: Entering directory '/home/tuandt/src/Fd2C'
make[l]: 'fd2c' is up to date.
make[l]: Leaving directory '/home/tuandt/src/Fd2C'

make[l]: Entering directory '/home/tuandt/src/EngineFD'
make[l]: 'libengine_fd .a ' is up to date.
make[l]: Leaving directory '/home/tuandt/src/EngineFD'
make[l]: Entering directory '/home/tuandt/src/BipsFD'
make[l]: 'libbips_fd.a ' is up to date.
make[l]: Leaving directory '/home/tuandt/src/BipsFD'
make[l]: Entering directory '/home/tuandt/src/TopComp'
make[l]: 'gprolog' is up to date.
make[l]: Leaving directory '/home/tuandt/src/TopComp'
2.2.3. Tạo các thư mục cho GNU Prolog
[tuandt@portal src]S make install
./mkinstalldirs /home/tuandt/gprolog-1.3.0 /home/tuandt/gprolog-1.3.o/bin
\
/home/tuandt/gprolog-1.3.o/include /home/tuandt/gprolog-1.3.o/lib
mkdir /home/tuandt/gprolog-1.3.0
mkdir /home/tuandt/gprolog-1.3.o/bin
mkdir /home/tuandt/gprolog-1.3.0/include
mkdir /home/tuandt/gprolog-1.3.o/lib
for i in COPYING VERSION NEWS ChangeLog; do /usr/local/bin/install -c -m
644 /$i /home/tuandt/gprolog-1.3.0; done
for i in gplc hexgplc gprolog pl2wam wam2ma ma2asm fd2c; do
/usr/local/bin/install -c */$i /home/tuandt/gprolog-1.3.o/bin; done
for i in top_level.o all_pl_bips.o debugger.o all_fd_bips.o; do
/usr/local/bin/install -c -m 644 */$i /home/tuandt/gprolog-1.3.o/lib; done
14
f°r Ị in libengine_pl.a libbips_pl.a liblinedit.a libengine_fd.a
libbips_fd.a; do /usr/local/bin/install -c -m 644 */$i
/home/tuandt/gprolog-1.3.o/lib; done
for i in gprolog.h fd_to_c.h; do /usr/local/bin/install -c -m 644 */$i
/home/tuandt/gprolog-1.3.o/include; done

f°r i in /home/tuandt/gprolog-1.3.o/lib/*.a; do ranlib $i; done
if test /home/tuandt/gprolog-1.3.0/doc != none; then \
./mkinstalldirs /home/tuandt/gprolog-1.3.0/doc; \
{F='cd /doc; echo ???*.dvi ???*.ps ???*.pdf ???*.chm ???*.eps
???*.html ???*.gif'; \
for i in $F; do /usr/local/bin/install -c -m 644 /doc/$i
/home/tuandt/gprolog-1.3.0/doc; done); \
fi
mkdir /home/tuandt/gprolog-1.3.0/doc
if test /home/tuandt/gprolog-1.3.0/doc/html_node != none; then \
./mkỉnstalldirs /hõme/tuãndt/gprolog-1.3.0/doc/html_node; \
(F='cd /doc/html_node; echo ???*.html ???*.gif ???*.css'; \
for i in $F; do /usr/local/bin/install -c -m 644 /doc/html_node/$i
/home/tuandt/gprolog-1.3.0/doc/html_node; done); \
fi
mkdir /home/tuandt/gprolog-1.3.0/doc/html_node
if test /home/tuandt/gprolog-1.3.0 != none; then \
./mkinstalldirs /home/tuandt/gprolog-1.3.O/ExamplesPl; \
(F='cd /ExamplesPl; echo Makefile README PROGS ??*.pl*; \
for i in $F; do /usr/local/bin/install -c -m 644 /ExamplesPl/$i
/home/tuandt/gprolog-1.3.O/ExaraplesPl; done); \
./mkinstalldirs /home/tuandt/gprolog-1.3•O/ExamplesC; \
(F='cd /ExamplesC; echo Makefile README ??*.pl ??*_c.c'; \
for i in $F; do /usr/local/bin/install -c -m 644 /ExamplesC/$i
/home/tuandt/gprolog-1.3.O/ExamplesC; done); \
./mkinstalldirs /home/tuandt/gprolog-1.3.O/ExamplesFD; \
(F='cd /ExamplesFD; echo Makefile ??*.pl ??*.fd'; \
for i in $F; do /usr/local/bin/install -c -m 644 .,/ExamplesFD/$i
/home/tuandt/gprolog-1.3,O/ExamplesFD; done); \
fi

mkdir /home/tuandt/gprolog-1.3.O/ExamplesPl
mkdir /home/tuandt/gprolog-1.3.O/ExamplesC
rakdir /home/tuandt/gprolog-1.3.O/ExamplesFD
if test /home/tuandt/bin != none; then \
{cd /home/tuandt/bin 2>/dev/null && rm -f gplc hexgplc gprolog pl2wam
wam2ma ma2asm fd2c); \
rmdir /home/tuandt/bin 2>/dev/null; \
fi I I exit 0;
if test /home/tuandt/bin != none; then \
./mkinstalldirs /home/tuandt/bin; \
(cd /home/tuandt/bin ; In -s /home/tuandt/gprolog-1.3.o/bin/* .); \
f i
mkdir /home/tưandt/bin
2.2.4. Kiểm tra lại việc cài đặt
[tuandt@portal src]S make check
{cd EnginePl; make check) && \
(cd Ma2Asm; make check) && \
(cd P12Wam; make check) && \
(cd BipsPl; make check) && \
15
echo All tests succeeded
make[l]: Entering directory '/home/tuandt/src/EnginePl'
f°r i in 1 2 3 4 5; do echo -e "#define OBJ_NO $i\\n#include
\"test_oc_defs.h\"” >/tmp/test_oc_m$i.c; done
gcc -march=pentiumpro -03 -fomit-frame-pointer -o test_oc test_oc.c
obj_chain.c -I. /tmp/test_oc_m[1-5].c
rm -f /tmp/test_oc_m[l-5].c
./test_oc
starting
object cobject #5> found &name:0x804cle0

object <object #4> found iname:0x804clc0
object <object #3> found &name:0x804cla0
object cobject #2> found &name:0x804cl80
object <object #1> found &name:0x804cl60
finished - OK !
make[l]: Leaving directory '/home/tuandt/src/EnginePl'
make[l]: Entering directory '/home/tuandt/src/Ma2Asm'
if [ "$FC" = "Y" ]; then FCFLAGS=1-DFAST'; fi; \
gplc — c-compiler "gcc -march=pentiumpro" -C "-03 -fomit-frame-pointer
$FCFLAGS" -c chkma.c
if [ "$FC" != "Y" ]; then MAFLAGS='— ignore-fast'; fi; \
./ma2asm — comment 5MAFLAGS chkma_ma.ma
gplc -c chkma_ma.s
gcc -march=pentiumpro -03 -fomit-frame-pointer -o chkma chkma.o chkma_ma.o
/EnginePl/enginel.o
./chkma
check running without FC (NO fast call}
reg_bank=&X(0):0x8052840 B:0x804b7c0 E:0x804c7c0 &Y (0) :0x804c7b0
stack:0x804b7c0
test 1:
c code intializer
test 1
OK
test
2: long local/global
test 2
OK
test 3:
pi jump/pl ret
test 3

OK ”
test
4 : pi call/pl ret/pl fail
test
4
OK
test
5:
prep cp/here_cp
test
5
OK
test 6:
jump/c ret
test
6
OK
test
7: call c(void)
test
7 OK
test
8 :
move X (i) to Y (j)
test 8
OK
test 9:
move Y(i) to X (j)
test 9
OK

test 10: call_c(int)
test 10 OK
test 11: call_c(double)
test 11 OK
test 12: call_c(string)
test 12 OK
test 13: call_c(mem,&label,mem( ),&mem( )) .
test 13 OK
test 14: call c(X ()) . . .
16
test
14
OK
test
15:
call c
Y() ) . . .
test
15
OK
test 16:
call c
FL()) . . .
test
16
OK
test
17 :
call
c

FD{)) . . .
test 17
OK
test 18:
call
_c
lot of args)
test
18 OK
test 19:
call _c
)+jump ret.
• *
test 19
OK
test 20:
call c
)+fail ret.
# #
test
20
OK
test 21:
call
c )+raove ret
mem.
test
21 OK
test 22: call
_c

)+move ret
X(> .
test
22
OK
test 23:
call c
)+move ret
Y() .
test
23 OK
test 24 :
call c
)+move ret FLO
test
24
OK
test 25: call c )+move ret
FD()
test 25 OK
test
26: call c )+switch ret
test 26 OK
MA checks suceeded
make[l]: Leaving directory '/home/tuandt/src/Ma2Asm'
make[l]: Entering directory '/home/tuandt/src/P12Wam'
./check_boot -a && echo Bootstrap Prolog Compiler OK
Bootstrap Prolog Compiler OK
make[l]: Leaving directory '/home/tuandt/src/P12Wam'
make[l]: Entering directory '/home/tuandt/src/BipsPl'

/P12Wam/check_boot -a && echo Bootstrap Prolog Bips OK
Bootstrap Prolog Bips OK
make[l]: Leaving directory '/home/tuandt/src/BipsPl1
All tests succeeded
2.2.5. Các thư mục hiện tại liên quan đến truy cập NGU Prolog
[tuandt@portal tuandt]$ Is
bin COPYING ExamplesC ExamplesPl INSTALL PROBLEMS src
ChangeLog doc ExamplesFD gprolog-1.3.0 NEWS README VERSION
[tuandt@portal tuandt]$ cd
[tuandt0portal home]$ ls
anhpk
tungld
diennh
haibh ibm models
nhungpt tienbq
aquota.user
tuongtm
dunglt haidd kienlt
namndb sinhnt tientt
badt
vuanh
dungvt
hait V
kiennt
namnh sonlh trangtt
chungnm
vuthai
ftp hakt
lost+found
nghinh

tanpv trantv
chungnt
yennt
griduser hangkt
mimwebroot
ngoandt thangdq
trungtv
cnguyen
hadt
hangnm
minhnth
nguyenhs thuynb tuandt
[tuandt@portal home]$
cd . .
17 —

-

HOC -ivòc G ia h a n ô i
.<-uNG T^M Th ò n g tin thu viên
1st I 'l 1 L
[tuandt@portal /]$ ls
bin dev gpfs initrd lost+found mnt proc root share tmp
boot etc home lib
3. Thử nghiệm chương trình
3.1. Thừ chương trình về bài toán gia phả
Name •-
Size Type
Date Modified
Ịã l giapha

656 KB File
11/15/2007 10:56 AM
N'l giapha 7 KB
MA File
11/15/2007 10:45 AM
0 giapha
1 KB PL File
11/15/2007 10:45 AM
1^ giapha,0 6 KB
0 File
11/15/2007 10:45 AM
[ãị giapha, s
16 KB
5 File
11/15/2007 10:45 AM
[âj giapha. warn
2 KB WAM File
11/15/2007 10:45 AM
giapha
24 KB
Microsoft Word Doc
11/15/2007 10:59 AM
3.1.1. Nội dung File giapha.pl
cha(toto, mo).
cha(toto, man).
cha(mo, am).
cha(mo, chen).
cha(man, bat).
cha(man, dia).
anhemR(X, Y):-

cha(Z,X),
cha(Z,Y),
x \= Y.
kq anhemR(X,Y),
write('anh em ruot '),
write(X),
write(Y).
% giao dien
kq.
3.1.2. Chuyển sang mã assembly File giapha.ma
1
2
3
4
7
10
*** Predicate:
. * + * Predicate: cha/2 (
pl_code global X636861_2
GNU Prolog 1.3.0 (Jan 4 2007)
giapha.pi
11 15 2007
o • 10:45:28
file name('/home/tuandt/gprolog-1.3.0/bin/giapha.pi'
predicate(cha/2,1,static,private,user,[
cha/2 (/home/tuandt/gprolog-1.3.0/bin/giapha.pi:1)
% compiler
% file
% date
% time

var
18
; 11:
call_c
jump_ret
; 13:
Lpredl_l:
; 14:
call_c
j ump_ret
; 16:
Lpredl_2:
; 17:
call_c
jump
Lpredl_sub_0:
; 18:
call_c
jump
; 20:
Lpredl_3:
; 21:
call_c
j ump
Lpredl_sub_l:
; 22:
call_c
j ump
; 24:
Lpredl_4:

; 25:
call_c
j ump
Lpredl_sub_2:
7 26:
call_c
jump
; 28
Lpredl_5:
; 29
call_c
; 31
Lpredl_6:
; 32
call_c
fail_ret
; 33:
call_c
fail_ret
' 34:
pl_ret
36:
Lpredl_7:
37:
call_c
' 39:
switch_on_term(5,1,fail, fail, fail) ,
fast Switch_On_Term_Var_Atm(&Lpredl_5,&Lpredl_l)
label(1),
switch_on_atom([(toto,2),(mo,3),(man,4)]),

fast Switch_On_Atom(st(0) , 3)
label(2),
try(6),
fast Create_Choice_Point2{&Lpredl_sub_0)
Lpredl_6
trust(8),
fast Delete_Choice_Point2()
Lpredl_8
label(3),
try(10),
fast Create_Choice_Point2(&Lpredl_sub_l)
Lpredl_10
trust(12),
fast Delete_Choice_Point2()
Lpredl_12
label(4),
try(14),
fast Create_Choice_Point2(&Lpredl_sub_2)
Lpredl_14
trust (16),
fast Delete_Choice_Point2()
Lpredl_l6
label(5),
try_me_else(7) ,
fast Create_Choice_Point2(&Lpredl_7)
label(6),
get_atom(toto,0),
fast Get_Atom_Tagged(ta(0) , X (0))
get_atom(mo,1),
fast Get_Atom_Tagged(ta(1) , X (1) )

proceed,
label(7),
retry_me_else(9),
fast Update_Choice_Point2(&Lpredl_9)
label (8),
Lpredl_8:
40: get_atom(toto,0),
19
call c
fast Get Atom Tagged(ta(0),X (0))
fail ret
; 41:
get atom(man,1),
call c
fast Get Atom_Tagged(ta(2),X (1))
fail ret
; 42:
proceed,
pi ret
; 44 :
label(9),
_9:
; 45: retry me else(ll),
call c fast Update Choice Point2(&Lpredl
; 47:
label(10),
. 10:
; 48:
get atom(mo,0),
call_c fast Get_Atom_Tagged(ta(1) , X {0) )

fail_ret
; 49: get_atom(am,1),
call_c fast Get_Atom_Tagged(ta(3),X (1))
fail_ret
; 50: proceed,
pl_ret
; 52: label(11),
Lpredl_ll:
; 53: retry_me_else(13),
call_c fast Update_Choice_Point2(&Lpredl_13)
; 55: label(12),
Lpredl_12:
; 56: get_atom(mo,0),
call_c fast Get_Atom_Tagged(ta(1) ,X(0) )
fail_ret
; 57: get_atom(chen, 1) ,
call_c fast Get_Atom_Tagged(ta(4) , X (1))
fail_ret
; 58: proceed,
pl_ret
; 60: label(13),
Lpredl_13:
; 61: retry_me_else (15),
call_c fast Update_Choice_Point2(&Lpredl_15)
; 63: label (14),
Lpredl_14:
; 64: get_atom(man,0),
call_c fast Get_Atom_Tagged(ta(2),X (0))
fail_ret
; 65: get_atom(bat,1),

call_c fast Get_Atom_Tagged(ta(5),X(l))
fail_ret
; 66: proceed,
pl_ret
; 68: label (15),
Lpredl_15:
; 69: trust_me_else_fail,
call_c fast Delete_Choice_Point2()
; 71: label(16),
Lpredl_16:
; 72: get_atom(man,0),
20

×