II. Thực thi chương trình sau khỉ đã thêm các module phát triển thêm:
1.5 Các dự án đã phát triển:
P O V R a y [8]:
PO V-Ray (Persistence o f Vision Raytracer), là một chương trình mã nguồn mở áp dụng thuật toán R aytracing trong việc tạo ảnh và có thể hoạt động trên nhiều nền máy tính.
Hiện tại, PO V -R ay có m ột số đặc điểm: - D ựa trên ngôn ngữ mô tả (SDL)
- Thư viện tạo các khung cảnh, kiểu dáng và vật thể - Hỗ trợ các dạng hình học cơ bán
- Hỗ trợ m ột số dạng nguồn sáng . . .
Phiên bản hiện tại của POV-Ray là 3.6 với m ột vài đặc tính được thêm vào. Chi tiết có thể tham khảo trên trang chủ w w w .povray.org
sử dụng Raytracing trên GPU, một số đã được đưa ra tại các hội thảo nghiên cứu khoa học như Siggraph (Special Interest Group on GRAPHics and Interactive Techniques). Tuy nhiên, hiện tại những chương trình này mới có khả năng như các chương trình tạo ảnh bằng ray tracing dựa trên CPU. (theo David Kirk, NVIDIA)
[11]
II. Thuật toán:
Thuật toán Raytracing cơ bản gồm hai bước tính toán chính cho mỗi pixel: Tìm điểm giao gần nhất, sau đó tính toán màu tại điểm giao đó [1].
Thuật toán Raytracing được mô tả một cách tổng quát như sau: - Với mỗi điểm ánh trên ảnh cần tạo (buffer)
- Xác định điểm tương ứng trên view plain ( điểm P) - Xây dựng tia sáng đi từ mắt qua p
- Xác định giao điểm gần nhất giữa tia line và các vật thể trong mô hình - Nếu không tồn tại giao điểm thì màu của điểm ảnh là màu nền
- Nếu tồn tại:
- Tính vector pháp tuyến tại giao điểm cua vật thể - Với mồi nguồn sáng:
- Tạo tia đi từ giao điểm đến nguồn sáng - Xác định sự tạo bóng
- Tính màu theo mô hình tạo màu địa phương Phong (Phong lighting model) - Nếu vật thể phản xạ
- Tìm tia phản xạ
- Tìm màu của tia phản xạ - Cộng dồn vào m àu điểm ảnh - Nếu vật thể khúc xạ
- Tìm tia khúc xạ
III. Song song hóa quá trình tính toán thuật toán ray tracing
3.1 Mô hình tinh toán:
Hai mô hình tính toán chủ yêu trong tính toán song song là demand-driven và data-driven [10].
Hệ thống Demand-driven:
Trong hệ thông demand-driven, mỗi một bộ vi xử lý được cấp trọn vẹn một số nhiệm vụ, và sau đó phải xử lý tất cả các phép tính liên quan đến nhiệm vụ được giao. Đôi với ray tracing, nhiệm vụ câp cho mỗi bộ vi xử lý có thể là một vùng của một tâm ảnh, và bộ vi xử lý phải tính (hay lần theo) tất cả các tia xuất phát từ nguồn và đi qua vùng ảnh này.
Hệ thống Data-driven:
M ột phép tính bao gồm công thức tính và dữ liệu để đưa ra kết quả. Trong mô hình data-driven, dữ liệu của một phép tính được cấp cho nhiều bộ vi xử lý, bởi vậy một phép tính được tính bởi nhiều bộ vi xử lý. Đối với ray tracing, mồi bộ vi xử lý được cấp một phần của hoạt cảnh hình học, và có nhiệm vụ tính toán tất cả các phép tính có dữ liệu liên quan đến phần hoạt cảnh hình học được cấp, độc lập với nguồn của tia sáng. M ột bộ vi xử lý, trong quá trình tính toán có thể phải yêu cầu dữ liệu được tính bởi m ột bộ vi xử lý khác truyền đến.
Đánh giá:
Sự ảnh hưởng lớn nhất mà chúng ta cần quan tâm khi chọn một trong hai mô hình tính toán trên trong tính toán song song với Raytracing là về vấn đề bộ nhớ của máy tính. Với tính chất của thuật toán ray tracing (cần xác định điếm giao gần nhất của tia sáng với vật thể gần nhất), rất khó có thể dự đoán được đâu là giao điểm cần tìm nếu không dựa trên toàn bộ các vật thể có trong hoạt cảnh. Bởi vậy, với mô hình tính toán dem and-driven, mỗi bộ vi xử lý phải cỏ khả năng truy cập toàn bộ các vật thể có trong hoạt cảnh. Bởi vậy cần lưu trữ toàn bộ dữ liệu liên quan đến hoạt cảnh cần tạo ảnh. M ột yếu tố khác đó là việc truyền dữ liệu cũng có thể giảm hiệu suất. Mô hình tính toán song song data-driven sử dụng bộ nhớ hiệu quả hơn, nhưng với số lượng bộ vi xử lý tăng, hiệu suất của hệ thống có thể bị giảm đi do việc truyền dữ liệu bị quá tải.
Nếu không cần tính đến sự giới hạn của bộ nhớ (do sự phát triển của máy tính) thì mô hình tính toán dem and-driven chiếm ưu thế hơn. Bởi nó hỗ trợ nhiều cơ chế cân bàng tải hiệu quả hơn.
3.2 Cân bằng tải
M ột trong những vấn đề lớn nhất khi tính toán lưới với các máy tính có cấu hình khác nhau là làm cách nào đê phân phối công việc và điều phối sao cho đạt được hiệu suất cao, ví dụ giảm thiểu thời gian xử lý, giảm độ trễ truyền thông, hoặc tối ưu tài nguyên của cả hệ thống [12].
Cân băng tải trong tính toán song song là cơ chế đảm bảo mỗi bộ vi xử lý thực thi khối lượng phép tính ngang bàng nhau (đo theo thời gian sử dụng CPU).
Raytracing là thuật toán trong đó mỗi phép toán tính màu tại một điểm ảnh có độ phức tạp của thuật toán khác nhau, do tính chất quang hình của tia sáng (phản xạ nhiều lần, khúc xạ nhiều lần ...), do đó gần như không có khả năng dự đoán trước điểm ảnh nào sẽ có độ phức tạp tính toán lớn hay nhỏ, hoặc vật thể nào sẽ có nhiều tương tác hơn. V à vì vậy khi một bộ vi xử lý phải tính toán tại điểm ảnh có độ phức tạp lớn, điều này có thể ảnh hưởng tới sự thực thi hay hiệu suất của toàn bộ hệ thống.
Có hai phương pháp cân bằng tải là “cân bằng tải tĩnh” và “cân bằng tải động”. Trong phương pháp “cân bằng tải tĩnh” thông tin hay thời gian hoàn thành m ột khối lượng công việc được biết trước khi xử lý, và do đó có thể đưa ra một ước lượng sơ bộ sự phân tải- Công việc khi đã được cấp cho m ột node thì chỉ được xử lý bởi node đó. Phương pháp này không đảm bảo được cơ chế cân bằng tải hiệu quà. Nhưng ưu điểm của phương pháp này là không cần đến sự truyền thông trong quá trình xử lý, điều này đôi khi có thể mang lại kết quả khả quan. Phương pháp thử hai, cung cấp công việc cho bộ vi xử lý linh động hơn, dựa trên cơ chế điều phối công việc trong suốt quá trình thực thi. Trong quá trình điều phối công việc bộ điều phối sẽ chuyển công việc từ những máy tính đang quá tải tới những máy đang rỗi nhằm mục đích giảm thiểu thời gian xử ]ý của ứng dụng. Phương pháp này mang lại sự cân bằng tải tốt hơn, nhưng lại cần phải kiểm soát nhiều hơn.
Sự cân bằng tải có thể hoạt động tại một m áy trung tâm hoặc cũng có thể phân bổ giữ tất cả các m áy tính tham gia trong quá trình cân bằng tải. Có thể cỏ nhiều chính sách trong hoạt động cân bằng tải. Các chính sách liên quan đến thông tin (tốc độ xử lý, bộ nhó ...) có thể được xử lý tập trung, các chính sách liên quan đến truyền thông (độ trễ, băng thông đường truyền . ..) hay vị trí các máy có thế xử lý phân phối.
X a; cnira các máy tính tham giâ . Các thông tin cùa câe mây truyền di giữa các may unn
Ẵ+ /4ỉnVi rất) công viêc cho may un - Các tiến trình quyết định câp cong
Phần IV. THỰC NGHIỆM■ «
Chương trình xử lý Raytracing sau khi phát triển vẫn còn nhiều thiếu sót (như chưa xử lý được các hiệu ứng nâng cao của thuật toán) nên kết quả không hoàn toàn được như ý muốn. Tuy nhiên sau một thời gian triển khai chúng tôi cũng thu được m ột số kết quả.
I. Mô hình triển khai
Máy trung tâm chạy hệ điều hành M icrosoft W indow XP sp2, các phần mềm cài đặt:
M icrosoft SQL Server 2005 .Net Fram ew ork 2.0
M anager 1.0.5 (trong bộ công cụ Alchemi)
Các máy thực thi chạy hệ điều hành M icrosoft W indow Server 2000, số lượng máy thực thi là 13 đển 15 máy, các phần mềm cài đặt:
.Net Fram ew ork 2.0
Executor 1.05 (trong bộ công cụ Alchemi)
Các máy tính trong mô hình được thiết kế theo mô hình mạng Lan, máy trung tâm thuộc một subnet, 13 m áy thực thi thuộc một subnet khác.
II. Kết quả thu được
H o ạ t h ọa, 4 h ìn h cầ u , 2 hình dẹt di ch u yển tro n g k hông gian
Ngày t e s t : 29 '05/2008
File input (số ữ am e, dung lư ợ n g ): chuyendong.wri (26 frames, 112 kb)
File output: 26 files (resultJ).b m p -> result_25.bm p trong thư mục ../RTTest/chuyendong), kích cỡ: 500x500 pixel mỗi ảnh
Số máy xử lý: 15 m áy
Thời gian xử lý: 01:13:52.7031250 Ví dụ ảnh đầu tiên của các file output:
Hình 17: Hoạt họa các kbổi câu
H o ạ t h ọa 14 h ìn h cầu ch u y ển tron g k h ôn g gian
Ngày t e s t : 30/05/2008
File input (số fram e, dung lượng) : holon.wrl (36 frames, 297 kb)
File output: 36 files (result_0.bmp -> result_36.bm p trong thư mục ../RTTest/holon), kích cở: 400x400 pixel mỗi ảnh
Số m áy chạy: 13 m áy
Thời gian xử lý: 01:43:57.7656250 Ví đụ ảnh đầu tiên của các file output:
V • í
Hình 18: Hoạt họa các khối cầu 2
H o ạ t họa b án h x e q u a n h tròn + tịnh tiến
Ngày t e s t : 30/05/2008
File input (số frame, dung lượng) : banhxequay2.wri (26 frames, 45 kb)
File output: 26 files (result_0.bmp -> result_26.bmp trong thư mục ,./RTTest/banhxequay2), kích cỡ: 400x400 pixel mỗi ảnh
Số m áy xử lý: 13 m áy
Thời gian xử lý: 00:14:21.1250000 Ví dụ ảnh đầu tiên của các file output:
Hình 19: Hoạt họa bánh xe quay
H o ạ t họa ấm trà tịn h tiến + quay (chư a có textu re)
N gày test : 31/05/2008
File input (sô frame, dung lư ợ n g ): teapot.wri (36 frames, 74 kb)
File output: 36 files (result o.bmp -> result 36.bmp trong thư mục ../RTTest/teapot), kích cỡ: 400x400 pixel mỗi ảnh
Số máy xử lý: 12 máy
Thời gian xử lý: 00:31:40.0625000 Ví dụ ảnh đầu tiên của các file output:
u
c - /
Hình 20: Hoạt họa ấm trà (không texture)
H o ạ t h ọa ấm trà tịn h tiến + quay (có tex tu re)
Ngày t e s t : 31/05/2008
File input (số fram e, dung lượng) : teapot2.wri (36 frames, 74 kb)
File output: 36 files (result 0.bmp -> result_36.bmp trong thư mục ../RTTesƯteapot2), kích cỡ: 400x400 pixel mỗi ảnh
Số m áy xử lý: 15 máy
Texture trên bề m ặ t : file gach.bmp Thời gian xử lý: 00:19:35.6406250 Ví dụ ảnh đầu tiên của các file output:
Hình 21: Hoạt họa ẩm trà (có texture)
H o ạ t h ọa ấm trà q u ay quanh trục đ ứ n g (có áp d ụ n g texture)
Ngày t e s t : 31/05/2008
File input (số fram e, dung lượng) : teapot3.wri (36 frames, 74 kb)
File output: 36 flies (result_0.bmp -> result 36.bmp trong thư mục ../RTTest/teapot3), kích cỡ: 400x400 pixel mỗi ảnh
Sổ m áy xử lý: 15 máy
Texture trên bề m ặ t : file hoa.bmp Thời gian xử lý: 00:22:32.8906250 Ví dụ ảnh đầu tiên của các file output:
Phần V. KÉT LUẬN
Quá trình hoàn thiện đề tài là quãng thời gian chúng tôi tìm hiểu được khá nhiều tri thức mới về tính toán mạng lưới và đồ họa ba chiều. Trong quá trình phát triển chúng tôi đạt được các kết quả sau:
về tín h toán m ạ n g lư ớ i
Tìm hiểu khá chi tiết và tổng quan về các hệ thống tính toán lưới.
về bộ c ô n g cụ A lch em i
Nắm được các tính năng cũng như nhược điểm của bộ công cụ Alchemi. Hiểu mã nguồn, cấu trúc của chương trình và cỏ thể sửa đổi để cải thiện bộ công cụ. Trên thực tế đã xây dựng và thực nghiệm thành công modul tính toán dư thừa.
về c h ư ơ n g trìn h R a y tr a c in g và qui trình h o ạ t họa
Nắm bắt rõ các kiến thức về thuật toán Raytracing, file định dạng VRML [13,14], và công cụ 3ds M ax [15]. Triển khai và phát triển thành công qui trình tạo ảnh Raytracing trên m ạng lưới grid (thực nghiệm trên 13-15 máy tính, và cho kết quả là m ột số ảnh hoạt họa). Tuy nhiên chương trình xử lý ảnh Raytracing vẫn còn nhiều thiếu sót, chưa áp dụng được hết các thuật toán của Raytracing.
TÀI LIỆU TH AM KHẢO
[1] w w w .A lchem i.net. Alchemi. [Website]
[2] Buss, S am u el R. 3-D Computer Graphics - A M athematical Introducing
with OpenGL. N ew York : Cambridge University Press, 2003.
[3] http://boinc.berkeley.edu/. Boinc. [Website]
[4] M. Taufer, D. Anderson, P.Cicotti, C.L. Brooks III. Homogeneous redundancy: a technique to ensure integrity o f molecular simulation results using public computing.
[5] H enrik W ann Jensen, Per Christensen, s.l. High quality rendering using
raytracing and pho to n m apping : Siggraph 2007 course 8, 2007.
[6] http://w w w .encyclopedia.com /. Encyclopedia.com. [Website] HighBeam Research.
[7] Per H. C hristensen, Julian Fong, David M. Laur, Dana Batali.
Raytracing fo r the m ovie ‘Cars
[8] D.I Laurenson, A.U.U. Sheikh, s . M cLaughlin. The use o f raytracing in characterizing the indoor mobile radio channel
[9] http://w w w .openrt.de/. OpenRT. [Website] [10]
httpiy /b lo g s.in tel.co n x research /^O O T /lO y m o reo n th efiitu reo fray traci.p h p .
intel.com. [W ebsite]
[11] http://w w w .legitreview s.com /article/712.'1/. [Website]
[12] D.I L aurenson, A .u .u . Sheikh, s . M cLaughlin. Parallel Progressive Ray-tracing.
[13] D aniel K .Schneider, Sylvere M artin M ichiellot. VRML Primer and
Tutorial, s.l. : U niversity o f Geneva, 1998.
[14] R ik k C a re y , G av in Bell. The A nnotated VRML 9 n Reference Manual.
L Ậ P L ỊC H T R O N G H Ệ T H Ố N G T ÍN H T O Á N L Ư Ớ I D ự A T R Ê N K Ỹ T H U Ậ T T Ó I ư u H Ó A C Ủ A N H Ó M B Ầ Y
Trịnh Thị Thúy Giang1, Hồ Đắc Phương2, Nguyễn Thanh Thủy3,
Đại học Khoa học Tự nhiên, Đại học Quốc gia Hà nội.
Email: tgiang@ vnu.edu-vn
2 Đại học Công nghệ, Đại học Quốc gia Hà Nội.
Email: hdDhuonft@vnu.edu-vn
3 Đại học Bách khoa Hà nội.
Email: thuvnt@ it-hut.edi].vn
TOM TẮT: Trí tuệ nhân tạo thư ờng được nghiên cứu theo hai hướng, đó là: sử dụng các kỹ thuật trong tin học đe nghien cứ u các h iện tư ợ n g sinh hỏa học tự nhiên và sử dụng các quá trình tối ưu hóa tụ nhiên trong sinh học đê giả i q u yêt các bài toán trong tin học. Trong bài báo này, chúng tôi trình bày một kết quả theo huớng nghiên cứu thứ hai đê giả i bài toán lập lịch trong các hệ thống tính toán lưới. Kết quả cùa bài báo là một thuật toán lập lịch m ớ i dựa trên kỹ thuật tối ưu hóa theo nhóm bày PSO (Particle Swarm O ptim ization). C ác kêt quà thực nghiệm chỉ ra rằng, thuật toán được đề xuất có hiệu quả tốt như thuật toán lập lịch dựa trên giả i thuật di truyền nhưng có thởi gian thực hiện nhỏ hơn.
TỪ K H Ó A : G rid com p u tin g, S ch ed u lin g, Particle Swarm O ptim ization, G enetic A lgorithm .
I. GIỚI THIỆU
Hệ thong tính toán lưới (grid computing system) là một tập hợp rộng lớn và không đồng nhât của các hệ thông tự trị (autonomous systems) phân tán về địa lý được kêt nôi với nhau bởi liên mạng máy tính báng thông rộng [1]. Lưới tính toán được sử dụng để giải quyết các vấn để phức tạp thuộc nhiều lĩnh vực khác nhau như: tối ưu, mô phóng, khám phá dược liệu, sinh học,.... Trong một lưới tính toán, các hệ thống tự trị phải chia sẻ công việc (job sharing) với nhau. Việc chia sẻ các công việc cho các hệ thống tự trị sao cho tài nguyên hệ thống được sử dụng hiệu quả và các công việc thực hiện được một cách tối ưu được gọi là “lập lịch ừong hệ thong tính toán lưới” [1], Bài toán lập lịch là một trong các tác vụ khó khăn chính của hệ thống tính toán lưới, vì vậy nó đã được rẩt nhiều nhà khoa học quan tâm. Không giống như các bài toán lập lịch trong hệ thống phân tán truyền thống, trong lưới tính toán việc lập lịch phức tạp hon nhiều do các đặc trưng như: tính động của hệ thống, sự không đồng nhất về tài nguyên và công việc ... cần được quan tâm khi xử lý. Bài toán lập lịch được xem xét trong cả hai trường hợp: tĩnh (static) và động (dynamic). Trong bài báo này chúng tôi chỉ xem xét bài toán ở dạng tĩnh.
Bài toán lập lịch đã được chứng minh là NP đây đủ [1], Do vậy, việc sử dụng các thuật toán heuristics là cách tiếp cận thực tê (de facto) đê giải quyêt nó. Trong những năm qua, nhiều tác giả đã sử dụng các thuật toán heuristics khác nhau để giải quyết bài toán lập lịch như: Ritchie [2] sử dụng thuật toán Local search, Yarkhan [3] sử dụng thuật toán Simulated Annealing, Abraham [4] sử dụng thuật toán Tabu Search, Marino [5] sử dụng Genetic algorithms, Ritchie [6] sử dụng thuật toán lai giữa Ant Colony Optimization và Tabu Search, .... Do tính khó giải của bài toán lập lịch và sự quan trọng của nó trong các hệ thống tính toán lưới, nên việc tìm kiểm các giái thuật mới vẫn là một chủ đê nghiên cứu thú vị.
Kỹ thuật tiến hóa theo nhóm bầy (PSO- Particle Swarm Optimization) được đưa ra năm 1995 bởi Dr. Eberhart and Dr. Kennedy [7]. Kỹ thuật này phỏng theo hành vi cùa các bây chim (Bird flocking) và các đàn cá (Fish schooling). PSO đã được áp dụng đê giải các bài
toán tối ưu khác nhau, đặc biệt là đối với bài toán người du lịch bán hàng [8]. Dựa theo