/[gentoo]/xml/htdocs/doc/en/hpc-howto.xml
Gentoo

Diff of /xml/htdocs/doc/en/hpc-howto.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 Revision 1.13
1<?xml version='1.0' encoding="UTF-8"?> 1<?xml version='1.0' encoding="UTF-8"?>
2
3<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/hpc-howto.xml,v 1.1 2005/01/03 10:00:04 swift Exp $ --> 2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/hpc-howto.xml,v 1.13 2006/12/18 21:47:19 nightmorph Exp $ -->
4
5<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> 3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4
6<guide link="hpc-howto.xml"> 5<guide link="/doc/en/hpc-howto.xml">
7
8<title>High Performance Computing on Gentoo Linux</title> 6<title>High Performance Computing on Gentoo Linux</title>
9 7
10<author title="Author"> 8<author title="Author">
11 <mail link="marc@adelielinux.com">Marc St-Pierre</mail> 9 <mail link="marc@adelielinux.com">Marc St-Pierre</mail>
12</author> 10</author>
18</author> 16</author>
19<author title="Assistant/Research"> 17<author title="Assistant/Research">
20 <mail link="olivier@adelielinux.com">Olivier Crete</mail> 18 <mail link="olivier@adelielinux.com">Olivier Crete</mail>
21</author> 19</author>
22<author title="Reviewer"> 20<author title="Reviewer">
23 <mail link="spyderous@gentoo.org">Donnie Berkholz</mail> 21 <mail link="dberkholz@gentoo.org">Donnie Berkholz</mail>
24</author> 22</author>
25 23
26<!-- No licensing information; this document has been written by a third-party 24<!-- No licensing information; this document has been written by a third-party
27 organisation without additional licensing information. 25 organisation without additional licensing information.
28 26
31 as long as the adelie linux R&D notice stays 29 as long as the adelie linux R&D notice stays
32--> 30-->
33 31
34<abstract> 32<abstract>
35This document was written by people at the Adelie Linux R&amp;D Center 33This document was written by people at the Adelie Linux R&amp;D Center
36&lt;http://www.adelielinux.com&gt; as a 34&lt;http://www.adelielinux.com&gt; as a step-by-step guide to turn a Gentoo
37step-by-step guide to turn a Gentoo System into an High Performance Computing 35System into a High Performance Computing (HPC) system.
38(HPC) system.
39</abstract> 36</abstract>
40 37
41<version>1.0</version> 38<version>1.6</version>
42<date>August 1, 2003</date> 39<date>2006-12-18</date>
43 40
44<chapter> 41<chapter>
45<title>Introduction</title> 42<title>Introduction</title>
46<section> 43<section>
47<body> 44<body>
65Computing system. Step by step, it explains what packages one may want to 62Computing system. Step by step, it explains what packages one may want to
66install and helps configure them. 63install and helps configure them.
67</p> 64</p>
68 65
69<p> 66<p>
70Obtain Gentoo Linux from the website <uri 67Obtain Gentoo Linux from the website <uri>http://www.gentoo.org</uri>, and
71link="http://www.gentoo.org/">www.gentoo.org</uri>, and refer to the <uri 68refer to the <uri link="/doc/en/">documentation</uri> at the same location to
72link="http://www.gentoo.org/main/en/docs.xml">documentation</uri> at the same 69install it.
73location to install it.
74</p> 70</p>
75 71
76</body> 72</body>
77</section> 73</section>
78</chapter> 74</chapter>
82<section> 78<section>
83<title>Recommended Optimizations</title> 79<title>Recommended Optimizations</title>
84<body> 80<body>
85 81
86<note> 82<note>
87We refer to the <uri 83We refer to the <uri link="/doc/en/handbook/">Gentoo Linux Handbooks</uri> in
88link="http://www.gentoo.org/doc/en/handbook">Gentoo Linux Handbooks</uri> in
89this section. 84this section.
90</note> 85</note>
91 86
92<p> 87<p>
93During the installation process, you will have to set your USE variables in 88During the installation process, you will have to set your USE variables in
94<path>/etc/make.conf</path>. We recommended that you deactivate all the 89<path>/etc/make.conf</path>. We recommended that you deactivate all the
95defaults (see <path>/etc/make.profile/make.defaults</path>) by negating them 90defaults (see <path>/etc/make.profile/make.defaults</path>) by negating them in
96in make.conf. However, you may want to keep such use variables as x86, 3dnow, 91make.conf. However, you may want to keep such use variables as x86, 3dnow, gpm,
97gpm, mmx, sse, ncurses, pam and tcpd. Refer to the USE documentation for more 92mmx, nptl, nptlonly, sse, ncurses, pam and tcpd. Refer to the USE documentation
98information. 93for more information.
99</p> 94</p>
100 95
101<pre caption="USE Flags"> 96<pre caption="USE Flags">
102# Copyright 2000-2003 Daniel Robbins, Gentoo Technologies, Inc.
103# Contains local system settings for Portage system
104
105# Please review 'man make.conf' for more information.
106
107USE="-oss 3dnow -apm -arts -avi -berkdb -crypt -cups -encode -gdbm 97USE="-oss 3dnow -apm -arts -avi -berkdb -crypt -cups -encode -gdbm -gif gpm -gtk
108-gif gpm -gtk -imlib -java -jpeg -kde -gnome -libg++ -libwww -mikmod 98-imlib -java -jpeg -kde -gnome -libg++ -libwww -mikmod mmx -motif -mpeg ncurses
109mmx -motif -mpeg ncurses -nls -oggvorbis -opengl pam -pdflib -png 99-nls nptl nptlonly -oggvorbis -opengl pam -pdflib -png -python -qt3 -qt4 -qtmt
110-python -qt -qtmt -quicktime -readline -sdl -slang -spell -ssl 100-quicktime -readline -sdl -slang -spell -ssl -svga tcpd -truetype -X -xml2 -xv
111-svga tcpd -truetype -X -xml2 -xmms -xv -zlib" 101-zlib"
112</pre> 102</pre>
113 103
114<p> 104<p>
115Or simply: 105Or simply:
116</p> 106</p>
117 107
118<pre caption="USE Flags - simplified version"> 108<pre caption="USE Flags - simplified version">
119# Copyright 2000-2003 Daniel Robbins, Gentoo Technologies, Inc.
120# Contains local system settings for Portage system
121
122# Please review 'man make.conf' for more information.
123
124USE="-* 3dnow gpm mmx ncurses pam sse tcpd" 109USE="-* 3dnow gpm mmx ncurses pam sse tcpd"
125</pre> 110</pre>
126 111
127<note> 112<note>
128The <e>tcpd</e> USE flag increases security for packages such as xinetd. 113The <e>tcpd</e> USE flag increases security for packages such as xinetd.
175</p> 160</p>
176 161
177<p> 162<p>
178The slave nodes listen for instructions (via ssh/rsh perhaps) from the master 163The slave nodes listen for instructions (via ssh/rsh perhaps) from the master
179node. They should be dedicated to crunching results and therefore should not 164node. They should be dedicated to crunching results and therefore should not
180run any unecessary services. 165run any unnecessary services.
181</p> 166</p>
182 167
183<p> 168<p>
184The rest of this documentation will assume a cluster configuration as per the 169The rest of this documentation will assume a cluster configuration as per the
185hosts file below. You should maintain on every node such a hosts file 170hosts file below. You should maintain on every node such a hosts file
189 174
190<pre caption="/etc/hosts"> 175<pre caption="/etc/hosts">
191# Adelie Linux Research &amp; Development Center 176# Adelie Linux Research &amp; Development Center
192# /etc/hosts 177# /etc/hosts
193 178
194127.0.0.1 localhost 179127.0.0.1 localhost
195 180
196192.168.1.100 master.adelie master 181192.168.1.100 master.adelie master
197 182
198192.168.1.1 node01.adelie node01 183192.168.1.1 node01.adelie node01
199192.168.1.2 node02.adelie node02 184192.168.1.2 node02.adelie node02
200</pre> 185</pre>
201 186
202<p> 187<p>
203To setup your cluster dedicated LAN, edit your <path>/etc/conf.d/net</path> 188To setup your cluster dedicated LAN, edit your <path>/etc/conf.d/net</path>
204file on the master node. 189file on the master node.
205</p> 190</p>
206 191
207<pre caption="/etc/conf.d/net"> 192<pre caption="/etc/conf.d/net">
208# Copyright 1999-2002 Gentoo Technologies, Inc.
209# Distributed under the terms of the GNU General Public License, v2 or later
210
211# Global config file for net.* rc-scripts 193# Global config file for net.* rc-scripts
212 194
213# This is basically the ifconfig argument without the ifconfig $iface 195# This is basically the ifconfig argument without the ifconfig $iface
214# 196#
215 197
236 option domain-name "adelie"; 218 option domain-name "adelie";
237 range 192.168.1.10 192.168.1.99; 219 range 192.168.1.10 192.168.1.99;
238 option routers 192.168.1.100; 220 option routers 192.168.1.100;
239 221
240 host node01.adelie { 222 host node01.adelie {
241 # MAC address of network card on node 01 223 # MAC address of network card on node 01
242 hardware ethernet 00:07:e9:0f:e2:d4; 224 hardware ethernet 00:07:e9:0f:e2:d4;
243 fixed-address 192.168.1.1; 225 fixed-address 192.168.1.1;
244 } 226 }
245 host node02.adelie { 227 host node02.adelie {
246 # MAC address of network card on node 02 228 # MAC address of network card on node 02
247 hardware ethernet 00:07:e9:0f:e2:6b; 229 hardware ethernet 00:07:e9:0f:e2:6b;
248 fixed-address 192.168.1.2; 230 fixed-address 192.168.1.2;
249 } 231 }
250} 232}
251</pre> 233</pre>
263</p> 245</p>
264 246
265<p> 247<p>
266There are other systems that provide similar functionality to NFS which could 248There are other systems that provide similar functionality to NFS which could
267be used in a cluster environment. The <uri 249be used in a cluster environment. The <uri
268link="http://www.transarc.com/Product/EFS/AFS/index.html">Andrew File System 250link="http://www.openafs.org">Andrew File System
269from IBM</uri>, recently open-sourced, provides a file sharing mechanism with 251from IBM</uri>, recently open-sourced, provides a file sharing mechanism with
270some additional security and performance features. The <uri 252some additional security and performance features. The <uri
271link="http://www.coda.cs.cmu.edu/">Coda File System</uri> is still in 253link="http://www.coda.cs.cmu.edu/">Coda File System</uri> is still in
272development, but is designed to work well with disconnected clients. Many 254development, but is designed to work well with disconnected clients. Many
273of the features of the Andrew and Coda file systems are slated for inclusion 255of the features of the Andrew and Coda file systems are slated for inclusion
304portmap:192.168.1.0/255.255.255.0 286portmap:192.168.1.0/255.255.255.0
305</pre> 287</pre>
306 288
307<p> 289<p>
308Edit the <path>/etc/exports</path> file of the master node to export a work 290Edit the <path>/etc/exports</path> file of the master node to export a work
309directory struture (/home is good for this). 291directory structure (/home is good for this).
310</p> 292</p>
311 293
312<pre caption="/etc/exports"> 294<pre caption="/etc/exports">
313/home/ *(rw) 295/home/ *(rw)
314</pre> 296</pre>
315 297
316<p> 298<p>
317Add nfs to your master node's default runlevel: 299Add nfs to your master node's default runlevel:
318</p> 300</p>
326configure your salve nodes' <path>/etc/fstab</path>. Add a line like this 308configure your salve nodes' <path>/etc/fstab</path>. Add a line like this
327one: 309one:
328</p> 310</p>
329 311
330<pre caption="/etc/fstab"> 312<pre caption="/etc/fstab">
331master:/home/ /home nfs rw,exec,noauto,nouser,async 0 0 313master:/home/ /home nfs rw,exec,noauto,nouser,async 0 0
332</pre> 314</pre>
333 315
334<p> 316<p>
335You'll also need to set up your nodes so that they mount the nfs filesystem by 317You'll also need to set up your nodes so that they mount the nfs filesystem by
336issuing this command: 318issuing this command:
363 <li>Generate public and private keys</li> 345 <li>Generate public and private keys</li>
364 <li>Copy public key to slave nodes</li> 346 <li>Copy public key to slave nodes</li>
365</ul> 347</ul>
366 348
367<p> 349<p>
368For user based authentification, general and copy as follows: 350For user based authentication, generate and copy as follows:
369</p> 351</p>
370 352
371<pre caption="SSH key authentication"> 353<pre caption="SSH key authentication">
372# <i>ssh-keygen -t dsa</i> 354# <i>ssh-keygen -t dsa</i>
373Generating public/private dsa key pair. 355Generating public/private dsa key pair.
391id_dsa.pub 100% 234 2.0MB/s 00:00 373id_dsa.pub 100% 234 2.0MB/s 00:00
392</pre> 374</pre>
393 375
394<note> 376<note>
395Host keys must have an empty passphrase. RSA is required for host-based 377Host keys must have an empty passphrase. RSA is required for host-based
396authentification. 378authentication.
397</note> 379</note>
398 380
399<p> 381<p>
400For host based authentication, you will also need to edit your 382For host based authentication, you will also need to edit your
401<path>/etc/ssh/shosts.equiv</path>. 383<path>/etc/ssh/shosts.equiv</path>.
478 460
479ALL:192.168.1.0/255.255.255.0 461ALL:192.168.1.0/255.255.255.0
480</pre> 462</pre>
481 463
482<p> 464<p>
483Finally, configure host authentification from <path>/etc/hosts.equiv</path>. 465Finally, configure host authentication from <path>/etc/hosts.equiv</path>.
484</p> 466</p>
485 467
486<pre caption="hosts.equiv"> 468<pre caption="hosts.equiv">
487# Adelie Linux Research &amp; Development Center 469# Adelie Linux Research &amp; Development Center
488# /etc/hosts.equiv 470# /etc/hosts.equiv
523Servers</uri>, and configure your <path>/etc/conf.d/ntp</path> and 505Servers</uri>, and configure your <path>/etc/conf.d/ntp</path> and
524<path>/etc/ntp.conf</path> files on the master node. 506<path>/etc/ntp.conf</path> files on the master node.
525</p> 507</p>
526 508
527<pre caption="Master /etc/conf.d/ntp"> 509<pre caption="Master /etc/conf.d/ntp">
528# Copyright 1999-2002 Gentoo Technologies, Inc.
529# Distributed under the terms of the GNU General Public License v2
530# /etc/conf.d/ntpd 510# /etc/conf.d/ntpd
531 511
532# NOTES: 512# NOTES:
533# - NTPDATE variables below are used if you wish to set your 513# - NTPDATE variables below are used if you wish to set your
534# clock when you start the ntp init.d script 514# clock when you start the ntp init.d script
549NTPDATE_CMD="ntpdate" 529NTPDATE_CMD="ntpdate"
550 530
551# Options to pass to the above command 531# Options to pass to the above command
552# Most people should just uncomment this variable and 532# Most people should just uncomment this variable and
553# change 'someserver' to a valid hostname which you 533# change 'someserver' to a valid hostname which you
554# can aquire from the URL's below 534# can acquire from the URL's below
555NTPDATE_OPTS="-b ntp1.cmc.ec.gc.ca" 535NTPDATE_OPTS="-b ntp1.cmc.ec.gc.ca"
556 536
557## 537##
558# A list of available servers is available here: 538# A list of available servers is available here:
559# http://www.eecis.udel.edu/~mills/ntp/servers.html 539# http://www.eecis.udel.edu/~mills/ntp/servers.html
596And on all your slave nodes, setup your synchronization source as your master 576And on all your slave nodes, setup your synchronization source as your master
597node. 577node.
598</p> 578</p>
599 579
600<pre caption="Node /etc/conf.d/ntp"> 580<pre caption="Node /etc/conf.d/ntp">
601# Copyright 1999-2002 Gentoo Technologies, Inc.
602# Distributed under the terms of the GNU General Public License v2
603# /etc/conf.d/ntpd 581# /etc/conf.d/ntpd
604 582
605NTPDATE_WARN="n" 583NTPDATE_WARN="n"
606NTPDATE_CMD="ntpdate" 584NTPDATE_CMD="ntpdate"
607NTPDATE_OPTS="-b master" 585NTPDATE_OPTS="-b master"
670And the rules required for this firewall: 648And the rules required for this firewall:
671</p> 649</p>
672 650
673<pre caption="rule-save"> 651<pre caption="rule-save">
674# Adelie Linux Research &amp; Development Center 652# Adelie Linux Research &amp; Development Center
675# /var/lib/iptbles/rule-save 653# /var/lib/iptables/rule-save
676 654
677*filter 655*filter
678:INPUT ACCEPT [0:0] 656:INPUT ACCEPT [0:0]
679:FORWARD ACCEPT [0:0] 657:FORWARD ACCEPT [0:0]
680:OUTPUT ACCEPT [0:0] 658:OUTPUT ACCEPT [0:0]
733Before starting using OpenPBS, some configurations are required. The files 711Before starting using OpenPBS, some configurations are required. The files
734you will need to personalize for your system are: 712you will need to personalize for your system are:
735</p> 713</p>
736 714
737<ul> 715<ul>
738 <li>/etc/pbs_environment</li> 716 <li>/etc/pbs_environment</li>
739 <li>/var/spool/PBS/server_name</li> 717 <li>/var/spool/PBS/server_name</li>
740 <li>/var/spool/PBS/server_priv/nodes</li> 718 <li>/var/spool/PBS/server_priv/nodes</li>
741 <li>/var/spool/PBS/mom_priv/config</li> 719 <li>/var/spool/PBS/mom_priv/config</li>
742 <li>/var/spool/PBS/sched_priv/sched_config</li> 720 <li>/var/spool/PBS/sched_priv/sched_config</li>
743</ul> 721</ul>
744 722
745<p> 723<p>
746Here is a sample sched_config: 724Here is a sample sched_config:
747</p> 725</p>
783set server scheduler_iteration = 60 761set server scheduler_iteration = 60
784</pre> 762</pre>
785 763
786<p> 764<p>
787To submit a task to OpenPBS, the command <c>qsub</c> is used with some 765To submit a task to OpenPBS, the command <c>qsub</c> is used with some
788optional parameters. In the exemple below, "-l" allows you to specify 766optional parameters. In the example below, "-l" allows you to specify
789the resources required, "-j" provides for redirection of standard out and 767the resources required, "-j" provides for redirection of standard out and
790standard error, and the "-m" will e-mail the user at begining (b), end (e) 768standard error, and the "-m" will e-mail the user at beginning (b), end (e)
791and on abort (a) of the job. 769and on abort (a) of the job.
792</p> 770</p>
793 771
794<pre caption="Submitting a task"> 772<pre caption="Submitting a task">
795<comment>(submit and request from OpenPBS that myscript be executed on 2 nodes)</comment> 773<comment>(submit and request from OpenPBS that myscript be executed on 2 nodes)</comment>
846You may need to export a mpich work directory to all your slave nodes in 824You may need to export a mpich work directory to all your slave nodes in
847<path>/etc/exports</path>: 825<path>/etc/exports</path>:
848</p> 826</p>
849 827
850<pre caption="/etc/exports"> 828<pre caption="/etc/exports">
851/home *(rw) 829/home *(rw)
852</pre> 830</pre>
853 831
854<p> 832<p>
855Most massively parallel processors (MPPs) provide a way to start a program on 833Most massively parallel processors (MPPs) provide a way to start a program on
856a requested number of processors; <c>mpirun</c> makes use of the appropriate 834a requested number of processors; <c>mpirun</c> makes use of the appropriate
930If <c>tstmachines</c> finds a problem, it will suggest possible reasons and 908If <c>tstmachines</c> finds a problem, it will suggest possible reasons and
931solutions. In brief, there are three tests: 909solutions. In brief, there are three tests:
932</p> 910</p>
933 911
934<ul> 912<ul>
935 <li> 913 <li>
936 <e>Can processes be started on remote machines?</e> tstmachines attempts 914 <e>Can processes be started on remote machines?</e> tstmachines attempts
937 to run the shell command true on each machine in the machines files by 915 to run the shell command true on each machine in the machines files by
938 using the remote shell command. 916 using the remote shell command.
939 </li> 917 </li>
940 <li> 918 <li>
941 <e>Is current working directory available to all machines?</e> This 919 <e>Is current working directory available to all machines?</e> This
942 attempts to ls a file that tstmachines creates by running ls using the 920 attempts to ls a file that tstmachines creates by running ls using the
943 remote shell command. 921 remote shell command.
944 </li> 922 </li>
945 <li> 923 <li>
946 <e>Can user programs be run on remote systems?</e> This checks that shared 924 <e>Can user programs be run on remote systems?</e> This checks that shared
947 libraries and other components have been properly installed on all 925 libraries and other components have been properly installed on all
948 machines. 926 machines.
949 </li> 927 </li>
950</ul> 928</ul>
1001link="http://www.cyberlogic.ca">Cyberlogic</uri>'s Adelie Linux R&amp;D 979link="http://www.cyberlogic.ca">Cyberlogic</uri>'s Adelie Linux R&amp;D
1002Centre. 980Centre.
1003</p> 981</p>
1004 982
1005<ul> 983<ul>
1006 <li> 984 <li><uri>http://www.gentoo.org</uri>, Gentoo Foundation, Inc.</li>
1007 <uri link="http://www.gentoo.org">http://www.gentoo.org</uri>, Gentoo
1008 Technologies, Inc.
1009 </li> 985 <li>
1010 <li>
1011 <uri link="http://www.adelielinux.com">http://www.adelielinux.com</uri>, 986 <uri link="http://www.adelielinux.com">http://www.adelielinux.com</uri>,
1012 Adelie Linux Research and Development Centre 987 Adelie Linux Research and Development Centre
1013 </li> 988 </li>
1014 <li> 989 <li>
1015 <uri link="http://nfs.sourceforge.net/">http://nfs.sourceforge.net</uri>, 990 <uri link="http://nfs.sourceforge.net/">http://nfs.sourceforge.net</uri>,
1016 Linux NFS Project 991 Linux NFS Project
1017 </li> 992 </li>
1018 <li> 993 <li>
1019 <uri link="http://www-unix.mcs.anl.gov/mpi/mpich/">http://www-unix.mcs.anl.gov/mpi/mpich/</uri>, 994 <uri link="http://www-unix.mcs.anl.gov/mpi/mpich/">http://www-unix.mcs.anl.gov/mpi/mpich/</uri>,
1020 Mathematics and Computer Science Division, Argonne National Laboratory 995 Mathematics and Computer Science Division, Argonne National Laboratory
1021 </li> 996 </li>
1022 <li> 997 <li>
1023 <uri link="http://www.ntp.org/">http://ntp.org</uri> 998 <uri link="http://www.ntp.org/">http://ntp.org</uri>
1024 </li> 999 </li>
1025 <li> 1000 <li>
1026 <uri link="http://www.eecis.udel.edu/~mills/">http://www.eecis.udel.edu/~mills/</uri>, 1001 <uri link="http://www.eecis.udel.edu/~mills/">http://www.eecis.udel.edu/~mills/</uri>,
1027 David L. Mills, University of Delaware 1002 David L. Mills, University of Delaware
1028 </li> 1003 </li>
1029 <li> 1004 <li>
1030 <uri link="http://www.ietf.org/html.charters/secsh-charter.html">http://www.ietf.org/html.charters/secsh-charter.html</uri>, 1005 <uri link="http://www.ietf.org/html.charters/secsh-charter.html">http://www.ietf.org/html.charters/secsh-charter.html</uri>,
1031 Secure Shell Working Group, IETF, Internet Society 1006 Secure Shell Working Group, IETF, Internet Society
1032 </li> 1007 </li>
1033 <li> 1008 <li>
1034 <uri link="http://www.linuxsecurity.com/">http://www.linuxsecurity.com/</uri>, 1009 <uri link="http://www.linuxsecurity.com/">http://www.linuxsecurity.com/</uri>,
1035 Guardian Digital 1010 Guardian Digital
1036 </li> 1011 </li>
1037 <li> 1012 <li>
1038 <uri link="http://www.openpbs.org/">http://www.openpbs.org/</uri>, 1013 <uri link="http://www.openpbs.org/">http://www.openpbs.org/</uri>,
1039 Altair Grid Technologies, LLC. 1014 Altair Grid Technologies, LLC.
1040 </li> 1015 </li>
1041</ul> 1016</ul>
1042 1017

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.20