Tải bản đầy đủ (.docx) (13 trang)

Cân bằng tải trong mô phỏng song song thận trọng

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 (242.74 KB, 13 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN
────────*────────
BÀI TẬP LỚN
CÁC KỸ THUẬT HIỆN ĐẠI
TRONG CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: CHIẾN LƯỢC CÂN BẰNG TẢI ĐỘNG
TRONG MÔ PHỎNG SONG SONG THẬN TRỌNG
Nhóm thực hiện : Tạ Xuân Thọ
Nguyễn Trần Minh
Nguyễn Huy Hoàng
Lớp : 13B - CNNT1
Nhóm : Nhóm 12
Giáo viên hướng dẫn : TS. Phạm Đăng Hải
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
MỤC LỤC
LỜI MỞ ĐẦU
Cùng với sự phát triển bùng nổ của công nghệ phần cứng, phần mềm, các
máy tính, mạng máy tính ngày một mạnh mẽ, phức tạp và đa dạng hơn,
phong phú cả về số lượng lẫn kiến trúc. Đi đối với sự phát triển các kiến trúc
song song, nhu cầu làm mô phỏng cũng ngày càng trở nên phức tạp, đặc biệt
là các yêu cầu mô phỏng khai thác trên các kiến trúc song song nhằm giảm
thời gian thực hiện.
Mặc dù nghiên cứu trên mô phỏng song song dã được tiến hành liên tục
qua nhiều thập kỷ nhưng hạn chế của vấn đề cần bằng tải cho các mô phỏng
song song vẫn là chủ đề rất được chú ý, vì cần bằng tải là một thành phần
Nhóm 12
2
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
quan trọng trong việc cải thiện hiệu năng của mô phỏng song song khi nó
thực hiện chức năng phân phối hợp lý khối lượng công việc trên các bộ xử lý.


Bài báo "Dynamic load balancing strategies for conservative parallel
simulations" tạm dịch là “Chiến lược cân bằng tải động trong mô phỏng
song song thận trọng” của Boukerche, Azzedine và Sajal K.Das là một
nghiên cứu rất đáng quan tâm, trong đó đã chỉ ra được các thuật toán cân
bằng tải động trong quá trình mô phỏng song song đối với thuật toán thận
trọng, góp phần tăng cao hiệu năng mô phỏng.
Trong phạm vi bài tập lớn môn học, tiểu luận sẽ trình bày các nội dung
được thảo luận trong bài báo, trên cơ sở của chuyên đề về mô phỏng song
song.
1. TỔNG QUAN
Các thuật toán mô phỏng song song đã được thảo luận xuyên suất chuyên
đề “Các kỹ thuật hiện đại trong công nghệ thông tin”, nội dung đi sâu vào
nguyên lý, nguyên tắc của quá trình mô phỏng song song, giới thiệu khá chi
tiết về thuật toán thận trọng, lạc quan, kết hợp… khi thực hiện mô phỏng
song song các hệ thống thực.
Bài báo về chiến lược cân bằng tải động trong mô phỏng song song với
nội dung chính làm rõ vấn đề quan trọng của việc cần thiết tính toán cân bằng
tải khi mô phỏng song song, đồng thời cũng đưa ra thuật toán tính toán cân
bằng tải động dựa trên thuật toán thận trọng sử dụng null – message của
Chandy – Misra, chỉ ra các kết quả thử nghiệm để thấy rằng: với thuật toán
cân bằng tải động đã làm giảm đáng kể thời gian chạy của phiên bản tối ưu
phương pháp sử dụng null – message của Chandy – Misra; giảm 30-40% chi
phí đồng bộ hóa khi so sánh với việc sử dụng thuật toán phân vùng tĩnh; lược
Nhóm 12
3
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
đồ nhiều cấp luôn vược xa các phương pháp cân bằng tải tập trung và các
thuật toán phân cũng tĩnh.
Tiểu luận không đi vào trình bày lại toàn bộ nội dung bài báo mà xây
dựng theo hướng: dựa trên các kết quả nghiên cứu, các ý chính của bài báo

trình bày sơ lược lại phương pháp sử dụng null – message của Chandy –
Misra, thuật toán cân bằng tải động và một số kết luận của kết quả nghiên
cứu. Mục tiêu của tiểu luận là mang lại cái nhìn dưới góc độ: sự ảnh hưởng
lên kết quả thực hiện mô phỏng song song khi thực hiện cân bằng tải, từ đó
cho thấy chiến lược cân bằng tải là một phần quan trọng trong việc cải thiện
hiệu năng của mô phỏng song song.
2. MÔ PHỎNG SONG SONG THẬN TRỌNG
Tiểu luận không đi vào trình bày các vấn đề lý thuyết về mô phỏng mà chỉ
giới thiệu sơ lược thuật toán thận trọng Chandy – Misra và cải tiến sử dụng
null – messega để gỡ bỏ bế tắc. Mục tiêu của việc trình bày để có cái nhìn
đầy đủ hơn khi phân tích lại nội dung bài báo [1] về chiến lược cân bằng tải
động trong mô phỏng song song dựa trên thuật toán null – message của
Chandy – Misra.
2.1. Thuật toán Chandy – Misra
Các tiến trình logic (LPs) trong mô phỏng song song bở các thuật toán
thận trọng sẽ luôn đảm bảo được nguyên tắc causality: các message nhận
được bởi tiến trình này được xử lý theo trật tự không giảm của nhãn thời
gian.
Thuật toán Chandy – Misra xây dựng dựa trên các giả thiết về tiến trình
logic:
- Các LPs sử dụng một kênh vào riêng cho từng LP khác có trao đổi với
nó.
- Mỗi kênh vào là FIFO, có một đồng hồ thời gian mà giá trị tương ứng
với nhãn thời gian của : thông điệp ở đầu kênh vào (nếu có) hoặc thông
điệp cuối cùng nhận được (nếu hàng đợi rỗng)
- LPs trao đổi các thông điệp có nhãn thời gian.
Nhóm 12
4
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
- Cấu hình mạng tĩnh, không tạo các LPs động.

- Các message được gửi trên mỗi link theo trật tự thời gian.
- Đường truyền là tin cậy, các thông điệp đến theo đúng thứ tự được gửi.
Thuật toán với mục đích đảm bảo xử lý các sự kiện trong mỗi LP theo trật
tự thời gian, tại mỗi tiến trình sẽ thực hiện như sau:
WHILE (mô phỏng chưa kết thúc)
{
- Đợi cho tới khi mỗi hàng đợi FIFO chứa ít nhất một msg
- Lấy sự kiện có nhãn thời gian nhỏ nhất ra khỏ hàng đợi
- Xử lý sự kiện này
}
END-LOOP
Thuật toán có thể dễ dàng cho thấy không vi phạm ràng buộc causality,
các message sẽ luôn được xử lý đúng theo trật tự thời gian, tuy nhiên lại rất
dễ rơi vào bế tắc khi mà trong một chu trình các tiến trình, mỗi tiến trình
đang chờ đợi một message từ tiến trình kế tiếp trong chu trình đó. Để giải
quyết vấn đềm thuật toán null – message được sử dụng.
2.2. Thuật toán null – message
Trước hết, có thể hiểu null – messge là một message chỉ chứa nhãn thời
gian và mục tiêu khi sử dụng chính là gỡ sự bế tắc khi thực hiện thuật toán
thận trọng cơ bản Chandy – Misra bằng cách lan truyền thời gian nhân tạo.
Cơ chế sử dụng null – message rất đơn giản: mỗi LP sẽ gửi một null -
message để chỉ ra nhãn thời gian thấp nhất của một messagesmà nó sẽ gửi
trong tương lai
Thuật toán Chandy – Misra cải tiến với null – message:
WHILE (mô phỏng chưa kết thúc)
{
Nhóm 12
5
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
- Đợi cho tới khi mỗi hàng đợi FIFO chứa ít nhất một msg

- Lấy sự kiện có nhãn thời gian nhỏ nhất ra khỏ hàng đợi
- Xử lý sự kiện này (null message không xử lý, chỉ gửi tiếp)
- Gửi tới những LPs lân cận các null messages mang nhãn thời gian
thấp nhât của của một message sẽ được LP này gửi đến trong
tương lai (Giá trị thời gian hiện thời cộng với giá trị lookahead)
}
END-LOOP
Có thể thấy ngay thuật toán cải tiến đã tháo gỡ thế bế tắc, tuy nhiên lại
phục thuộc vào giá trị lookahead và từ việc phục thuộc này sẽ phát sinh thêm
nhiều vấn đề phải giải quyết như: giá trị lookahead = 0, giá trị lookahead quá
nhỏ dẫn đến phát sinh quá nhiều null – message, Tuy nhiên, ở đây ta không
đi sau vào các vấn đề này mà chủ yếu giới thiệu lại thuật toán để có cái nhìn
đấy đủ khi phân tích nội dung bài báo [1].
3. CHIẾN LƯỢC CÂN BẰNG TẢI
3.1. Mục tiêu của nghiên cứu
Đã có rất nhiều các nghiên cứu về cân bằng tải trong các hệ thống song
song và phân tán nói chung được thực hiện, với mục đích là để tìm phân vùng
và thuật toán cân bằng tải hiệu quả chung với chi phí thấp nhất có thể. Tuy
nhiên, tất cả các thuật toán này không phù hợp với mô phỏng song song từ
những hạn chế đồng bộ hoá làm trầm trọng hơn sự phụ thuộc giữa các LPs.
Theo các đánh giá của bài báo [1], trong nhiều năm đã có rất nhiều
nghiên cứu về các vấn đề hạn chế của cân bằng tải động cho mô phỏng song
song và một số kết quả nghiên cứu rất đáng khích lệ. Một số nghiên cứu đã
được nêu ra như: Nicol và Reynolds đề xuất một phương pháp thống kê để
phân vùng động cho một hệ thống đồng nhất của K bộ vi xử lý, nghiên cứu
mô phỏng bước thời gian của của các mạch VLSI; hay Boukerche và Cropper
Nhóm 12
6
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
giới thiệu một thuật toán phân vùng tĩnh để mô phỏng song song thận trọng,

trong đó họ Họ trực tiếp giải quyết các chi phí của Chandy-Misra null-
message trên mô hình chi phí của họ và đề nghị sử dụng một thuật toán mô
phỏng luyện kim với lịch trình tìm kiếm thích ứng để tìm phân vùng tốt
(nhóm-tối ưu)… và cho thấy cân bằng tải tĩnh trong mô phỏng song song
thận trọng có hiệu quả khi khối lượng công việc có thể mô tả kỹ trước.
Trong bài báo [1], các nghiên cứu được tập trung vào thuật toán thận trọng
trong mô tả song song, cụ thể là xem xét các vấn đề cân bằng tải kết hợp với
giao thức đồng bộ hóa sử dụng thuật toán thận trọng null – message của
Chandy – Misra với mục tiêu chính là giảm thiểu chi phí đồng bộ hóa và
giảm đán kể tổng thời gian thực hiện mô phỏng bằn cách phân phối đồng đều
khối lượng công việc giữa các bộ xử lý.
Trong phần đầu tiên tiểu luận sẽ trình bày cơ sở cân bằng tải (FBF – Load
Balancing Facility) để thu thập và phổ biến các thông tin cân bằn tải, phần
thứ hai trình bày về di chuyển tiến trình và phần thứ ba là cách tính toán cân
bằng tải mới.
3.2. Cấu trúc của bộ cân bằng tải
Bộ cân bằng tải được xây dựng tren cơ sở thực hiện nhiệm vụ: thu thập
thông tin của các bộ xử lý và di chuyển các tiến trình đến nơi phù hợp sau khi
đã thực hiện tính toán. Từ đó, có thể coi bộ căn bằng tải gồm hai thành phần:
thành phần thực hiện cân bằng tải và thành phần thực hiện di chuyển các tiến
trình đến nơi phù hợp. Trong đó, thành phần cân bằng tải đưa ra quyết định
khi nào nên di chuyển tiến trình đến nơi nào còn thành phần thực hiện di
chuyển tiến trình sẽ thực thi các quyết định đó. Nói các khác, một thành phần
đóng vai trò chính sách, một thành phần đóng vai trò cơ chế và do đó sẽ giúp
thực hiện linh hoạt các chiến lược cân bằng tải khác nhau.
Với mục tiêu nghiên cứu tầm quan trọng của việc cân bằng tải, bài báo [1]
đã đề xuất chiến lược cân bằng tải tập trung và cân bằng tải phân cấp:
3.2.1. Cân bằng tải tập trung (CL)
Cân bằng tải tập trung (CL): Bộ cân bằng tải thường xuyên gửi thông
điệp <Request_Load> cho mỗi bộ vu xử lý Pr

k
yêu cầu tải trọng PL
i
được
Nhóm 12
7
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
giao cho Pr
k
. Sau khi tất cả các bộ vi xử lý đã gửi lại thông tin, thành phần
bằng tải sẽ thực hiện tính toán cân bằng tải mới và sau đó khi LP đến nơi, nó
sẽ gửi thông điệp <Migrate
Request
, which: LP, Where_To: Processor> cho
thành phần di chuyển tiến trình thực hiện cơ chế di chuyển.
Hiệu suất của phương pháp này có thể bị suy giảm do tất cả mọi yêu
cầu sẽ chuyển qua LBF dó đó có thể dẫn tới hiện tượng tắc).nghẽn (thắt cổ
chai).
3.2.2. Cân bằng tải phân cấp
Cân bằng tải phân cấp (ML): được đưa ra để giảm tắc nghẽn và lưu
lượng lưu thông thông điệp, trong đó các bộ xử lý được nhóm thành các
nhóm và khối lượng công việc của bộ xử lý được cân bằng qua nhiều cấp độ.
Trong mô hình này, ở cấp độ 1 (cấp độ đầu tiên) sẽ là thành phần cân
bằng tải toàn cục (GLBF- Global Load Balancing Facatilty), các cấp độ thấp
hơn sẽ là các bộ xử lý phân cụm, cấu trúc như một vòng ảo. Ví dụ trong hình
là bộ cân bằng tải phân cấp 2 cấp độ, chúng ta sẽ phân tích ví dụ này để thấy
rõ cấu trúc và hoạt động của cơ chế phân cấp.
Cân bằng tải phân cấp hai cấp độ
Ở cấp độ 2, các bộ xử lý phân thành các cụm, có cấu trúc vòng ảo và
hoạt động song song. Tại mỗi cụm, có một bộ xử lý gọi là First-Processor và

Last-Processor, trong đó vòng ảo với thiết kế được tạo ra bởi 1 thông điệp
xuất phát từ First-Processor, đi qua các bộ xử lý trong cụm và kết thúc tại
Last-Processor.
Nhóm 12
8
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
Bộ cân bằng tải GLBF theo định kỳ gửi thông điệp <Request_Load>
đến một bộ xử lý cụ thể của cụm, chính là First-Processor, sau đó một
message được sinh ra và đi qua từng bộ xử lý trong cụm, nó tích luỹ thông tin
(tải trọng của mỗi bộ vi xử lý và ID của bộ xử lý chứa tải cao nhất/thấp nhất),
khi đên Last-Processor thì xử lý thông tin được thu thập từ tất cả các bộ vi
xử lý của vòng, và thông điệp được gửi về GLBF.
Khi tất cả các bộ xử lý của các cụm đã phản hồi GLBF, nó tính lại cân
bằng tải mới và sau đó khi LP đến nơi, nó sẽ gửi thông điệp <Migrate
Request
,
which: LP, Where_To: Processor> cho thành phần di chuyển tiến trình thực
hiện cơ chế di chuyển.
Hiệu năng của phương pháp này tăng hơn phương pháp cân bằng tập
trung do tránh được hiện tượng tắc nghẽn do điểm thắt cổ chai gây ra.
3.3. Di chuyển tiến trình
Đẻ thực hiện được việc di chuyển tiến trình, các bộ xử lý và các tiến trình
logic được xử lý tương ứng được nhận dạng qua các bản đồ (để nhận biết bộ
xử lý nào đang xử lý tiến trình logic nào). Gọi S
LPi
và D
Lpi
tương ứng là bộ xử
lý nguồn và đích mà LP
i

di chuyển tới. Có chế chuyển LP
i
từ S
LPi
đến D
Lpi
gồm ba giai đoạn:
- Thành lập: S
LPi
và D
Lpi
sau khi được LBF thông báo chuyển giao LP
i
thì
D
Lpi
sẽ giữ tất cả các thông điệp được gửi đến LP
i
và nó sẽ được
chuyển cho LP
i
khi sự chuyển giao kết thúc.
- S
LPi
gửi thông điệp của loại hình di chuyển: <Migrate
LP
, which: LP
i
,
Where_To: D

LPi
> đến D
Lpi
, thông điệp này sẽ bao gồm tất cả thông tin
liên quan đến LP
i
, như: cấu trúc dữ liệu liên quan đến quá trình di
chuyển bao gồm thời gian mô phỏng cục bộ của nó (LST) và thông
điệp sự kiện chờ tại đầu vào hàng đợi của nó.
- S
LPi
sẽ gửi thông điệp cho bộ xử lý lân cận của nó về việc di chuyển
LP
i
., khi nhận được thông điệp như vậy, mỗi bộ xử lý sẽ cập nhật bảng
vẽ bản đồ của nó (MAP).
Mỗi lần S
LPi
gửi thông điệp của loại di chuyển, bất kỳ thông điệp nào nhận
được bởi S
LPi
, và dự kiến cho LP
i
sẽ được chuyển tiếp đến D
LPi
.
Nhóm 12
9
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
3.4. Tính toán cân bằng tải

Tính toán cân bằng tải là việc cố gắng phân chia mức độ công việc bằng
nhau cho các bộ xử lý, và trong mô hình mô phỏng song song dựa trên thuật
toán thận trọng thì việc tính toán bao gồm thực hiện trên cả null – message
và real – message. Vì các lý thuyết toán học phức tạp và vượt quá phạm vi
của tiểu luận nên trong phần này tiểu luận chỉ trình bày lại ý tưởng tính toán
cân bằng tải của bài toán, không đi vào phân tích hay giải thích chi tiết các
vấn đề khác.
Ký hiệu R
ij
và N
ij
(N
ij
= 0,1), lần lượt là chiều dài hàng đợi của real-
message và null-message cho mỗi liên kết đến L
ij
, chiều dài trung bình của
CPU-queue cho các real-message và null-message tại mỗi bộ xử lý Pr
k
tương
ứng là:

Trong đó:
- N
k
là số của LPs được gán cho bộ xử lý Pr
k
- Serv_real
k
và Serv-null

k
lần lượt là thời gian LP
k
cần để xử lý tương
ứng một real-message và một sự kiện null-message
- T
s
là thời gian thực hiện bởi một LP để gửi một sự kiện
- T
r
là thời gian đòi hỏi bởi một LP để nhận sự kiện này
Nếu sự kiện được tạo ra bởi một LP trong bộ xử lý Pr
k
và được gửi tới một
LP trong cùng bộ xử lý Prk, sau đó T
s
và T
r
là không đáng kể, bài báo [1]cũng
xác định chiều dài trung bình của CPU-queue cho cả hai loại sự kiện real-
message và null-mesage ở mỗi bộ xử lý Pr
k
lần lượt là:
Nhóm 12
10
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
Trong đó:
- K là số bộ xử lý
Để phân phối các null-message và real-messgae giữa tất cả các bộ vi xử lý
có sẵn,người ta xác định tải trọng tại mỗi bộ vi xử lý (Pr

k
) như sau:
Trong đó:
- α và (1 - α) lần lượt là trọng lượng tương đối của tham biến tương
ứng. Giá trị của α được xác định bằng thực nghiệm
Tải là cân bằng nếu Load
k
= 1, (tức là, α + (1 - α) = 1). Nếu thuật toán cân
bằng tải đòi hỏi mỗi bộ vi xử lý cố gắng điều chỉnh tải trọng của nó để được
chính xác bằng với mức trung bình, thì có thể có kết quả không tốt. Việc di
chuyển của quá trình đến bộ xử lý dưới tải có thể làm tăng tải trọng của nó
đến mức làm cho nó quá tải, đòi hỏi sự di chuyển của LP đến một bộ xử lý
khác.Để tránh điều này,người ta xác định khả năng chịu đựng (δ)bằng thực
nghiệm (trong thử nghiệm, δ = 0.2 mang lại kết quả tốt). Vì vậy, nếu giả sử
rằng độ lệch tối đa δ từ một phân bố đều được phép trong mô phỏng sau đó:
Do đó, bộ vi xử lý bị quá tải nếu Load
k
> 1 + δ.
Để giảm thời gian chạy của thuật toán cân bằng tải có hai lược đồ:
- Lược đồ #1: Bộ cân bằng tải chọn một quá trình (LPs) từ bộ vi xử lý quá
tải nhiều, và di chuyển quá trình đến bộ xử lý nhẹ dưới tải. Chương trình này
rất nhanh chóng và dễ dàng triển khai: tuy nhiên phương pháp này có thể tạo
ra kết quả kém vì nó không xem xét các liên cụm đồng bộ chi phí, do đó quá
Nhóm 12
11
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
trình giao tiếp thường xuyên có thể được giao cho các cụm khác nhau. Kết
quả này có thể dẫn đến một chi phí truyền thông cao, do đó làm chậm lại các
mô phỏng.
- Lược đồ #2: Một cách để giảm chi phí truyền thông là kết hợp hợp lý các

tiến trình logic với nhau: bộ cân bằng tải chọn quá trình (LPs) từ bộ xử lý quá
tải nhiều, sao cho LPs có tiến trình hàng xóm ít nhất r {LP1, LP2,. , LPr}, và
có ít nhất một tiến trình LP
i
, với i = 1 r, được gán cho bộ xử lý khác chứa
LPs. Ở đây, r được xác định bằng thực nghiệm (r = 4 khi mô hình kiến trúc
mạng toroid được sử dụng). Sau đó, tiến trình di chuyển gửi tiến trình lựa
chọn này đến bộ xử lý hàng xóm dưới tải.
4. KẾT LUẬN
Qua tìm hiểu nội dung bài báo có thể nhận thấy cân bằng tải động cho mô
phỏng thận trọng là khả thi và mang lại kết quả tốt. Tiểu luận đã trình bày lại
các ý chính của bài báo với hai chiến lược cân bằng tải tập trung và phân cấp
trong đó, ý tưởng về di chuyển tiến trình và tính toán cân bằng tải động.
Các kết quả tìm hiểu cho thấy có thể có thể nâng cao hơn nữa hiệu năng
của phương pháp mô phỏng song song thận trọng với null – message của
Chandy – Misra. Và cũng là cơ sở để thấy tằng có thể áp dụng thử nghiệm,
nghiên cứu nâng cao hiệu năng cho các phương pháp thận trong khác.
Qua thời gian thực hiện tiểu luận, phần nào chúng em cũng định hình
được cách tiếp cận với giải pháp cân bằng tỉa trong mô phỏng song song nói
chung và mô phỏng song song thận trọng nói riêng. Tuy nhiên, do chủ đề khá
rộng và kiến thức còn hạn chế nên tiểu luận của chúng em mới chỉ dừng lại ở
mức tìm hiểu các nguyên lý và ý tưởng.
Cuối cùng, chúng em xin gửi lời cảm ơn tới thầy TSD. Phạm Đăng Hải đã
giảng dạy và cung cấp cho chúng em những kiến thức về mô phỏng, các tài
liệu liên quan đến tiểu luận để nhóm em có thể hoàn thành được tiểu luận này
Nhóm 12
12
Chiến lược cân bằng tải trong mô phỏng song song thận trọng
5. TÀI LIỆU THAM KHẢO
[1] Boukerche, Azzedine, and Sajal K. Das. "Dynamic load balancing

strategies for conservative parallel simulations." In Parallel and Distributed
Simulation, 1997., Proceedings., 11th Workshop on, pp. 20-28. IEEE, 1997.
Nhóm 12
13

×